Bagaimana cara membuat bash alias permintaan bersyarat pada PWD?

5

Saat ini saya memiliki alias ini:

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

Pada dasarnya, ini akan memanggil cmake untuk melakukan out-of-sourcebuild dari PWD. Ini berfungsi dengan baik, tetapi apa adanya, dapat dijalankan dari hampir di mana saja (yang saya tidak mau).

Bagaimana cara memodifikasi alias ini agar berjalan jika dan hanya jika string bldada di direktori kerja saya sekarang?

Saya perlu perubahan ini karena tanpa itu, saya kadang-kadang secara tidak sengaja memohon perintah ini dari direktori tst atau direktori lain di mana saya hanya menyebabkan kekacauan total.

kfmfe04
sumber

Jawaban:

11

Dari man bash:

Untuk hampir setiap tujuan, alias digantikan oleh fungsi shell.

Jadi buatlah fungsi shell.

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

Ini adalah ungkapan reguler yang dapat Anda sesuaikan dengan kebutuhan Anda.

Daniel Beck
sumber
Tip yang bagus! Saya akan memberi Anda +5 jika saya bisa. TYVM.
kfmfe04
btw, bagaimana saya harus memodifikasi di cmakerelatas untuk mengembalikan beberapa nilai kegagalan sehingga ketika saya menelepon cmakerel && make checkbagian kedua tidak dipanggil kegagalan?
kfmfe04
2
@ kfmfe04 Tambahkan baris di exit $?bawah cmakepanggilan. Kemudian akan keluar dengan kode keluar dari perintah terakhir yang dilakukan. Kecuali Anda menggunakan pipa, itu mudah. Di bawah echopanggilan, tambahkan exit 1.
Daniel Beck
hebat - terima kasih! Tambahkan ini sebagai jawaban untuk Pertanyaan yang baru saja saya posting sehingga saya dapat mengirimkan beberapa poin kepada Anda.
kfmfe04