I-Bash Manual: Umhlahlandlela Ophelele Wokubhala Imibhalo ku-Linux

Isibuyekezo sokugcina: 13/02/2026
Author: Isaka
  • I-Bash isebenza njengomhumushi wegobolondo kanye nomyalo futhi ikuvumela ukuthi wenze imisebenzi evamile isebenze ngokuzenzakalela ku-GNU/Linux usebenzisa izikripthi ezilula.
  • Izikripthi zisekelwe kumapharamitha, iziguquguquko, ama-array, izakhiwo zokulawula kanye nemisebenzi, ngokusetshenziswa okujulile kwemiyalo yangaphandle.
  • Ukuqondisa kabusha, amapayipi, kanye nabaqhubi bokuhlola kumafayela nakumbhalo kukuvumela ukuthi wakhe amathuluzi anamandla okuphatha uhlelo.
  • Ukusetshenziswa okufanele kwamakhodi okuphuma, iziguquguquko zemvelo, kanye nemisebenzi kwenza izikripthi zeBash ziphinde zisetshenziswe, ziqine, futhi kube lula ukuzihlanganisa.

incwadi yesandla ye-bash

Uma usebenza ne-GNU/Linux, ngokushesha noma kamuva kuzodingeka uphathe i-terminal kanye ne-Bash. Ukwazi kahle incwadi yemiyalelo ye-Bash enhle Ikuvumela ukuthi wenze imisebenzi ngokuzenzakalelayo, uqonde kangcono uhlelo, futhi uyeke ukwenza konke ngesandla njengokungathi usemodini "yokuqala" ehlala njalo.

Kulesi siqondiso esiphelele uzothola Incazelo ephelele nesebenzayo yolimi lokubhala lwe-BashKusukela kulokho okuyikho nokuthi ungayisebenzisa kanjani kulayini womyalo, kuya endleleni yokubhala izikripthi ezineziguquguquko, ama-array, ama-loop, imisebenzi, ukuphathwa kwamaphutha, ukuqondisa kabusha, amapayipi, kanye nezibonelo zomhlaba wangempela ongazisebenzisa emshinini wakho kusasa.

Ayini ama-blobs kanambambili noma okuphathelene ku-Linux?
I-athikili ehlobene:
Ukubhala umbhalo ku-Bash nge- set -euo pipefail, trap kanye nokungena ngemvume

Iyini iBash futhi isetshenziselwani ngempela?

UBash (Bourne Again SHel) ungumuntu Igobolondo le-Unix elisebenza njengomhumushi womyaloYileso sendlalelo esiphakathi kwakho ne-kernel ye-Linux: uthayipha imiyalo, uBash uyayichaza, uyayiqhuba, bese ebuyisela imiphumela kuwe esikrinini.

Leli gobolondo yilona eliza ngokuzenzakalelayo ekusakazweni kwe-GNU/Linux okudumile kakhulu (njenge-Debian noma i-Ubuntu) futhi liyatholakala naku-macOS. I-Bash ilungele njengolimi lokuqala lokuhlela Uma usuvele uyazi imiyalo eyisisekelo yekhonsoli futhi ufuna ukwenza imisebenzi evamile ibe ngokuzenzakalelayo: ama-backups, ukuhlanza amafayela esikhashana, imibiko, amamenyu amancane, njll.

Cabanga ngoBash njengolimi oluhlelekile olulula, igxile kakhulu ekuphathweni kwezinhleloesebenzisa yonke imiyalo yesistimu ekhona, njenge umyalo we-awkEsikhundleni sokuvuselela isondo, izikripthi ze-Bash zihlela imiyalo, ziqondise kabusha, kanye nezimo ukuze zivumele uhlelo lukwenzele umsebenzi.

Iyini iskripthi seBash futhi usilungiselela kanjani?

Isikripthi seBash asilutho ngaphandle kokuthi ifayela lombhalo elinochungechunge lwemiyalelo ezisebenza ngokulandelana kugobolondo. Ngokuhamba kwesikhathi zingakhula zifane nezinhlelo zangempela: zisebenzisa ama-loop, imisebenzi, iziguquguquko, njll., kodwa konke kuhlala kubhaliwe nje.

Ukuze i-Linux iqaphele ukuthi ifayela liyiskripthi esisebenzisekayo, kunamaphuzu amathathu abalulekile: Cacisa igobolondo elifanele, unikeze izimvume zokusebenzisa, bese uliqamba ngokufanele., ngokuvamile enesandiso .sh.

IShebang: Khombisa ukuthi yimuphi umhumushi okufanele umsebenzise

Umugqa wokuqala wefayela kumele ucacise indlela eya kumhumushi ozosetshenziswa. Ku-Bash, lokhu kuvame ukuba:

#!/bin/bash

Lokhu kulandelana #! yilokho okwaziwa ngokuthi sheba (hashbang, sha-bang, njll.). Uma usebenzisa ifayela njenge ./script.shUhlelo lufunda lowo mugqa wokuqala futhi luyazi ukuthi luzowuqalisa ini /bin/bash ukucubungula okulandelayo.

Uma ufuna ukulungisa iphutha lomugqa weskripthi ngomugqa, ungangeza inketho -x u-al shebang ukuze iBash ibonise lokho ekwenzayo:

#!/bin/bash -x

Izimvume zokusebenzisa kanye negama lesikripthi

Uma ifayela selibhaliwe, kumele limakwe njengelisebenzisekayo. Lokhu okulandelayo kuvame ukusetshenziswa:

chmod 755 nombre_del_script.sh

noma, ngokuqondile:

chmod +x nombre_del_script.sh

Ngokuphathelene negama, uhlelo aludingi ukusetshenziswa kwanoma yisiphi isandiso, kodwa Kunconywa kakhulu ukusebenzisa .sh ukubona ngamehlo ukuthi kuyiskripthiUma uyisebenzisa kusukela ku-terminal, uma uku-directory efanayo, iqala nge ./nombre_del_script.sh.

Khumbula ukuthi, ngaphakathi kweskripthi seBash, konke okuhamba ngemuva komlingiswa # Kubhekwa njengokuphawulangaphandle komugqa wokuqala we-shebang. Ungaphawula yonke imigqa noma wengeze amazwana ekugcineni kwesitatimende.

Iskripthi sakho sokuqala seBash isinyathelo ngesinyathelo

Ukuze uhlele izikripthi ku-Linux ungasebenzisa noma yimuphi umhleli wombhalo: kusukela kubahleli bezithombe (i-VSCode, i-Atom, njll.) ukuze uthuthukise amathuluzi afana ne-console i-nano, i-vi noma i-vimInto ebalulekile ukuthi ulondoloze ifayela ngombhalo ocacile ngaphandle kwezinhlamvu ezikhethekile.

Sizokwakha iskripthi esilula kakhulu esibizwa ngokuthi hola.sh ukusebenzisa, isibonelo, vim:

vim hola.sh

Ngaphakathi kwefayela, ubhala into elula njengokuthi:

#!/bin/bashecho "Hola. Soy tu primer script Bash"

Lapha sisebenzisa umyalo echo ukubonisa umbhalo esikrinini. I-También ikhona printfokukuvumela ukuthi ufomethe umphumela ngokulawula okwengeziwe, okuwusizo kakhulu ekuhleleni amakholomu noma ukufometha izinombolo.

Ugcina ifayela (isibonelo, ku-Vim usebenzisa ESC seguido de :wq) bese uyinika izimvume zokusebenzisa:

chmod 755 hola.sh

Manje usungayizama kusukela ku-terminal, ngokuzulazula uye kufolda yefayela bese usebenzisa:

./hola.sh

Kufanele ubone esikrinini umusho owuchazile kuskripthi, ngaleyo ndlela ubonise ukuthi ukugeleza okuyisisekelo (uShebang + izimvume + ukwenziwa) kulungiselelwe kahle futhi ukuthi uBash uhumusha ifayela lakho kahle.

Amapharamitha esikhundla kanye nomyalo wokushintsha

Izikripthi zivame ukuba usizo uma Bayamukela amapharamitha avela kumugqa womyalo.I-Bash inikeza iziguquguquko ezikhethekile zokusebenza nalezi zimpikiswano zesimo ngaphandle kokuthi wenze i-manual parsing.

Amanye amapharamitha abalulekile ngaphakathi kweskripthi yile:

  • $#: inani lamapharamitha atholiwe.
  • $0: igama (nendlela) yeskripthi ngokwaso.
  • $1 ... $9: amapharamitha kusukela ku-1 kuya ku-9.
  • ${N}: ipharamitha endaweni N, iwusizo uma kunezingaphezu kuka-9.
  • $*: wonke amapharamitha (ngaphandle $0) njengentambo eyodwa.
  • $@: wonke amapharamitha “njengohlu” lwamagama.
  • $$: I-PID yenqubo eqhuba iskripthi.
  • $?: ikhodi yokuphuma yomyalo wokugcina owenziwe.

Uma ufuna ukucubungula amapharamitha ohlobo --opcion valor nganoma yiluphi uhleloKuba lula kakhulu ukusebenzisa umyalo shift, okuhambisa amapharamitha kwesobunxele.

Cabanga ukuthi ekuqaleni unayo $1=UNO y $2=DOSUma ushayela ucingo shift, $1 Kuba yinto efanele lokho okwakufanele yona ngaphambili. $2 kanye nenani elidala le- $1 Iyalahleka. Ngale ndlela "ungasebenzisa" amapharamitha njengoba uhamba emgqeni womyalo.

Isibonelo sesikripthi esine-shift kanye namapharamitha aqanjwe ngamagama

Iphethini evamile kakhulu ukunikeza izinketho ezifana --nombre y --apellido nganoma yiluphi uhlelo bese uzicubungula usebenzisa iluphu while kanye case y shiftIsakhiwo singaba yinto efana nale:

  Indlela yokuhlela imisebenzi nge-fcron ne-cron ku-Linux

#!/bin/bash
# USO: ./nombre-apellido.sh --nombre NOMBRE --apellido APELLIDO
while ]do
case "$1" in
-n|--nombre)
shift
nombre="$1"
shift
;;
-a|--apellido)
shift
apellido="$1"
shift
;;
*)
# parámetro no esperado, lo saltamos
shift
;;
esac
done
echo "Tu Nombre es: $nombre y tu Apellido es: $apellido"

Uma usebenzisa iskripthi njenge ./nombre-apellido.sh --nombre Luis --apellido Gutierrez Noma ngokuguqula i-oda lamapharamitha, umphumela uzoba ofanayo, ngoba I-loop inesibopho sokwabela inani ngalinye endaweni yalo ehambisanayo. kungakhathaliseki ukuthi indawo yokuqala yayinjani.

Izinguquko ku-Bash: zomhlaba wonke, zendawo, kanye nombhalo

Ku-Bash ungachaza iziguquguquko ngaphandle kokumemezela izinhlobo. Ziyi iziguquguquko ezingathayiphwangaZingaqukatha umbhalo, izinombolo, noma ngisho nama-array, futhi umhumushi uyayiphatha.

Indlela eyisisekelo yokwabela amanani yile:

VAR=5
VAR=texto
VAR='cadena literal'
VAR="cadena con variables"

Uma usebenzisa izingcaphuno ezilodwa, okuqukethwe kuphathwa njengombhalo ocacile; ngezingcaphuno eziphindwe kabili, UBash uhumusha iziguquguquko ezikhethekile kanye nokulandelana. ngaphakathi kweketanga.

Isibonelo, kuskripthi ungabhala:

nombre=Luis
CALLE="Calle Larga"
Despacho=401

Kamuva, ukuze ufunde inani layo, uyayiqala ngophawu $ egameni eliguquguqukayo, Ngokwesibonelo $nombreKhumbula ukuthi iBash ibucayi kakhulu, ngakho-ke CALLE y calle Akuzona iziguquguquko ezifanayo.

Bamba umphumela womyalo eziguquguquki

Enye yezinto ezinamandla kakhulu ngeBash ukuthi ivumela gcina umphumela womyalo ku-variable, kalula. Kunezinhlobo ezimbili ezifanayo zama-syntax:

VAR=$(comando)
VAR=`comando`

Isibonelo, ukonga ku $Usuario Umsebenzisi wesistimu wamanje angasebenzisa:

Usuario=$(whoami)

Uma ufuna ukuqoqa kokubili okukhiphayo okujwayelekile namaphutha, ungaqondisa kabusha stderr kuya phambili stdout ngaphakathi kokufakwa esikhundleni komyalo, ukuze konke kuhlala kuguquguqukayo efanayo:

Salida=$(comando 2>&1)

Kuvamile futhi ukuhlanganisa iziguquguquko nombhalo:

VarB="$V1 texto1 $V2 texto2"

Noma dlala ngamapharamitha esikhundla ukuze wakhe izintambo ezintsha, isibonelo:

SORTEMARAP="$3 $2 $1"

engizoyigcina kuyo SORTEMARAP amapharamitha amathathu okuqala ngokulandelana okuphambene.

Izingcaphuno ezilodwa vs izingcaphuno eziphindwe kabili

Izingcaphuno ezilodwa ' Bavimba noma yiluphi uhlobo lokuhumusha: Noma yini oyibhala ngaphakathi igcinwa njengoba ibhaliwe.Ngakho-ke, uma wenza:

NONO='$3 $2 $1'

ku-variable NONO uzosindiswa ngokoqobo $3 $2 $1hhayi amanani alawo mapharamitha. Kodwa-ke, ngezingcaphuno eziphindwe kabili, iziguquguquko ziyanwetshwa.

Isibonelo esivamile sokuhlanganiswa okuhunyushwayo kungaba:

VarA="En un lugar"
VarB='de la Mancha'
VarC="de cuyo nombre no quiero"
VarD=acordarme
TEXTO="$VarA $VarB $VarC $VarD"

Ngokwenza echo "$TEXTO" Uzothola umusho ophelele, ofakazela lokho Iziguquguquko zithathelwa indawo ngaphakathi kwezingcaphuno eziphindwe kabiliKodwa hhayi ngaphakathi kwezingcaphuno ezilodwa.

Ama-Arrays eBash nokuthi ungawaphatha kanjani

I-Bash isekela ama-array ane-indexed (kanye nama-array ahlangene ezinguqulweni zanamuhla), awusizo kakhulu uma ufuna ukusebenza ngokuqoqwa kwezibambiso ngaphandle kokudala iziguquguquko eziyinkulungwane ezikhululekile.

Zingamenyezelwa ngezindlela eziningana:

  • declare ARRAY o typeset ARRAY: dala uhlu olunesikhala esigcinelwe izinto ezingu-9.
  • declare -a Colores: imemezela uhlu olungenasayizi oqinile.
  • Frutas=(Pera Manzana Platano): iqalisa uhlu ngalezo zinto.

Ukuze ubhalele ku-index ethile, kusetshenziswa i-syntax elandelayo: ARRAY=valor, sikhumbula ukuthi izinkomba Ziqala ku-0 bese zikhuphukela ku-n-1 uma uhlu lunezinto ezilandelanayo ezingu-n.

Isibonelo:

Marca="Tranqui-Cola"
COCHE="Seat"
COCHE="Opel"

Kusetshenziswa inothi ehlukile kancane ukufunda amanani, kusetshenziswa ama-curly braces:

  • ${ARRAY}: isici esisesikhundleni n.
  • ${ARRAY}: zonke izakhi ze-array.
  • ${#ARRAY}: inani lezinto ezigciniwe.
  • ${!ARRAY}: uhlu lwezikhombo ezisetshenziswa njengamanje.

Isibonelo esijwayelekile sokubona isici esithile:

Frutas=(Pera Manzana Platano)
echo ${Frutas} # Platano

Futhi ukufaka konke okuqukethwe ohlwini:

echo ${Frutas} # Pera Manzana Platano

Khumbula ukuthi kungenzeka shiya “izikhala” ohlwini Uma unikeza ama-indices athile kuphela, inani lezinto kanye ne-index ephezulu esetshenzisiwe kungenzeka ingalingani. Ngakho-ke intshisekelo ku- ${!ARRAY} ukuskena kuphela ama-index akhona.

Ukuzulazula ama-array nokuwahlanganisa

Ukuze udlule ku-array ngaphandle kokuhlangana nezinkomba ezingekho, i-loop ivame ukusetshenziswa. for Ngokuphathelene nohlu lwezinkomba:

for i in ${!ARRAY}
do
echo "ARRAY = ${ARRAY}"
done

Ungahlanganisa futhi okuqukethwe kwama-array amabili kube okwesithathu, isibonelo:

Unix=('SCO' 'HP-UX' 'IRIX' 'XENIX')
Linux=('Debian' 'Suse' 'RedHat')
NIX=("${Unix}" "${Linux}")

Nansi indlela othola ngayo uhlu equkethe zonke izakhi zohlu lwazo zombili zokuqalaukukwazi ukufaka ohlwini kamuva ${NIX} ukubabona bonke ngesikhathi esisodwa.

Izakhiwo zokulawula kuma-script e-Bash

Njenganoma yiluphi ulimi lokubhala, i-Bash inikeza izimo, izihibe, kanye nezakhiwo eziningi zokukhetha ezivumela ukulawulwa kokugeleza kokusebenza.

Izinhlobo eziyisisekelo ze if Yilezi:

  • if
    then
    comandos
    fi
  • if
    then
    comandos
    else
    comandos_alternativos
    fi
  • if
    then
    comandos
    elif
    then
    otros_comandos
    else
    comandos_por_defecto
    fi

Kubalulekile ukuhlonipha kahle izikhala eziqhathaniswayo ngaphakathi kwabakaki: Kulungile lokho, kodwa ngaphandle kwezikhala uBash ngeke akuchaze kahle.

Izihibe zohlobo for Zinezinhlobo ezimbili ezivamile:

  • Isitayela sohlu: for var in lista; do ...; done
  • Isitayela C: for ((i=0; i<5; i++)); do ...; done

Ngaphezu kwalokho for, unayo while (ngenkathi isimo siyiqiniso) futhi until (isebenza kuze kube yilapho isimo sesifinyelelwe), iwusizo ku- iluphu elawulwa yisimo esikhundleni seluphu elawulwa ngokuphambene.

Ezimweni ezinezinketho eziningi ongazisebenzisa case:

case $VARIABLE in
valor1)
comandos_opcion1
;;
valor2|valor3|valor4)
comandos_para_varios_valores
;;
*)
comandos_por_defecto
;;
esac

Futhi uma ufuna imenyu encane, elula exhumanayo, select Ikhiqiza ngokuzenzakalelayo uhlu lwezinketho ezinezinombolo:

PS3="Escoja una opcion: "
select Opcion in "Actualizar" "Listar" "Salir"
do
echo "Ha elegido: $Opcion"
if ; then
break
fi
done

Ukuze uphume kuma-loops noma weqe ama-iteration unakho:

  • break: iphuma ku-loop yamanje.
  • break N: iphuma kuma-loop afakwe izidleke angu-N.
  • continue: yeqa i-iteration elandelayo ye-loop, ishiya yonke eminye imiyalo ku-iteration yamanje.

Ama-opharetha anengqondo, izibalo, kanye nombhalo

Kuma-conditional ungahlanganisa izinkulumo ne- opharetha abanengqondo abafana nalaba && (FUTHI) kanye || (OR), ngokuvamile ngaphandle kwamabakaki:

  Ungasisebenzisa kanjani isihlungi se-Instagram esithi "Ungowasiphi isizwe". I-iOS ne-Android

if ||
then
# algo
fi

Ukuze kubalwe ngezinombolo, iBash isekela opharetha abajwayelekile: ukwengeza +, ukususa -, ukuphindaphinda *, ukuhlukana /, module %, amandla **ukwanda ++ kanye nokwehla --Izindlela ezijwayelekile zokuzihlola yilezi:

  • $((operacion))
  • $ (endala, kodwa isasekelwa)

Izibonelo ezisheshayo:

echo $((2+5)) # 7
echo $ # 3
i=1; echo $ # 2
echo $ # 9

Ekuqhathaniseni umbhalo, kusetshenziswa opharetha abanjengalaba abalandelayo:

  • == (okulinganayo)
  • != (okuhlukile)
  • > y < uku-oda ngokwesilulumagama (qaphela: ku Ngokuvamile kungcono ukuzibalekela)
  • -z ukuhlola ukuthi umucu awunalutho
  • -n ukuhlola ukuthi ubude abuyona yini i-zero

Ekuqhathaniseni ngezinombolo, opharetha abathile bayathandwa:

  • -eq (okulinganayo)
  • -gt (kukhulu kune)
  • -ge (okukhulu kuno noma okulingana no)
  • -lt (ngaphansi kwe)
  • -le (ngaphansi noma okulingana no)
  • -ne (okuhlukile)

I-Bash ikuvumela futhi ukuthi wenze imisebenzi kumaketanga usebenzisa i-syntax ${}. Isibonelo:

  • ${#cadena}: ubude.
  • ${cadena:N}: i-substring kusuka endaweni N.
  • ${cadena:N:M}Izinhlamvu ze-M eziqala ku-N.
  • ${cadena#texto} y ${cadena%texto}: susa iziqalo noma izijobelelo ezifanayo.
  • ${cadena/texto1/texto2}: shintsha umdlalo wokuqala.
  • ${cadena//texto1/texto2}: shintsha yonke imidlalo.
  • ${cadena/#texto1/texto2} o ${cadena/%texto1/texto2}: shintsha kuphela ekuqaleni noma ekugcineni.

Ihlola ngamafayela nezimvume

Kuma-administrative scripts, kuvamile kakhulu ukufuna ukwazi ukuthi ifayela likhona yini, ukuthi liyi-directory, ukuthi linazo yini izimvume, njll. Yilokho okwenziwa yila ma-scripts. opharetha bokuhlola abathile bamafayela ezivame ukusetshenziswa ngaphakathi o ]:

  • -e: ikhona (ifayela noma isiqondisi).
  • -s: ikhona futhi ayiyona into engenalutho.
  • -d: ikhona futhi iyisiqondisi.
  • -f: ikhona futhi iyifayela elijwayelekile.
  • -r: unemvume yokufunda.
  • -w: unemvume yokubhala.
  • -x: esebenzisekayo (noma efinyelelekayo uma kuyi-directory).
  • -OUmsebenzisi wamanje ungumnikazi.
  • -G: ingeyeqembu lomsebenzisi wamanje.
  • -nt: isanda kakhulu kunelinye ifayela.
  • -ot: indala kunenye ifayela.

Ukuze ushintshe izimvume, sebenzisa umyalo chmod (shintsha imodi)kungaba kumodi yezinombolo (njengokungathi 755) noma ngokomfanekiso (njengoba +x ukwengeza ukusebenza). Ukuze ushintshe umsebenzisi ongumnikazi onayo chownokuwusizo kakhulu ekusetshenzisweni nasekugcinweni kwezikripthi, kanye naku- vumelanisa ne-rsync Ungakwazi ukwenza ngokuzenzakalelayo ukudluliselwa okusebenzayo phakathi kwezinhlelo.

Ukuqondisa kabusha, /dev/* kanye namapayipi

Lonke uhlelo ku-Linux lusebenza ngezincazelo ezintathu eziyisisekelo zamafayela: okokufaka okujwayelekile (stdin, 0), okukhiphayo okujwayelekile (stdout, 1) kanye nokukhipha iphutha (stderr, 2)I-Bash ikuvumela ukuthi uqondise noma iyiphi yazo kumafayela noma kumadivayisi akhethekile.

Ama-opharetha okuqondisa kabusha ajwayelekile kakhulu yilawa:

  • > fich: ithumela i-stdout (futhi ngezinye izikhathi i-stderr uma isetshenziswa ngokucacile kwamanye amagobolondo) kufayela, ibhala ngaphezulu okuqukethwe kwayo.
  • >> fich: ingeza umphumela ekugcineni kwefayela.
  • 1> fich: iqondisa kabusha i-stdout kuphela.
  • 2> fich: iqondisa kabusha kuphela i-stderr.
  • 2>&1: ithumela i-stderr lapho i-stdout iya khona.
  • < fich: isebenzisa okuqukethwe kwefayela njenge-stdin yomyalo.

Isibonelo, ukuze ubhale okuqukethwe kwesikhombisi bese ugcina umphumela kufayela, ungasebenzisa:

ls -1 /tmp/Carpeta1 > /tmp/lista_ficheros.txt

Uma ufuna ukuhlukanisa phakathi kokukhipha okuvamile namaphutha, ungahlukanisa ukusakaza ngakunye kube ifayela elihlukile, elizo Kwenza kube lula kakhulu ukulungisa amaphutha nokungena ngemvume.:

ls -1 /tmp/Carpeta1 1>/tmp/lista_ficheros.txt 2>/tmp/errores.txt

Futhi uma ungenasithakazelo nhlobo emilayezweni yamaphutha, ungayithumela njalo ku- /dev/null, "umgodi omnyama" we-Unix:

ls -1 /tmp/Carpeta1 1>/tmp/lista_ficheros.txt 2>/dev/null

Iphethini esetshenziswa kabanzi ukuthulisa ngokuphelele umphumela womyalo es:

comando >/dev/null 2>&1

Ngokuphathelene namadivayisi akhethekile awusizo kuma-script, kufanelekile ukwazi:

  • /dev/null: ulahla konke okubhaliwe.
  • /dev/random y /dev/urandom: khiqiza izinombolo mbumbulu ezingahleliwe.
  • /dev/zero: ikhiqiza ama-null byte.
  • /dev/full: njalo "kugcwele", kuwusizo ekuhloleni amaphutha okubhala.

Ngakolunye uhlangothi, opharetha | dala ipayipi phakathi kwezinquboukudlulisa umphumela womyalo owodwa njengokufakwa kolandelayo. Izibonelo ezilula zizoba:

ls -1 | sort # orden alfabético ascendente
ls -1 | sort -r # orden inverso

Ungahlanganisa futhi amapayipi amaningana ndawonye, ​​isibonelo ukuthola isixazululo samanje sesikrini ngokuhlanganisa xrandr, grep y awkUkuhlanganisa izihlungi eziningi kuyindlela enamandla kakhulu yokwakha amathuluzi enziwe ngokwezifiso ngemigqa embalwa yekhodi.

Imisebenzi ku-Bash kanye ne-variable scope

Uma uphinda umqondo ofanayo izikhathi eziningana kuskripthi, into engokwemvelo okufanele uyenze ukuwuhlanganisa nomsebenzi. Ku-Bash, imisebenzi ingachazwa ngezindlela ezimbili eziyinhloko, kodwa Kuzo zombili izimo, umzimba uya kubakwa kubakaki.:

  • function NombreFuncion { comandos; }
  • NombreFuncion() { comandos; }

Imisebenzi ayisebenzi ngokuzenzakalelayo: kumele ibizwe ngamagama kwenye indawo kuskripthi. Ngaphakathi kwayo, amapharamitha abawatholayo afinyelelwa njengo $1, $2njll., njengasesikripthi.

Ngokuphathelene nobubanzi bezinto eziguquguqukayo, ngokuzenzakalelayo noma yikuphi okuguquguqukayo okuchazwe ngaphandle komsebenzi ku- global futhi ingafundwa futhi iguqulwe ngaphakathi kwayo. Uma ufuna ukuthi i-variable ibe khona kuphela ngaphakathi komsebenzi, kufanele uyimemezele nge local:

function AlgoPasa {
local UNO="Texto uno"
DOS="Texto dos"
echo "Dentro de la función UNO=$UNO y DOS=$DOS"
}

Kulesi sibonelo, UNO es yendawo emsebenzini bese uyanyamalala lapho uphuma, ngenkathi DOS Kungumhlaba wonke futhi noma yiziphi izinguquko ngaphakathi komsebenzi ziyagcinwa ngemuva kwalokho, into okufanele icatshangelwe ukuze kugwenywe ukubhala ngaphezulu amanani ngokungahlosile.

Amakhodi okuphuma nokubuyisa ku-Bash

Zonke izinhlelo ku-Linux ekugcineni zibuyisa i- phuma ikhodiNgokwesivumelwano, 0 Lokhu kusho ukuthi konke kuhambe kahle, futhi noma yiliphi inani ngaphandle kuka-zero libonisa uhlobo oluthile lwephutha. Ku-Bash, lolu lwazi luyatholakala ku-variable ekhethekile $?.

Ngaphakathi kweskripthi, kunconywa ukuthi kuphethwe nge- exit num kuhambisana nokwenzekile, ukuze ezinye izikripthi noma izinhlelo zikwazi ukwenza ngokufanele. Isibonelo esijwayelekile kungaba:

#!/bin/bash
RUTA="$1"
ls -l "$RUTA" 2>/dev/null
CodError=$?
if ; then
echo "Todo correcto"
else
echo "Atención: se produjo algún error"
fi
exit $CodError

Imisebenzi ingabonisa nokuthi ihambe kahle noma kabi, kodwa kulokhu, okulandelayo kuyasetshenziswa: return num esikhundleni exit. return Ivumela izinombolo kuphela, ngakho-ke uma udinga ukubuyisela umbhalo, ama-array, noma ezinye izinhlobo zedatha, kuzodingeka wenze kanjalo usebenzisa iziguquguquko (ngokuvamile zomhlaba wonke).

Isibonelo esilula: umsebenzi othatha amagama amabili bese uwahlanganisa ne-variable yomhlaba wonke ebizwa ngokuthi CadenaIsikripthi esiyinhloko sihlola ukuthi amapharamitha amabili adlulisiwe futhi, uma kungenjalo, sibuyisela iphutha.

  Izindlela ezilula zokusebenzisa i-iPhone Ngaphandle kwe-SIM Card noma Ubuningi Bomakhalekhukhwini

Izibonelo ezisebenzayo zezikripthi zeBash

Ukuqinisekisa ukuthi konke okungenhla akuhlali kungokwemfundiso nje, kuyasiza kakhulu ukubona imibhalo yangempela Baxazulula izinkinga zansuku zonke ezinhlelweni ze-GNU/LinuxNgezansi kuneziningana ezibonisa imiqondo ehlukene.

Funda ifayela umugqa ngomugqa

Iphethini yakudala iwukudlula kufayela lombhalo umugqa nomugqa ukuze kucutshungulwe okuqukethwe kwalo:

#!/bin/bash
FICHERO="$1"
if ; then
while read LINEA
do
echo "$LINEA"
done < "$FICHERO"
exit 0
else
echo "Debe indicar un fichero existente"
exit 1
fi

Lolu hlobo lwesakhiwo lukuvumela ukuthi usebenzise imiyalo kumugqa ngamunye, uhlunge idatha, ukhiqize imibiko, njll., usebenzisa iluphu while read kuphakelwa ngokuqondiswa kabusha kokufaka.

Qopha isikrini sakho sedeskithophu kufayela le-.avi

Ngamathuluzi afana ffmpeg, xrandr y zenity (Kumabhokisi engxoxo anezithombe) kungasethwa iskripthi esiqala futhi siyeke ukuqopha ideskithophu eyinhloko, sithole isixazululo kanye nenani lamamonitha:

#!/bin/bash
function Inicia {
FICH=$(tempfile --suffix=.avi)
NUMMONITORES=$(xrandr | grep '*' | wc -l)
RESOLUCION=$(xrandr | grep current | awk -F "," '{print $2}' | awk -v NP=$NUMMONITORES '{print $2/NP"x"$4}')
ffmpeg -y -f x11grab -s "$RESOLUCION" -r 25 -i :0.0 "$FICH" -loglevel quiet &
}
function Finaliza {
killall -9 ffmpeg
FICH=$(ls -1tr /tmp/*avi | tail -1)
echo "Vídeo guardado en: $FICH"
}
function Ejecuta {
EJECUTANDOSE=$(ps aux | grep -i ffmpeg | grep -v grep | wc -l | awk '{print $1}')
if ; then
Finaliza
else
Inicia
fi
}
Ejecuta

Ukusetshenziswa okuhlangene kwe imisebenzi, iziguquguquko zomhlaba wonke, amapayipi, kanye nemiyalo yangaphandlekonke kuhlelwe kusukela ku-Bash.

Izikripthi zokusetha i-sudo ngokuphephile noma kalula

Kwezinye izindawo, kungaba usizo ukwenza ngokuzenzakalelayo ukufakwa komsebenzisi ekucushweni kwe- sudoNge-Bash ungakha ifayela ku- /etc/sudoers.d/ kufanelekile bese uyikopisha usebenzisa su:

#!/bin/bash
# Activar sudo pidiendo contraseña en cada uso
echo "Debe proporcionar la clave de root cuando se le solicite"
echo "$USER ALL=(ALL:ALL) ALL" > /tmp/autorizado_$USER
su -c "cp /tmp/autorizado_* /etc/sudoers.d/."

Futhi ngemodi "elula", lapho kungadingeki khona iphasiwedi uma usebenzisa sudoKuzokwanela ukushintsha umugqa obhalwe kufayela lesikhashana:

echo "$USER ALL=(ALL) NOPASSWD: ALL" > /tmp/autorizado_$USER

Lezi zinhlobo zezikripthi zibonisa ukuthi uBash angaba namandla futhi abe yingozi kangakanani uma ithinta izingxenye ezibucayi zesistimu, ngakho-ke kungcono ukuzisebenzisa ngolwazi.

Umphumela "weqhwa" ku-terminal ene-tput kanye nama-array ahlangene

Ngaphandle kwemisebenzi engathi sína, iBash ikwazi futhi ukubona izinto ezibonakalayo ku-terminal. tput Ukuze uhambise i-cursor nemibala, kanye nama-associate arrays ukulandelela indawo yeqhwa ngalinye, ungalingisa ukuwa kweqhwa:

#!/bin/bash
LINEAS=$(tput lines)
COLUMNAS=$(tput cols)
declare -A CopoDeNieve
declare -A UltimosCopos
clear
mover_copo() {
i="$1"
if }" ] || }" = "$LINEAS" ]; then
CopoDeNieve=0
else
if }" ]; then
printf "\033}" "$i"
fi
fi
printf "\033}" "$i"
UltimosCopos=${CopoDeNieve}
CopoDeNieve=$((${CopoDeNieve}+1))
}
while :
do
i=$(($RANDOM % $COLUMNAS))
mover_copo "$i"
for x in "${!UltimosCopos}"; do
mover_copo "$x"
done
sleep 0.1
done

Lesi skripthi sihlanganisa ama-array ahlangene, i-loop engenamkhawulo, iziguquguquko zemvelo ezifana $RANDOM kanye nokulandelana kwe-ANSI ukulawula i-cursor, konke kuhlanganiswe kusuka ku-Bash emsulwa.

I-Bash emgqeni womyalo: imiyalo eyisisekelo ewusizo

Ngaphezu kolimi lokubhala, uzosebenzisa njalo igobolondo elisebenzisanayo nsuku zonke. Eminye imiyalo eyisisekelo efanele ukuyiqonda yile: i-pwd, i-cd, i-ls, isihlahla, i-mkdir, ukuthinta, i-cp, i-mv, i-rm, okungaphansi, ikati, ikhanda, umsila, i-hexdump kanye ne-grep.

Isibonelo, nge pwd Ubona indlela ephelele yohlu lwamanje, nge cd Ushintsha amafolda, futhi ls uhlu lokuqukethwe. Umyalo tree Ibonisa umuthi ophindaphindayo wezinhlu zemibhalo namafayela, okulula kakhulu ukuthola umbono ophelele wephrojekthi.

Ukudala izinto ezintsha ozisebenzisayo mkdir (izincwajana) kanye touch (amafayela). cp kopisha amafayela, mv iyazisusa noma iziqambe kabusha, futhi rm Uyawasusa. Qaphela kakhulu rm -r y rm -rfngoba bangasusa yonke imikhombandlela ngaphandle kokubuyela emuva.

Ukuze ubuke amafayela, less Kulula kakhulu ngoba ikuvumela ukuthi uzulazule ngekhibhodi, ngenkathi cat vele ulahle konke okuqukethwe. head y tail Zibonisa ukuqala nokuphela kwefayela ngokulandelana, futhi zamukela inketho -n ukukhombisa ukuthi ufuna ukubona imigqa emingaki.

Uma usebenza ngezakhiwo ezimbili noma zememori, hexdump Ikuvumela ukuthi ubuke okuqukethwe nge-hexadecimal. Ukuze useshe umbhalo ngaphakathi kwamafayela, grep Yithuluzi lezinkanyezifuthi ihlangana kahle namapayipi: isibonelo, cat *.c | grep sleep Izokukhombisa yonke imigqa lapho ivela khona sleep emithonjeni yakho ye-C. Ukuze ubukeze amalogi esistimu kuyasiza futhi ukwazi iphephandaba.

Izinguquko zemvelo kanye nefayela le-.bashrc

Izinguquko zemvelo ziyinani Zilayishwa kwiseshini yakho yegobolondo futhi zithinta ukuziphatha kwezinhlelo nezikripthi.Ungababona nge env o printenvfuthi ziboniswa ngefomethi NOMBRE=valor.

Ukuze uchaze ukuguquguquka kwemvelo yesikhashana, mane wenze okulandelayo:

export MI_VARIABLE='aguante sistemas operativos'

Ngenkathi leyo seshini (kanye namagobolondo ayo endodakazi) iqhubeka, uzokwazi ukufinyelela $MI_VARIABLEKodwa uma uvala i-terminal, iyanyamalala. Ukuze ilayishe ngokuzenzakalelayo kugobolondo ngalinye elisha elisebenzisanayo, ungangeza i- export okuhambisana nokuphela kwakho ifayela ~/.bashrc bese uvula i-terminal entsha.

Ukugeleza okuvamile kungaba: iya esikrinini sasekhaya nge cd ~, hlela .bashrc con nano .bashrc noma okufanayo, engeza into efana naleyo ekugcineni export MI_VARIABLE='aguante sisop'Londoloza bese uvala. Kusukela lapho kuqhubeke, njalo uma uvula ikhonsoli entsha, Leyo nguquko izotholakala ngaphandle kokwenza noma yini enye..

Sekukonke, ukwazi i-Bash njengegobolondo kanye nolimi lokubhala kukunikeza ukulawula okuhle kakhulu kunoma yiluphi uhlelo lwe-GNU/Linux: ungenza konke ngokuzenzakalelayo kusukela emisebenzini elula kuya ezinqubweni zokufaka eziyinkimbinkimbi, uphathe amalogi, uqaphe izinsizakalo, wakhe amamenyu amancane abanye abasebenzisi, futhi ekugcineni, wenze umshini usebenzele wena esikhundleni sokuphinda imiyalo ngesandla ngokuphindaphindiwe.