faire afficher un mot dans le terminal avec un .sh

tantoillane

Membre expert
Club iGen
25 Février 2005
2 311
200
33
Essonne
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 :zen:
 
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 ... :siffle: :D

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.
 
Pour afficher ta phrase dans la console il faut taper :

Bloc de code:
echo "ta phrase"

Ensuite pour afficge ta phrase dans un fichier :

Bloc de code:
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

Bloc de code:
x= $1

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

Bloc de code:
echo quelles phrase tu veux ecrire ?"
read x

et puis dpnc :

Bloc de code:
echo $x > unfichier.txt

bonne chance

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


:coucou:

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 :coucou:
 
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 :D :coucou:
 
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 :D :coucou:
Bloc de code:
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 ;)
 
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

:coucou:
 
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

:coucou:
Tu remarqueras que j'ai mis sort et uniq en premier au cas où* tu serais feignant... :D ;)

(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:
 
  • J’aime
Réactions: tantoillane
Bonjour,

Me revoilà avec mes questions bateaux :D

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 :zen:
 
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.
++