αғs*_*нιη 29 command-line bash alias
一个别名ls
命令~/.bashrc
这一个别名文件:
alias ls='ls --color=auto'
Run Code Online (Sandbox Code Playgroud)
然后,当我ls
在终端别名ls
( ls --color=auto
) 中运行命令时。但我的问题是如何在没有额外参数的情况下ls
仅ls
单独运行 original并且不解决删除别名条目的问题?因为当我删除这个条目时,我可以在 simple 中运行它ls
。
ter*_*don 68
您可以通过以下方法绕过别名:
命令的完整路径名: /bin/ls
命令替换: $(which ls)
内置命令: command ls
双引号: "ls"
单引号: 'ls'
反斜杠字符: \ls
Vol*_*gel 10
您还可以暂时禁用所有别名的别名扩展,而不删除它们:
$ shopt -u expand_aliases
$ command -v ls
/bin/ls
Run Code Online (Sandbox Code Playgroud)
要启用它们:
shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'
Run Code Online (Sandbox Code Playgroud)
请注意,别名扩展在脚本中默认禁用,但在交互式 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-
Run Code Online (Sandbox Code Playgroud)
(还有很多...)
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 /]$
Run Code Online (Sandbox Code Playgroud)您可以command
在别名命令之前添加,例如
command ls
Run Code Online (Sandbox Code Playgroud)
或者通过组合运行原始可执行文件 which
which ls
Run Code Online (Sandbox Code Playgroud)
它将返回/bin/ls
,因此
`which ls`
Run Code Online (Sandbox Code Playgroud)
或者
$(which ls)
Run Code Online (Sandbox Code Playgroud)
你可以直接执行那个文件。