Bash aukera batzuk ezagunak dira eta askotan erabiltzen dira. Esaterako, jende askok idazten du gidoiaren hasieran
ezarri -o xtrace
arazketarako,
set -o errexit
akatsez irten edo
set -o errunset
deitutako aldagaia ezarrita ez badago irteteko.
Baina beste aukera asko daude. Batzuetan nahasiegi deskribatzen dira manas-en, beraz, erabilgarrienetako batzuk bildu ditut hemen, azalpenekin.
Oharra: Baliteke Mac-ek bash-en bertsio zaharrago bat izatea (3.x 4.x baino gehiago) non aukera hauek guztiak erabilgarri ez dauden. Kasu honetan, ikus
set
edo shopt
?
Bash aukerak ezartzeko bi modu daude: script batetik edo komando-lerrotik. Komando integratuak erabil ditzakezu set
ΠΈ shopt
. Biek shell-aren portaera aldatzen dute, gauza bera egiten dute (argudio ezberdinekin), baina ezberdintzen dira set
beste shell batzuen parametroetatik heredatzen edo mailegatzen dira, parametroak, berriz shopt
bash-en sortua.
Uneko aukerak ikusi nahi badituzu, exekutatu:
$ set -o
$ shopt
Aukera aktibatzeko set
Sintaxi luzea edo laburra erabiltzen da:
$ set -o errunset
$ set -e
Efektua berdina da.
Aukera desgaitzeko, plus bat jarri behar duzu minusaren ordez:
$ set +e
Denbora luzez ezin nuen sintaxi hau gogoratzen, logika okerra zirudien (minus zeinuak aukera gaitu eta plus zeinuak desgaitu egiten du).
Π shopt
(logikoagoak) aukerak gaitzeko eta desgaitzeko banderak erabiltzen dira -s
(multzoa) eta -u
(jarri gabe):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Direktorioak aldatzea
Direktorioekin lan egiten lagunduko dizuten hainbat aukera daude.
1.cdspell
Ezarpen honekin, bash akatsak ulertzen hasiko da eta izena gaizki idatzi duzun karpetara eramango zaitu.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Urte asko daramatzat aukera hau erabiltzen eta oso gutxitan (urtean behin agian) oso erabaki arraroa hartzen du. Baina beste egun batzuetan cdspell
denbora aurrezten du, literalki egunero.
2. autocd
Sarreren eraginkortasunik eza onartzeko prest ez bazaude cd
, orduan aukera hau ezar dezakezu X karpetara mugitzeko X komandoa existitzen ez bada.
$ shopt -s autocd
$ abcdefg
$ cd ..
Osatze automatikoarekin konbinatuta, karpeta batetik bestera azkar salto egiteko aukera ematen du:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Ez jarri izena karpetari rm -rf *
(bai, bide batez, hau posible da).
3.zuzendara zabaldu
Aukera polita da, ingurune-aldagaiak zabaltzen dituena Tab sakatuz:
$ shopt -s direxpand
$ ./[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
Irteera garbia
4. egiaztatzeko lanak
Aukera honek saiotik amaitzeari uzten dio atzeko planoan lanak oraindik exekutatzen badira.
Irten beharrean, amaitu gabeko zereginen zerrenda bistaratzen da. Oraindik irten nahi baduzu, sartu berriro 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 ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ
Ordezko superbotereak
5.globstar
Aukera honek ordezkapen-superbotereak ematen dizkizu! Sartzen baduzu:
$ shopt -s globstar
$ ls **
orduan shell-ak direktorio eta azpidirektorio guztiak modu errekurtsiboan erakutsiko ditu.
Konbinatuta direxpand
Azkar ikus dezakezu hierarkian beherago dagoen guztia:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
Aukera honek adierazpen erregularrekin lotzen diren ezaugarriak gaitzen ditu. Batzuetan hau oso erabilgarria da:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Hemen ereduak parentesi artean jartzen dira eta barra bertikal batez bereizten dira. Hona hemen erabilgarri dauden operadoreak:
? = emandako ereduen zero edo agerraldi batekin bat dator! = Emandako ereduekin bat ez datorren guztia erakutsi * = zero edo gehiago agerraldi + = agerraldi bat edo gehiago @ = zehazki agerraldi bat
Istripuen babesa
7. hist egiaztatu
Hasieran beldurgarri samarra izan daiteke laburduren historiako abiarazteko komando azkarrak erabiltzea !!
ΠΈ !$
.
Aukera histverify
Bashek komandoa benetan exekutatu aurretik nola interpretatzen duen ikusten uzten dizu:
$ shopt -s histverify
$ echo !$ # <= ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
$ echo histverify # <= ΠΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅,
histverify # <= Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
8. Noclobber
Berriz ere, istripuetatik babesteko, hots, birbideratzeko operadorearekin lehendik dagoen fitxategi bat gainidazteko (>
). Hau hondamendia izan daiteke babeskopiarik ez baduzu.
Aukera set -Π‘
gainidazketa hori debekatzen du. Beharrezkoa izanez gero, babesa saihestu dezakezu operadorea erabiliz >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Iturria: www.habr.com