Frage Wie sehe ich den Befehl, der an einen Bash-Alias ​​angehängt ist?


Angenommen, ich habe einen Alias ​​in der Bash-Shell. Gibt es einen einfachen Befehl zum Ausdrucken, welchen Befehl der Alias ​​ausführt?


258
2018-02-07 03:24


Ursprung




Antworten:


Das type Builttin ist dafür nützlich. Es wird Ihnen nicht nur über Aliase, sondern auch über Funktionen, Builtins, Schlüsselwörter und externe Befehle informiert.

$ 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;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



Was tun, wenn ein Alias ​​MORE-Aliase enthält? - user251046
@ user251046 weiter verwenden type bis du etwas anderes als einen Alias ​​getroffen hast ... - geirha
Ich mag diese Antwort, weil type wird alle Zitate analysieren / interpretieren, so dass Sie sicherstellen können, dass die Zitate richtig sind. - wisbucky


Schreib einfach alias während an der Shell-Eingabeaufforderung. Es sollte eine Liste aller aktuell aktiven Aliase ausgeben.

Oder Sie können tippen alias [command] um zu sehen, wofür ein bestimmter Alias ​​verwendet wird, um beispielsweise herauszufinden, was der Alias ​​ist ls Alias ​​wurde Alias, Sie könnten tun alias ls.


127
2018-02-07 03:30



Oder tippen Sie ein alias ls um herauszufinden, was genau ls ist Alias ​​zu. - poolie
@poolie In der Tat. Ich denke, die Frage war zu sehen alle die Aliasnamen, weshalb ich den Alias-Befehl nicht weiter ausführte. - Thomas Ward♦
Während dies für Aliase funktioniert, funktioniert es nicht, wenn Sie eine benutzerdefinierte Shell-Funktion definiert haben. type funktioniert jedoch in beiden Fällen. - Sujay Phadke


ich mag wirklich Strg+Alt+E wie ich gelernt habe diese 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 momentan in der Befehlszeile steht, in das, wofür der Alias ​​steht.

Zum Beispiel, wenn ich Folgendes eingabe:

$ ls

und dann drücken Strg+Alt+Ewird es in umgewandelt

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



Haben Sie das auf anderen Distributionen? - sepehr
@sepehr Arbeitet auf Debian, ich nehme an, es ist eine Bash-Funktion und sollte bei jeder Distribution funktionieren. - Der Hochstapler
du hast recht, es funktioniert auf bash aber ich habe zsh und es funktioniert leider nicht. - sepehr
war wirklich hilfreich. Ich hatte ein anderes Ziel, einen der vorherigen bash-Befehle, die im Verlauf protokolliert wurden, zu erweitern, d. H., 394, so dass ich ihn vor der Ausführung zuerst bearbeiten konnte - XXL
Wie erreicht man dies auf bash OSX? - Govind Rai


Streng richtige Antwort verwendet BASH_ALIASES Array, z. B .:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



Ich fand das nützlich in einer Situation, in der ich einen programmatischen Zugriff auf die tatsächliche Aussage wollte, die ohne den menschlichen nützlichen Kram aliasiert wurde. - M. Justin
Sehr nützlich, danke! - Noldorin
Dies funktioniert nicht in zsh - ProGrammar
@ProGrammar die Frage war über bash - für zsh sollten Sie Fragen über zsh aussehen - noonex


Du könntest das benutzen which Befehl.

Wenn Sie einen Alias ​​für festlegen ls wie ls -al und dann tippen Sie ein which ls, du wirst sehen:

ls: aliased to ls -al.


1
2017-08-05 07:36



Bash hat keine which Befehl. - geirha
Nicht für mich arbeiten .. - Chiel ten Brinke
Es funktioniert für mich. Vielen Dank - Indrajeet Gour
which ist eine schlechte Möglichkeit, Aliase zu suchen, wie hier erklärt: unix.stackexchange.com/questions/10525/ ...   Es funktioniert nicht mal für Aliase in bash auf Ubuntu. - Sujay Phadke