Як я можу запустити оригінальну команду, яку псевдонім з тією ж назвою?


22

Псевдонім для lsкоманди у ~/.bashrcфайлі, псевдонім з цим:

alias ls='ls --color=auto'

тоді, коли я запускаю lsкоманду в терміналі, виконується aliase ls( ls --color=auto). але моє запитання полягає в тому, як я можу запускати оригінальний lsі лише lsодин без зайвих аргументів і не вирішуючи проблеми зі видаленням псевдоніму? оскільки, коли я видаляю цей запис, я можу запустити його просто ls.

Відповіді:


60

Псевдоніми можна обійти наступними методами:

  1. повне ім'я команди команди: /bin/ls

  2. підміна команд: $(which ls)

  3. команда вбудована: command ls

  4. подвійні лапки: "ls"

  5. єдині лапки: 'ls'

  6. символ зворотної косої риси: \ls


9
додаткові вказівки в bash: command somethingобходить обидва псевдоніми AND з назвою функціїsomething . \\something, 'something'і "something"лише обходить псевдонім з назвою something(якщо функція існує, то вона буде називатися). (Псевдонім передує функції, якщо обидва існують, і жоден не обходить)
Олів'є Дулак

9

Призупинити розширення псевдоніму

Ви також можете тимчасово відключити розширення псевдонімів для всіх псевдонімів, не видаляючи їх:

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

Щоб увімкнути їх:

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

Зауважте, що розширення псевдоніму вимкнено за замовчуванням у сценаріях, але встановлено за замовчуванням в інтерактивних оболонках.


9

Ви можете відключити псевдонім, використовуючи \перед командою.

Отже, щоб запустити оригінальну lsкоманду, потрібно запустити її за допомогою\ls

Наприклад

  • Спочатку створюється псевдонім lsкоманди.

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

    (і багато іншого...)

  • Вихід оригіналу lsза допомогою \якого перекриває псевдонім.

    [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 /]$ 

6

Ви можете додати commandдо інтерактивної команди, наприклад

command ls

Або запустити оригінальний виконуваний файл, комбінуючи його which

which ls

Він поверне "/ bin / ls", тому з

`який ls`

ви можете виконати його безпосередньо.


4

Ви також можете запустити команду з її початкового місця /bin/lsзамістьls

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.