Bash Shell在运行命令时忽略别名和功能

时间:2020-01-09 10:40:51  来源:igfitidea点击:

我如何在运行命令时忽略bash shell别名或函数,而又不从Linux或类Unix系统上的内存或当前shell会话中删除别名或函数?
别名不过是命令的快捷方式。

alias命令允许用户通过输入单个单词来启动任何命令或命令组(包括选项和文件名)。
别名主要用于缩写系统命令或向默认使用的命令添加默认参数。

要查看定义的别名,可以使用以下命令:

运行:

$ alias

我的bash别名:

alias cp='cp -i'
alias l='ls $LS_OPTIONS -lA'
alias ll='ls $LS_OPTIONS -l'
alias ls='ls $LS_OPTIONS'
alias mv='mv -i'
alias rm='rm -i'
alias apt-get='apt-get update && apt-get upgrade'

运行命令时,Bash Shell会忽略别名或函数

只需使用如下称为command的命令即可忽略别名或函数。
例如,在我的系统上,我设置了以下别名:

alias apt-get='apt-get update && apt-get upgrade'

要忽略apt-get别名,请执行:

command apt-get -y install nginx

忽略bash别名和功能

您也可以使用以下任何一种语法:

\apt-get -y install apache2
"apt-get" -y install htop

" "和""符号都允许您运行真正的apt-get命令(如果定义了别名,则运行apt命令),并在CLI上忽略apt-get/apt别名。

有关命令命令的更多信息

使用忽略shell函数的参数运行COMMAND。
如果您有一个名为ls的shell函数,并且希望调用/bin/ls命令,则可以执行:

command ls

如果给出了-p选项,那么将为PATH使用一个默认值,该默认值保证可以找到UNIX/Linux下的所有标准实用程序:

command -p ls

给定了-V或-v选项,将打印一个描述COMMAND的字符串。

-V选项产生更详细的描述:

command -v ls
ls is aliased to `ls $LS_OPTIONS'

执行命令

type命令将打印有关别名,函数和实数命令的信息。
例如:

type -a apt-get
apt-get is aliased to `apt-get update && apt-get upgrade'
apt-get is /usr/bin/apt-get

是否要禁止shell函数查找?
将-f选项传递给type命令:

type -f foo

您可以强制对每个NAME进行PATH搜索,即使它是别名,biltin或函数,也可以返回将要执行的磁盘文件的名称:

type -P ls
type -P bar

找出每个NAME分别是别名,关键字,函数,内置函数,文件还是找不到:

type -t ls
type -t date
type -t quote