Tubes et autres pipes en mode console

Bonsoir,
Je suis sur les tubes en ce moment, et j’ai pris un exemple concret (mais un peu complexe … :confused: ), pour apprendre à les maitriser . Je vais aller voir la bibliothèque de Liens Utiles dans [size=125]T&A[/size] mais avant je préfère poser le problème, car ce n’est que la première pierre d’un édifice made in usinagaz … :stuck_out_tongue:
Donc, si vous avez un lien magique qui explique bien tout ce que je me demande ci-aprés, je suis preneur …

Bon, alors ce que je souhaite, c’est concevoir une ligne de commande qui :

  • fait appel à sudo
  • apt-get install ?pkg
  • garde une trace de la manip dans un fichier passé en paramètre
  • mais affiche également en console les sorties de la commande

Je me dis qu’il est question de :

  • redirection des sorties
  • de la commande tee

J’ai cherché un bon moment, et j’ai trouvé ça qui fonctionne * :

  • sans retour à la ligne.

Comme c’est franchement long, avant de passer à la deuxième pierre, j’aimerais qu’on me corrige et qu’on optimise tout ça …
je serais pas étonné que ça puisse être écrit :

  • en 1 ligne de longueur raisonnable …
  • en évitant de faire appel à trois fichiers temporaire dont deux devront nécessairement être removed …
  • avec appel à une commande simple qui existe déjà que je ne trouve pas …

voilou … des éclaircissements ?

hello,

Encore une fois lis les docs ! non je blague c’est vrai que les redirections c’est chiant mais quand t’on les comprends…

enter:/$ sudo apt-get -su install -t sid libqt3-mt-dev > /tmp/test | tail -f /tmp/test

et travailles dans /home/jcode/Apt et réecris tes commandes avec ~ pour qu’on puisse les lire, au lieu de nous faire des lignes de trente kilomètres :wink:

[quote=“stonfi”]hello,

enter:/$ sudo apt-get -su install -t sid libqt3-mt-dev > /tmp/test | tail -f /tmp/test
[/code][/quote]
héhé, non stonfi, c'est pas tout à fait ce que je voulais ... j'ai oublié de préciser un truc qui m'importe, c'est vrai : 
- je veux que la commande soit [b]aussi[/b] inscrite dans le fichier, en l'occurence [color=darkred]$ sudo apt-get -su install -t sid libqt3-mt-dev[/color].
algorythmes possibles : 

- 1/
a- inscrire la commande dans un fichier
b- executer la commande en redirigeant le contenu du fichier vers l'entrée (à la place du clavier)
c- afficher [b]&[/b] inscrire, (simultanément ou non), la sortie de la commande (exécutée) en console [b]&[/b] dans le fichier (en append, sans effacer la commande enregistrée).
[color=orange]d[/color]- le dernier process (tail ici) doit rendre la main tout seul, de sorte qu'a là fin, sans rien faire, j'obtienne le prompt d'invite de commande toto@debian:~$ 
"j'optimiserai" bien en souhaitant que le fichier s'ouvre automatiquement à la fin du processus (juste pour vérifier que pas d'erreur de flux) ...mais rien à voir avec les tubes j'imagine ...

2/ je verrais demain, si ya d'autre idées ...

Ainsi, avec ta ligne stonfi, on obtient la même chose que : 
[code]$ sudo apt-get -su install -t sid libqt3-mt-dev | tee /tmp/test[/code]
sauf que ta suggestion ralentie, saccade, et ne rend pas la main au prompt, par rapport à la commande utilisant [b]tee[/b], dont les variantes correspondant au point d- pourrait être : 
[code]sudo apt-get -su install -t sid libqt3-mt-dev | tee /tmp/test && nano /tmp/test[/code]
[code]sudo apt-get -su install -t sid libqt3-mt-dev | tee /tmp/test; nano /tmp/test[/code]
Ce qui me chagrine c'est que je veut aussi que la commande soit inscrite en première ligne du fichier ... 

oui Matt, c'est plus pratique : 
[code]:~/Desktop/Apt$ echo sudo apt-get -su install -t sid libqt3-mt-dev > /tmp/-; `cat < /tmp/-`| tee /tmp/--; cat /tmp/- /tmp/-- > xconfig && rm /tmp/-* && nano /xconfig

Ce qui est déjà plus court … - & – c’est mieux que . & …, mais un remove des fichiers cachés (.) de tmp ne doit pas être trés grave, si ?
Là j’ai à peu prés ce que je veux, mais c’est enore long non, ya pas plus mieux ?

hello,

Dit nous l’idée que tu as, ca sera peut etre plus simple.

bonjour,
ben stonfi, hier soir, je voulais ça :

:~/Desktop/Apt$ echo sudo apt-get -su install -t sid libqt3-mt-dev > /tmp/-; `cat < /tmp/-`| tee /tmp/--; cat /tmp/- /tmp/-- > xconfig && rm /tmp/-* && nano /xconfig mais en plus simple, c’est à dire :

  • est-ce qu’il y a pas une meiileur combinaison de commande que cat, tee, et > ou < pour faire celà.
    (C’est sans risque d’essayer voir ce que ça donne, on peut tester sans option -t sur n’importe qu’elle package à installer, vu que ça simule, no souci … donc tu verras ce que ça donne et la différence avec l’utilisation de tail) …

Plus largement, comme je lisais un souci de ricardo avec un alias de mount hier soir, je me suis dis que j’allais utiliser un script shell (à défaut de trouver plus simple en ligne de commande), pour bosser les scripts, les alias … tout ça quoi …
Alors j’ai pas mal avancé, et ça m’a mené à l’idée que ce script allais me servir à garder toutes traces des apt-get install que je ferai dorénavant, afin de savoir, le jour (et l’heure) où ça merdoirat, pourquoi et la faute à quels paquets …
Donc voilà, cette nuit, la poule a pondu son oeuf … mon premier script un peu travaillé, un bon TP quoi … une usine à gaz quoi :unamused: mais qui m’a permis (j’ai pas testé toutes les conditions, toutes les possibilités, pas encore) de localiser à 90 % sur, dans une liste (… un peu longue), le ou les paquets responsables de la disparition de mon menu Debian dans Applicatons … vu qu’aprés le script, donc l’install, (et un reboot c’est vrai :unamused: ) il était revenu …

Bon ben je vais lancer un post sur le forum/section Programmation pour ça, vu que c’est du bash :
forum.debian-fr.org/viewtopic.php?p=33923

ça ça marche aussi pareil :

Pas la peine d’éditer le fichier …