ืฉื‘ืขื” ืžืฉืชื ื™ Bash ื‘ืœืชื™ ืฆืคื•ื™ื™ื

ื”ืžืฉืš ืกื“ืจืช ื”ื”ืขืจื•ืช ืขืœ ืคื—ื•ืช ื™ื“ื•ืข ืคื•ื ืงืฆื™ื•ืช 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 ื”ืื ื–ื” ื™ื•ืฆื™ื ืื•ืชืš ืžื”-bash shell ื”ื ื•ื›ื—ื™ ืฉืœืš ืœืžืขื˜ืคืช "ื”ื•ืจื”" ืื—ืจืช, ืื• ืฉื–ื” ืคืฉื•ื˜ ื™ืกื’ื•ืจ ืืช ื—ืœื•ืŸ ื”ืงื•ื ืกื•ืœื” ืœื—ืœื•ื˜ื™ืŸ?

ืžืฉืชื ื” ื–ื” ืขื•ืงื‘ ืื—ืจ ืžื™ื“ืช ื”ืงื™ื ื ื•ืช ื”ืขืžื•ืงื” ืฉืœืš ื‘ืžืขื˜ืคืช ื”-bash. ืื ืืชื” ื™ื•ืฆืจ ืžืกื•ืฃ ื—ื“ืฉ, ื”ื•ื ืžื•ื’ื“ืจ ืœ-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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”