Встановлення тимчасових псевдонімів bash при введенні папки


13

Іноді мені подобається мати дуже налаштовані псевдоніми bash та, можливо, прив'язки клавіш, коли я входжу в папку (це може бути проект, де я звик вводити багато команд з CLI).

Припустимо, коли я ввожу папку на зразок "projectAlpha /", я очікую деяких спеціальних псевдонімів, таких як:

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

Я більше про це думав:

  • Відобразити корисне повідомлення із зазначенням псевдонімів та загальних команд
  • Відображення деяких загальних спеціальних палітур для мого проекту

Але як тільки я залишу корінь свого проекту, ці налаштування стають недоступними.

Який найкращий підхід зробити це сьогодні?


зараз прийшла думка використати один псевдонім для "cd" в ~ / .bashrc, один псевдонім для введення в одну директорію і запускає новий баш, який читає прихований .bashrc у цьому каталозі ...
gzinho

Відповіді:


14

Bash має спеціальну змінну, PROMPT_COMMANDвміст якої виконується кожного разу після виконання команди, тому ви можете встановити її наступним чином:

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

Відтепер кожен раз, коли ви знаходитесь у /tmpкаталозі, llбуде створено псевдонім каталогів , а з усіх інших каталогів він буде видалений.


Можливо, більш практичним є зібрати всі псевдоніми та інші речі в одній функції (скажімо makealias), а всі недоліки в іншій функції, makeunaliasяку ви можете виконувати залежно від ваших потреб, щось подібне

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

Зауважте, що більш жорстке перенаправлення існує лише для запобігання деяких непотрібних у цьому випадку сповіщень.


ти, я спробую. +1 (якщо я міг би вгору)
gzinho

1
@ user3697611 Вам не потрібна репутація, щоб прийняти відповідь на власне запитання. Клацніть на галочці біля відповіді.
Бармар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.