les alias peuvent et ne peuvent pas traiter les stdin pipés...
Ici, nous créons 3 lignes de sortie
$ echo -e "line 1\nline 2\nline 3"
line 1
line 2
line 3
Nous envoyons ensuite la sortie vers stdin de la commande sed pour les mettre tous sur une ligne
$ echo -e "line 1\nline 2\nline 3" | sed -e ":a;N;\$!ba ;s?\n? ?g"
line 1 line 2 line 3
Si nous définissons un alias de la même commande sed
$ alias oline='sed -e ":a;N;\$!ba ;s?\n? ?g"'
Nous pouvons envoyer la sortie vers l'entrée stdin de l'alias et il se comporte exactement la même chose
$ echo -e "line 1\nline 2\nline 3" | oline
line 1 line 2 line 3
Le problème se pose lorsque nous essayons de définir l'alias comme une fonction
$ alias oline='function _oline(){ sed -e ":a;N;\$!ba ;s?\n? ?g";}_oline'
En définissant l'alias comme une fonction, on casse le pipe.
$ echo -e "line 1\nline 2\nline 3" | oline
>