Bonjour j'ai un petit problème, j'écris pour m'entraîner un script bash qui permet de créer sa configuration pour le jeux csgo.
Je souhaiterais après avoir modifié mes touches (binds) de mouvements, faire une sauvegarde du fichier afin que les modifications soit prisent en compte.
Quelle commande peut faire ça ?
j'ai vu et lu sur la commande "tar", mais il ne me semble pas que cette commande soit appropriée ou alors j'ai mal compris.
le premier test est inutile, puisque si le fichier existe tu l'écrases. s'il n'existe pas il sera créé.
et cat aussi est inutile; une simple copie du fichier sera satisfaisante.
les variables doivent toujours être entre guillemets, surtout dans les tests.
tu pourrais avant de demander si l'utilisateur veut changer les touches de mouvement, lui présenter celles utilisées actuellement... si l'utilisateur ne répond pas à une question, alors la valeur actuelle sera utilisée puis ne modifier le fichier que si l'utilisateur a modifié les touches, tu peux comparer la variable avec la valeur définie dans le fichier.
enfin, pour répondre à ta question, il faut ajouter l'option -i (--in-place) à ta/es commande(s) sed.
- Edité par dantonq 21 juillet 2017 à 11:13:18
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Bon le scirpt avance bien, mais j'ai un problème , je souhaiterais récuperer (vous allez comprendre par la suite) , un caractère dans une ligne d'un fichier texte.
Ya t il une commande pour faire cela ?
Je m'explique, prenons le cas ou l'utilisateur ne rentre rien a la demande des binds de mouvement qu'il souhaite, le script va donc lui attribuer les binds déjà fait du fichier de réference.Or là est le problème j'arrive pour avancer part exple a récuperer la chaine : bind z +forward, or moi je souhaiterais ne récuperer que le caractère z. Vous voyez ?
Alors le script fonctionne les modifications se font dans le fichier, mais dans ce scenario précis la commande sed me renvois une erreur.
Voici le script :
#!/bin/bash
echo -e "Bonjour, voici un programme qui va vous aider pas a pas a la configuration de votre fichier config.cfg du jeux csgo\n"
echo "Pour commencer comment voulez vous nommer votre fichier cfg : exemple thibault.cfg"
read cfg_File
cd /home/thibault/Bureau
echo -e "Creation du fichier $cfg_File.....\n"
touch $cfg_File
cp Bob.cfg $cfg_File
#echo -e "\nVotre fichier de configuration s'apelle $cfg_File\n\n"
#echo -e "Voici son contenu\n"
#export content="$(cat $cfg_File)"
#echo -e "\n$content"
echo -e "Voici les binds de mouvement actuelement dans le fichier de configuration : \n"
grep -n +forward $cfg_File
grep -n +back $cfg_File
grep -n +moveright $cfg_File
grep -n +moveleft $cfg_File
reponse="n"
while [ "$reponse" = 'n' ]
do
echo -e "\nNous allons maintenant configurer vos propre mouvements.\n"
echo -e "\033[31mAttention pour conserver une des valeures précedentes appuyez simplement sur entrée !\n\033[0m"
read -p "Entrez la touche pour avancer : " avancer
read -p "Entrez la touche pour reculer : " reculer
read -p "Entrez la touche pour aller a droite : " droite
read -p "Entrez la touche pour aller a gauche : " gauche
if [ -z "$avancer" ]
then
avancer="$(grep +forward $cfg_File)"
fi
if [ -z "$reculer" ]
then
reculer="$(grep +back $cfg_File)"
fi
if [ -z "$droite" ]
then
droite="$(grep +moveright $cfg_File)"
fi
if [ -z "$gauche" ]
then
gauche="$(grep +moveleft $cfg_File)"
fi
echo -e "\nJe récapitule : \n"
echo -e "avancer : $avancer\n"
echo -e "reculer : $reculer\n"
echo -e "aller a droite: $droite\n"
echo -e "aller a gauche : $gauche\n"
read -p "Voulez vous conserver ces touches y/n : " reponse
done
cd /home/thibault/Bureau
if [ ! -z "$avancer" ]
then
sed -i 's/bind "z" "+forward"/bind "'$avancer'" "+forward"/' $cfg_File
fi
sed -i 's/bind "s" "+back"/bind "'$reculer'" "+back"/' $cfg_File
sed -i 's/bind "d" "+moveright"/bind "'$droite'" "+moveright"/' $cfg_File
sed -i 's/bind "q" "+moveleft"/bind "'$gauche'" "+moveleft"/' $cfg_File
echo -e "\nVoici les binds de mouvements de votre fichier $cfg_File\n"
grep -n +forward $cfg_File
grep -n +back $cfg_File
grep -n +moveright $cfg_File
grep -n +moveleft $cfg_File
#commencez par les binds
#faire sortir toutes les lignes bind avec la cmd grep et export et cat
# demander touches par touche les bind qu'il souhaite :
# avancer, reculer, droite , gaauche, sauter, s'accroupir
# arme principale, arme secondaire
# binds pour les grenades : fragmentation, flash, fumigène, moltov, leurre
et le résultat dans la console quand je ne renseigne rien a la demande des touches de mouvements :
Bonjour, voici un programme qui va vous aider pas a pas a la configuration de votre fichier config.cfg du jeux csgo
Pour commencer comment voulez vous nommer votre fichier cfg : exemple thibault.cfg
thib.cfg
Creation du fichier thib.cfg.....
Voici les binds de mouvement actuelement dans le fichier de configuration :
15:bind "z" "+forward"
14:bind "s" "+back"
6:bind "d" "+moveright"
12:bind "q" "+moveleft"
Nous allons maintenant configurer vos propre mouvements.
Attention pour conserver une des valeures précedentes appuyez simplement sur entrée !
Entrez la touche pour avancer :
Entrez la touche pour reculer :
Entrez la touche pour aller a droite :
Entrez la touche pour aller a gauche :
Je récapitule :
avancer : bind "z" "+forward"
reculer : bind "s" "+back"
aller a droite: bind "d" "+moveright"
aller a gauche : bind "q" "+moveleft"
Voulez vous conserver ces touches y/n : y
sed: -e expression n°1, caractère 32: commande `s' inachevée
sed: -e expression n°1, caractère 29: commande `s' inachevée
sed: -e expression n°1, caractère 34: commande `s' inachevée
sed: -e expression n°1, caractère 33: commande `s' inachevée
Voici les binds de mouvements de votre fichier thib.cfg
15:bind "z" "+forward"
14:bind "s" "+back"
6:bind "d" "+moveright"
12:bind "q" "+moveleft"
On voit déjà que quand je récapitule, j'ai :
avancer : bind "z" "+forward"
reculer : bind "s" "+back"
aller a droite: bind "d" "+moveright"
aller a gauche : bind "q" "+moveleft"
et non pas :
avancer : z
reculer : s
aller a droite: d
aller a gauche : q
On voit aussi les erreurs des lignes avec la commande sed :
Donc je récapitule ma question : comment récupérer un seul caractère dans une ligne d'un fichier texte en bash ?
Merci
- Edité par Code Rom 22 juillet 2017 à 14:11:30
fonction sauvegarder un fichier en bash
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique