Wie kann ich den ursprünglichen Befehl ausführen, der mit dem gleichen Namen versehen ist?

22

Ein Alias ​​für den lsBefehl in der ~/.bashrcDatei, der mit diesem Alias ​​versehen ist :

alias ls='ls --color=auto'

dann, wenn ich den lsBefehl in Terminal Alias ls( ls --color=auto) ausgeführt wird. aber meine frage ist, wie ich nur original lsund nur lsalleine ohne extra argument und ohne problemlösung beim löschen von alias-einträgen laufen kann? seit dem ich diesen eintrag lösche kann ich ihn einfach ausführen ls.

αғsнιη
quelle

Antworten:

60

Sie können Aliase mit den folgenden Methoden umgehen:

  1. Der vollständige Pfadname des Befehls: /bin/ls

  2. Befehlsersetzung: $(which ls)

  3. der Befehl eingebaut: command ls

  4. doppelte Anführungszeichen: "ls"

  5. einfache Anführungszeichen: 'ls'

  6. ein Backslash-Zeichen: \ls

terdon
quelle
9
weitere Präzisierungen in bash: command somethingumgeht sowohl alias UND - Funktion genannt something. \\something, 'something'Und "something"nur Bypässe alias genannt something(wenn eine Funktion existiert, wird es dann genannt werden). (Alias ​​vor der Funktion, wenn beide vorhanden sind und keiner umgangen wird)
Olivier Dulac
9

Alias-Erweiterung aussetzen

Sie können die Alias-Erweiterung auch für alle Aliase vorübergehend deaktivieren, ohne sie zu löschen:

$ shopt -u expand_aliases
$ command -v ls
/bin/ls

So aktivieren Sie sie:

shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'

Beachten Sie, dass die Alias-Erweiterung in Skripten standardmäßig deaktiviert ist, in interaktiven Shells jedoch standardmäßig aktiviert ist.

Volker Siegel
quelle
9

Sie können einen Alias ​​mit dem \Befehl vor deaktivieren .

Um den ursprünglichen lsBefehl auszuführen, müssen Sie ihn mit ausführen\ls

Beispielsweise

  • Zuerst einen Alias ​​des lsBefehls erstellen .

    [guru@guru-Aspire-5738 /]$ alias ls='ls -l'
    [guru@guru-Aspire-5738 /]$ ls
    total 96
    drwxr-xr-x   2 root root  4096 Sep  3 18:31 bin
    drwxr-xr-x   5 root root  4096 Sep 17 02:51 boot
    drwxr-xr-x   2 root root  4096 Sep  3 22:17 cdrom
    drwxr-xr-x  17 root root  4520 Sep 17 21:11 dev
    drwxr-xr-x 153 root root 12288 Sep 17 21:11 etc
    drwxr-xr-x   3 root root  4096 Sep  3 22:17 home
    lrwxrwxrwx   1 root root    37 Sep  8 21:31 initrd.img -> /boot/initrd.img-3.2.0-68-generic-pae
    lrwxrwxrwx   1 root root    36 Sep  3 22:18 initrd.img.old -> boot/initrd.img-3.2.0-

    (und viele mehr...)

  • Ausgabe des Originals, lsbei \der der Alias ​​überschrieben wird.

    [guru@guru-Aspire-5738 /]$ \ls
    bin    etc         lib     opt   sbin     tmp      vmlinuz.old
    boot   home        lost+found  proc  selinux  usr
    cdrom  initrd.img      media       root  srv      var
    dev    initrd.img.old  mnt     run   sys      vmlinuz
    [guru@guru-Aspire-5738 /]$ 
g_p
quelle
6

Sie könnten commandvor dem Alias-Befehl hinzufügen , z

command ls

Oder führen Sie die ursprüngliche ausführbare Datei durch Kombinieren aus which

which ls

Es wird also mit "/ bin / ls" zurückgegeben

"Was ls"

Sie könnten es direkt ausführen.

P.-H. Lin
quelle
4

Sie können auch den Befehl von seinem ursprünglichen Standort laufen /bin/lsstattls

Harris
quelle