Remplir un fichier de texte avec un script bash.
xunil2003
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Et il possible avec un script bash de remplir un fichier texte avec un texte prédéfini .
Exemple :
Au lieu de faire :
Merci
Et il possible avec un script bash de remplir un fichier texte avec un texte prédéfini .
Exemple :
Ligne 1 avec les accents et accents circonflexes
Ligne 2 avec les accents et accents circonflexes
Ligne 3 avec les accents et accents circonflexes
etc...
>> /chemin/monfichier.conf
Au lieu de faire :
echo "Ligne 1 avec les accents et accents circonflexes" > /chemin/monfichier.conf
echo "Ligne 2 avec les accents et accents circonflexes" >> /chemin/monfichier.conf
echo "Ligne 3 avec les accents et accents circonflexes" >> /chemin/monfichier.conf
etc...
Merci
A voir également:
- Bash écrire dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
19 réponses
hello
$ printf "Ligne %d avec les accents et accents circonflexes\n" {1..7}
Ligne 1 avec les accents et accents circonflexes
Ligne 2 avec les accents et accents circonflexes
Ligne 3 avec les accents et accents circonflexes
Ligne 4 avec les accents et accents circonflexes
Ligne 5 avec les accents et accents circonflexes
Ligne 6 avec les accents et accents circonflexes
Ligne 7 avec les accents et accents circonflexes
Salut,
$ for i in $(seq 10); do echo "Ligne ${i} avec...";done
Ligne 1 avec...
Ligne 2 avec...
Ligne 3 avec...
Ligne 4 avec...
Ligne 5 avec...
Ligne 6 avec...
Ligne 7 avec...
Ligne 8 avec...
Ligne 9 avec...
Ligne 10 avec...
Bonsoir,
Heu je suis mal expliqué .
Chez moi j'ai plusieurs postes.
Je voudrais savoir comment insérer toute une config avec un copier coller depuis un script bash afin de créer un fichier de configuration une fois le script exécuté.
Par exemple, toute cette config d'un coup.
Et quand j'exécute le script il me crée tout d'un coup le fichier de configuaration.
Ce qui me permet de faire des copier coller entre les balises
Esce possible, y a t'il un moyen ?
Merci.
Heu je suis mal expliqué .
Chez moi j'ai plusieurs postes.
Je voudrais savoir comment insérer toute une config avec un copier coller depuis un script bash afin de créer un fichier de configuration une fois le script exécuté.
Par exemple, toute cette config d'un coup.
"
Ceci est un exemple de config
-----------------------------------
Fichier de configuration personnalisé
dlna.conf
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
" > /chemin/fichier.conf
Et quand j'exécute le script il me crée tout d'un coup le fichier de configuaration.
Ce qui me permet de faire des copier coller entre les balises
"" > /chemin/fichier.confet m'évite ainsi de faire :
echo "Ceci est un exemple de config" > /chemin/monfichier.conf
echo "-----------------------------------" >> /chemin/monfichier.conf
echo "" >> /chemin/monfichier.conf
echo "Fichier de configuration personalisé" >> /chemin/monfichier.conf
echo "dlna.conf" >> /chemin/monfichier.conf
echo "" >> /chemin/monfichier.conf
echo "bla bla bla" >> /chemin/monfichier.conf
echo "bla bla bla" >> /chemin/monfichier.conf
echo "" >> /chemin/monfichier.conf
echo "bla bla bla" >> /chemin/monfichier.conf
echo "bla bla bla" >> /chemin/monfichier.conf
echo "bla bla bla" >> /chemin/monfichier.conf
Esce possible, y a t'il un moyen ?
Merci.
Bonsoir,
C'est bon j'ai trouvé.
echo "
Ceci est un exemple de config
-----------------------------------
Fichier de configuration personnalisé
dlna.conf
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
" > /chemin/fichier.conf
Merci.
C'est bon j'ai trouvé.
echo "
Ceci est un exemple de config
-----------------------------------
Fichier de configuration personnalisé
dlna.conf
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
" > /chemin/fichier.conf
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ou aussi
cat <<XXX > /chemin/fichier.conf
Ceci est un exemple de config
-----------------------------------
Fichier de configuration personnalisé
dlna.conf
bla bla bla
bla bla bla
bla bla bla
bla bla bla
bla bla bla
XXX
Bonsoir,
Sur un fichier de configuration, j'ai ceci comme message.
Merci.
Sur un fichier de configuration, j'ai ceci comme message.
: mauvaise substitutionidem avec les deux solutions.
Merci.
Bonjour,
Ou c'est bien ça.
Le fichier de configuration fait 829 Lignes impossible de le poster ici, je l'ai mis sur un hébergeur de texte .
https://textup.fr/97342hM
Quel solution puis-je faire ?
Merci.
Ou c'est bien ça.
Le fichier de configuration fait 829 Lignes impossible de le poster ici, je l'ai mis sur un hébergeur de texte .
https://textup.fr/97342hM
Quel solution puis-je faire ?
Merci.
Salut,
À mon avis c'est le fait que ce soit un fichier M$ qui pose problème ;-((
À mon avis c'est le fait que ce soit un fichier M$ qui pose problème ;-((
^M$
^M$
; numeros externes^M$
; quand on compose un numero qui commence par 0,on utilise le lien "freephonie"^M$
;et on passe le numero au peer en otant le premier digit.^M$
^M$
exten => _0.,1,Dial(SIP/freephonie_out/${EXTEN}) ^M$
c'est les ${... puisque echo ou cat résolvent les variables
essayer
essayer
cat <<'XXX' > /chemin/fichier.conf
....
...
XXX
Bonjour,
Je viens de faire deux tests et ça marche pas.
1er test :
Le terminal affiche :
La ligne 106 est :
2em test :
J'ai également essayé ceci, mais ça marche pas aussi.
le terminal m'affiche :
Le fichier n'est pas rempli ?
Comment faire alors pour le test 1 et les permissions d'écriture du test 2 ?
Merci.
Je viens de faire deux tests et ça marche pas.
1er test :
sudo cat <<'XXX' > /etc/modprobe.d/blacklist-dvb.confA la suite du script bash tout est noir.
# Blacklist entries to prevent the DVB side from hooking
# an RTL2832 stick for TV usage instead of the desired usage
# with rtl_sdr.
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
XXX
Le terminal affiche :
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 765: avertissement : « here-document » à la ligne 106 délimité par la fin du fichier (au lieu de « XXX »)
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 766: Erreur de syntaxe : fin de fichier prématurée
laurent@nathalie-AKOYA-E1318T:~$
La ligne 106 est :
sudo cat <<'XXX' > /etc/modprobe.d/blacklist-dvb.conf
2em test :
J'ai également essayé ceci, mais ça marche pas aussi.
sudo touch /etc/modprobe.d/blacklist-dvb.conf
fichier=/etc/modprobe.d/blacklist-dvb.conf
if [ -f $fichier ]
then
echo "Fichier $fichier créé"
else
echo "Le fichier $fichier n'existe pas et reste introuvable"
echo
exit O
fi
echo
sudo echo "# Blacklist entries to prevent the DVB side from hooking" > /etc/modprobe.d/blacklist-dvb.conf
sudo echo "# an RTL2832 stick for TV usage instead of the desired usage" >> /etc/modprobe.d/blacklist-dvb.conf
sudo echo "# with rtl_sdr. " >> /etc/modprobe.d/blacklist-dvb.conf
sudo echo "" >> /etc/modprobe.d/blacklist-dvb.conf
sudo echo "blacklist dvb_usb_rtl28xxu" >> /etc/modprobe.d/blacklist-dvb.conf
sudo echo "blacklist rtl2832" >> /etc/modprobe.d/blacklist-dvb.conf
sudo echo "blacklist rtl2830" >> /etc/modprobe.d/blacklist-dvb.conf
le terminal m'affiche :
Fichier /etc/modprobe.d/blacklist-dvb.conf créé
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 98: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 99: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 100: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 101: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 102: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 103: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
/home/laurent/bash/dernier/Installer_sdr.sh: ligne 104: /etc/modprobe.d/blacklist-dvb.conf: Permission non accordée
Le fichier n'est pas rempli ?
Comment faire alors pour le test 1 et les permissions d'écriture du test 2 ?
Merci.
Bonjour,
Merci Zip31, ça marche nickel.
J'ai un autre problème.Je cherche depuis des heures la solution en vingt.
Dans le fichier /etc/udev/rules.d/99_rtlsdr.rules, je doit mettre ceci.
Mais je n'arrive pas à trouver la solution garder dans le texte les ".
Avec ceci ça marche pas
Voilà ce que contient le fichier :
Comment faut-il faire ?
Merci.
Merci Zip31, ça marche nickel.
J'ai un autre problème.Je cherche depuis des heures la solution en vingt.
Dans le fichier /etc/udev/rules.d/99_rtlsdr.rules, je doit mettre ceci.
# /etc/udev/rules.d/99_rtlsdr.rules
SUBSYSTEM=="USB",
ATTRS{idVendor)=="Obda",
ATTRS{idProduct)=="2838",
MODE="0666,GROUP="adm"
Mais je n'arrive pas à trouver la solution garder dans le texte les ".
Avec ceci ça marche pas
sudo bash -c 'echo '# /etc/udev/rules.d/99_rtlsdr.rules' > /etc/udev/rules.d/99_rtlsdr.rules'
sudo bash -c 'echo '' >> /etc/udev/rules.d/99_rtlsdr.rules'
sudo bash -c 'echo "SUBSYSTEM=="USB"," >> /etc/udev/rules.d/99_rtlsdr.rules'
sudo bash -c 'echo "ATTRS{idVendor)=="Obda"," >> /etc/udev/rules.d/99_rtlsdr.rules'
sudo bash -c 'echo "ATTRS{idProduct)=="2838"," >> /etc/udev/rules.d/99_rtlsdr.rules'
sudo bash -c 'echo "MODE="0666",GROUP="adm"" >> /etc/udev/rules.d/99_rtlsdr.rules'
Voilà ce que contient le fichier :
laurent@nathalie-AKOYA-E1318T:~$ cat /etc/udev/rules.d/99_rtlsdr.rules
# /etc/udev/rules.d/99_rtlsdr.rules
SUBSYSTEM==USB,
ATTRS{idVendor)==Obda,
ATTRS{idProduct)==2838,
MODE=0666,GROUP=adm
laurent@nathalie-AKOYA-E1318T:~$
Comment faut-il faire ?
Merci.
Re,
J'ai eu ce message qui s'affiche :
Sinon ça marche impeccable.
Merci encore une fois Zip31.
J'ai eu ce message qui s'affiche :
bash: ligne 7: avertissement : « here-document » à la ligne 0 délimité par la fin du fichier (au lieu de « EOF »)Je ne sais pas si c'est normal.
Sinon ça marche impeccable.
Merci encore une fois Zip31.
Bonsoir,
La ligne 7 est vide, c'est ce que je n'ai pas compris, y a rien , c'est un saut de ligne ?
Je doit ajouter à la fin du fichier udev
Extrait de la fin du fichier : /etc/init.d/udev
Je voudrais donc y ajouter a l'avant dernière ligne, entre
Comment dois-je mis prendre ?
ludobabs :
Je n'ai pas compris ctrl+z c'est annuler ?
Merci.
La ligne 7 est vide, c'est ce que je n'ai pas compris, y a rien , c'est un saut de ligne ?
Je doit ajouter à la fin du fichier udev
/etc/init.d/udev
,SYMLINK+="RTL_SDR"seulement à la fin du fichier, il y a
exit 0
Extrait de la fin du fichier : /etc/init.d/udev
exit 1
;;
esac
exit 0
Je voudrais donc y ajouter a l'avant dernière ligne, entre
esacet
exit 0.
Comment dois-je mis prendre ?
ludobabs :
Je n'ai pas compris ctrl+z c'est annuler ?
Merci.
Salut,
Si oui, avec
La ligne 7 est vide, c'est ce que je n'ai pas compris, y a rien , c'est un saut de ligne ?D'où mon message précédent et le besoin de voir ton code. Peut-être as-tu omis quelque chose avant ? ;-\
Comment dois-je mis prendre ?C'est le seul
exit 0du code ?
Si oui, avec
sed.
$ cat plop
exit 1
;;
esac
exit 0
$ sed '/exit 0/i,SYMLINK+="RTL_SDR"' plop
exit 1
;;
esac
,SYMLINK+="RTL_SDR"
exit 0
Bonsoir,
Après vérification, il y a effectivement plusieurs "exit 0".
Extrait de la fin du fichier udev avec numérotation.
Merci.
Après vérification, il y a effectivement plusieurs "exit 0".
laurent@nathalie-AKOYA-E1318T:~$ cat -n /etc/init.d/udev | grep "exit 0"
92 [ -x /sbin/udevd ] || exit 0
132 exit 0
240 status_of_proc /sbin/udevd udevd && exit 0 || exit $?
249 exit 0
laurent@nathalie-AKOYA-E1318T:~$
Extrait de la fin du fichier udev avec numérotation.
240 status_of_proc /sbin/udevd udevd && exit 0 || exit $?
241 ;;
242
243 *)
244 echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload|status}" >&2
245 exit 1
246 ;;
247 esac
248
249 exit 0
250
laurent@nathalie-AKOYA-E1318T:~$
Merci.
Bonsoir,
Suite à mon précédent message, comme il y a plusieurs "exit 0" je pense qu'il vaut mieux supprimer les deux dernières lignes est les réécrire, donc j'ai fait comme ceci :
Je n'ai pas trop bien compris comment faire quand il y a plusieurs mots clé identiques "exit 0" dans le fichier avec votre solution ?
Merci Zip31.
Suite à mon précédent message, comme il y a plusieurs "exit 0" je pense qu'il vaut mieux supprimer les deux dernières lignes est les réécrire, donc j'ai fait comme ceci :
echo "Modification du fichier udev"
echo
sudo sed -i '$d' /etc/init.d/udev
sudo sed -i '$d' /etc/init.d/udev
sudo bash -c 'echo ',SYMLINK+="rtl_sdr"' >> /etc/init.d/udev'
sudo bash -c 'echo "" >> /etc/init.d/udev'
sudo bash -c 'echo "exit 0" >> /etc/init.d/udev'
sudo bash -c 'echo "" >> /etc/init.d/udev'
Je n'ai pas trop bien compris comment faire quand il y a plusieurs mots clé identiques "exit 0" dans le fichier avec votre solution ?
Merci Zip31.
Bonjour,
J'ai un autre problème que je n'arrive pas a résoudre.
Quand je tape ceci dans le terminal :
Maintenant dans un fichier bash :
Cela me crée le fichier "Mes" au lieu de "Mes applications"
Pourquoi ?
Pourtant y a les quotes ?
Merci.
J'ai un autre problème que je n'arrive pas a résoudre.
Quand je tape ceci dans le terminal :
laurent@nathalie-AKOYA-E1318T:~$ nom_nouveau_sous_menu="Mes\ applications" ; sudo bash -c "echo '[Desktop Entry]' > /home/laurent/.local/share/applications/$nom_nouveau_sous_menu"ça marche.
laurent@nathalie-AKOYA-E1318T:~$
Maintenant dans un fichier bash :
#!/bin/bashça marche pas ?
echo "Mes\ applications"
read nom_nouveau_sous_menu
sudo bash -c "echo '[Desktop Entry]' > /home/laurent/.local/share/applications/$nom_nouveau_sous_menu"
Cela me crée le fichier "Mes" au lieu de "Mes applications"
laurent@nathalie-AKOYA-E1318T:~$ ls -a /home/laurent/.local/share/applications/M*
/home/laurent/.local/share/applications/Mes
laurent@nathalie-AKOYA-E1318T:~$
Pourquoi ?
Pourtant y a les quotes ?
Merci.
Salut,
Déjà parce que par convention, par principe et par bon sens (vu les soucis que ça génère), on ne met pas d'espace dans les noms de fichiers/répertoires/ou autres !!! ;-(
Pour ton cas, il te suffit de mettre ton nom (qui est demandé via la commande
Déjà parce que par convention, par principe et par bon sens (vu les soucis que ça génère), on ne met pas d'espace dans les noms de fichiers/répertoires/ou autres !!! ;-(
Pour ton cas, il te suffit de mettre ton nom (qui est demandé via la commande
read) entre quotes (non pas le steak) :
read nom
'Mon nom de fichier à trous'
Re,
Je n'ai pas compris ce que vous vouliez dire ?
C'est quoi steak ?
chez moi depuis le terminal
fonctionne, mais dans un script bash, non ne fonctionne pas?
idem avec :
Pourquoi, d'où vient le problème ?
Merci.
Je n'ai pas compris ce que vous vouliez dire ?
Pour ton cas, il te suffit de mettre ton nom (qui est demandé via la commande
read) entre quotes
(non pas le steak) :
C'est quoi steak ?
chez moi depuis le terminal
sudo bash -c "echo '[Desktop Entry]' > /home/laurent/.local/share/applications/$nom_nouveau_sous_menu"
fonctionne, mais dans un script bash, non ne fonctionne pas?
idem avec :
printf "[Desktop Entry]\nName=$nom_nouveau_sous_menu_2\nType=Application\n" > $HOME/.local/share/applications/$nom_nouveau_sous_menu
Pourquoi, d'où vient le problème ?
Merci.
Je n'ai pas compris ce que vous vouliez dire ?Le nom du nouveau sous-menu est demandé via la commande read dans ton script, donc il suffit de mettre ce nom entre quotes simples comme dans l'exemple que je tai donné ;-\
Pour ton cas, il te suffit de mettre ton nom (qui est demandé via la commande read) entre quotes
(non pas le steak) :Entre quote => entrecôte ;-))
C'est quoi steak ?
Re,
J'ai trouvé :
PS : Sous Kde, si je veux créer un sous-menu "Mes applications" dans le menu, je dois créer un fichier long.
Merci.
J'ai trouvé :
printf "[Desktop Entry]\nName=$nom_nouveau_sous_menu_2\nType=Application\n" > "$HOME/.local/share/applications/$nom_nouveau_sous_menu"ça fonctionne avec les fichiers longs
PS : Sous Kde, si je veux créer un sous-menu "Mes applications" dans le menu, je dois créer un fichier long.
Merci.