如何运行具有相同名称别名的原始命令?

~/.bashrc文件中ls命令的别名别名为:

 alias ls='ls --color=auto' 

然后,当我在终端别名lsls --color=auto )中运行ls命令时运行。 但我的问题是我怎么能只运行原始的ls而且只有ls而没有额外的参数并且没有解决删除别名条目的问题? 因为当我删除这个条目时,我可以用简单的ls运行它。

您可以通过以下方法绕过别名:

  1. 命令的完整路径名: /bin/ls

  2. 命令替换: $(which ls)

  3. 命令builtin: command ls

  4. 双引号: "ls"

  5. 单引号: 'ls'

  6. 一个反斜杠字符: \ls

暂停别名扩展

您还可以暂时禁用所有别名的别名扩展,而不删除它们:

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

要启用它们:

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

请注意,默认情况下,在脚本中禁用别名扩展,但在交互式shell中默认设置。

您可以在命令前使用\来禁用别名。

因此,要运行原始的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 /]$ 

您可以在别名命令之前添加命令,例如

command ls

或者通过组合which运行原始可执行文件

which ls

它将返回“/ bin / ls”,因此返回

  `哪个ls` 

你可以直接执行它。

您也可以从其原始位置/bin/ls而不是ls运行命令