Met kun je de output van het ene programma laten gebruiken als invoer voor het volgende. Voorbeeld: ps aux grep netscape. Het eerste commando (ps aux) geeft als output alle processen die op dit moment draaien. Deze output dient als input voor grep netscape, die ervoor zorgt dat alleen de regels waar netscape in voorkomt overblijven. De invoer van een programma noem je stdin, de uitvoer stdout. Er is ook nog stderr, de error output. Die laatste wordt gebruikt voor foutmeldingen. Beide worden hetzelfde getoond in de console/terminal, maar je kunt ze wel apart filteren bij het redirecten.
Met kun je de output van een commando naar een bestand of ander programma
laten redirecten.
Zo zorgt echo hoi testfile ervoor dat de output van echo hoi
(hoi dus) in het bestand testfile wordt gezet. Bestaat dat bestand al, dan
wordt die overschreven! De output krijg je hierdoor niet op het beeld te zien.
Je kunt van ongewenste output afkomen door het te redirecten naar /dev/null.
Dan verdwijnt het in de digitale prullenbak. De stderr
wordt normaal gesproken niet meegenomen bij het redirecten.
Wil je die ook meenemen, gebruik dan &> file
of > file 2>&1
.
Met kun je ook output naar een bestand redirecten, maar in dit geval wordt het bestand niet overgeschreven, maar wordt de output achteraan in het bestand toegevoegd.
Met wordt wat erna komt als input gebruikt voor het programma dat ervoor komt.
Met kun je zelf input intikken totdat je een bepaald woord intikt. Voorbeeld: cat test stop. Je kunt na dit commando gegeven te hebben van alles intikken, totdat je op een lege regel alleen stop intikt. Dan wordt de ingetikte tekst (zonder het woord stop) in het bestand test gezet. Waarschijnlijk ga je dit niet zo vaak gebruiken, maar ik noem het even voor de volledigheid.
Tenslotte nog iets handigs dat in ieder geval in de Bash-shell werkt: backquotes. Een backquote is de quote die links naast de 1 op je toetsenbord zit. De output van wat tussen backquotes staat wordt letterlijk zo ingevuld op die plaats. Een voorbeeld: vim `which startx`. Het commando which startx geeft de exacte locatie (complete pad + bestandsnaam) van dit script als output. Dat wordt letterlijk ingevuld achter vim, dus zo open je het script startx.