E valu Filifiliga Bash Laiti-Iloa

O nisi Bash filifiliga e lauiloa ma masani ona faʻaaogaina. Mo se faʻataʻitaʻiga, e toʻatele tagata e tusitusi i le amataga o le tusitusiga

seti -o xtrace

mo le fa'avasegaina,

seti -o errexit

e alu ese ma le sese pe

seti -o errunset

e alu ese pe a le setiina le fesuiaiga ua valaauina.

Ae e tele isi filifiliga. O nisi taimi latou te faʻamatalaina faʻalavelave tele i manas, o lea ua ou aoina ai nisi o mea sili ona aoga iinei, faʻatasi ai ma faʻamatalaga.

Fa'aaliga: Macs e ono iai se kopi tuai o le bash (3.x nai lo le 4.x) lea e le o maua uma nei filifiliga. I lenei tulaga, vaai iinei poʻo iinei.

set poʻo shopt?

E lua auala e seti ai filifiliga bash: mai se tusitusiga poʻo mai le laina faʻatonu. E mafai ona e faʻaogaina tulafono faʻapipiʻiina set и shopt. E suia uma le amio a le atigi, fai le mea lava e tasi (e eseese finauga), ae eseese i latou tupuaga. Filifiliga set e tu'ufa'atasia pe nono mai vaega o isi atigi, a'o tapula'a shopt faia i le bash.

Afai e te manaʻo e vaʻai i filifiliga o loʻo iai nei, tamoʻe:

$ set -o
$ shopt

Ina ia fa'agaoioia le filifiliga i totonu set O lo'o fa'aogaina le syntax umi pe pupuu:

$ set -o errunset
$ set -e

E tutusa lava le aafiaga.

Ina ia faʻamalo le filifiliga, e tatau ona e tuʻuina se faʻaopoopoga nai lo le faʻaitiitia:

$ set +e

Mo se taimi umi e le mafai ona ou manatua lenei syntax ona e foliga mai e sese le manatu (o se faʻailoga itiiti e mafai ai le filifiliga, ma le faʻailoga faʻaopoopo e faʻamalo ai).

В shopt (sili atu talafeagai) fuʻa e faʻaaogaina e mafai ai ma faʻamalo filifiliga -s (set) ma -u (le setiina):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Suia fa'amaumauga

E tele filifiliga e fesoasoani ia te oe e galue ai ma directories.

1.cdspell

Faatasi ai ma lenei tulaga, o le a amata ona malamalama le bash ma o le a ave oe i le faila o lona igoa na e sese ai.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Sa ou faʻaaogaina lenei filifiliga mo le tele o tausaga ma e seasea lava (atonu e tasi i le tausaga) e faia ai se filifiliga uiga ese. Ae i isi aso cdspell sefe le taimi, moni lava i aso uma.

2. autocd

Afai e te le naunau e talia le le atoatoa o le tele o faʻamatalaga cd, ona mafai lea ona e setiina lenei filifiliga e alu i le faila X pe afai e le o iai le poloaiga X.

$ shopt -s autocd
$ abcdefg
$ cd ..

Faʻatasi ma le autocomplete, e mafai ai e oe ona vave oso i le va o faila:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Tau lava aua le ta'u le faila rm -rf * (ioe, i le ala, e mafai lea).

3.direxpand

O se filifiliga manaia lea e faʻalauteleina ai fesuiaiga o le siosiomaga e ala i le oomiina o le Tab:

$ shopt -s direxpand
$ ./[TAB]     # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  заменяется на...
$ /full/path/to/home/folder

Fua mama

4. siaki galuega

O lenei filifiliga e taofi le alu ese mai le vasega pe afai o loʻo i ai pea galuega o loʻo taʻavale i tua.

Nai lo le alu ese, o se lisi o galuega e leʻi maeʻa e faʻaalia. Afai e te mana'o e alu i fafo, ona toe ulufale lea exit.

$ shopt -s checkjobs
$ echo $$
68125             # <= ID процесса для оболочки
$ sleep 999 &
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ echo $$
68125             # <= ID процесса для оболочки тот же
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= на этот раз ID процесса  изменился

Sui malo malosi

5.globstar

O lenei filifiliga e tuʻuina atu ia te oe le suitulaga sili! Afai e te ulufale:

$ shopt -s globstar
$ ls **

ona fa'aalia lea e le atigi fa'atonuga uma ma subdirectories recursively.

Faatasi ai ma direxpand E mafai ona e va'ai vave mea uma i lalo ifo i le fa'atonuga:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6.extglob

O lenei filifiliga e mafai ai ona fa'aogaina foliga e masani ona feso'ota'i ma fa'amatalaga masani. O nisi taimi e aoga tele lenei mea:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

O i'i o lo'o tu'u ai fa'ata'ita'iga i totonu o puipui ma tu'ueseese i se pa tūsa'o. O lo'o avanoa le aufaipisinisi:

? = fetaui ma le zero po'o le tasi le mea na tupu o mamanu ua tu'uina atu! = faʻaalia mea uma e le fetaui ma faʻataʻitaʻiga ua tuʻuina atu * = zero pe sili atu mea tutupu + = tasi pe sili atu mea tutupu @ = saʻo tasi mea tutupu

Puipuiga o faalavelave

7. fa'amaonia

E mafai ona fai sina fa'afefe i le taimi muamua e fa'aoga le fa'atonuga vave fa'alauiloa mai le tala fa'asolopito o fa'apuupuuga !! и !$.

Filifiliga histverify faʻatagaina oe e vaʻai muamua pe faʻapefea ona faʻamatalaina e Bash le poloaiga aʻo leʻi alu moni:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. Noclobber

Toe fo'i, ia puipuia mai fa'alavelave fa'afuase'i, e fa'apea mai le fa'auluina o se faila ua uma ona i ai ma le fa'afoe fa'asalalau (>). E mafai ona avea lenei mea ma fa'alavelave pe a leai sau fa'amaumauga.

Filifiliga set -С fa'asa le toe fa'apea. Afai e manaʻomia, e mafai ona e faʻafefe le puipuiga e faʻaaoga ai le tagata faʻaoga >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

puna: www.habr.com

Faaopoopo i ai se faamatalaga