Octo Parva-Nota Bash Options

Quaedam optiones Bash notae sunt et saepe adhibitae. Exempli causa, multi scribunt in initio scripturae

set o xtrace

for debugging;

set o errexit

exire per errorem vel

set o errunset

exire si dicta variabilis non est.

Sed multa alia sunt. Interdum nimis confuse in manas describuntur, unde nonnulla hic utilissima cum explicatione collegi.

Nota: Macs vetustiorem versionem habere potest bash (3.x potius quam 4.x) ubi non omnes hae optiones in promptu sunt. In hoc casu vide hic aut hic.

set aut shopt?

Duplex modus est ad optiones bash ponendas: ex scripto vel ex linea praecepti. Potes uti in mandatis constructum- set ΠΈ shopt. Uterque mores conchae mutant, idem faciunt (variis argumentis), sed differunt originis... Morbi laoreet set hereditate vel mutuo parametri conchas, cum parametri shopt creatus in vercundus.

Si vis videre optiones hodiernas, curre:

$ set -o
$ shopt

Ut strenuus per optionem in set Syntaxis longa vel brevis adhibetur:

$ set -o errunset
$ set -e

Etiam in efficitur ipsum.

Ut disable optio, plus debes loco minus ponere;

$ set +e

Diu hanc syntaxin meminisse non potui quod logica falsa visa est (signum minus optionem dat, et plus signum disablet).

Π’ shopt (Magis logicus) vexilla sunt ad enable ac disable options -s (Set) and * -u (unset);

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

Mutatio directoria

Plures sunt optiones quae te adiuvant cum directoriis operaris.

1.cdspell

Cum hoc ambitu, bash typos intelligere incipiet et te ad folder accipiam cuius nomen falleris.

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

Hac optione multos annos usus sum, et rarissime (fortasse semel in anno) consilium valde mirum est. Aliis autem diebus cdspell servat tempus, proprie quotidie.

2. autocd

Si non volens accipere inefficacia multa entries cd, hanc optionem ad X folder ut si X mandatum non sit, potes.

$ shopt -s autocd
$ abcdefg
$ cd ..

Composita cum autocompleto, hoc permittit ut cito salire inter folder:

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

Sicut nec nominat folder rm -rf * (ita, hoc potest).

3.direxpand

Haec optio frigida est quae ambitus variabiles deprimendo Tab expandit:

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

clean output

4. checkjobs

Haec optio e sessione colligationem prohibet si adhuc jobs in curriculo currit.

Loco exeundo, index operum imperfecti ostenditur. Si vis exire, tunc intra iterum 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 процСсса  измСнился

Substitutio superpowers

5.globstar

Haec optio tibi dat superpowers substitutione! si intret;

$ shopt -s globstar
$ ls **

tunc testa ostendet omnia directoria et subdirectoria recursive.

Et cum conjunction direxpand Cito potes omnia inferiora in Hierarchia considerare;

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

6.extglob

Haec optio praebet notas quae communius cum expressionibus regularibus coniunguntur. Interdum utilissimum est;

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

Exempla hic posita sunt in parenthesi et a vecte verticali separati. Hic sunt praesto operatores:

? = nulla vel una occursus datorum exemplarium aequet ! = ostende omnia quae exemplaria data non congruunt = nulla vel plura eventa + = unum vel plura eventa @ = prorsus unum eventum

casus praesidium

7. histverify

Potest parvam esse FORMIDULOSUS primo mandato vivos launching ex historia abbreviationum uti !! ΠΈ !$.

optionem histverify primum permittit videre quomodo Bash interpretatur mandatum antequam actualiter currit;

$ shopt -s histverify
$ echo !$          # <= По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ запускаСтся
$ echo histverify  # <= Она сначала дСмонстрируСтся Π½Π° экранС,
histverify         # <= Π° ΠΏΠΎΡ‚ΠΎΠΌ запускаСтся 

8. Noclobber

Iterum tueri contra accidentia, nempe a overscribo limam quae iam existit cum operante redirectio.>). Hoc calamitatis esse potest si tergum non habes.

optionem set -Π‘ talis overwriting. Si opus est, praesidium uti potes >|:

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

Source: www.habr.com