web-dev-qa-db-ja.com

エイリアスがすでに設定されている場合、bashrcをチェックインするにはどうすればよいですか?

エイリアスがすでに設定されている場合、bashrcをチェックインするにはどうすればよいですか。

関数名を持つbashrcファイルをソースすると、たとえばfunであり、現在の環境にはfunというエイリアスもあります。

Unalias funを試しましたが、環境にそのエイリアスがまだない場合、funが見つからないというエラーが発生します。

したがって、私のbashrcでは、fun関数で、エイリアスが設定されているかどうかを確認してから、エイリアスを解除します。

22
Kumar Alok

エイリアスが存在しないことを確認したいだけの場合は、エイリアスを解除して、次のようにエラーを/ 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.
32
mitchnull

次のようなコマンドaliasを使用するだけです

alias | grep my_previous_alias

can実際にはunaliasを使用するので、次のようなことができることに注意してください。

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

エイリアスが設定されている場合は削除されます。

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.
4
kenorb

から ここ

if alias <your_alias_name> 2>/dev/null; then 
  do_something
else 
  do_another_thing; 
fi
1
Tom Hale

エイリアスをチェックするための優れたbash固有のソリューションは、BASH_ALIASES配列を使用することです。例:

$ echo ${BASH_ALIASES[ls]}
1
noonex

以下を使用して、bashrcファイルを単純化できます。

  1. エイリアスが存在することを確認してください。
  2. エイリアスします。
  3. 関数を定義する

alias fun=''
unalias fun
fun ()
{
   # Define the body of fun()
}
1
R Sahu