
特定の 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
エイリアスのリストが実際には正しいにもかかわらず、エイリアスのリストが整然としていないというエラーが表示されないようにするためには、これが必要です...