如果已经设置了别名,我怎样才能检查我的bashrc

Kum*_*lok 21 bash pointer-aliasing

如果已经设置了别名,我怎样才能检查我的bashrc.

当我提供一个bashrc文件,它有一个函数名称,说好玩,而我当前的环境也有一个别名也很有趣.

我尝试了unalias的乐趣,但这会给我一个错误,当我的环境没有别名时,找不到有趣的错误.

所以在我的bashrc中,在我的趣味函数中,我想检查是否设置了别名,然后是unalias.

mit*_*ull 32

如果您只是想确保别名不存在,只需将其unalias并将其错误重定向到/ dev/null,如下所示:

unalias foo 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

您可以检查是否使用以下内容设置了别名:

alias foo 2>/dev/null >/dev/null && echo "foo is set as an alias"
Run Code Online (Sandbox Code Playgroud)

如联机帮助页中所述:

For each name in the argument list for which no  value  is  sup-
plied,  the  name  and  value  of  the  alias is printed.  Alias
returns true unless a name is given for which no alias has  been
defined.
Run Code Online (Sandbox Code Playgroud)


Pab*_*ook 9

只需使用命令alias

alias | grep my_previous_alias
Run Code Online (Sandbox Code Playgroud)

请注意,您可以实际使用unalias,因此您可以执行类似的操作

[ `alias | grep my_previous_alias | wc -l` != 0 ] && unalias my_previous_alias
Run Code Online (Sandbox Code Playgroud)

如果设置了别名,则会删除别名.

  • 在您收紧 grep ie 之前,您可能有一个错误:alias -p | grep "foo=" 通过使用 = 可以降低部分匹配的风险,在我的例子中,别名非常短(两个字符),因此会错误地触发,因为它与其他字符匹配。– (2认同)

ken*_*orb 7

您可以使用type查看命令是否存在,或者是否是别名。

如果未找到该命令,它将返回错误状态。

例如,我正在定义以下别名:

$ alias foo="printf"
Run Code Online (Sandbox Code Playgroud)

然后检查以下场景:

$ type foo >/dev/null && echo Command found. || echo Command not found.
Command found.
Run Code Online (Sandbox Code Playgroud)

或专门用于别名:

$ alias foo && echo Alias exists || echo Alias does not exist.
Run Code Online (Sandbox Code Playgroud)

或检查它是别名还是常规命令:

$ grep alias <(type foo) && echo It is alias. || echo It is not.
Run Code Online (Sandbox Code Playgroud)

要检查别名是否在rc文件中定义,需要手动检查,例如:

[ "$(grep '^alias foo=' ~/.bash* ~/.profile /etc/bash* /etc/profile)" ] && echo Exists. || echo Not there.
Run Code Online (Sandbox Code Playgroud)


小智 6

# Test if alias of name exists, and then remove it:
[ "$(type -t name)" = "alias" ] && unalias name

# Test if function of name exists, and then remove it:
[ "$(type -t name)" = "function" ] && unset -f name
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的技术解决方案 (2认同)
  • 但我得到“坏选项:-t” (2认同)

noo*_*nex 5

检查别名的特定于 bash 的良好解决方案是使用BASH_ALIASES数组,例如:

$ echo ${BASH_ALIASES[ls]}
Run Code Online (Sandbox Code Playgroud)

  • `[[ ${BASH_ALIASES[foo]} ]] &amp;&amp; unalias foo` 就可以了,对吧? (2认同)