Gibt es eine Möglichkeit, benutzerdefinierte Befehle hinzuzufügen /bin
?
Zum Beispiel benutze ich docker container ls
viel und möchte dies in einen Verknüpfungsbefehl verwandeln, wie z dcls
.
Wenn ich eine Datei hinzufügen Namen dcls
zu /bin
und in der Datei, geben Sie den genauen Befehl docker container ls
, gehe ich davon aus das würde nicht funktionieren.
Was ist der richtige Weg, wenn es einen gibt, so etwas zu tun?
ubuntu
command-line
docker
alex067
quelle
quelle
/bin
, Sie können hinzufügen zu~/bin
(einem Bin in Ihrem eigenen Verzeichnis) oder zu/usr/local/bin
(um es für alle Benutzer Ihres Systems freizugeben, ohne den Paketmanager zu beeinträchtigen). Oder besser in diesem Fall, um einen Alias zu verwenden.Antworten:
Eine einfache Möglichkeit für eine Verknüpfung besteht darin, eine zu definieren
alias
Dies wird ausgeführt,
docker container ls
wenn Sie eingebendcls
und der Befehlalias
Ihre definierten Aliase auflistet. Um diesen Alias zu entfernen, verwenden Sieunalias dcls
.Wenn Sie bash verwenden, können Sie den Alias in Ihrem
~/.bashrc
oder speichern~/.bash_aliases
.Wenn Ihr
~/.bash_aliases
beim Start nicht gelesen wird, können Sie diese Zeile zu Ihrem hinzufügen~/.bashrc
:quelle
~/.bashrc
oder~/.profile
oder ... Wenn Sie den Alias nicht speichern, geht er verloren, wenn Sie sich abmelden oder das Terminal schließen.echo "alias dcls='docker container ls'" >> ~/.bashrc
es mit erstellen , dann als Quelle verwenden. ~/.bashrc
oder sich abmelden und erneut anmelden.Eigentlich würde das, was Sie beschreiben, mit ein paar Anmerkungen funktionieren:
docker container ls
in eine Datei namens setzen/bin/dcls
. Das Verhalten kann jedoch etwas kompliziert sein. Es ist etwas zuverlässiger, die Datei mit einer Zeile zu beginnen, die als "shebang" bezeichnet wird, damit die Datei so aussieht Dies gibt an, dass die Datei ein Shell-Skript ist.sudo
).Befolgen Sie die beiden oben genannten Schritte, und Sie können eingeben,
Dies gibt an, dass alle Argumente, die Sie in diedcls
und es wird funktionierendocker container ls
. Aber wenn Sie tippendcls -l foo
, wird es immer noch tundocker container ls
. Wenn Sie möchten, dass es funktioniertdocker container ls -l foo
, sollten Sie das Skript so ändern, dass es sagtdcls
Befehlszeile eingeben, an den Befehl übergeben werden sollendocker container ls
.Natürlich gibt es kompliziertere Dinge, die Sie mit Befehlszeilenargumenten tun können.
Für eine Zuordnung eines einfachen Befehls → eines einfachen Befehls, der nicht mit anderen Benutzern geteilt werden muss, ist es einfacher, einen Alias ( wie von Freddy vorgeschlagen ) oder eine Shell-Funktion zu definieren. Kompliziertere Funktionen werden oft als Skripte geschrieben. dh Textdateien, die Befehle enthalten. Wenn Sie es jedoch nicht für andere Benutzer freigeben müssen, verwenden Sie häufiger ein privates
Dann kopierenbin
Verzeichnis.dcls
nach$HOME/bin
und hinzufügen zu deinem~/.bashrc
.Es ist auch üblich, persönliche Skripte abzulegen
/usr/local/bin
und die/bin
mit dem System gelieferten Programme zu verlassen .quelle
/bin
,/usr/bin
und in der Regel freigegebene Verzeichnisse wie/usr/local/bin
und manchmal/opt
, so dass Programme in diesen Verzeichnissen für alle Benutzer zur Verfügung stehen./usr/local/bin
damit es den Paketmanager nicht beeinträchtigt.$HOME/bin
. Sie sollten dies wirklich verwenden. Dies ist nicht nur der richtige Bereich, sondern hilft auch, wenn Sie Ihr System neu installieren (und behaltenHOME
), Ihren benutzerdefinierten Befehl nicht zu verlieren.~/.local/bin
stattdessen .Wenn nur für Sie, ist ein Alias in Ordnung, aber gemäß der Linux-Dateisystemhierarchie Standard gehen lokale systemweite Skripte
/usr/local/bin/
nicht ein/bin
./bin
, ist es besser, sich an Standards zu halten, insbesondere wenn Ihre Software beim Kunden bereitgestellt wird./opt
Das Skript selbst wäre:
quelle