Klasöre girerken geçici bash diğer adlarını ayarlama


13

Bazen bir klasöre girdiğimde çok özelleştirilmiş bash takma adlarına ve belki de tuş bağlantılarına sahip olmayı seviyorum (CLI'dan çok sayıda komut yazmak için kullanıldığım bir proje olabilir).

"ProjectAlpha /" gibi bir klasöre girdiğimde varsayalım:

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

Düşündüğümden daha fazlası:

  • Takma adları ve ortak komutları gösteren yararlı bir mesaj görüntüle
  • Projem için bazı yaygın özel tuş bağlamalarını görüntüleme

Ancak projemin kökünden ayrılır ayrılmaz bu ayarlar kullanılamaz hale gelir.

Bugün yapmak için en iyi yaklaşım nedir?


~ / .bashrc içinde "cd" için bir diğer ad, bir dizine girmek için bir diğer ad kullanmak ve bu dizindeki gizli
.bashrc'yi

Yanıtlar:


14

Bash, komut yürütüldükten sonraPROMPT_COMMAND her seferinde yürütülen özel bir değişkene sahiptir , böylece aşağıdaki gibi ayarlayabilirsiniz:

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

Artık /tmpdizinde olacak her zaman takma ad lloluşturulur ve diğer tüm dizinlerde kaldırılır.


Muhtemelen daha pratik olan, tüm takma adlarınızı ve diğer şeylerinizi tek bir fonksiyonda (örneğin makealias) ve diğer fonksiyondaki makeunaliasihtiyaçlarınız doğrultusunda çalıştırabileceğiniz tüm alyansları toplamaktır.

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

Stderr yönlendirmesinin yalnızca bu durumda bazı uyarıları işe yaramaz hale getirmek için mevcut olduğuna dikkat edin.


ty, deneyeceğim. +1 (eğer yapabilirsem)
gzinho

1
@ user3697611 Kendi sorunuzun yanıtını kabul etmek için herhangi bir itibara ihtiyacınız yok. Cevabın yanındaki onay işaretine tıklayın.
Barmar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.