ls
我的文件中该命令有一个别名,~/.bashrc
其别名如下:
alias ls='ls --color=auto'
当我ls
在终端中运行命令时,别名ls
( ls --color=auto
) 运行。
我的问题是:如何才能ls
仅运行原始版本(而不是别名版本),而不使用任何额外参数,也不删除别名条目?
答案1
您可以通过以下方法绕过别名:
命令的完整路径名:
/bin/ls
命令替换:
$(which ls)
内置命令:
command ls
双引号:
"ls"
单引号:
'ls'
反斜杠字符:
\ls
答案2
\
您可以在命令前面使用禁用别名。
因此,要运行原始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 /]$
答案3
暂停别名扩展
您还可以暂时禁用所有别名的别名扩展,而不删除它们:
$ shopt -u expand_aliases
$ command -v ls
/bin/ls
要启用它们:
shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'
请注意,别名扩展在脚本中默认是禁用的,但在交互式 shell 中默认设置。
答案4
您也可以从其原始位置运行命令,/bin/ls
而不是ls