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
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 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