Mengatur alias bash sementara saat memasukkan folder


13

Kadang-kadang saya suka memiliki alias bash yang sangat khusus dan mungkin keybindings ketika saya masuk pada folder (bisa menjadi proyek di mana saya terbiasa mengetik banyak perintah dari CLI).

Mari kita anggap ketika saya memasukkan folder seperti "projectAlpha /" Saya mengharapkan beberapa alias kustom seperti:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

Lebih dari itu saya memikirkan:

  • Tampilkan pesan bermanfaat yang menunjukkan alias dan perintah umum
  • Menampilkan beberapa keybindings kustom umum untuk proyek saya

Tetapi segera setelah saya meninggalkan root proyek saya, pengaturan ini menjadi tidak tersedia.

Apa pendekatan terbaik untuk melakukannya hari ini?


datang pemikiran di sini sekarang untuk menggunakan satu alias untuk "cd" di ~ / .bashrc, satu alias untuk masuk dalam satu direktori dan memulai sebuah bash baru yang membaca .bashrc tersembunyi di direktori itu ...
gzinho

Jawaban:


14

Bash memiliki variabel khusus PROMPT_COMMANDyang isinya dieksekusi setiap kali setelah perintah dieksekusi, sehingga Anda dapat mengaturnya sebagai berikut:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

Mulai sekarang setiap kali Anda akan berada di /tmpdirektori alias llakan dibuat dan di semua direktori lain itu akan dihapus.


Mungkin lebih praktis adalah mengumpulkan semua alias Anda dan hal-hal lain dalam satu fungsi (katakanlah makealias) dan semua unaliases dalam fungsi lain makeunaliasyang dapat Anda jalankan tergantung pada kebutuhan Anda, sesuatu seperti

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

Perhatikan bahwa pengalihan stderr hadir hanya untuk mencegah beberapa berguna dalam peringatan kasus ini.


ty, aku akan mencobanya. +1 (jika saya bisa ke atas)
gzinho

1
@ user3697611 Anda tidak perlu reputasi untuk menerima jawaban atas pertanyaan Anda sendiri. Klik tanda centang di sebelah jawabannya.
Barmar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.