![cd でディレクトリに移動するときにシェル スクリプトを実行する](https://rvso.com/image/112085/cd%20%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%82%B7%E3%82%A7%E3%83%AB%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%20.png)
特定のディレクトリに入ったときに、そのディレクトリでスクリプトを実行するように設定することは可能ですかcd
?
たとえば、プロジェクト/foo
を含むディレクトリの場合、スクリプトを自動的に実行するgit
ことは可能ですか?cd /foo
git status
npm
回答を に厳密にリンクしないでくださいgit
。他のコマンド/スクリプトである可能性もあると考えてください。
答え1
cd
必要な処理を追加する関数に置き換えることができます。
cd() {
builtin cd "$@"
# Do whatever you want here
}
答え2
私は、Stephen Kitt の回答に似たものを次のように使用しています.bashrc
。
function cd() {
command cd "$@" || return
if [[ -d .git ]]
then
git status --short
else
ls -al
fi
}
必要に応じてさまざまなことを処理するための追加の条件を作成できます。
注意: コマンドへの参照を上書きするため、関数が自分自身を呼び出して永久に再帰するのを防ぐために、、、またはをcd
使用する必要があります。このため、この関数の名前を変更すると便利だと感じる人もいるかもしれません。command cd
builtin cd
\cd
答え3
これを行う方法の 1 つは、alias
コマンドを使用することです。
alias cdgit="cd /foo; git status"
次に実行しcdgit
てディレクトリに移動し/foo
、execを実行しますgit status