Continuando la serie di appunti su PROMPT_COMMAND
1) COMANDO_DEL_PROMPT
Forse già sapete come manipolare il prompt per visualizzare informazioni utili, ma non tutti sanno che ad ogni volta che il prompt viene mostrato, è possibile eseguire un comando della shell.
In realtà, molti sofisticati manipolatori del prompt utilizzano questa variabile per eseguire comandi che raccolgono informazioni da visualizzare nel prompt.
Provate a eseguire questo in una nuova shell e vedrete cosa succede alla sessione:
$ PROMPT_COMMAND='echo -n "scrivendo il prompt a " && date'2) HISTTIMEFORMAT
Se eseguite history nella console, otterrete un elenco di comandi precedentemente eseguiti sotto il vostro account.
$ HISTTIMEFORMAT='Ho eseguito questo il: %d/%m/%y %T 'Una volta impostata questa variabile, i nuovi record registrano il tempo insieme al comando, quindi l'output apparirà così:
1871 Ho eseguito questo il: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Ho eseguito questo il: 01/05/19 13:38:19 curl bbc.co.uk 1873 Ho eseguito questo il: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Ho eseguito questo il: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Ho eseguito questo il: 01/05/19 13:39:25 sudo su -
Il formato corrisponde ai simboli di man date.
3) CDPATH
Per risparmiare tempo nella riga di comando, puoi utilizzare questa variabile per cambiare directory con la stessa facilità con cui chiami i comandi.
Come PATH, la variabile CDPATH rappresenta un elenco di percorsi separati da due punti. Quando esegui un comando cd con un percorso relativo (cioè senza slash all'inizio), la shell cerca per impostazione predefinita i nomi corrispondenti nella tua cartella locale. CDPATH cercherà nei percorsi che hai fornito per la directory a cui desideri accedere.
Se imposti CDPATH in questo modo:
$ CDPATH=/:/libe poi inserisci:
$ cd /home
$ cd tmp allora arriverai sempre a /tmp indipendentemente da dove ti trovi.
Tuttavia, fai attenzione, perché se non inserisci la directory locale nella lista (.) non potrai creare nessun'altra cartella tmp e accedervi come al solito:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmpOps!
Sembra una confusione, che ho provato quando ho capito che la cartella locale non era stata inclusa nella variabile più familiare PATH… ma devi farlo nella variabile PATH, perché potresti essere ingannato eseguendo un comando falso da qualche codice scaricato.
Il mio si imposta come punto di partenza:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt4) SHLVL
Hai mai pensato che il comando exit ti porterà fuori dall'attuale shell bash in un'altra shell "genitore" o semplicemente chiuderà completamente la finestra del terminale?
Questa variabile tiene traccia di quanto sei profondo nella shell bash. Se crei un nuovo terminale, è impostata su 1:
$ echo $SHLVL
1Poi, se lanci un altro processo della shell, il numero aumenta:
$ bash
$ echo $SHLVL
2Questo può essere molto utile negli script, dove non sei sicuro se uscire o meno, o per tenere traccia di dove ti trovi nella gerarchia.
5) LINENO
La variabile utile per analizzare lo stato attuale e il debugging è LINENO, che indica il numero di comandi eseguiti nella sessione fino ad ora:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2 Questo è più frequentemente usato durante il debugging degli script. Inserendo righe come echo DEBUG:$LINENO, puoi rapidamente determinare dove ti trovi nello script (o meno).
6) REPLY
Se, come me, di solito scrivi codice del genere:
$ read input
echo do something with $inputpotrebbe sorprenderti che non devi preoccuparti di creare una variabile:
$ read
echo do something with $REPLYQuesto fa la stessa cosa.
7) TMOUT
Per non rimanere troppo a lungo sui server di produzione a scopo di sicurezza o per non avviare accidentalmente qualcosa di rischioso nel terminale sbagliato, l'impostazione di questa variabile funge da protezione.
Se non viene digitato nulla per un numero preimpostato di secondi, avviene l'uscita dalla shell.
Cioè, è un'alternativa sleep 1 && exit:
$ TMOUT=1Fonte: habr.com
