ユーザーがCtrl-Cを使用してコマンドを終了した後にコマンドを実行できますか?

ユーザーがCtrl-Cを使用してコマンドを終了した後にコマンドを実行できますか?

だから私の場所では、ビルドの共有エイリアスセットを使用します。まるで…

alias 'build'='cd $BUILD_ROOT; m; cp ...; cp...; deploy; deploy; deploy; cd -'

makeコマンドを実行するのに約3分かかり、通常は何かを逃したことに気づき、Ctrl-Cを押してすぐにビルドを再実行するので、これは非常に迷惑です。これは私が好きではないディレクトリに入り、再び入らなければならない痛みを伴うパスをもたらしました。

私が本当に欲しいのは…

alias 'betterbuild'='pushd .; build; even-if-the-user-cancelled popd'

これを行う方法はありますか?

ベストアンサー1

さて、エイリアスは実際にこのような複雑な作業を行うことを意図したものではないので、スクリプトで作成するように言いたいと思います。はいより複雑な作業や長時間の作業に最適です。エイリアスとは、デフォルトでは、デフォルトの引数をデフォルトでサポートしていないコマンドにデフォルトの引数を提供するなど、あるコマンドを別のコマンドにマップすることを意味します。

しかし、あなたがこのエイリアスを維持したいと考えたので、エイリアスの範囲内で目的のアクションを実行する方法を理解する必要があります。

次に、自然な選択は、エイリアス内でサブシェルを起動することです。たとえば、

~$ alias xyz1='( cd ~/tmp; sleep 10; cd ~ )'
~$ alias xyz2='cd ~/tmp; sleep 10; cd ~'
~$ xyz2
^C
~/tmp$ cd
~$ xyz1
^C
~$

CtrlCこれは、エイリアスが正常に実行を完了した場合、または+で中断されたときに終了するサブシェル内の作業ディレクトリのみを変更します。

おすすめ記事