Ich versuche, den Befehl zu aliasen, sudo shutdown
aber in meinem .profile
kann ich nicht einfach tun alias "sudo shutdown"="my command"
. Gibt es eine andere Möglichkeit, Befehle mit mehreren Wörtern in Unix zu aliasen?
Ich versuche, den Befehl zu aliasen, sudo shutdown
aber in meinem .profile
kann ich nicht einfach tun alias "sudo shutdown"="my command"
. Gibt es eine andere Möglichkeit, Befehle mit mehreren Wörtern in Unix zu aliasen?
Antworten:
Der Aliasname befindet sich auf der linken Seite, sodass Sie rechts einen beliebigen Befehl mit mehreren Wörtern haben können:
alias my_alias="multi worded command"
BEARBEITEN: Wenn Sie jedoch wirklich Aliase mit mehreren Wörtern haben möchten - in Ihrem Beispiel, wenn Sie wirklich möchten, dass "sudo shutdown" der Alias ist, können Sie dies umgehen, indem Sie die folgende Alias-Funktion verwenden (im Bash-Handbuch) ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Wenn Sie also immer noch sudo
mit anderen Befehlen arbeiten möchten, aber nicht mit shutdown
und wenn Sie es sich leisten können, einen Alias shutdown
für etwas anderes zu erstellen, können Sie Folgendes haben:
alias sudo='sudo '
alias shutdown="echo nope"
Funktioniert jetzt sudo anything_else
wie erwartet (vorausgesetzt, Sie haben keinen Alias für anything_else
, aber wenn Sie ihn haben, hätte er auch vorher nicht funktioniert). sondern sudo shutdown
wird gleich sudo echo nope
und es wird diese Zeichenfolge drucken.
alias cd="cd "
Aliase mit Einzelbuchstaben verwendet alias X="<directory-with-long-name>"
, um leichter von Ort zu Ort zu springen.
alias gti="git "
alias lgo="log"
Verwenden Sie eine Funktion:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
Fall, damit der ursprüngliche Befehl ausgeführt wird, wenn der zweite Parameter nicht lautet bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Um zu zitieren aus: Bash: Leerzeichen im Aliasnamen
In der Bash-Dokumentation heißt es: "Für fast jeden Zweck werden Shell-Funktionen gegenüber Aliasen bevorzugt." Hier ist eine Shell-Funktion, die ersetzt ls
und bewirkt, dass die Ausgabe weitergeleitet wird, more
wenn das Argument aus (nur) besteht -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Als Einzeiler:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Automatische Pipe-Ausgabe:
ls -la
Ich ziehe es vor, einfach eine ausführbare Datei in / usr / local / bin abzulegen (stellen Sie sicher, dass sie sich in Ihrem Pfad befindet), die dann die Befehle enthält, die ich ausführen möchte. Der Name des Skripts wäre der Befehl, der angezeigt wird. Stellen Sie sicher, dass Sie + x / usr / local / bin / your_script chmod.
Das Skript könnte also als "Herunterfahren" bezeichnet werden.
Der Inhalt des Herunterfahrens der Datei wäre:
#!/bin/sh
sudo shutdown
Das eröffnet eine ganz neue Welt. Sie könnten dann ein paar Befehle oder sogar ein Skript haben:
#!/usr/bin/env python
print "hi"
# more stuff. ....