Récupérer le nom du chemin d'un, script
Aide avec SED
Discussions Libres

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
voici mon script :
Code BASH :
#!/bin/bash export WINEPREFIX="$HOME/.wine/" kdesu -c "X :3 -ac -terminate &" # Lance sur un nouveau serveur X affichage 3 cd `realpath "$0" | sed -e 's/jeu-X.sh//'` sleep 1 #On temporise d'une seconde DISPLAY=:3 optirun wine jeu.exe
Mais voila, si je change le nom du script jeu-X.sh cela ne marche plus.
Comment mettre dans l'expression de sed $0 à la place de jeu-X.sh afin que cela fonctionne à tous les coups.
J'ai besoin de lancer à tout prix le jeu dans son dossier.
Merci
Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Si ton but est de faire le cd dans le répertoire script, ci joint une proposition :
Citation :
#!/bin/bash
export WINEPREFIX="$HOME/.wine/"
kdesu -c "X :3 -ac -terminate &" # Lance sur un nouveau serveur X affichage 3
cd `dirname $0`
sleep 1 #On temporise d'une seconde
DISPLAY=:3 optirun wine jeu.exe
export WINEPREFIX="$HOME/.wine/"
kdesu -c "X :3 -ac -terminate &" # Lance sur un nouveau serveur X affichage 3
cd `dirname $0`
sleep 1 #On temporise d'une seconde
DISPLAY=:3 optirun wine jeu.exe
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
ça ne marche pas ... dans tous les cas :
Code BASH :
9 [14:29:30] adriencl@superlinux: ~ $ cat test.sh #! /bin/bash echo `dirname $0` echo `pwd` 10 [14:29:32] adriencl@superlinux: ~ $ sh test.sh . /home/adriencl 11 [14:29:34] adriencl@superlinux: ~ $ sh /home/adriencl/test.sh /home/adriencl /home/adriencl 12 [14:29:40] adriencl@superlinux: ~ $ cd / 13 [14:29:45] adriencl@superlinux: / $ sh /home/adriencl/test.sh /home/adriencl /
comme tu le vois, j'ai essayé avec pwd en vain.
Dans cet exemple, je veux que quelque soit où je le lance il m'affiche :
Code BASH :
/home/adriencl
C'est pas si simple

Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


ofaurax Membre non connecté
-
- Voir le profil du membre ofaurax
- Inscrit le : 27/03/2008
- Site internet
- Groupes :
Je ne connaissais pas, mais apparemment, c'est simplement un utilitaire pour récupérer le chemin courant et ajouter le paramètre ensuite.
Je suppose que tu veux utiliser "which", qui te donne le chemin de ton script, s'il existe dans ton path.
Code :
[ofaurax@localhost ~]$ realpath gnome-control-center
/home/ofaurax/gnome-control-center
[ofaurax@localhost ~]$ which gnome-control-center
/bin/gnome-control-center
Ensuite, pour le fait d'enlever le nom du script, je te propose une expression régulière qui dit "tout ce qui n'est pas un slash en fin de chaîne", ce qui donne "/[^/]*$/".
Code BASH :
$ which ls | sed -e 's/[^/]*$//' /bin/ $ which chroot | sed -e 's/[^/]*$//' /usr/sbin/
Mageia 7 x86_64, Gnome, Firefox
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
le scrpt n'est pas dans le path. Il est exécuté depuis le menu de KDE, et doit se situe dans le même dossier que mon jeu.
Code BASH :
cd `realpath "$0" | sed -e 's/[^/]*$//'`
Cela semble mieux que ce que j'ai écrit auparavant dans ce cas.
Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


vouf Membre non connecté
-
- Voir le profil du membre vouf
- Inscrit le : 16/08/2008
- Groupes :
Une autre possibilité
Code TEXT :
#!/bin/bash export WINEPREFIX="$HOME/.wine/" kdesu -c "X :3 -ac -terminate &" # Lance sur un nouveau serveur X affichage 3 nom=`realpath $0` Fic=`basename $0` cd ${nom%%$fic} sleep 1 #On temporise d'une seconde DISPLAY=:3 optirun wine jeu.exe
Mageia 9 64 bits Plasma - Asus Prime Z690-P D4 -Intel Core i5 12600 K- 32 Go Kingston Fury Renegade DDR4-3600 Mhz- Gigabyte Nvidia RTX 3060 - Go-M2 Samsung Evo 970 1Tb-SSD 512 Gb Samsung Evo 960 -SSD 512 Gb Crucial M5

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
vouf :
Code BASH :
nom=`realpath $0` Fic=`basename $0` cd ${nom%%$fic}
Humm ... intéressant !
Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


ofaurax Membre non connecté
-
- Voir le profil du membre ofaurax
- Inscrit le : 27/03/2008
- Site internet
- Groupes :
Code BASH :
[ofaurax@localhost ~]$ sh test.sh /home/ofaurax/ [ofaurax@localhost ~]$ sh ~/test.sh /home/ofaurax/ [ofaurax@localhost ~]$ cd / [ofaurax@localhost /]$ sh ~/test.sh /home/ofaurax/ [ofaurax@localhost /]$ cat ~/test.sh #! /bin/bash echo `realpath $0 | sed -e 's/[^/]*$//'`
Mageia 7 x86_64, Gnome, Firefox
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org

magnux77 Membre non connecté
-
- Voir le profil du membre magnux77
- Inscrit le : 21/09/2009
- Groupes :
-
Membre d'Honneur
bash-4.2$ F=/A1/b2/C3/Fic
bash-4.2$ basename $F
Fic
bash-4.2$ dirname $F
/A1/b2/C3
bash-4.2$
bash-4.2$ basename $F
Fic
bash-4.2$ dirname $F
/A1/b2/C3
bash-4.2$
Et pis ch'est tout !
Édité par magnux77 Le 27/07/2013 à 15h55
...depuis Mandrake 7
Membre de l'April - « promouvoir et défendre le Logiciel Libre»
Soutien Framasoft - « Changer le monde, un octet à la fois»
Config n°1 : cpu=AMD64x6 mem=16G SSD=64G HDD=1T OS=Mageia8-64 DE=Xfce, Config n°2 : Dell Latitude E6410 SSD=120G OS=Mageia8 DE=Xfce, Config n°3 : ThinkpadR40 SSD=32G OS=[Manjaro, Parabola, Mageia6] DE=Xfce, Config n°4 : EeePC901 SSD=20Gb, OS=[SliTaz5/Lxde, Mageia8/Xfce]
Membre de l'April - « promouvoir et défendre le Logiciel Libre»
Soutien Framasoft - « Changer le monde, un octet à la fois»
Config n°1 : cpu=AMD64x6 mem=16G SSD=64G HDD=1T OS=Mageia8-64 DE=Xfce, Config n°2 : Dell Latitude E6410 SSD=120G OS=Mageia8 DE=Xfce, Config n°3 : ThinkpadR40 SSD=32G OS=[Manjaro, Parabola, Mageia6] DE=Xfce, Config n°4 : EeePC901 SSD=20Gb, OS=[SliTaz5/Lxde, Mageia8/Xfce]

magnux77 Membre non connecté
-
- Voir le profil du membre magnux77
- Inscrit le : 21/09/2009
- Groupes :
-
Membre d'Honneur
...depuis Mandrake 7
Membre de l'April - « promouvoir et défendre le Logiciel Libre»
Soutien Framasoft - « Changer le monde, un octet à la fois»
Config n°1 : cpu=AMD64x6 mem=16G SSD=64G HDD=1T OS=Mageia8-64 DE=Xfce, Config n°2 : Dell Latitude E6410 SSD=120G OS=Mageia8 DE=Xfce, Config n°3 : ThinkpadR40 SSD=32G OS=[Manjaro, Parabola, Mageia6] DE=Xfce, Config n°4 : EeePC901 SSD=20Gb, OS=[SliTaz5/Lxde, Mageia8/Xfce]
Membre de l'April - « promouvoir et défendre le Logiciel Libre»
Soutien Framasoft - « Changer le monde, un octet à la fois»
Config n°1 : cpu=AMD64x6 mem=16G SSD=64G HDD=1T OS=Mageia8-64 DE=Xfce, Config n°2 : Dell Latitude E6410 SSD=120G OS=Mageia8 DE=Xfce, Config n°3 : ThinkpadR40 SSD=32G OS=[Manjaro, Parabola, Mageia6] DE=Xfce, Config n°4 : EeePC901 SSD=20Gb, OS=[SliTaz5/Lxde, Mageia8/Xfce]

ofaurax Membre non connecté
-
- Voir le profil du membre ofaurax
- Inscrit le : 27/03/2008
- Site internet
- Groupes :
epilip :
C'est trop simple dirname ?
Code BASH :
$ dirname test.sh
.
Mageia 7 x86_64, Gnome, Firefox
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org

Adrien.D Membre non connecté
-
- Voir le profil du membre Adrien.D
- Inscrit le : 30/05/2011
- Site internet
- Groupes :
Je reviens sur le sujet puisque je l'ai retrouvé, car j'étais confronté à nouveau au problème sur Ubuntu ce matin.
@epilip, mon script app.sh est dans un dossier /opt/app/
Or, j'en ai fait un lien symbolique sur le bureau.
/opt/app/app.sh lance un binaire dans /opt/app/ : /opt/app/app.bin
Si je fais avec dirname, il cherche l'exécutable /home/adrien/Bureau/app.bin (qui n'existe pas) et non pas dans /opt/app/
Avec la solution d'ofaurax:
Code BASH :
$(realpath $0 | sed -e 's/[^/]*$//')/app.bin
cela fonctionne parfaitement

Config : PC Fixe : X470 GAMING PRO- AMD Ryzen 5 2600X - 16Go RAM - Radeon RX 560 (Pilote libre) - Gentoo Linux - GNOME Desktop - Kernel 5.10 LTS
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !
Ancien Webmaster de MageiaLinuxOnline. Les remplaçants assurent !


ofaurax Membre non connecté
-
- Voir le profil du membre ofaurax
- Inscrit le : 27/03/2008
- Site internet
- Groupes :

Mageia 7 x86_64, Gnome, Firefox
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org
Intel i7 8 coeurs, 16Go de RAM, SSD 120Go
Salon jabber par le web : http://chat.jabberfr.org/muckl_int/index.php?room=mageia
par XMPP : xmpp:mageia@chat.jabberfr.org
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie