рд╕рд╛рдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдмреИрд╢ рдЪрд░

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЛрдЯреНрд╕ рдХреА рд╢реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд╣реИ рдХрдо рдЬрд╛рдирдХрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдмреИрд╢, рдореИрдВ рдЖрдкрдХреЛ рд╕рд╛рдд рд╡реЗрд░рд┐рдПрдмрд▓ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред

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 рдХрд░реНрд▓ bbc.co.uk 1873 рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЪрд▓рд╛рдпрд╛: : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЪрд▓рд╛рдпрд╛: 01/05/19 13:39:18 рдХрд░реНрд▓ -vvv bbc.co.uk 1876 рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЪрд▓рд╛рдпрд╛: 01 /05/19 13:39:25 рд╕реБрдбреЛ рд╕реБ -

рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ