Tuba: çfarë duhet të dini për të filluar përdorimin e tyre në GNU / Linux

tubacionet

një tub ose gype në të vërtetë është një tubacion i disponueshëm për UNIX / Linux dhe shumë praktik. Por për të kuptuar plotësisht se çfarë është një tub, duhet të dini se në një mjedis * nix ai ka 3 rrjedha të të dhënave të integruara. Kjo, për ata që nuk e dinë, do të thotë që të dhënat mund të udhëtojnë në ose nga tre pika.

Atëherë do ta kuptoni këtë në një mënyrë më të mirë, por ajo që dua të ta bëj të qartë tani është se me një tubacion ajo që mund të bësh është të kanalizosh nga një prej atyre pikave te të tjerët. Kjo lejon marrjen e daljes ose rezultatit që një program hedh drejt hyrjes së një tjetri që ai të përdoret, etj. Do të përpiqem ta shpjegoj me disa shembuj praktikë që do t'ju ndihmojnë ta kuptoni shumë mirë.

Ato pika për të cilat po flisja apo rrjedhat e të dhënave, janë:

  • stdin: korrespondon me 0 dhe është hyrja standarde. Në përgjithësi, hyrja standarde për një sistem * nix është tastiera. Kjo është, ajo që ju shkruani do të jetë informacioni i përdorur. Ajo ka një pajisje të veçantë të lidhur me të e cila është / dev / stdin.
  • stdout: identifikuar me 1, është prodhimi standard. Zakonisht ajo korrespondon me monitorin ose ekranin e kompjuterit tuaj, i cili është vendi ku ju mund të shihni informacionin. Për shembull, kur ekzekutoni një komandë ls, lista e përmbajtjes do të shfaqet në ekran, apo jo? Pajisja e lidhur është / dev / stdout.
  • stderr: identifikuar me 2, është dalja standarde e gabimit, për kur ndodh një gabim në një program. Pajisja e lidhur është / dev / stderr.

Me një tubacion mund të bëni që dalja standarde ose ndalimi i një komande të kalojë direkt në hyrjen standarde të një tjetri. Kjo është, ju mund të bëni që një program të ushqejë një tjetër. Në vend që të përdorë parametrat e futur në tastierë, një tub jep informacionin e gjeneruar nga komanda e mëparshme përmes këtij tubacioni të përfaqësuar nga |

me shembujt do ta kuptoni me mire. Supozoni se dëshironi të renditni përmbajtjen e një direktorie, por ju intereson vetëm të shihni emrat që përputhen me fjalën doc. Kështu që mund të përdorni një tubacion për të tubuar prodhimin e ls në hyrjen e filtrit grep për t'i thënë që të shfaqë vetëm ato që përputhen me atë model:

ls -l | grep doc

Pra, në vend që t'ju tregojë të gjithë emrat, thjesht ju tregon ato që vërtet ju interesojnë. Ju mund të bëni të njëjtën gjë me përmbajtjen e një skedari. Imagjinoni që dëshironi të shihni vetëm informacionin e proceseve me emrin firefox dhe jo të gjitha:

ps aux | grep firefox

Në vend që të tregojë të gjithë daljen e programit ps në ekran (stdout), ajo që bën është ta kanalizojë atë drejt hyrjes së filtrit grep dhe tregon vetëm në dalje se çfarë korrespondon me modelin firefox në këtë rast ...

Nëse dëshironi, mund të përdorni tuba të ndryshëm për të sjellë daljen e një komande në hyrjen e një komande tjetër të dytë, dhe daljen e asaj të dytës në hyrjen e një të treti, etj. Për shembull:

cat libro | grep love | more

Siç e shihni mundësitë janë të shumta, të gjitha ato që mund t’i imagjinoni dhe lejohen. Edhe tregoni vetëm rreshtat e parë dhe të fundit të një skedari, numëroni linjat që hyjnë në wc që vijnë nga lista, dhe madje i renditni ato:

cat listado | head
cat listado | tail
cat listado | wc -l
cat listado | sort

Ju gjithashtu mund të punoni me të gabime me | & dhe për shembull kërkoni fjalën alarm në prodhimin e një skenari nëse dështon:

./miscript |& grep alerta 

Dhe së fundmi, ekzistojnë dy komanda të lidhura ngushtë me tubat që janë tee dhe xargs dhe se ato mund të zgjerojnë më tej mundësitë e këtyre. Në rastin e tee, ajo që do të lejojë është të tregoni rezultatin e programit të mëparshëm në daljen standarde në mënyrë që ta shihni, dhe përveç kësaj, mund ta tubojë atë në një skedar tjetër. Një shembull do të ishte nëse renditni përmbajtjen e një direktorie dhe dëshironi të shihni prodhimin e ls -l për momentin dhe gjithashtu ta ruani atë në një listë të skedarëve.txt:

ls -l | tee listado.txt

Nëse nuk përdorni tee, nuk do të jeni në gjendje të shihni prodhimin në tastierën tuaj ...

Y xhargat është edhe më interesante në disa raste. Në këtë rast është në gjendje të ndërtojë një komandë nga hyrja standarde që merr përmes tubacionit. Me fjalë të tjera, ai është i aftë të kapë gjithçka që një program i mëparshëm ka nisur përmes daljes së tij dhe që arrin xargs përmes tubacionit për ta kaluar atë nga ana tjetër në një komandë tjetër si argumente.

Ende nuk e merrni atë? Do ta shihni shumë më mirë me një shembull. Imagjinoni që dëshironi të hiqni të gjitha skedarët e dreq thumbs.db nga një direktori, disk ose ndarje. Nëse ka shumë, mund të jetë e pamundur të shkosh një nga një me komandën rm për t'i fshirë ato manualisht. Por me xargs mund të automatizosh gjithçka. Dhe mund ta bëni duke përdorur find për t'i lokalizuar ato, të dërgoni prodhimin përmes hyrjes së xargs dhe kjo nga ana tjetër do t'i japë rm emrat si argumente. Prandaj, të gjitha ato të vendosura do të fshihen automatikisht:

find ./ -name "thumbs.db" | xargs rm

Për shembull, supozoni se gjeni lokacionet /home/name/thumbs.db, /media/test/thumbs.db dhe /tmp/thumbs.db. Epo, xargs do t'i dorëzojë tek rm sikur të ishin argumente. Kjo do të thotë, sikur të kishim ekzekutuar: rm /home/name/thumbs.db, atëherë rm /media/test/thumbs.db dhe pastaj rm /tmp/thumbs.db.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Jose dijo

    Shkëlqyeshëm, ky informacion është shumë i rëndësishëm për ne përdoruesit e linux-it

  2.   Daniel dijo

    Çfarë artikulli të mirë, tani që jam duke studiuar ridrejtimin I / O në librin Linux Command Line. Shtë më e qartë për mua për tubacionet (tubacionin) dhe tre rrjedhat e të dhënave. Kontributi vlerësohet. Pershendetje

  3.   01101001b dijo

    Shembulli me xargs më përshtatej si një dorezë. Saktësisht sot po merresha me detajet e një daljeje të shumëfishtë që duhej të dërgoja "në pjesë". xargët ecën një pinturita.
    Super mirënjohës!