ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ°ΡΠ° ΠΎΡ Π±Π΅Π»Π΅ΠΆΠΊΠΈ Π·Π°
1) PROMPT_COMMAND
ΠΠΎΠΆΠ΅ Π±ΠΈ Π²Π΅ΡΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°Π½Π°ΡΠ°, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ΠΊΠΈ Π·Π½Π°Π΅, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° shell Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ°Π½Π°ΡΠ°.
ΠΡΡΡΠ½ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π·Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π² ΠΏΠΎΠ΄ΠΊΠ°Π½Π°ΡΠ°.
ΠΠΏΠΈΡΠ°ΠΉΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠΎΠ²Π° Π² Π½ΠΎΠ²Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈ Π²ΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΡΡ ΡΠ΅ΡΠΈΡΡΠ°:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
ΠΠΊΠΎ ΡΠΈΡΠ°Ρ history
Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ Π²Π°ΡΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π°, Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
1871 Π‘ΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠΎΠ²Π° Π½Π°: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Π‘ΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠΎΠ²Π° Π½Π°: 01/05/19 13:38:19 curl bbc.co.uk 1873 Π‘ΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠΎΠ²Π° Π½Π° : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 ΠΡΡΠ½Π°Ρ ΡΠΎΠ²Π° Π½Π°: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 ΠΡΡΠ½Π°Ρ ΡΠΎΠ²Π° Π½Π°: 01 /05/19 13:39:25 sudo su -
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π·Π½Π°ΡΠΈ ΠΎΡ man date
.
3) CDPATH
ΠΠ° Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π»Π΅ΡΠ½ΠΎ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
ΠΠ°ΡΠΎ PATH
, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° CDPATH
Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Ρ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΠΏΡΡΠΈΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° cd
Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΡ (Ρ.Π΅. Π±Π΅Π· Π²ΠΎΠ΄Π΅ΡΠ° Π½Π°ΠΊΠ»ΠΎΠ½Π΅Π½Π° ΡΠ΅ΡΡΠ°), ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° ΡΡΡΡΠΈ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠ°ΠΏΠΊΠ° Π·Π° ΡΡΠ²ΠΏΠ°Π΄Π°ΡΠΈ ΠΈΠΌΠ΅Π½Π°. CDPATH
ΡΠ΅ ΡΡΡΡΠΈ Π² ΠΏΡΡΠΈΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ ΠΏΠΎΡΠΎΡΠΈΠ»ΠΈ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΡΠ΅.
ΠΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ CDPATH
ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½:
$ CDPATH=/:/lib
ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅:
$ cd /home
$ cd tmp
ΡΠΎΠ³Π°Π²Π° Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠ·ΠΎΠ²Π΅Ρ Π² /tmp
Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠ΄Π΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΡΠ΅.
ΠΠ½ΠΈΠΌΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±Π°ΡΠ΅, Π·Π°ΡΠΎΡΠΎ Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Π² ΡΠΏΠΈΡΡΠΊΠ° (.
), ΡΠΎΠ³Π°Π²Π° Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΄ΡΡΠ³Π° ΠΏΠ°ΠΏΠΊΠ° tmp
ΠΈ ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
ΠΠΏΠ°!
Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΈΡΠ°Ρ
, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ
, ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΠΏΠΎ-ΠΏΠΎΠ·Π½Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° PATH
... Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° PATH, Π·Π°ΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΌΠ°ΠΌΠ΅Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ°Π»ΡΠΈΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ ΠΊΠΎΠ΄.
ΠΠΎΡΡ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΎΡ Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ°:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Π§ΡΠ΄ΠΈΠ»ΠΈ Π»ΠΈ ΡΡΠ΅ ΡΠ΅ Π½ΡΠΊΠΎΠ³Π°, ΠΏΠΈΡΠ΅ΡΠ΅ exit
ΡΠ΅ Π²ΠΈ ΠΎΡΠ²Π΅Π΄Π΅ Π»ΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²ΠΈ bash ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΊΡΠΌ Π΄ΡΡΠ³Π° "ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠ°" ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π·Π°ΡΠ²ΠΎΡΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°?
Π’Π°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΠ»Π΅Π΄ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠ»Π±ΠΎΠΊΠΎ ΡΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Π² bash shell. ΠΠΊΠΎ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ² ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΡΠΎΠΉ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 1:
$ echo $SHLVL
1
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, Π±ΡΠΎΡΡ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°:
$ bash
$ echo $SHLVL
2
Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π°Π»ΠΈ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅, ΠΈΠ»ΠΈ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΠΊΡΠ΄Π΅ ΡΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ.
5) LINENO
ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ LINENO
, ΠΊΠΎΠΉΡΠΎ ΠΎΡΡΠΈΡΠ° Π±ΡΠΎΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ Π² ΡΠ΅ΡΠΈΡΡΠ° Π΄ΠΎΡΠ΅Π³Π°:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Π’ΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΠΏΡΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° Π»ΠΈΠ½ΠΈΠΈ ΠΊΠ°ΡΠΎ echo DEBUG:$LINENO
, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΡΠ΄Π΅ Π² ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°ΡΠ΅ (ΠΈΠ»ΠΈ Π½Π΅).
6) REPLY
ΠΠΊΠΎ ΠΊΠ°ΡΠΎ ΠΌΠ΅Π½ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½:
$ read input
echo do something with $input
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π°ΡΠ΅, ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ°:
$ read
echo do something with $REPLY
Π’ΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈ ΡΡΡΠΎΡΠΎ.
7) TMOUT
ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΎΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΡΠ²ΡΡΠ΄Π΅ Π΄ΡΠ»Π³ΠΎ ΠΎΡ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΡΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎ Π² Π³ΡΠ΅ΡΠ΅Π½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΄Π΅ΠΉΡΡΠ²Π° ΠΊΠ°ΡΠΎ Π·Π°ΡΠΈΡΠ°.
ΠΠΊΠΎ Π½Π΅ Π±ΡΠ΄Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈΡΠΎ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΡΠ΅ΡΡΠΏΠΊΠ°ΡΠ° ΠΈΠ·Π»ΠΈΠ·Π°.
Π’ΠΎΠ΅ΡΡ ΡΠΎΠ²Π° Π΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° sleep 1 && exit
:
$ TMOUT=1
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com