Blogas // Tekstai // Mintys // DUK // Linkai // Kontaktai

Linux pipe

Sekant mūsų kalbininkų pėdomis straipsnis galėjo vadintis "Vamzdžiai", bet tai palikime tautinės OS kūrėjams ;) Geriau iš karto griebti velnią už ragų, jei naudojate freeBSD, o jei naudojate Linux ... tiek to, užteks beletristikos :D Strapsnyje toliau bus minimas tik Linux, nes naudoju Debian, bet tai tinka ir daugeliui kitų POSIX sistemų.

Kiekviena linux'o programa (naudojama konsolėje) turėtų: priimti duomenis (STDIN - standard input), grąžinti duomenis (STDOUT - standard output), bei grąžinti klaidas, jei tokių buvo vykdant programą (STDERR - standard error). Duomenis kuriuos gražina viena programa galima "sumaitinti" kitai programai. Duomenys "sumaitinami" naudojant vamzdį ( | - pipe ).

cat access.log | awk '{print $1}' | sort | uniq -c | sort -n | tail -n 20

Šis pavyzdys padės išsiaiškinti kam naudojami pipe Linux komandinėje eilutėje:

Atlikus šią ilga komandą iš access.log failo gauname 20 dažniausiai pasikartojančių adresų surūšiuotų didėjimo tvarka, bei nurodant pasikartojimų skaičių.

Jei duomenis norime nukreipti į failą, kad ir mūsų pavyzdyje - išsaugoti statistiką galima naudoti nukreipimo simbolius:

Keli pavyzdžiai pabaigai :

echo "Laikas:" > informacija.txt
date >> informacija.txt
df -h >> informacija.txt

Į failą informacija.txt bus įrašytas tekstas "Laikas:", programa date papildys failą konkrečiu laiku ir df -h įrašys į failą informaciją apie failų sistemos užimtumą.

mysql -u root -p duombaze < failas.sql

Taip galima patogiai importuoti failą (failas.sql) į duomenų bazę. Ši komanda veikia ir Windows sistemose, praverčia kada reikia importuoti didelius sql failus.

mysql -u root -p duombaze < failas.sql.gz | gzip

Jei failas yra suarchyvuotas, galime panaudoti ir pipe.

 

(c) 200* by Daffy :: inValid XHTML 1.1 :D :: CSS Dangaus žibintai