Impostazione di alias bash temporanei durante l'immissione di una cartella


13

A volte mi piace avere alias bash molto personalizzati e forse combinazioni di tasti quando entro in una cartella (può essere un progetto in cui sono abituato a digitare molti comandi dalla CLI).

Supponiamo che quando entro in una cartella come "projectAlpha /" mi aspetto alcuni alias personalizzati come:

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

Più di quanto stavo pensando:

  • Visualizza un messaggio utile che mostra alias e comandi comuni
  • Visualizzazione di alcune combinazioni di tasti personalizzate comuni per il mio progetto

Ma non appena lascio la radice del mio progetto queste impostazioni non sono più disponibili.

Qual è l'approccio migliore per farlo oggi?


è venuto qui un pensiero ora per usare un alias per "cd" in ~ / .bashrc, un alias per entrare in una directory e inizia un nuovo bash che legge il .bashrc nascosto in quella directory ...
— gzinho,

Risposte:


14

Bash ha una variabile speciale il PROMPT_COMMANDcui contenuto viene eseguito ogni volta dopo l'esecuzione del comando, quindi è possibile impostarlo come segue:

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

D'ora in poi ogni volta che sarai nella /tmpdirectory llverrà creato l' alias e in tutte le altre directory verrà rimosso.


Probabilmente più pratico è raccogliere tutti i tuoi alias e altre cose in una funzione (diciamo makealias) e tutti gli unalias nell'altra funzione makeunaliasche puoi eseguire in base alle tue esigenze, qualcosa come

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

Si noti che il reindirizzamento stderr è presente solo per evitare alcuni avvisi inutili in questo caso.


ty, ci proverò. +1 (se potessi
— alzarmi

1
@ user3697611 Non hai bisogno di alcuna reputazione per accettare la risposta alla tua domanda. Fai clic sul segno di spunta accanto alla risposta.
— Barmar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.