6 votes

faire en sorte que cowsay envoie un mot à la fois dans putty

Bonjour, je me demande comment obtenir cowsay pour lire un mot à la fois à partir d'un fichier texte. Je suis au point zéro en ce moment, j'utilise Putty et j'ai vraiment besoin d'aide.

7voto

steeldriver Points 118154

Il s'agit d'un cas rare où le fractionnement des mots est réellement souhaitable :

for word in $(<file.txt); do cowsay "$word"; sleep 1; done

(le sleep est facultative). Ou il y a toujours xargs :

xargs -a file.txt -n1 cowsay

5voto

Terrance Points 35422

Voici quelque chose que j'ai trouvé très rapidement. J'ai mis une ligne dans un fichier de test et je l'ai envoyé à cowsay.

terrance@terrance-ubuntu:~$ cat cstest.txt 
This is a test file to test cowsay

Je le configure pour lire chaque ligne, puis je fais un for loop de chaque ligne pour lire chaque mot. Exemple ci-dessous :

:~$ cat cstest.txt | while read line; do for word in $line; do cowsay $word; done; done
 ______
< This >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< is >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ___
< a >
 ---
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< file >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< to >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ________
< cowsay >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Chaque ligne individuelle de cette commande ressemblerait à :

:~$ cat cstest.txt | while read line
>do 
>for word in $line
>do 
>cowsay $word
>done
>done

J'espère que cela vous aidera !

5voto

Sergiy Kolodyazhnyy Points 97292

Python one-liner :

python -c 'import sys,subprocess;[subprocess.call(["cowsay",w]) for l in sys.stdin for w in l.split()]' < words.txt

Exemple d'exécution :

$ cat words.txt
this is a test
$ python -c 'import sys,subprocess;[subprocess.call(["cowsay",w]) for l in sys.stdin for w in l.split()]' < words.txt                 
 ______
< this >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< is >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ___
< a >
 ---
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
$

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X