如何运行具有相同名称别名的原始命令?
~/.bashrc
文件中ls
命令的别名别名为:
alias ls='ls --color=auto'
然后,当我在终端别名ls
( ls --color=auto
)中运行ls
命令时运行。 但我的问题是我怎么能只运行原始的ls
而且只有ls
而没有额外的参数并且没有解决删除别名条目的问题? 因为当我删除这个条目时,我可以用简单的ls
运行它。
您可以通过以下方法绕过别名:
-
命令的完整路径名:
/bin/ls
-
命令替换:
$(which ls)
-
命令builtin:
command ls
-
双引号:
"ls"
-
单引号:
'ls'
-
一个反斜杠字符:
\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
运行命令