Как запустить исходную команду с псевдонимом с таким же именем?

20

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

alias ls='ls --color=auto'

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

задан αғsнιη 17.09.2014 в 15:41
источник

5 ответов

53

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

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

  2. Замена команд: $(which ls)

  3. команда builtin: command ls

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

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

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

ответ дан terdon 17.09.2014 в 15:58
источник
9

Приостановить расширение псевдонима

Вы также можете временно отключить расширение псевдонима для всех псевдонимов, не удаляя их:

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

Чтобы включить их:

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

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

    
ответ дан Volker Siegel 17.09.2014 в 16:30
9

Вы можете отключить псевдоним, используя \ перед командой.

Итак, чтобы запустить исходную команду ls , вам нужно запустить ее, используя \ls

Например

  • Сначала создадим псевдоним команды ls .

    [[email protected] /]$ alias ls='ls -l'
    [[email protected] /]$ 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 с использованием \ , которые переопределяют псевдоним.

    [[email protected] /]$ \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
    [[email protected] /]$ 
    
ответ дан g_p 17.09.2014 в 15:46
6

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

command ls

Или запустите исходный исполняемый файл, объединив which

which ls

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

'which ls'

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

    
ответ дан P.-H. Lin 17.09.2014 в 15:51
4

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

    
ответ дан Harris 17.09.2014 в 15:49