Как я могу проверить в моем bashrc, если псевдоним уже был установлен - PullRequest
19 голосов
/ 20 марта 2012

Как я могу проверить в моем bashrc, если псевдоним уже установлен.

Когда я получаю исходный файл bashrc, который имеет имя функции, скажем fun , и моя текущая среда имеетпсевдоним fun также.

Я попробовал unalias fun, но это даст мне ошибку, которую fun не найдет, если в моей среде этот псевдоним уже не будет.

Итакв моем bashrc, в моей забавной функции я хочу проверить, был ли установлен псевдоним, а затем unalias, что.

Ответы [ 6 ]

29 голосов
/ 20 марта 2012

Если вы просто хотите убедиться, что псевдоним не существует, просто снимите его и перенаправьте ошибку в / dev / null следующим образом:

unalias foo 2>/dev/null

Вы можете проверить, установлен ли псевдоним как-то так:

alias foo 2>/dev/null >/dev/null && echo "foo is set as an alias"

Как указано на странице руководства:

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.
9 голосов
/ 20 марта 2012

Просто используйте команду alias, как

alias | grep my_previous_alias

Обратите внимание, что вы можете на самом деле использовать unalias, чтобы вы могли сделать что-то вроде

[ `alias | grep my_previous_alias | wc -l` != 0 ] && unalias my_previous_alias

Это удалит псевдоним, если он был установлен.

3 голосов
/ 28 сентября 2015

Вы можете использовать type, чтобы узнать, существует ли команда или является псевдонимом или нет.

Будет возвращено состояние ошибки, если команда не найдена.

Например, я определяю следующий псевдоним:

$ alias foo="printf"

Затем проверьте следующие сценарии:

$ type foo >/dev/null && echo Command found. || echo Command not found.
Command found.

или специально для псевдонима:

$ alias foo && echo Alias exists || echo Alias does not exist.

или проверить, является ли это псевдоним или обычная команда:

$ grep alias <(type foo) && echo It is alias. || echo It is not.

Чтобы проверить, определен ли псевдоним в ваших rc файлах, его необходимо проверить вручную, например, по:

[ "$(grep '^alias foo=' ~/.bash* ~/.profile /etc/bash* /etc/profile)" ] && echo Exists. || echo Not there.
1 голос
/ 26 января 2017

Хорошим bash-специфичным решением для проверки псевдонимов является использование массива BASH_ALIASES, например:

$ echo ${BASH_ALIASES[ls]}
0 голосов
/ 19 августа 2018

С здесь :

if alias <your_alias_name> 2>/dev/null; then 
  do_something
else 
  do_another_thing; 
fi
0 голосов
/ 02 ноября 2017

Чтобы упростить файл bashrc, вы можете использовать следующее:

  1. Убедитесь, что псевдоним существует.
  2. Удалите его.
  3. Определите функцию

alias fun=''
unalias fun
fun ()
{
   # Define the body of fun()
}
...