Septiņi negaidīti Bash mainīgie

Turpinot piezīmju sēriju par mazāk zināms funkcijas bash, es jums parādīšu septiņus mainīgos, par kuriem jūs, iespējams, nezināt.

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.

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

Pievieno komentāru