Comment puis-je démarrer ma candidature de manière plus pratique?


9

Je suis nouveau dans Ubuntu. J'ai une application que j'ouvre de la manière suivante. Je tape dans la console:

cd ~/MyDirectory
./myapp +some arguments

Comment puis-je trouver une solution, afin de pouvoir lancer mon application sans taper ces commandes dans la console à chaque fois? Je pense à un script, comme un bat-script ou .lnk dans Windows.

Dans d'autres questions similaires, je n'ai pas trouvé de solution car il n'y avait que quelques mentions et discussions sur les scripts. Je n'ai pas trouvé comment utiliser la commande "cd" dans d'autres questions, et cette question n'est pas en double d'autres que je suggère.


@steeldriver, non, je n'ai pas trouvé de solution à cette question. il n'y a rien sur la commande cd et l'exécution de l'application via un script.
Nick

# 1 Voulez-vous que la solution soit une icône sur laquelle vous pouvez cliquer sur votre bureau, ou est-ce quelque chose que vous devez / voulez exécuter à partir de l'invite de commande? # 2 À quelle fréquence l'argument changera-t-il?
RonJohn

La conversation (en toute sécurité dans ce cas) suppose qu'il existe un bureau. Très souvent, dans le monde des scripts, il n'y en aura pas.
mckenzm

Réponses:


21

Un script est assez exagéré.

Utilisez un fichier .desktop comme:

[Desktop Entry]
Exec=/bin/bash -c "cd ~/MyDirectory && myapp some_arguments"
Name=Some App
Type=Application
  • Enregistrez-le sous some_app.desktop
  • Rendez-le exécutable et double-cliquez

NB

La question est de savoir si elle doit être exécutée à partir de son propre répertoire ou non. Sinon, la commande pourrait être encore plus simple:

Exec='/home/MyUserName/MyDirectory/myapp' some_arguments

2
Vraiment merci. .desktopfichier est suffisant pour cette tâche.
Nick

2
@allo Si OP demande une solution qui n'est pas optimale pour son problème, mais qu'il ne sait pas qu'une meilleure solution existe, vous devriez lui donner la meilleure solution pour son problème si vous en connaissez une. Si vous ne voyez pas que vous manquez tout à fait le point sur ce que devrait être une réponse ici.
Jacob Vlijm

1
@dessert Merci pour la modification. Nous
devrons

1
Vous voudrez peut-être écrire ./myapp …au lieu de simplement myapp …parce que le répertoire courant ., par défaut, ne fait pas partie de la variable PATH.
PerlDuck

1
@allo N'hésitez pas à ajouter votre propre réponse si vous pensez que les réponses existantes ne sont pas suffisantes.
Fabby

13

Créez un fichier avec le contenu suivant:

#!/bin/bash
cd ~/MyDirectory
./myapp +some arguments

Rendez-le ensuite exécutable:

chmod u+x scriptname

Vous pouvez maintenant appeler ce script comme ceci: /pathtoscript/scriptname

Vous pouvez combiner cela avec la réponse de v010dya, et mettre ce script dans n'importe binlequel qui se trouve dans $ PATH, donc les deux méthodes d'appel sont possibles: dans le shell dans n'importe quel type de répertoire scriptnameou utilisez le raccourci de bureau expliqué ci-dessous. Modifiez simplement /pathtoscriptl'emplacement réel du script.

Créez un raccourci vers le script, placez-le ~/.local/share/applications/et nommez-le comme somename.desktop avec le contenu suivant:

[Desktop Entry]
Version=1.0
Name=Script
Comment=
Keywords=Script
Exec=/pathtoscript/scriptname
Terminal=false
X-MultipleArgs=true
Type=Application
Icon=preferences-system
Categories=GTK;Development;
StartupNotify=false

Ensuite, il apparaîtra dans la liste des applications


1
Votre réponse fonctionne, merci. Mais vraiment désolé, le script est trop dur, je ne le savais pas. Et ma réponse était concrètement dans le script mais pas simplement dans la recherche d'une solution. Je vous attribuerai +1.
Nick

1

Bien que vous ayez déjà trouvé une solution sur laquelle vous pouvez double-cliquer, il existe une solution qui la rend plus simple à exécuter à partir de la ligne de commande:

Étape 1 - Écrivez un script

Ceci est déjà couvert par une réponse de LeonidMew , je vais le copier ici:

#!/bin/bash
cd ~/MyDirectory
./myapp +some arguments

et alors

chmod u+x scriptname

Étape 2 - Rendez-le facile à exécuter

Vous devez créer un répertoire ~/binet faire en sorte que bash le recherche pour les commandes. Donc, dans le terminal, nous écrivons:

mkdir ~/bin
mv scriptname ~/bin
vim ~/.profile

Ici, je fais tout dans le terminal, vous pouvez bien sûr créer un répertoire dirdans votre répertoire personnel et y déplacer votre script via des outils graphiques avec lesquels vous êtes à l'aise. J'utilise également vim comme éditeur, mais il est un peu difficile pour les débutants à utiliser, je vous conseille d'apprendre, mais vous pouvez simplement utiliser un autre éditeur (même graphique) pour modifier l' .profileintérieur de votre répertoire, notez que ce fichier est masqué par défaut.

Vous devez ajouter ce qui suit à la fin de ce fichier

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Si vous utilisez vim, vous appuyez sur ipour commencer à ajouter du texte, puis sur Escpour terminer l'ajout. Après cela, vous entrez :wqpour écrire le fichier et quittez. Ou, comme je l'ai déjà dit, utilisez un éditeur plus simple.

Étape 3 - Profitez

Maintenant, peu importe le répertoire dans lequel vous vous trouvez, vous pouvez toujours taper scriptnameet appuyer sur Enter. Vous pouvez également placer d'autres scripts et applications dans lesquels vous souhaitez être exécutable ~/bin.


1
Vous avez écrit comment quitter vim, +1 Je plaisante, bonne réponse. Votre solution est utile. Il est toujours possible de créer un fichier .desktop, d'exécuter un script à partir de la liste ou du menu des applications (en fonction de DE). Après avoir corrigé .profile, la déconnexion / connexion est nécessaire. La maison peut également être montée avec l'option noexec, dans ce cas, il est nécessaire de mettre le script dans / usr / local / bin / (en utilisant sudo).
LeonidMew
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.