#26 Le 31/12/2010, à 15:33
- Totor
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
P.S.: et donc puis-je aussi remplacer ma fonction
nop() { cat - >/dev/null }
par
nop() { >/dev/null }
... histoire d'éviter un deuxième award !
ça n'a pas d'intérêt car rediriger la sortie standard vers /dev/null n'as pas de sens puisque l'on affiche rien. (je sais, je l'ai mis dans mes exemples plus tôt )
je pense qu'un simple ":" (ou true) dans la fonction suffit. ou alors un read comme je l'ai indiqué auparavant.
pour zenity ... ce serait plutôt avec l'option "notification"
Dernière modification par Totor (Le 31/12/2010, à 15:41)
-- Lucid Lynx --
Hors ligne
#27 Le 31/12/2010, à 16:02
- Zakhar
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
Oui, je pense qu'un read devrait marcher, je vais tester ça.
Un : ou true, je vais avoir le même problème que précédemment. Comme il n'attend aucun input, il va se terminer, provoquant la sortie prématurée des autres commandes du pipe, comme cela a été pointé du doigt plus haut par kincany.
Et si j'ai bien compris l'histoire du coproc
command_A | command_B
est équivalent à
coproc { command_B }
command_A 1>&[$COPROC[0]]
... ou pas loin !
Dernière modification par Zakhar (Le 31/12/2010, à 16:05)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#28 Le 31/12/2010, à 19:44
- Hizoka
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
question HS :
echo "${neRienFaire}"
: ${neRienFaire:=Rien}
: ${neRienFaire:=TropTard}
echo "${neRienFaire}"
Que signifie exactement les : ?
merci et bonne fin d'annee
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#29 Le 31/12/2010, à 22:13
- Zakhar
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
C'est pas HS.
La réponse est dans le post 4.
: est un alias de true
Pratique pour faire :
while : ; do
# instructions
done
Synonyme de
while true ; do
# instructions
done
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#30 Le 01/01/2011, à 00:55
- Zakhar
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
Bonne année à toutes et tous !
@Totor :
nop()
{
read
}
=> Ca ne fonctionne pas du tout !..
Je présume (à vérifier) que les fichiers à copier étant "binaires" ils contiennent quelque part un caractère qui est interprêté par read comme un EOF. Et donc read s'arrête de lire et se termine, ce qui a pour effet de produire un fichier résultat tronqué.
nop()
{
>/dev/null
}
=> Ne fonctionne pas non plus. Allez savoir pourquoi... est-ce même une syntaxe correcte ?
Donc pour cette partie je garde :
nop()
{
cat - >/dev/null
}
=> Même si c'est un cat moche, au moins ça marche, ça attend bien patiemment que tous les octets soient envoyés avant de terminer !
"Process substitution" :
- J'adopte pour l'option -c du mdsum. C'est plus propre car ça évite d'avoir à gérer un fichier temporaire (création, suppression...) et probablement plus rapide
- par contre je garde les pipes dans mes ordres principaux car le "process substitution" est plus lent (j'ai testé plusieurs fois avec mon script puisqu'il donne le temps total). De plus la documentation indique bien que c'est géré dans /dev/fd (probablement un truc optimisé), mais qu'un système qui ne gèrerait pas /dev/fd pourrait implémenter avec des fichiers temporaires. Et là alors... au niveau temps ce serait la grosse catastrophe car ça ferait une écriture et une lecture physique de fichiers en plus !..
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#31 Le 02/01/2011, à 18:41
- Totor
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
Bonsoir (et meilleurs voeux à tou[te]s),
Ceci fonctionne très bien chez moi (mais pour un seul fichier) :
$ function nop() { read; }
$ command=nop
$ tee fichier < /usr/bin/passwd|${command}
$ echo ${PIPESTATUS[@]}
0 0
lorsqu'il y a plusieurs fichiers :
$ function nop() { while read; do : ; done ; }
$ cat /usr/bin/m*|tee fichier|${command};echo ${PIPESTATUS[@]}
0 0 0
Après, si jamais il t'arrive que la fonction nop retourn un status <> 0; alors, il suffit d'y forcer un code retour à 0 : function nop() { while read; do : ; done ; return 0; }
-- Lucid Lynx --
Hors ligne
#32 Le 02/01/2011, à 20:35
- Totor
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
pour zenity ... ce serait plutôt avec l'option "notification"
l'info se trouve ici
-- Lucid Lynx --
Hors ligne
#33 Le 03/01/2011, à 08:24
- Zakhar
Re : [Résolu] Existe-t-il une commande qui ne fait rien ?
Cool, je vais me pencher de plus près sur ton script pour faire une progression en notifications.
Merci !
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne