私は与えられたbashセッションのすべてのエイリアスを一覧表示する方法を知っていますalias -p
。特定のbashセッションのすべての一時エイリアス、つまり私のbashプロファイルにないすべてのエイリアスのリストを取得する方法はありますか?
ありがとうございます!
答え1
それほど簡単ではありません。 bashには「一時」エイリアスという概念はありません。 bashソース.bashrcを介して実行されるコマンドは、コマンドラインに入力するコマンドと同じです。また、bashプロファイルは特定の状況でのみ特定のエイリアスを定義できます。
bashプロファイルを実行した後、エイリアスセットを変数(またはファイル)に保存し、必要に応じてその変数と現在設定されているエイリアスとの違いを確認できます。
$ BASE_ALIAS="$(alias | sort)"
$ alias tmp_alias=""
$ unalias ls
$ diff <( echo "$BASE_ALIAS" ) <( alias | sort )
3d2
< alias ls='ls --color=auto'
5a5
> alias tmp_alias=''
diff
宣言後に別名がls
削除され、別名が追加されたことを示します。tmp_alias
BASE_ALIAS
答え2
次の方法でこれを実行できます。
comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')
これは、現在のエイリアスのリストを新しいシェルのエイリアスと比較することによって行われます。
このcomm
ユーティリティは、最初のコマンドに表示される行のみを表示するために使用されます<(alias -p)
。--nocheck-order
エイリアスリストが実際に順番になっているにもかかわらず、順番が合っていないと文句を言うのを防ぐ必要があります。