Ja, es kann, und es gibt bereits einige. Zum Beispiel /usr/bin/X
:)
[email protected]:~$ ls {/usr{/local,},}/{s,}bin | grep '[A-Z]'
MAKEDEV
amuFormat.sh
GET
HEAD
Mail
POST
X
X11
Xephyr
Xnest
Xorg
NetworkManager
[email protected]:~$ zcat ~/.cache/apt-file /archive.ubuntu.com_ubuntu_dists_precise_Contents-i386.gz | tail -n +33 | cut -f1 | grep -P '^(usr/)?s?bin/.*[A-Z]' | wc -l
758
Das ist also 758 in Ubuntu 12.04. Vollständige Liste:https://gist.github.com/5264777
Es gibt keine Beschränkung für Befehlsnamen unter Unix. Jede Datei kann ein Befehl sein. Und ein Dateiname kann eine beliebige Folge von einem oder mehreren (allerdings bis zu einer gewissen Grenze) Zeichen sein, außer ASCII NUL oder ASCII /
. zsh
hebt diese Einschränkung sogar für Funktionen auf, bei denen Sie einen beliebigen String als Funktionsnamen haben können.
Ein paar Anmerkungen:
- Sie werden Schwierigkeiten haben, eine Befehlsdatei namens
.
zu erstellen oder..
;-). - Vermeiden Sie Namen, die bereits von Standardbefehlen oder Shell-Einbauten oder Schlüsselwörtern belegt sind (zumindest von den gängigsten Shells wie
bash
,zsh
,tcsh
oderksh
). Dabei können Großbuchstaben helfen, da sie in der Regel nicht von Standardbefehlen verwendet werden. - Beschränken Sie sich besser auf ASCII-Zeichen. Nicht-ASCII-Zeichen werden in den verschiedenen verfügbaren Zeichensätzen nicht gleich ausgedrückt
- Beschränken Sie sich dabei auf Buchstaben, Ziffern, Bindestriche, Punkte und Unterstriche. Alles andere kann, obwohl es legal ist, das eine oder andere Problem mit diesem oder jenem Tool verursachen (zum Beispiel
|
,=
,&
und viele andere müssten in Shells maskiert werden, wenn Sie:
verwenden , Ihr Befehl kann nicht als Login-Shell verwendet werden ...). Vielleicht möchten Sie sogar.
ausschließen und-
die in Funktionsnamen in vielen Shells nicht erlaubt sind, falls Sie Benutzern erlauben möchten, Ihren Befehl in eine Shell-Funktion einzuschließen. - Mach das erste Zeichen zu einem Buchstaben. Wieder keine strenge Anforderung. Aber der Unterstrich wird manchmal für besondere Dinge verwendet (wie in
zsh
die Funktionen der Vervollständigungssysteme beginnen mit_
) und nur aus Ziffern bestehende Befehle können bei Dingen wiecmd>output.log
ein Problem darstellen . Dateien, deren Name mit einem Punkt beginnt, werden durch Dinge wiels
versteckt oder Shell-Globings und viele Dateimanager.
Der bekannteste Befehl ist stty
, das auch als STTY
verfügbar war . Es war sehr praktisch, das Terminal mit STTY SANE
auf das normale Verhalten zurückzusetzen .