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

22

Псевдоним для lsкоманды в ~/.bashrcфайле с псевдонимом:

alias ls='ls --color=auto'

затем, когда я запускаю lsкоманду в терминале, aliased ls( ls --color=auto) запускается. но мой вопрос, как я могу запустить lsтолько оригинал и только lsодин без дополнительного аргумента и без решения проблемы с удалением записи с псевдонимом? поскольку, когда я удаляю эту запись, я могу запустить ее просто ls.

αғsнιη
источник

Ответы:

60

Вы можете обойти псевдонимы следующими способами:

  1. полный путь к команде: /bin/ls

  2. подстановка команд: $(which ls)

  3. встроенная команда: command ls

  4. двойные кавычки: "ls"

  5. одинарные кавычки: 'ls'

  6. символ обратной косой черты: \ls

terdon
источник
9
дополнительная точность в bash: command somethingобходит как псевдоним, так и именованную функцию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'

Обратите внимание, что расширение псевдонимов по умолчанию отключено в сценариях, но установлено по умолчанию в интерактивных оболочках.

Volker Siegel
источник
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 /]$ 
G_p
источник
6

Вы можете добавить commandперед псевдонимом команды, например,

command ls

Или запустите оригинальный исполняемый файл, комбинируя which

which ls

Он вернет "/ bin / ls", поэтому с

`which ls`

Вы можете выполнить это напрямую.

P.-H. Lin
источник
4

Вы также можете запустить команду из исходного местоположения /bin/lsвместоls

Харрис
источник