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