» »

[Linux] Bash pipes

[Linux] Bash pipes

AmokRun ::

Če v terminal vpišem:
echo abcdefghijklmn | cut -c 5-10 | cut -c 2-4

Dobim rezultat fgh
Najprej iz stringa "abcdefghijklmn" izreže "efghij" iz tega pa na koncu še "fgh".

Če pa na mesto echo želim nekaj pingat, pa to ne deluje. Na primer:
ping google.com | cut -c 5-10 | cut -c 2-4


Zakaj v drugem primeru to ne dela? Če uporabim samo en pipe ping google.com | cut -c 5-10 dela normalno, če pa dodam še enega pa ne dela več.
V čem je problem?

DostMam ::

echo konča stream. ping ne zapre streama, zato drugi cut ne ve kdaj je konec podatkov. Mogoče ping -c 5 ...?

kow ::

Bi bilo dobro, ce bi nekdo bolj tehnicno razlozil. Torej, kaj so file descriptorji, kako je implementiran pipe, kaj je stream itd. Ker drugace je tvoj stavek tezko razumljiv.

Zgodovina sprememb…

  • spremenil: kow ()

mr_chai ::

Tako kot so ti zgoraj omenili, ping ti bo v loopu delu v nedogled. Lahko pa nastaviš po koliko paketkih ti zapre stream z -c argumentom.

Tole bi mogl delat: Ampak prosim razloži kaj bi rad dosegel.


ping -c 1 google.com | cut -c 5-10 | cut -c 2-4

Zgodovina sprememb…

  • spremenilo: mr_chai ()

AmokRun ::

Ping sem uporabil samo za primer.

Zanima me kako bi lahko naredil pipeline pri ukazih, ki ne zaprejo streama oz. izpisujejo podatke dokler jih ne prekineš.

Zgodovina sprememb…

  • spremenilo: AmokRun ()

Randomness ::

ping google.com | stdbuf -oL cut -c 5-10 - | cut -c 2-4 -
Takole se to naredi. Hint: buffering

mr_chai ::

kow je izjavil:

Bi bilo dobro, ce bi nekdo bolj tehnicno razlozil. Torej, kaj so file descriptorji, kako je implementiran pipe, kaj je stream itd. Ker drugace je tvoj stavek tezko razumljiv.


Vse v linux jedru je file. :)

File deskriptorji so low level zadeva, načeloma je to samo neka številka, ki označuje odprto povezavo do fajla na disku ali tcp socketa ali block device fajla, character device fajla, direktorija itd.. - v nekem procesu. Kernel ima v ozadju tabelo, ki za vsak odprt file hrani id procesa, ki je odprl/kreiral fajl in file deskriptor (številka), ta pa kaže na file tabelo, ki pa potem hrani pointer do v-noda, ta pa naprej do i-nodea.

Jaz sem že malo ven iz tega, pomojem je pravi naslov tale knjiga https://www.amazon.com/Linux-Programmin...

AmokRun ::

Randomness je izjavil:

ping google.com | stdbuf -oL cut -c 5-10 - | cut -c 2-4 -
Takole se to naredi. Hint: buffering

To me je zanimalo. Hvala.

kow ::

Je Randomness razlozil, chai. Ti zal nisi, kljub dobrim namenom.

mr_chai ::

kow je izjavil:

Je Randomness razlozil, chai. Ti zal nisi, kljub dobrim namenom.


Vprašal si kaj so file descriptorji ! Na to sem ti odgovoril. Namen mojega odgovora, pa ni bil, da ti bom šel zdej celo arhitekturo operacijskim sistemov razlagat, zato sem ti predlagal knjigo, ker sprašuješ o stvareh, ki terjajo nekaj podlage. Drugače pa se nauči google uporabljati, je fajn zadeva.

Invictus ::

Fant, RTFM, da dobiš nekaj osnov...

Pol pa sprašuj, čeprav neumnosti.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

Zgodovina sprememb…

  • predlagalo izbris: HotBurek ()

kow ::

mr_chai je izjavil:

kow je izjavil:

Je Randomness razlozil, chai. Ti zal nisi, kljub dobrim namenom.


Vprašal si kaj so file descriptorji ! Na to sem ti odgovoril. Namen mojega odgovora, pa ni bil, da ti bom šel zdej celo arhitekturo operacijskim sistemov razlagat, zato sem ti predlagal knjigo, ker sprašuješ o stvareh, ki terjajo nekaj podlage. Drugače pa se nauči google uporabljati, je fajn zadeva.


Mislil sem na originalno vprsanje. Tudi jaz sem zabluzil, ko sem postavil slaba vprasanja (z namenom, da bolje razlozis). Ce sedaj prav razumem, je odgovor: "razumeti moras kaj je to buffering v standard I/O knjiznici". Ce predpostavimo razumevanje kaj je pipe.

Zgodovina sprememb…

  • spremenil: kow ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Različen PING - kako realno testirati povezavo v svet?

Oddelek: Omrežja in internet
172937 (2250) hojnikb
»

težave internet (Mint Mate 16)

Oddelek: Pomoč in nasveti
81272 (1179) MrStein
»

[bash] Sortiranje fotografij po datumu

Oddelek: Programiranje
101450 (1011) Mike0
»

Na internet preko mobitela

Oddelek: Omrežja in internet
162578 (2290) amigo_no1
»

Bash izpis datotek

Oddelek: Programiranje
111471 (1293) BigWhale

Več podobnih tem