Bashの一時エイリアスのみを一覧表示

Bashの一時エイリアスのみを一覧表示

私は与えられた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_aliasBASE_ALIAS

答え2

次の方法でこれを実行できます。

comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')

これは、現在のエイリアスのリストを新しいシェルのエイリアスと比較することによって行われます。
このcommユーティリティは、最初のコマンドに表示される行のみを表示するために使用されます<(alias -p)--nocheck-orderエイリアスリストが実際に順番になっているにもかかわらず、順番が合っていないと文句を言うのを防ぐ必要があります。

関連情報