Für welchen Befehl ist der Alias ​​ll?

28

Kann mir jemand sagen, für welchen Terminalbefehl der Alias ​​gedacht llist? Alles, was ich online finden kann, ist, dass viele Leute sagen, dass es ein Alias ​​für ls -loder ls -laoder ist ls -ltr. Das ist aber einfach falsch. Das Ergebnis sieht anders aus. Gibt es eine Möglichkeit, lldie Syntax zu lokalisieren und zu überprüfen?

Sokrates
quelle

Antworten:

76

Mit den Befehlen aliasoder typekönnen Sie überprüfen, was ein bestimmter Alias ​​bedeutet:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

Beachten Sie jedoch, dass Aliase möglicherweise andere Aliase verwenden. Sie müssen sie daher möglicherweise rekursiv überprüfen, z. B. llsollten Sie auch den aufgerufenen lsBefehl überprüfen :

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

Also llheißt eigentlich:

ls --color=auto -alF
Byte Commander
quelle
10
Beachten Sie, dass ein Befehl im Allgemeinen mehrere gleichzeitige Definitionen haben kann. type -a commandnamezeigt alles an - zeigt an, ob es sich bei dem Befehl um einen oder mehrere Alias-, Funktions-, eingebaute oder ausführbare Dateien in Ihrem PATH handelt, und zwar in dieser Rangfolge. Dies hilft zu verstehen, warum z. B. das Aufheben des Aliasing eines Befehls diesen nicht bis zum erwarteten Verhalten zurückgibt.
Bis auf weiteres angehalten.
Ich würde empfehlen alias ll='ls -lh'. Sie können ausführen, ls -lwenn Sie die Größe in Byte anstelle von menschlichem B / kiB / MiB / GiB wünschen.
Peter Cordes
13

llein Alias definiert in Ihrem ~/.bashrc, vorausgesetzt , Sie haben es nicht ändern , es ist ls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

Diese drei Optionen sind:

  • -a, --all - Einträge, die mit beginnen, nicht ignorieren.
  • -l - Verwenden Sie ein langes Listenformat
  • -F, --classify - Anhängen eines Indikators (eines von * / => @ |) an Einträge

Wie

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

zeigt, lsselbst ist wieder ein Alias ​​für ls --color=auto:

Mit --color=auto, lsgibt Farbcodes nur aus, wenn die Standardausgabe an ein Terminal angeschlossen ist. Die LS_COLORSUmgebungsvariable kann die Einstellungen ändern. Verwenden Sie den dircolors Befehl, um es festzulegen.

Dessert
quelle
Nicht unbedingt .bashrc. Wenn Sie eine andere Shell verwenden, wird diese in der RC-Datei für diese Shell definiert -, cshrc, .tchshc usw.
Jamesqf
@jamesqf Ich denke, jemand, der eine andere Shell verwendet, weiß auch, welche Aliase darin vordefiniert sind. Ich stellte die Frage nach dem Standard-Ubuntu-Setup, wo bashsich die Standard-Shell für Benutzer befindet und der Alias lldefiniert /etc/skel/.bashrcist, der in jede neue kopiert wird Home-Verzeichnis des Benutzers. Natürlich können Sie jede Datei verwenden, um Ihre eigenen Aliase zu speichern - alles, was Sie brauchen, ist die Quelle.
Dessert
2
Es ist nicht notwendig, die Datei in umzuleiten grep, es wird der Dateiname als Argument verwendet. Während Sie die Startdateien durchsuchen, können Sie leichter herausfinden, wo der Alias ​​(neu) definiert wurde (beachten Sie, dass er möglicherweise in einer Datei enthalten ist). /etcWenn Sie ihn aus der Benutzer-Startdatei entfernen und er weiterhin oder sogar noch vorhanden ist, können Sie sich den Kopf zerkratzen Wenn Sie nur schnell wissen möchten, wie die Definition lautet, erledigt der Alias- Befehl, wie in der akzeptierten Antwort angegeben, die Aufgabe.
Bis auf weiteres angehalten.
@DennisWilliamson Es ist nicht notwendig, bashdie Datei öffnen zu lassen , aber es ist viel besser! Der letzte Satz im Fragenbeitrag lautet: Gibt es eine Möglichkeit, llseine Syntax zu lokalisieren und zu betrachten? Darauf antwortet meine Antwort.
Dessert
3

Sie können in Ihrem ~ / .bashrc nachsehen (oder in einer Datei, in der sich Ihre Aliase befinden), oder Sie können einige dieser Befehle in Ihre Shell schreiben:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

Aber warum sollte find ohne -name ". *" Verwendet werden? Weil Sie dies in Ihre .bashrc einfügen können

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

Da "ll" ein Alias ​​ist, ist es nicht notwendig, dass es nur eine Bedeutung hat (ll = 'ls -alF --color'). . Ich denke, es ist eher eine Konvention (Produkt des allgemeinen Gebrauchs).

"Ll" könnte jedoch ein Programm sein, das in einem beliebigen Ordner Ihres PATH gespeichert ist. Wenn Sie beispielsweise einen Ordner mit dem Namen "bin" in Ihrem Heim haben, erstellen Sie ein "ll" -Skript, das so etwas wie enthält

#!/bin/bash
ls -lhar

Aber was ist, wenn Ihr PFAD geändert wurde, um einen weiteren Ordner hinzuzufügen, der den neuen Befehl "ll" enthält? Weitere interessante Informationen erhalten Sie über den folgenden Link zu einer verwandten Frage.

Cuauhtli
quelle
0

Es ist nicht erforderlich, ~ / .bashrc oder ein anderes Skript zu analysieren. Sie können Ihre aktuellen Werte aller Aliase überprüfen, indem Sie den aliasBefehl im Terminal eingeben . Es werden alle definierten Aliase mit ihren Definitionen auf Ihren Bildschirm gebracht.

Serg Stetsuk
quelle
Hallo und herzlich willkommen bei askubuntu. Wie fügt diese Antwort etwas zu der akzeptierten hinzu?
Bruni