Les commandes grep, echo, df, etc. affichent leur résultat à l'écran. En fait, ce qui se produit à un niveau plus bas, c'est qu'elles écrivent les caractères qui seront affichés, dans un flux de données (ou tube) appelé tube stdout. Le shell lit ces données, caractère par caractère, et les affiche à l'écran. Le mot tube signifie exactement ceci: un programme met des données au début d'un canal tandis qu'un autre programme lit ces données à l'autre bout. Les tubes permettent donc à deux programmes séparés de communiquer entre eux. Dans les cas cités ci-avant, les programmes communiquent simplement avec le shell qui affiche leur sortie.