Bonjour a tous,

Je m'essaies aux scripts de quelques jours, je je cherche une solution pour ecrire dans un fichier.

j'explique :
Je voudrais pouvoir ecrire de nouvelles lignes dans le fstab de mon core.

Si quelqu'un a une idée,

Merci d'avance pour les reponses
Oui, tu peux écrire dans un fichier à partir de la sortie standard, à l'aide de ">>"
Ex:
tail -f /var/log/message >> toto
Ca va te créer un fichier "toto" avec le résultat de la commande "tail".
Enfin, c'est à creuser, je ne suis pas spécialiste. Si ça peut t'aider. 🙂
ok super,

Effectivement tail -f me copie le fichier source vers un nouveau, mais c'est une copie.
Je voudrais pouvoir rajouter des lignes dans fichier existant, et à l'ideal si je peut orienter l'ecrire vers le debut ou la fin du fichier, c'est encore mieux.

ceci étant, merci pour la commande, je connaissais pas
le "tail -f fich" était un exemple :
De manière générale :
echo "blabla" > fich.txt
crée le fichier "fich.txt" (ou l'écrase s'il existait déjà) avec blabla dedans
echo "blabla" >> fich.txt
ajoute blabla à fin de fich.txt (le crée s'il n'existe pas)
en perl:
#!/usr/bin/perl
open (FICHIER, "monfichier.txt");
print FICHIER "ligne que je veux écrire\n"; #\n pour le saute de ligne
print FICHIER "la deuxième ligne\n";
close FICHIER;

tu peux aussi demander a l'utilisateur le chemin menant au fichier à éditer
#!/usr/bin/perl
print "entrez le chemin à éditer\n";
$cheminfic = <STDIN>;
open (FICHIER, "monfichier.txt");
print FICHIER "ligne que je veux écrire\n"; #\n pour le saute de ligne
print FICHIER "la deuxième ligne\n";
close FICHIER;
ok nikel nicofo,
C'est pil poil la commande que je voulais.
Par contre une petite question : ca plusieurs fils que je lance un sujet et je ne sais pas comment on fait pour les fermer quand j'ai trouvé ce que je voulais ????
ou alors faut-il les laisser tels quels si le sujet devait confinuer ?????
C'est pas exactement sain de modifier la fstab comme ca. Tu devrais plutot jouer avec autofs, qui est exactement prevu a cet effet, si tant est que udev/hal ne repondent pas deja a ton besoin.
Voici un petit complement au script perl:

Lors de l'ouverture du fichier, si ton fichier existe deja, il faut l'ouvrir comme suit:
open(FICH,">>monfich.txt");
De cette maniere, les lignes seront rajoutees a la fin du fichier. Sinon, il sera ecrase.
ok, merci pour ces commandes qui m'aident bien dans ce que je veux faire.

Un autre petit souci, je n'arrive pas a faire un test "if/tehn/else/fi" sur la presence ou non d'une ligne contenant un certain texte dans mon fichier.
exemple :
if [montexteestpresentdans le fichier]
then jefaispasca
else jefaisca
fi

Si vous avez des idees, je suis preneur.........

Merci d'avance pour aide
ba deja ca serait :
if [montexteestpresentdans le fichier]
then alorsjefaisca
else sinonjefaisca
fi
pour tester ton texte dans le fichier y a grep -c
Une autre question est: essaie-tu d'ecrire ton script en perl ou en bash ?
S'il s'agit de perl, voici la syntaxe:
if(condition1) {
   bloc d'instructions 1
} elsif(condtion 2) {
   bloc d'instruction 2
} else {
   bloc d'instruction 3
}
Le bloc eslif est optionnel. Et tu peux en ajouter tant que tu veux.
@fox Delta :
pour info, je voudrais faire mon executable en bash

@ded :
ok pour le grep -c, je vois ce que je peux trouver la dessus, mais un coup de main ne serait pas de refus.....

Merci en tout cas a vous pour le infos.
Nouvelle question :
Connaissez-vous une possibilité de remplacer un texte existant dans un fichier existant ????
Oui.
Avec la commande sed. Le réseau fourmille d'exemples d'utilisations de cette commande 😉.
oui en perl avec les expression régulières. tu veux modifier quoi par quoi. Vas y file je te le fais
berok37 wrote:Bonjour a tous,

Je m'essaies aux scripts de quelques jours, je je cherche une solution pour ecrire dans un fichier.

j'explique :
Je voudrais pouvoir ecrire de nouvelles lignes dans le fstab de mon core.

Si quelqu'un a une idée,

Merci d'avance pour les reponses
uu alors
#!/bin/bash
cat << mon/fichier/texte >> EOF
bla
bla
bla 
bla
EOF
la je veux bien, mais je le rappelle, je debute.
A quoi sert "EOF" ??????

Je ne comprends pas
bon en perl de façon général sa donne:
/usr/bin/perl
open (FICHIER,"< nom_du_fichier.txt"); #nom du fichier à lire
@lignes = <FICHIER>; # met toutes les lignes dans le tableau
close FICHIER; ferme le fichier original comme ça sa fait un backup
open (FIC ,"< nom_du_fic.txt"); # crée un nouveau fichier
foreach $ligne(@lignes) { #pour chaques éléments du tableau
if ($ligne =~ / /) { #si l'expresion régulière est match avec la ligne alors
Print FIC "............\n";; #la ligne est modifié par quelquechose ce que tu veux
}
elsif ($ligne =~ / /) { "une autre expression reguliere
Print FIC "............\n"; #quelquechose
}
else { # et si aucune des expressions régulières
print "la ligne:\n$ligne\nn'a pas été modifié\n" ; # renvoi dans le terminal :[saut de ligne]la ligne:....[saut de ligne]n'a pas été modifié
}
}close FIC
berok37 wrote:pour info, je voudrais faire mon executable en bash
pour tous ou pour tous le monde ?
poiur toi c'est
chmod u+x /ton/fichier
les autres
chmod o+x /ton/fichier
tout le monde
chmod +x /ton/fichier
un EOF est un end of file
syntaxe du C
bon en perl de façon général sa donne:
bioinfornatics wrote:#!/usr/bin/perl # <= indique le compilo à utiliser
open (FICHIER,"< nom_du_fichier.txt"); #nom du fichier à lire
@lignes = <FICHIER>; # met toutes les lignes dans le tableau
close FICHIER; ferme le fichier original comme ça sa fait un backup
open (FIC ,"< nom_du_fic.txt"); # crée un nouveau fichier
foreach $ligne(@lignes) { #pour chaques éléments du tableau
if ($ligne =~ / /) { #si l'expresion régulière est match avec la ligne alors
$ligne = ; #la ligne est modifié par quelquechose ce que tu veux
}
elsif ($ligne =~ / /) { "une autre expression reguliere
$ligne = ; #quelquechose
}
else { # et si aucune des expressions régulières
print "la ligne:\n$ligne\nn'a pas été modifié\n" ; # renvoi dans le terminal :[saut de ligne]la ligne:....[saut de ligne]n'a pas été modifié
}
}close FIC
et oui le bash descend du C, comme le JAVA, le perl, le python, le PHP ...
Bon j'avais oublié "print FIC" pour écrire dans le 2 ème fchier, s'est corrigé.
Tu copie ce code dans gedit tu enregistre en donnant une extension en *.pl.
Et après tu fais le chmod de ton choix comme sipirit l'a indiqué.
pour lancer le script, dans une console tu fais ./mon_script_perl.pl et hop sa se lance
Tiens nous au courant
bioinfornatics wrote:bon en perl de façon général sa donne:
/usr/bin/perl
open (FICHIER,"< nom_du_fichier.txt"); #nom du fichier à lire
@lignes = <FICHIER>; # met toutes les lignes dans le tableau
close FICHIER; ferme le fichier original comme ça sa fait un backup
open (FIC ,"< nom_du_fic.txt"); # crée un nouveau fichier
foreach $ligne(@lignes) { #pour chaques éléments du tableau
if ($ligne =~ / /) { #si l'expresion régulière est match avec la ligne alors
Print FIC "............\n";; #la ligne est modifié par quelquechose ce que tu veux
}
elsif ($ligne =~ / /) { "une autre expression reguliere
Print FIC "............\n"; #quelquechose
}
else { # et si aucune des expressions régulières
print "la ligne:\n$ligne\nn'a pas été modifié\n" ; # renvoi dans le terminal :[saut de ligne]la ligne:....[saut de ligne]n'a pas été modifié
}
}close FIC