ユーザーが実行したいコマンドを実行する前に別のコマンドを実行する

ユーザーが実行したいコマンドを実行する前に別のコマンドを実行する

ツールの元の動作を次のように変更するとしますls

$ ls
Hello World
file1 file2 ...

これどうやってするの?

実行中に、ls別のコマンドを実行したいとしますecho "Hello World!"

私が見つけた簡単な解決策は、エイリアスを使用することです。

alias orig_ls="ls"
alias ls='echo "Hello World!"'

ただし、実行するとorig_ls出力されるため、これは実際の解決策ではありません"Hello World!"

答え1

エイリアスだけでは、必要な操作を簡単に実行できない場合があります。そこで、エイリアスを使用しない方法を紹介します。

シェルの起動時にソースとなるファイル (例.bashrc) に、次の関数を追加します。

ls () {
    echo "Hello world!"
    command ls "$@"
}

エイリアスとは異なり、関数は再帰できます。command lsの代わりに を使用するのはそのためです。これは、定義した関数ではなくls実際の を使用するようにシェルに指示します。ls

答え2

忘れずに電話してくださいls:

alias ls='echo "Hello World!"; ls'

関連情報