bashエイリアスにアタッチされたコマンドを表示する方法は?


324

bashシェルにエイリアスがあるとします。エイリアスが実行するコマンドを出力する簡単なコマンドはありますか?

回答:


431

これにはtypeビルトインが便利です。エイリアスだけでなく、関数、ビルトイン、キーワード、外部コマンドについても説明します。

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        printf '%s\n' "$REPLY";
        grep --color=auto "$@"
    }
}

type -a cmdは、その名前のすべてのコマンドを優先順に表示します。これはls、エイリアス自体がを呼び出す上記のエイリアスに便利ですls

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

これは、あなたが実行したときにことを示していますls/bin/ls使用され、そして--color=autoあなた自身を追加し、他のに加えて、引数のリストに含まれます。


エイリアスに複数のエイリアスが含まれる場合の対処方法
user251046 14

2
@ user251046は使用し続けるtypeあなたは...別名以外の何かをヒットするまで
geirha

type引用符を解析/解釈するので、引用符が正しいことを確認できるため、この回答が好きです。
ウィスバッキー

取得しましたがls is aliased to 'ls --color=auto'、/ bin / lsまたは/ usr / local / bin / lsを使用するかどうか、または何を使用するかを確認するために、1つのレイヤーをさらに深くするにはどうすればよいですか?
クルボ

1
@krubo type -a lsは、見つかったすべてのlsコマンドを優先順に表示します。エイリアスのすぐ下の方がエイリアスによって実行されます。
ガイラ

163

入力するだけでalias、シェルプロンプトでしばらく。現在アクティブなすべてのエイリアスのリストを出力する必要があります。

または、alias [command]特定のエイリアスがエイリアスされているものを入力して確認することlsもできますalias ls。たとえば、エイリアスのエイリアスが何であるかを知りたい場合は、できます。


12
またはalias ls、具体的に何にlsエイリアスされているかを調べるために入力します。
-poolie

2
@poolie確かに。しかし、質問はすべてのエイリアスを表示することだったと思うので、エイリアスコマンドについては詳しく説明しませんでした。
トーマスウォード

これはエイリアスでは機能しますが、カスタムシェル関数を定義した場合は機能しません。typeただし、どちらの場合でも機能します。
スジェイファドケ16

53

この答えから学んだように、私は本当にCtrl+ Alt+ が好きです。これは、現在入力されているコマンドラインを「展開」します。つまり、(特に)エイリアスの展開を実行します。E

どういう意味ですか?コマンドラインで現在記述されている可能性のあるエイリアスを、エイリアスの意味に変換します。

たとえば、次のように入力した場合:

$ ls

押してからCtrl+ Alt+ E、それがになっています

$ ls --time-style=locale --color=auto

これは他のディストリビューションでも同等ですか?
セファー

@sepehrはDebianで動作します。これはbash機能であり、どのディストリビューションでも動作するはずです。
デアホッホステープラー14

4
あなたは正しい、それはbashで動作しますが、私はzshを持っています、それは残念ながら動作しません。
セファー

本当に役に立ちました。!私は実行する前に、まずそれを編集できるように、私は、すなわちと履歴に記録され、以前のbashのコマンドの一つを拡大する別の目標、394を持っていた
XXL

1
警告が1つあります。エイリアスに必要な引用符が含まれている場合、それらは削除されます。だから、squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R 代わりにsqueue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
-Davidmh

10

厳密に言えば、正解はBASH_ALIASES配列を使用しています。例:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

2
これは、人間の役に立つものなしにエイリアスされている実際のステートメントにプログラムでアクセスしたい状況で役立ちます。
M.ジャスティン

これはzshの中で働いていない
ProGrammar

1
@ProGrammar質問はbashの程度であった- zshのためにあなたはzshのについての質問になります
noonex

1
ビンゴ。@ M.Justinと同じように、まさに必要なもの- lsそこにあるものを変更せずに、現在のエイリアスにさらにスイッチをスタックしたい。だから私はalias ls="${BASH_ALIASES[ls]} --time-style=iso"私のケースに行きます。
リッチ

2

このwhichコマンドを使用できます。

lsasのエイリアスを設定してls -alからを入力するとwhich ls、次のように表示されます。

ls: aliased to ls -al


bashにはwhichコマンドがありません。
ガイラ14

...私のために働いていない
Chiel 10 Brinke

2
whichここで説明されているように、エイリアスを検索するのは悪い方法です:unix.stackexchange.com/questions/10525/…Ubuntuの bashのエイリアスに対しても機能しません。
スジェイファドケ16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.