IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modifier fichier .txt grace a un raccourci (bash)


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut Modifier fichier .txt grace a un raccourci (bash)
    Bonjour a tous,
    Je cherche a créer un raccourci pour modifier le fichier "config.txt".
    Il faudrait que le raccourci exécute un script qui ouvrirait le fichier, recherche la ligne contenant "#lcd_rotate=2" et la remplace par "lcd_rotate=2" ou, s'il ne trouve pas la ligne, cherche "lcd_rotate=2" et la remplace par "#lcd_rotate=2"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SI (/boot/config.txt contient "#lcd_rotate=2")
           supprimer "#"
           reboot
    SINON SI (/boot/config.txt contient "lcd_rotate=2")
           ajouter "#"
           reboot
    FIN SI
    En fait il s'agit juste de supprimer ou d'ajouter le # devant la ligne "lcd_rotate=2", puis de faire un reboot

    Le problème est que je connais très peu le bash, et je ne sais pas comment faire un rechercher/remplacer

    Merci d'avance

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    l'expression de ton souhait n'est pas parfaite.
    je reprends, et tu me corrigeras si ce n'est pas ce que tu veux.
    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    si fichier contient "#lcd_rotate=2"
    alors
       supprimer la marque de commentaire de la ligne "#lcd_rotate=2" dans le fichier
    autre
       ajouter "#lcd_rotate=2" dans fichier
    finsi
    reboot
    quelques problèmes :
    le script provoquera un reboot quelque soit l'état du fichier
    un reboot est-il indispensable pour prendre en compte la modification ? un simple redémarrage du service ne suffit-il pas ?
    un cas n'est pas évoquer : le fichier contient "lcd_rotate=2".

    en gros, tu veux faire un switch on/off
    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    si le fichier contient une ligne "lcd_rotate=2" #cf. man grep
    alors
       lineIn=1
       si la ligne commence par "#"
       alors
          enlever la marque de commentaire #cf. man sed
       autre
          ajouter un marque de commentaire #idem
    autre
       insérer la ligne "#lcd_rotate=2" #un simple `echo' suffit pour ajouter une ligne à la fin d'un fichier
    finsi
    si lineIn = 1 alors redémarrer service
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Mars 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2017
    Messages : 59
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    je reprends, et tu me corrigeras si ce n'est pas ce que tu veux.
    J'ai édité mon sujet avec un pseudo code de ce que je veux faire

    en ce qui concerne le reboot, je crois qu'il est indispensable (il s'agit ici de modifier l'orientation de l'ecran)

    j'ai créé un petit code, mais comme j'y connais rien en bash, il doit y avoir des erreurs de syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    if grep "#lcd_rotate=2" /boot/config.txt = 0
    	then sed s/"#lcd_rotate=2"/"lcd_rotate=2"/g
    else
    	if grep "lcd_rotate=2" /boot/config.txt = 0
    		then sed s/"lcd_rotate=2"/"#lcd_rotate=2"/g
    	else $ echo "lcd_rotate=2" >> /boot/config.txt

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    j'y connais rien en bash
    les liens dans ma signature doivent pouvoir t'aider à avancer
    il doit y avoir des erreurs de syntaxe
    oui, je confirme.
    si tu n'en es pas sûr, c'est que tu n'as pas testé ton code; c'est indispensable pour progresser !

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chemin=//est_tonFichier
    fichier="$chemin/tonFichier"
    ligne=$(grep 'lcd_rotate=2' "$fichier")
    if test -n "$ligne"
    then
       [[ $ligne == '#'* ]] && sed -i '/lcd_rotate/s/^#//' "$fichier" || sed -i '/lcd_rotate/s/^/#/' $fichier
       #redémarrage service d'affichage
    else
       echo "#lcd_rotate=2" >>"$fichier"
    fi
    voilà un premier jet, qui est largement optimisable.

    MAIS
    pourquoi ne pas utiliser xrandr qui permet de réorienter un affichage sans redémarrer la machine, ou le service d'affichage ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [XL-2010] Modifier fichier .txt avec une macro
    Par QuentinR dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 18/09/2013, 15h52
  2. Modifier fichiers txt
    Par Phicome dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 26/03/2013, 09h31
  3. [PHP 5.0] modifier fichier txt
    Par buzz94 dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2010, 22h39
  4. Réponses: 4
    Dernier message: 04/03/2008, 14h46
  5. modifier fichier .txt avec Visual Basic
    Par marco1980 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/09/2006, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo