рд╕рд╛рдд рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдмреЕрд╢ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕

рдмрджреНрджрд▓ рдиреЛрдЯреНрд╕рдЪреА рдорд╛рд▓рд┐рдХрд╛ рд╕реБрд░реВ рдареЗрд╡рдд рдЖрд╣реЗ рдХрдореА рдЬреНрдЮрд╛рдд рдХрд╛рд░реНрдпреЗ bash, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рджрд╛рдЦрд╡рддреЛ рдЬреНрдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрджрд╛рдЪрд┐рдд рдорд╛рд╣рд┐рддреА рдирд╕реЗрд▓.

1) PROMPT_COMMAND

рд╡рд┐рд╡рд┐рдз рдЙрдкрдпреБрдХреНрдд рдорд╛рд╣рд┐рддреА рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЙрдореНрдкреНрдЯ рдХрд╕реЗ рд╣рд╛рддрд╛рд│рд╛рдпрдЪреЗ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдкреНрд░реЙрдореНрдкреНрдЯ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рд╡рд░ рддреБрдореНрд╣реА рд╢реЗрд▓ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛ рд╣реЗ рд╕рд░реНрд╡рд╛рдВрдирд╛рдЪ рдорд╛рд╣реАрдд рдирд╛рд╣реА.

рдХрд┐рдВрдмрд╣реБрдирд╛, рдЕрдиреЗрдХ рдЬрдЯрд┐рд▓ рдкреНрд░реЙрдореНрдкреНрдЯ рдореЕрдирд┐рдкреБрд▓реЗрдЯрд░ рдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪрд╛ рд╡рд╛рдкрд░ рдкреНрд░реЙрдореНрдкреНрдЯрдордзреНрдпреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдгрд╛рд░реА рдорд╛рд╣рд┐рддреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░рддрд╛рдд.

рд╣реЗ рдирд╡реАрди рд╢реЗрд▓рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛ рдЖрдгрд┐ рд╕рддреНрд░рд╛рдЪреЗ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╣рд╛:

$ 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 рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдмреЕрд╢ рд╢реЗрд▓рдордзреВрди рджреБрд╕рд░реНтАНрдпрд╛ "рдкрд╛рд▓рдХ" рд╢реЗрд▓рдордзреНрдпреЗ рдШреЗрдКрди рдЬрд╛рдИрд▓ рдХрд┐рдВрд╡рд╛ рддреЗ рдХрдиреНрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдкреВрд░реНрдгрдкрдгреЗ рдмрдВрдж рдХрд░реЗрд▓?

рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдмреЕрд╢ рд╢реЗрд▓рдордзреНрдпреЗ рддреБрдореНрд╣реА рдХрд┐рддреА рдЦреЛрд▓рд╡рд░ рдиреЗрд╕реНрдЯреЗрдб рдЖрд╣рд╛рдд рдпрд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рддреЗ. рддреБрдореНрд╣реА рдирд╡реАрди рдЯрд░реНрдорд┐рдирд▓ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╕, рддреЗ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛