Jak uruchomić oryginalne polecenie z aliasem o tej samej nazwie?

22

Alias lspolecenia w ~/.bashrcpliku aliasowany z tym:

alias ls='ls --color=auto'

następnie, gdy uruchamiam lspolecenie w terminalu, uruchamia się aliased ls( ls --color=auto). ale moje pytanie brzmi: jak mogę uruchomić lstylko oryginał i tylko lssam bez dodatkowych argumentów i bez rozwiązania problemu z usunięciem aliasu? ponieważ kiedy usuwam ten wpis, mogę go uruchomić w prosty sposób ls.

αғsнιη
źródło

Odpowiedzi:

60

Możesz ominąć aliasy następującymi metodami:

  1. pełna nazwa ścieżki polecenia: /bin/ls

  2. podstawienie polecenia: $(which ls)

  3. wbudowane polecenie: command ls

  4. podwójne cudzysłowy: "ls"

  5. pojedyncze znaki cudzysłowu: 'ls'

  6. znak odwrotnego ukośnika: \ls

terdon
źródło
9
dodatkowe szczegóły w bash: command somethingpomija zarówno alias ORAZ nazwaną funkcjęsomething . \\something, 'something'i "something"pomija tylko alias o nazwie something(jeśli funkcja istnieje, zostanie wywołana). (alias poprzedza funkcję, jeśli oba istnieją, ale żaden nie jest pomijany)
Olivier Dulac
9

Zawieś rozwijanie aliasu

Możesz także tymczasowo wyłączyć rozszerzanie aliasów dla wszystkich aliasów, nie usuwając ich:

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

Aby je włączyć:

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

Zauważ, że rozszerzenie aliasu jest domyślnie wyłączone w skryptach, ale ustawione domyślnie w interaktywnych powłokach.

Volker Siegel
źródło
9

Możesz wyłączyć alias za pomocą \polecenia.

Aby uruchomić oryginalne lspolecenie, musisz je uruchomić za pomocą\ls

Na przykład

  • Najpierw tworzenie aliasu lspolecenia.

    [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-

    (i wiele więcej...)

  • Wyjście oryginału, lsza pomocą \którego zastępuje alias.

    [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
źródło
6

Możesz dodać commandprzed aliasem, np

command ls

Lub uruchom oryginalny plik wykonywalny, łącząc which

which ls

Zwróci „/ bin / ls”, dlatego też

`który ls`

możesz wykonać to bezpośrednio.

P.-H. Lin
źródło
4

Możesz także uruchomić polecenie z oryginalnej lokalizacji /bin/lszamiastls

Harris
źródło