Daŭrigante la serion de notoj pri
1) PROMPT_COMMAND
Vi eble jam scias kiel manipuli la promptilon por montri diversajn utilajn informojn, sed ne ĉiuj scias, ke vi povas ruli ŝelan komandon ĉiufoje kiam la prompto montriĝas.
Fakte, multaj kompleksaj promptaj manipulantoj uzas ĉi tiun variablon por ekzekuti komandojn por kolekti informojn, kiuj estas montrataj en la prompto.
Provu ruli ĉi tion en nova ŝelo kaj vidu kio okazas al la sesio:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Se vi kuras history
en la konzolo, vi ricevos liston de komandoj antaŭe ekzekutitaj sub via konto.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Post kiam ĉi tiu variablo estas agordita, novaj eniroj registras la tempon kune kun la komando, do la eligo aspektos jene:
1871 Mi prizorgis ĉi tion ĉe: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Mi kuris ĉi tion ĉe: 01/05/19 13:38:19 curl bbc.co.uk 1873 Mi kuris ĉi tion ĉe: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Mi kuris ĉi tion ĉe: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Mi kuris ĉi tion ĉe: 01 /05/19 13:39:25 sudo su -
Formatado kongruas kun signoj de man date
.
3) CDPATH
Por ŝpari tempon en la komandlinio, vi povas uzi ĉi tiun variablon por ŝanĝi dosierujojn tiel facile kiel vi eldonas ordonojn.
Tiel kiel ankaŭ PATH
, varia CDPATH
estas dupunkto-disigita listo de vojoj. Kiam vi rulas la komandon cd
kun relativa vojo (t.e. sen gvida oblikvo), defaŭlte la ŝelo serĉas kongruajn nomojn en via loka dosierujo. CDPATH
serĉos en la vojoj kiujn vi donis por la dosierujo, al kiu vi volas iri.
Se vi instalas CDPATH
tiel:
$ CDPATH=/:/lib
kaj poste enigu:
$ cd /home
$ cd tmp
tiam vi ĉiam finiĝos en /tmp
ne gravas kie vi estas.
Tamen atentu, ĉar se vi ne specifas la lokan en la listo (.
) dosierujo, tiam vi ne povos krei alian dosierujon tmp
kaj iru al ĝi kiel kutime:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Ho!
Ĉi tio similas al la konfuzo, kiun mi sentis, kiam mi rimarkis, ke la loka dosierujo ne estis inkluzivita en la pli konata variablo PATH
... sed vi devas fari ĝin en via PATH-variablo ĉar vi povus esti trompita por ruli falsan komandon de iu elŝutita kodo.
La mia estas fiksita per la deirpunkto:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Ĉu vi iam scivolis, tajpante exit
ĉu ĝi prenos vin el via nuna bash-ŝelo al alia "gepatra" ŝelo, aŭ ĉu ĝi simple fermos la konzolan fenestron tute?
Ĉi tiu variablo kontrolas kiom profunde nestitaj vi estas en la bash-ŝelo. Se vi kreas novan terminalon, ĝi estas agordita al 1:
$ echo $SHLVL
1
Tiam, se vi komencas alian ŝelprocezon, la nombro pliiĝas:
$ bash
$ echo $SHLVL
2
Ĉi tio povas esti tre utila en skriptoj, kie vi ne certas ĉu eliri aŭ ne, aŭ konservi trakon de kie vi estas enigita.
5) LINENO
La variablo ankaŭ utilas por analizi la nunan staton kaj sencimigi LINENO
, kiu raportas la nombron da komandoj ekzekutitaj en la sesio ĝis nun:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Ĉi tio estas plej ofte uzata dum elpurigado de skriptoj. Enmetante liniojn kiel echo DEBUG:$LINENO
, vi povas rapide determini kie en la skripto vi estas (aŭ ne).
6) REPLY
Se, kiel mi, vi kutime skribas kodon tiel:
$ read input
echo do something with $input
Eble surprizas, ke vi tute ne bezonas zorgi pri kreado de la variablo:
$ read
echo do something with $REPLY
Ĉi tio faras la samon.
7) TMOUT
Por eviti resti tro longe sur produktaj serviloj pro sekurecaj kialoj aŭ hazarde ruli ion danĝeran en malĝusta terminalo, agordi ĉi tiun variablon funkcias kiel protekto.
Se nenio estas enigita dum difinita nombro da sekundoj, la ŝelo eliras.
Tio estas, ĉi tio estas alternativo sleep 1 && exit
:
$ TMOUT=1
fonto: www.habr.com