Discussion:Programmation Bash/Flux et redirections
Commandes simple
modifierVoila ce que dit le la page man de bash:
Une commande simple est une suite d'affectations facultatives de variables, suivie de mots séparés par des blancs et de redirections, et terminée par un opérateur de contrôle.(man bash: Commandes simples)
Ce qu'il faut retenir c'est qu’apparemment le bash évalue la commande avant de l'exécuter.
De cette manière vous pouvez si la commande le permet comme "cat" et non "printf":
cat << EOF
Ou:
cat /dev/stdin << EOF (Est-ce que je redirige EOF dans la sortie de commande cat?). Je redirige jusqu'à un mot de l'entrée standard de bash ou s’exécute cat et affiche l'entrée standard avec cat dans bash.
EOF est un mot de la commande, bash analyse la commande, cat permet tous types de redirections. EOF est un mot de la commande issue de l'entrée standard courante d'où bash lance cat, ce n'est pas /dev/stdin.
EOF permet de revenir sur l'entré standard d'ou j'ai exécuté cat
De cette manière printf << "salut", N'est pas possible car printf ne le permet pas. (Je sais c'est bête mais c'est comme ça :) )
en revanche je peut très bien:
END="EOF"
cat <<< $END
les sorties !?? :/
modifier(sous linux, bsd surement, windows?)
Ouvrir 2 terminaux et faire dans chacun d'entre eux
ls -l /dev/fd
ou même
ls -l /dev/fd/ >> /tmp/test.txt & ls -l /dev/fd/ >>/tmp/test.txt
En effet on trouve un lien vers /proc différent.
En revanche y a un répertoire inaccessible bien que existant sur le système de fichier.
De même et plus convainquant
cat & ls
chaque processus à la sortie de l'environnement bash qu'il ne peut partager en lecture et écriture en même temps
je peux faire ls & ls; en revanche je ne peux pas faire cat >>fichier & ls... oui c'est ridicule :)