Antworten:
Das typeeingebaute ist dafür nützlich. Hier erfahren Sie nicht nur mehr über Aliase, sondern auch über Funktionen, integrierte Schlüsselwörter und externe Befehle.
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmdZeigt alle Befehle mit diesem Namen in der Rangfolge an, was für den lsobigen Alias nützlich ist , den der Alias selbst aufruft ls.
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
Dies sagt Ihnen , dass , wenn Sie laufen ls, /bin/lsverwendet werden, und --color=autowird in der Liste der Argumente, zusätzlich zu jedem anderen Sie selbst hinzufügen enthalten sein.
typebis Sie etwas anderes als ein Alias
typeAnführungszeichen analysiert / interpretiert werden, damit Sie sicherstellen können, dass die Anführungszeichen richtig sind.
ls is aliased to 'ls --color=auto', aber wie kann ich eine Ebene tiefer gehen, um zu sehen, ob / bin / ls oder / usr / local / bin / ls verwendet wird oder was?
type -a lszeigt alle gefundenen ls-Befehle in der Reihenfolge ihrer Präferenz an. Was sich direkt unter dem Alias befindet, wird vom Alias ausgeführt.
Geben Sie einfach aliasan der Shell-Eingabeaufforderung ein. Es sollte eine Liste aller derzeit aktiven Aliase ausgegeben werden.
Sie können auch alias [command]eingeben, um zu sehen, auf welchen Alias ein bestimmter Alias angewendet wird. Wenn Sie beispielsweise herausfinden lsmöchten, auf welche Weise der Alias angewendet wurde, können Sie dies tun alias ls.
alias ls, um herauszufinden, worauf genau lsabgestellt ist.
typeFunktioniert jedoch in beiden Fällen.
Ich mag wirklich Ctrl+ Alt+ , Ewie ich aus gelernt dieser Antwort . Es "erweitert" die aktuell eingegebene Befehlszeile, dh es führt (unter anderem) eine Alias-Erweiterung durch.
Was bedeutet das? Es verwandelt jeden Alias, der aktuell in der Befehlszeile geschrieben ist, in das, wofür der Alias steht.
Zum Beispiel, wenn ich tippe:
$ ls
und dann Ctrl+ Alt+ drücken E, wird es in gedreht
$ ls --time-style=locale --color=auto
squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R stattsqueue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
Genau genommen verwendet die richtige Antwort das Array BASH_ALIASES, z.
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars
lsAlias stapeln, ohne zu ändern, was da ist. Also gehe ich alias ls="${BASH_ALIASES[ls]} --time-style=iso"für meinen Fall.
Sie könnten den whichBefehl verwenden.
Wenn Sie einen Alias für lsas festlegen ls -alund dann Folgendes which lseingeben, wird Folgendes angezeigt:
ls: aliased to ls -al.
whichBefehl.
whichEs ist eine schlechte Möglichkeit, Aliase zu suchen, wie hier erklärt: unix.stackexchange.com/questions/10525/… Es funktioniert nicht einmal für Aliase in Bash auf Ubuntu.