# faire afficher un mot dans le terminal avec un .sh



## tantoillane (17 Septembre 2008)

Bonsoir,

J'ai créé un mini-programme en bash enregistré dans un fichier.sh
J'aimerais ajouter une ligne de commande qui affiche une phrase dans la console avant de l'enregistrer dans un fichier texte.
Ce serait donc quelque chose du genre

LACOMMANDE 'ma phrase' >> fichier.txt

Sauf que je ne connais pas cette fameuse commande et mes recherches ne sont pas bien fructueuses. :rateau:

Merci à tous


----------



## ericb2 (17 Septembre 2008)

C'est un sujet de TP ?


----------



## tantoillane (17 Septembre 2008)

ericb2 a dit:


> C'est un sujet de TP ?



Non c'est pour moi, mais il est probable que ça deviennent rapidement un sujet de TP, étant donné qu'on commence par les bases UNIX histoire d'être à l'aise dans cet environnement. 

Ah et puis j'ai trouvé : C'est echo la commande. Je pensais que cette commande ne marchait que pour d'autre commande mais elle marche aussi pour afficher des messages. Et le plus incroyable c'est que c'est la même sous windows (sauf que windows ne fait pas la différence entre > et >> et écrit toujours par dessus ce qu'il y a déjà dans le fichier texte). Vive linux, vive OS X, vive l'UNIX ...  

edit : ah non, en fait windows fait bien la différence entre > et >>, j'ai rien dit. _C'est pas complètement inachevé comme système._


----------



## ericb2 (17 Septembre 2008)

J'ai quelques trucs ici (merci d'être indulgent )

http://eric.bachard.free.fr/UTBM_LO22/P08/


----------



## tantoillane (17 Septembre 2008)

Intéressant, ça peut toujours venir complété ce que je fais en ce moment


----------



## numsix (18 Septembre 2008)

Pour afficher ta phrase dans la console il faut taper :


```
echo "ta phrase"
```

Ensuite pour afficge ta phrase dans un fichier :


```
echo "ta phrase" > tonfichier.txt
```

Maintenant si tu as besoin de ta phrase dans plusieurs cas, tu peux creer une variable au debut de tonfichier : soit x, la variable 


```
x= $1
```

a l'execution de ton fichier sh, il va te demander d'ecrire ta phrase dans le terminal


```
echo quelles phrase tu veux ecrire ?"
read x
```

et puis dpnc :


```
echo $x > unfichier.txt
```

bonne chance

&#8721;


----------



## tantoillane (18 Septembre 2008)

Ca ne me servira pas ici, mais je pourrais bien en avoir besoin pour autre chose


----------



## tantoillane (18 Septembre 2008)

tantoillane a dit:


> Ca ne me servira pas ici, mais je pourrais bien en avoir besoin pour autre chose



 Tu sais quoi ? en fait ça viens de me servir ! Tu es tout simplement devin  Pour la petite histoire ça m'a servi pour ça : Créer à partir d'un fichier en .sh servant de modèle de nouveaux fichiers quasi identiques mais avec un petite nuance que l'on spécifie grâce au read x


----------



## tantoillane (18 Septembre 2008)

C'est encore moi et cette fois ci, j'ai une tout autre question.  Je pose les bases : J'ai un fiche texte avec une liste de mots les un en dessous des autre, je ne vais pas vous faire un dessin, ça ressemble à une liste de mots (un par ligne) les uns en dessous des autre. Comment puis-je faire un petit fichier (en bash bien sur) qui me supprime tous les mots en double, triple, ou plus afin qu'il n'en reste qu'un de chaque ?  Je sais que c'est un tout petit peu plus compliqué que la première question, mais votre aide serait la bienvenue  
 Et d'avance : ce n'est pas non plus pour un TP


----------



## p4bl0 (18 Septembre 2008)

tantoillane a dit:


> C'est encore moi et cette fois ci, j'ai une tout autre question.  Je pose les bases : J'ai un fiche texte avec une liste de mots les un en dessous des autre, je ne vais pas vous faire un dessin, ça ressemble à une liste de mots (un par ligne) les uns en dessous des autre. Comment puis-je faire un petit fichier (en bash bien sur) qui me supprime tous les mots en double, triple, ou plus afin qu'il n'en reste qu'un de chaque ?  Je sais que c'est un tout petit peu plus compliqué que la première question, mais votre aide serait la bienvenue
> Et d'avance : ce n'est pas non plus pour un TP




```
man sort
man uniq
man tee
man tr
man sed
man grep
man cat
man head
man tail
```

Déjà avec ça t'as de quoi t'amuser


----------



## tantoillane (18 Septembre 2008)

J'ai trouvé (mais j'ai un peu triché, on m'a aidé )

sort 'fichier.txt' | uniq -i > 'fichier2.txt'
sort pour trier par ordre alphabétique et uniq pour supprimer les lignes successives identiques

Mais je passerais quand même voir les manuels des commandes que tu indiques


----------



## p4bl0 (18 Septembre 2008)

tantoillane a dit:


> J'ai trouvé (mais j'ai un peu triché, on m'a aidé )
> 
> sort 'fichier.txt' | uniq -i > 'fichier2.txt'
> sort pour trier par ordre alphabétique et uniq pour supprimer les lignes successives identiques
> ...


Tu remarqueras que j'ai mis sort et uniq en premier _au cas où_* tu serais feignant...  

(et y a pas besoin des quotes autour des noms de fichiers, sauf si il y a des char spéciaux et que tu veux pas te faire chier à escaper mais bash escape tout seul quand tu utilise l'autocompletion (tab) et puis les nom de fichier avec des char spéciaux c'est mal !).



* tu fais de l'info donc tu _dois_ être feignant, sinon tu fais partie des très peux nombreuses exceptions :rateau:


----------



## tantoillane (30 Décembre 2008)

Bonjour,

Me revoilà avec mes questions bateaux 

J'ai créé un petit script tout bête qui sauvegarde sur deux disques différents toute mes photos iPhoto. Il se limite à quelques lignes d'explication de ce qui se passe du style "sauvegarde sur le disque 1" et à deux lignes de cp -R -f -v.
Ce script marche très bien et à le mérite de sauvegarder toutes mes photos d'un simple clic depuis l'icône du dock.

Mais comme je suis tatillon, je voudrais voir où en est l'avancement de la copie et pour ça j'ai la merveilleuse commande ls qui permet d'afficher la taille d'un fichier et la commande sleep et goto qui me permettrons de créer une boucle pour actualiser de temps à autre.

Le problème reste de lancer d'un clic un fichier qui va ouvrir d'un côté ma copie et dans une autre fenêtre mon avancement. :mouais:

Merci


----------



## Zoidberg (5 Janvier 2009)

Hi,
Regarde du coté de rsync pour remplacer ton cp (fait des tests avant, c'est tres puissant rsync, mais une erreur est vite arrivee) avec l'option --progress tu devrais avoir ce que tu souhaites.
++


----------



## tantoillane (6 Janvier 2009)

Merci beaucoup 

J'ai trouvé une méthode toute bête qui marche aussi : créer un fichier en bash contenant les lignes à exécuter dans la nouvelle fenêtre et mettre *open fichier.sh* dans mon premier fichier mère.


----------

