bashエイリアスの呼び出しをPWDで条件付きにする方法


5

私は現在このエイリアスを持っています:

alias cmakerel='cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../../ && make -j4'

基本的には、cmakeを呼び出して out-of-source 障害者から構築する。それはうまく機能しますが、現状のまま、ほぼどこからでも実行できます(これは私はしたくありません)。

このエイリアスが文字列が次の場合に限り実行されるように変更する方法 bld 私の現在の作業ディレクトリにありますか?

この変更が必要なのは、それがないと、tstディレクトリやその他のディレクトリから誤ってこのコマンドを呼び出すことがあるためです。

回答:


10

から man bash

ほとんどすべての目的で、エイリアスはシェル関数によって置き換えられます。

それでそれをシェル関数にしてください。

function cmakerel {
    if expr match "$PWD" '.*bld.*' >/dev/null ; then
        cmake -D....
    else
        echo "Wrong directory!"
    fi
}

ニーズに合わせて調整できる正規表現です。


最高のヒント!可能であれば、私はあなたに+5を渡します。 TYVM
kfmfe04

ところで、私はどのように変更する必要があります cmakerel 私が呼び出すときにそういくつかの失敗値を返すために上記の cmakerel && make check 2番目の部分は失敗しても呼び出されませんか?
kfmfe04

2
@ kfmfe04行を追加 exit $? の下 cmake コール。その後、最後に実行されたコマンドの終了コードで終了します。あなたがパイプを使わない限り、それは簡単です。の下 echo 電話をかける、追加する exit 1
Daniel Beck

素晴らしい - THX!これを私が投稿したばかりの質問に対する回答として追加してください。
kfmfe04
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.