Turpinot piezīmju sēriju par
1) PROMPT_COMMAND
Iespējams, jūs jau zināt, kā manipulēt ar uzvedni, lai parādītu dažādu noderīgu informāciju, taču ne visi zina, ka čaulas komandu var palaist katru reizi, kad tiek parādīta uzvedne.
Faktiski daudzi sarežģīti uzvedņu manipulatori izmanto šo mainīgo, lai izpildītu komandas, lai savāktu informāciju, kas tiek parādīta uzvednē.
Mēģiniet palaist to jaunā čaulā un skatiet, kas notiek ar sesiju:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Ja tu skrien history
konsolē jūs saņemsit sarakstu ar komandām, kas iepriekš tika izpildītas jūsu kontā.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Kad šis mainīgais ir iestatīts, jaunie ieraksti ieraksta laiku kopā ar komandu, tāpēc izvade izskatīsies šādi:
1871. gads. Es to izmantoju: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Es to izpildīju: 01/05/19 13:38:19 curl bbc.co.uk 1873. : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Es to izpildīju: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Es to izpildīju: 01 /05/19 13:39:25 sudo su -
Formatēšana atbilst rakstzīmēm no man date
.
3) CDPATH
Lai ietaupītu laiku komandrindā, varat izmantot šo mainīgo, lai mainītu direktorijus tikpat viegli, kā izdot komandas.
kā PATH
, mainīgs CDPATH
ir ar kolu atdalīts ceļu saraksts. Kad palaižat komandu cd
ar relatīvu ceļu (t.i., bez slīpsvītras), pēc noklusējuma apvalks meklē atbilstošus nosaukumus jūsu vietējā mapē. CDPATH
jūsu norādītajos ceļos meklēs direktoriju, uz kuru vēlaties doties.
Ja instalējat CDPATH
šādā veidā:
$ CDPATH=/:/lib
un pēc tam ievadiet:
$ cd /home
$ cd tmp
tad jūs vienmēr nonāksit /tmp
vienalga kur tu atrodies.
Tomēr esiet uzmanīgi, jo, ja sarakstā nenorādīsit vietējo (.
) mapi, tad nevarēsit izveidot nevienu citu mapi tmp
un dodieties uz to kā parasti:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Hmm!
Tas ir līdzīgs apjukumam, ko jutu, kad sapratu, ka vietējā mape nav iekļauta pazīstamākajā mainīgajā PATH
... bet jums tas ir jādara mainīgajā PATH, jo jūs var tikt pievilināts palaist viltotu komandu no kāda lejupielādēta koda.
Manējo nosaka sākuma punkts:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Vai esat kādreiz domājis, rakstot exit
vai tas jūs aizvedīs no pašreizējā bash apvalka uz citu "vecāku" apvalku, vai arī tas vienkārši aizvērs konsoles logu pilnībā?
Šis mainīgais reģistrē, cik dziļi esat ligzdots bash čaulā. Ja izveidojat jaunu termināli, tas tiek iestatīts uz 1:
$ echo $SHLVL
1
Pēc tam, ja sākat citu čaulas procesu, skaitlis palielinās:
$ bash
$ echo $SHLVL
2
Tas var būt ļoti noderīgi skriptos, kuros neesat pārliecināts, vai iziet vai nē, vai sekot līdzi, kur esat ligzdots.
5) LINENO
Mainīgais ir noderīgs arī pašreizējā stāvokļa analīzei un atkļūdošanai LINENO
, kas ziņo par līdz šim sesijā izpildīto komandu skaitu:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
To visbiežāk izmanto skriptu atkļūdošanā. Ievietojot līnijas, piemēram echo DEBUG:$LINENO
, varat ātri noteikt, kur skriptā atrodaties (vai nē).
6) REPLY
Ja jūs, tāpat kā es, parasti rakstāt kodu šādi:
$ read input
echo do something with $input
Tas var būt pārsteigums, ka jums vispār nav jāuztraucas par mainīgā lieluma izveidi:
$ read
echo do something with $REPLY
Tas dara to pašu.
7) TMOUT
Lai izvairītos no pārāk ilgas uzturēšanās ražošanas serveros drošības apsvērumu dēļ vai nejauši nepalaižot kaut ko bīstamu nepareizā terminālī, šī mainīgā iestatīšana darbojas kā aizsardzība.
Ja iestatīto sekunžu skaitu nekas netiek ievadīts, apvalks iziet.
Tas ir, šī ir alternatīva sleep 1 && exit
:
$ TMOUT=1
Avots: www.habr.com