Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/12/2017, à 17:36

moko138

Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Il est fréquent
d'avoir à ajouter quelques lignes à un fichier-système
  ou
d'avoir à créer un fichier-système de quelques lignes
  ou
d'avoir à remplacer tout le contenu d'un fichier-système par quelques lignes.

Cela s'obtient simplement, sans éditeur de texte,


Ajouter quelques lignes à un fichier-système ou le créer :
Bien entendu, comme à chaque fois qu'on s'apprête à modifier un fichier-système, on commencera par en faire l'indispensable copie de sauvegarde datée :

sudo cp -av /chemin/vers/mon-fichier  "/chemin/vers/mon-fichier.<date-de-la-veille>"

Cette copie permettra, en cas de pépin, de faire machine arrière comme ceci :

sudo cp -av "/chemin/vers/mon-fichier.<date-de-la-veille>"  /chemin/vers/mon-fichier

/!\ Attention ! Respecter les guillemets !  Mais ne pas taper les chevrons ! (< >)

  - -

Ensuite, la commande

echo -e '#\n# blacklister le module truc-muche de la carte wifi abcd2345\n# ajout du 1er avril 1847\nblacklist truc-muche\n#' | sudo tee -a /etc/test-ajout01.bak

où ce sont les \n qui marquent les sauts de ligne demandés,
va ajouter au fichier /etc/test-ajout01.bak ces cinq lignes

#
# blacklister le module truc-muche de la carte wifi abcd2345
# ajout du 1er avril 1847
blacklist truc-muche
#

  Si le fichier n'existe pas encore, la commande, en plus, le crée.


Pour vérifier que c'est bien un ajout qui a été fait, il suffit de répéter la commande puis de faire

cat /etc/test-ajout01.bak

on a maintenant deux fois le groupe de lignes.

Points-clefs :
  L'option -e derrière echo, pour que les retours à la ligne \n soient pris en compte (sans l'option -e, les \n seraient compris comme une paire de caractères écrits, donc toutes les lignes seraient fusionnées) ;
  L'option -a derrière tee ["a" comme Ajouter (anglais Append)]. Sans le -a, on écraserait le fichier !
  sudo, comme un feu tricolore, vous signale que vous devez redoubler de vigilance !



Applications pratiques :
Dans le cas Anomalies réseaux en Ethernet et Wifi sur la version 17.04, le remède proposé peut être obtenu en copiant-collant cette commande :

echo -e '#\n[device]\nwifi.scan-rand-mac-address=no\n' | sudo tee -a /etc/NetworkManager/NetworkManager.conf

  - -
Blacklister le module uvcvideo de la webcam (./viewtopic.php?pid=21742836#p21742836) :
insérer la date à la place des trois points puis

echo -e '\n# blacklister le module uvcvideo pour webcams)\n# ajout manuel en date du ...\nblacklist uvcvideo\n' | sudo tee -a /etc/modprobe.d/blacklist.conf

  - -
Imposer des options à un module wifi : ./viewtopic.php?pid=21760529#p21760529, une seule ligne ajoutée, donc ni option -e  ni  \n,  mais ajout donc tee option -a :

echo "options ath9k nohwcrypt=1" | sudo tee -a /etc/modprobe.d/ath9k.conf

Dernière modification par moko138 (Le 14/01/2018, à 16:00)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#2 Le 19/12/2017, à 17:42

moko138

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Remplacer entièrement un fichier-système de quelques lignes :
Bien entendu, comme à chaque fois qu'on s'apprête à modifier un fichier-système, on commencera par en faire l'indispensable copie de sauvegarde datée (cf. message précédent).

Ensuite, la commande

echo -e '#\n# blacklister le module truc-muche de la carte wifi abcd2345\n# ajout du 1er avril 1847\nblacklist truc-muche\n#' | sudo tee /etc/modprobe.d/blacklist-truc-muche.conf

où ce sont les \n qui marquent les sauts de ligne demandés,
va créer le fichier /etc/modprobe.d/blacklist-truc-muche.conf (ou l'écraser, s'il existe déjà) et lui donner ce contenu de cinq lignes :

#
# blacklister le module truc-muche de la carte wifi abcd2345
# ajout du 1er avril 1847
blacklist truc-muche
#

Points-clefs :
  L'option -e derrière echo (cf. message précédent) ;
  L'absence d'option -a derrière tee.


/!\ Comme l'absence d'option -a derrière tee provoque l'écrasement du fichier au cas où il préexisterait, il faut soigneusement réfléchir avant de lancer votre commande !
  sudo, comme un feu tricolore, vous signale que vous devez redoubler de vigilance !

Dernière modification par moko138 (Le 14/01/2018, à 15:53)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#3 Le 19/12/2017, à 17:51

nam1962

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Intéressant.
awk ou sed ne donneraient-il pas une commande plus concise ?


[ Modéré ]

Hors ligne

#4 Le 21/12/2017, à 12:46

denis56

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Salut,

À l'ère de l'Omnynter-minableTutoVidéoFlou, je déclare ! :

!!!   moko138, Premier prix de Pédagogie décarbonée  !!!

Merci


Debian Jessie souvent, Xubuntu parfois,
Bénévole @ Rhizomes

Hors ligne

#5 Le 21/12/2017, à 13:08

MicP

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Il s'agit plutôt de Fichiers de configuration
que de Fichiers système

Hors ligne

#6 Le 21/12/2017, à 14:10

moko138

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

MicP a écrit :

Il s'agit plutôt de Fichiers de configuration
que de Fichiers système

Oui MicP, il s'agit souvent de fichiers de configuration. Et il est heureux que l'utilisateur ait rarement à modifier un fichier-système en-dehors des fichiers de configuration !

Mais tu remarqueras qu'on peut ainsi compléter ou écraser :
le fstab
ou /etc/default/grub
ou une tâche cron
     ou, en-dehors de /etc :
/var/lib/dpkg/info/'le paquet qui bloque'.postrm
ou un script (dans /opt ou ailleurs).
...


L'idée est de pouvoir faire modifier un fichier appartenant à root
sans abaisser la sécurité,
et en s'affranchissan
t :
- de l'éditeur de texte en mode graphique,
- de l'éditeur de texte en mode terminal,
- de la variante de *buntu,
- et même de la version (faire installer gksudo ou kdesudo ? Et avec wayland, faut-il faire démarrer une session Xorg avec abaissement de sécurité ? Cf. le message suivant).


Toi, MicP, qui assistes souvent des utilisateurs non chevronnés aux systèmes variés, j'espère que tu apprécieras. smile

Dernière modification par moko138 (Le 22/12/2017, à 07:25)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#7 Le 22/12/2017, à 07:24

moko138

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Pour les distributions utilisant wayland (*buntu 17.10/Artful et versions à venir), voir une solution là :
./viewtopic.php?id=2019480 "Astuce : Modifier un fichier-système en mode graphique et en sécurité".


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#8 Le 22/12/2017, à 08:30

MicP

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

moko138 a écrit :

… j'espère que tu apprécieras. …

Tout autant que j'apprécie l'aide que l'on m'a apporté jusqu'ici et que l'on m'apporte encore
parce que j'ai encore beaucoup à apprendre,
comme disait S. Rousseau : smile

Rico Chico a écrit :

…qué voulez vous yé pé pas être partout.

Dernière modification par MicP (Le 22/12/2017, à 08:32)

Hors ligne

#9 Le 22/12/2017, à 15:29

kholo

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

salut,
@moko : pour la date tu peux mettre :

$(date)
echo -e "des trucs, \nla date est $(date)\n"

ou formaté (voir man date)

echo -e "des trucs, \nla date est $(date +%D)\n"
des trucs, 
la date est 12/22/17

ou ...

date +%F
2017-12-22

...

Hors ligne

#10 Le 22/12/2017, à 16:32

moko138

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

Merci, mais non :
autant je conseille volontiers l'usage de

sudo smartctl -s on -a /dev/sdX > smart_$(date +%Y%m%d-%Hh%M).txt

quand il s'agit de faire stocker durablement une info qui sera réutilisée calmement, sans urgence (ou 61 minutes plus tard dans certain cas précis),

autant, quand il s'agit de faire faire, à un utilisateur pas forcément chevronné, une copie de sécurité d'un fichier-système, afin qu'en cas de problème, il puisse le restaurer malgré son stress et son inexpérience (il risque d'être alors en live ou en recovery-root), autant, donc je veux qu'il/elle fasse simple et facile à retrouver
  ==> date qu'il/elle a lui-même tapée, avec ses doigts.
Ainsi, 10 minutes ou 1 heure après la frappe, je minimise son dépaysement.


Cela dit, ta remarque me fait prendre conscience - merci kholo ! - que plus d'un utilisateur risque de mettre des espaces dans la date.  Donc
je corrige immédiatement le 1er message : ajout de guillemets. (Dans ce fil et dans le fil-cousin Astuce : Modifier un fichier-système en mode graphique et en sécurité.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#11 Le 22/12/2017, à 20:43

kholo

Re : Astuce Ajouter quelques lignes dans un fichier-système ou le remplacer

content de t'avoir donné des idées...
pour la date, c'est pour que le plus grand nombre prenne l'habitude d'utiliser le bash...
$(date +%F) voire "$(date +%F)" ça reste accessible comme fonction !
et ça explique comment mettre une fonction dans du texte...
c'est juste éducatif wink

edit : bonne fêtes !

Dernière modification par kholo (Le 22/12/2017, à 20:45)

Hors ligne