Toon posts:

[unix] pipe doet het niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik weet eigenlijk niet 1-2-3 of het hier thuishoort, ik zit al een tydje lam te staren op een pipe die niet werkt, misschien dat iemand kan helpen en vertellen waarom hij niet werkt?

als ik de operaties los uitvoer gaat het goed: en krijg ik mooi een getal in wordlist

head fed* > ~/headers

wc -w ~/headers > ~/wordlist

cat ~/wordlist < /dev/tty2

maak ik er een pipe van dan krijg ik 0, wat doe ik fout, ik kan de fout maar niet ontdekken...


head fed* > ~/headers | wc -w ~/headers > ~/wordlist | cat ~/wordlist < /dev/tty2


edit//

dit is het idee


1. ik wil de headers krijgen van alle bestanden met naam "fed*"

2. zet de headers vd bestanden in file "headers"

3. tel het aantal woorden in "headers"

4. save het aantal woorden in bestand "wordlist"

[ 5. print wordlist in virtual terminal tty2 ]

[ Voor 24% gewijzigd door Verwijderd op 24-11-2003 23:29 ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Wat probeer je precies te bereiken, dus welke informatie wil je waarheen sturen? Ik zie je volgens mij nu pipes gebruiken op punten dat het geen zin heeft

  • imdos
  • Registratie: Maart 2000
  • Laatst online: 14:23

imdos

I use FreeNAS and Ubuntu

volgens mij moet er gewoon gebruikt worden gemaakt van ; of &&

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Je moet ofpipes, of bestanden gebruiken:
code:
1
head fed* | wc -w | cat - < /dev/tty2
Ik weet alleen niet zeker of cat wel '-' als STDIN herkent. Met files kan natuurlijk ook:


code:
1
head fed* > ~/headers && wc -w ~/headers > ~/wordlist && cat ~/wordlist < /dev/tty2
Jij kreeg niet foutmelding nul, maar 'goed-melding' 0: als je nul terug krijgt betekend het dat het goed ging; je shell voerde in jouw geval de 'head' opdracht uit, en de uitvoer daarvan
werd doorgestuurd enzo. De uitvoer van 'head' was echter helemal niet, dus kreeg je geen resultaat te zien.

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
't Is me niet compleet duidelijk wat je wilt doen.

Je neemt de eerste 10 regels van alle bestanden die beginnen met fed*
Daarvan tel je het aantal woorden.
En dan wil je dat aantal laten zien op het scherm (waarom de '< /dev/tty2' ?).

Dan kan het volgens mij zo:
code:
1
head fed* | wc -w > ~/wordlist

en met
code:
1
cat ~/wordlist

kun je de inhoud van wordlist laten zien.
edit:
spuit 11 :P

[ Voor 9% gewijzigd door _Squatt_ op 24-11-2003 23:09 ]

"He took a duck in the face at two hundred and fifty knots."


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

En nu de kortste versie :P

code:
1
head fed* | wc -w


Over onnodig moeilijk gesproken :z

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Verwijderd

Topicstarter
dit is het idee


1. ik wil de headers krijgen van alle bestanden met naam "fed*"

2. zet de headers vd bestanden in file "headers"

3. tel het aantal woorden in "headers"

4. save het aantal woorden in bestand "wordlist"

[ 5. print wordlist in virtual terminal tty2 ]

Verwijderd

Topicstarter
_Squatt_ schreef op 24 november 2003 @ 23:09:
't Is me niet compleet duidelijk wat je wilt doen.

Je neemt de eerste 10 regels van alle bestanden die beginnen met fed*
Daarvan tel je het aantal woorden.
En dan wil je dat aantal laten zien op het scherm (waarom de '< /dev/tty2' ?).

Dan kan het volgens mij zo:
code:
1
head fed* | wc -w > ~/wordlist

en met
code:
1
cat ~/wordlist

kun je de inhoud van wordlist laten zien.
edit:
spuit 11 :P
dit werkt uiteraard wel alleen mis ik nu de stap van saven in "headers"

  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 12:31
head fed* > ~/headers | wc -w ~/headers > ~/wordlist | cat ~/wordlist < /dev/tty2
de eerste stuk van de regel gaat niet werrken:
head fed* >~/headers geeft geen output.

Verwijderd

Topicstarter
ge-flopt schreef op 24 november 2003 @ 23:32:
head fed* > ~/headers | wc -w ~/headers > ~/wordlist | cat ~/wordlist < /dev/tty2
de eerste stuk van de regel gaat niet werrken:
head fed* >~/headers geeft geen output.
code:
1
head fed* >~/headers


zet hij hiermee dan niet de headers van fed* in bestand headers?

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je weet dat head alleen de eerste 10 regels opgeeft, en niet noodzakelijkerwijs alle headers (van bijvoorbeeld een mailtje)? Maar je moet het verschil in gebruik van ; | & en > nog wat beter leren denk ik, zie bijvoorbeeld http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html voor een prima uitleg.
en hoe je met < /dev/tty2 output /naar/ tty2 wil krijgen is mij een raadsel :)
maargoed, hier is wat jij ongeveer zoekt denk ik
code:
1
head *fed > headers ; cat headers | wc -w > wordlist ; cat wordlist > /dev/tty2

Waarom je dat precies op deze manier wil vraag ik me af, maar dit doet wat jij wil.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Verwijderd schreef op 24 november 2003 @ 23:34:
[...]


code:
1
head fed* >~/headers


zet hij hiermee dan niet de headers van fed* in bestand headers?
Dat ontkent hij dan ook niet, hij zegt slechts dat dat geen output heeft, en dat een pipe ( | dus) direct daarna dan ook geen enkele zin heeft, zie ook mijn bovenstaande post).

[ Voor 3% gewijzigd door blaataaps op 24-11-2003 23:37 ]


  • ge-flopt
  • Registratie: Februari 2001
  • Laatst online: 12:31
Verwijderd schreef op 24 november 2003 @ 23:34:
[...]


code:
1
head fed* >~/headers


zet hij hiermee dan niet de headers van fed* in bestand headers?
Mijn fout, Zie nu dat verderop in de regel weer verder geborduurd wordt op die file.... Moet niet meer zo laat een wijs persoon uitproberen te hangen, overdag lukt het me nog wel, 's avonds niet echt meer... 8)7

Verwijderd

Topicstarter
blaataaps schreef op 24 november 2003 @ 23:34:
Je weet dat head alleen de eerste 10 regels opgeeft, en niet noodzakelijkerwijs alle headers (van bijvoorbeeld een mailtje)? Maar je moet het verschil in gebruik van ; | & en > nog wat beter leren denk ik, zie bijvoorbeeld http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html voor een prima uitleg.
en hoe je met < /dev/tty2 output /naar/ tty2 wil krijgen is mij een raadsel :)
maargoed, hier is wat jij ongeveer zoekt denk ik
code:
1
head *fed > headers ; cat headers | wc -w > wordlist ; cat wordlist > /dev/tty2

Waarom je dat precies op deze manier wil vraag ik me af, maar dit doet wat jij wil.
dit is toevallig een oefenopdracht uit een boek, ik heb er een tyd op zitten turen, maar ik kwam er maar niet uit en dan gaat het kriebelen he, maar jouw line klopt inderdaad. " ; " was helaas nog onbekend bij mij

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ook dat kan korter:

code:
1
head *fed | tee headers | wc -w | tee wordlist


Denk ik nu te makkelijk :? of jullie te moeilijk :+

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
met een > /dev/tty2 erachteraan krijg je dan als ik me niet vergis hetzelfde eindresultaat. Maar voor de overzichtelijkheid interpreteerde ik elke 'eis' in [rml]femkester in "[ unix] pipe doet het niet"[/rml] letterlijk, dus tellen hoeveel er in dat bestand staat, in plaats van dingen te combineren, zoals vaak in de NOS-wereld leiden er meerdere wegen naar hetzelfde resultaat :)

[ Voor 25% gewijzigd door blaataaps op 24-11-2003 23:47 ]

Pagina: 1