Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 31/12/2010, à 16:33

Totor

Re : [Résolu] Existe-t-il une commande qui ne fait rien ?

Zakhar a écrit :

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, à 16:41)


-- Lucid Lynx --

Hors ligne

#27 Le 31/12/2010, à 17: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 ! tongue

Dernière modification par Zakhar (Le 31/12/2010, à 17:05)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#28 Le 31/12/2010, à 20: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, à 23:13

Zakhar

Re : [Résolu] Existe-t-il une commande qui ne fait rien ?

C'est pas HS. wink

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, à 01: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, à 19: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, à 21:35

Totor

Re : [Résolu] Existe-t-il une commande qui ne fait rien ?

Totor a écrit :

pour zenity ... ce serait plutôt avec l'option "notification"

l'info se trouve ici


-- Lucid Lynx --

Hors ligne

#33 Le 03/01/2011, à 09: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