web-dev-qa-db-fra.com

Comment exécuter des scripts sans taper le chemin complet?

J'aimerais savoir s'il existe un moyen d'exécuter un script programme/shell sans taper le chemin complet:

/opt/idea/bin/idea.sh
57
Poorman_Patrick

Vous pouvez simplement créer lien symbolique . Créez-le dans /usr/local/bin. Tout ce dont vous avez besoin est d’exécuter la commande:

Sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command

Après cela, vous devriez rendre votre file exécutable:

chmod +x /full/path/to/your/file

Vous devriez maintenant pouvoir exécuter name_of_new_command à tout moment dans votre terminal.

Notez que c'est une bonne solution uniquement pour une utilisation domestique de Linux.

60
c0rp

Vous pouvez ajouter /opt/idea/bin à votre variable PATH:

PATH=/opt/idea/bin:"$PATH"

Après cela, vous pouvez simplement l'exécuter avec idea.sh.

Vous voudrez probablement ajouter cette ligne dans votre fichier ~/.bashrc.

28
janos

Vous pouvez créer une fonction dans votre ~/.bashrc:

some-name () {
    /path/to/your/file
    # or:
    #cd /path/to/your
    #./path
}

Ou vous pouvez créer un alias:

alias some-name='/path/to/your/file'
# or  
#alias some-name='cd /path/to/your/; ./file'

Dans les deux cas, vous pouvez le lancer en appelant:

$ some-name

Si le fichier ne dépend pas de son emplacement, envisagez de l'ajouter à votre ~/bin:

mkdir -p ~/bin
cp /path/to/you/file ~/bin
# or mv /path/to/you/file ~/bin
# or ln -s /path/to/you/file ~/bin

~/bin, s'il existe, est ajouté automatiquement à votre $PATH. Ensuite, vous appelez directement file:

$ file

(Mauvais choix de nom, pensez à l'appeler quelque chose de moins générique.)

15
muru

Vous pouvez créer un lanceur en utilisant la commande suivante:

gnome-desktop-item-edit --create-new <path-where-to-save>. Je vais ouvrir cette fenêtre.

enter image description here

Nommez-le comme bon vous semble et dans le type de boîte de commande suivant

sh -c '/opt/idea/bin/idea.sh' et enregistrez-le.

Maintenant, vous pouvez exécuter ce fichier en utilisant le lanceur nouvellement créé

OR

Vous pouvez créer un fichier .desktop avec le contenu suivant

[Desktop Entry]
Name=<whatever-you-want>
Exec=sh -c '/opt/idea/bin/idea.sh'     
Terminal=false
Type=Application
Icon='<path to an icon file if you want>'

Maintenant, enregistrez-le avec l'extension .desktop n'importe où.

Rendez-le exécutable avec cette commande chmod a+x <your-desktop-file>

Maintenant, double-cliquez pour l'ouvrir.

10
g_p

Nous pouvons également exécuter le fichier /opt/idea/bin/idea.sh directement à l'aide de bash_aliases

Ouvrez le fichier ~/.bashrc en exécutant,

gedit ~/.bashrc

Supprimez le # avant les lignes et enregistrez-le afin que les lignes ressemblent à,

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Maintenant, ouvrez le fichier ~/.bash_aliases,

gedit ~/.bash_aliases

Ajoutez les lignes ci-dessous dans ce fichier et enregistrez-le,

alias idea='cd /opt/idea/bin && Sudo ./idea.sh'

Enfin, sourcez le fichier ~/.bashrc,

source ~/.bashrc

Maintenant, vous pouvez exécuter le fichier /opt/idea/bin/idea.sh directement par,

idea
7
Avinash Raj

Nous pouvons définir une fonction et un raccourci clavier Add en utilisant la commande bind pour l'appeler. Ouvrez le fichier ~/.bashrc et ajoutez-y la ligne suivante:

# define function that opens your program in working directory
Openprog(){
    /your-Program/path/here
}

# bind hotkey to it (<F12>)
bind -x '"\e[24~":"Openprog"'

Maintenant, quand vous appuyez sur F12, votre programme sera lancé.

Remarque: Un moyen rapide de déterminer le code d'échappement:

Ouvrez votre terminal et appuyez sur Ctrl+V. Maintenant, appuyez sur votre raccourci clavier préféré. Le code d'échappement correct devrait apparaître. Assurez-vous simplement de remplacer ^[ par \e avant d’ajouter le raccourci à, par exemple. remplacez ^[[24~ par \e[24~.

7
αғsнιη

En plus des autres bonnes réponses, pensez à créer un lien symbolique dans ~/.local/bin et à ajouter ce répertoire à votre PATH (à partir de votre .bashrc par exemple). Cette méthode ne nécessite pas d'autorisations spéciales (contrairement à la création de liens symboliques vers /usr/local/bin, par exemple). De cette façon, vous pouvez avoir une structure de répertoire standard sans inonder votre $ HOME. En savoir plus à ce sujet sur ces https://unix.stackexchange.com/ questions:

4
abstrus

Créez un lien symbolique dans le répertoire /usr/bin:

ln -s /usr/bin/idea.sh  /opt/idea/bin/idea.sh

Maintenant, lancez-le en utilisant:

idea.sh
1
J.Franks

Ou vous pouvez simplement utiliser

nano ~/.bashrc

et ajouter

PATH=/full/path/to/file:"$PATH"

à la fin, sauvegardez et quittez. Ensuite, vous pouvez simplement taper le nom du fichier.

0
Help the Newbie

J'ai suivi toutes les réponses ici et à d'autres endroits et si peu omettent de mentionner qu'il vous faudra peut-être SE DÉCONNECTER pour que la commande fonctionne.

Pour récapituler, en particulier pour Xubuntu , mais pour d’autres Debian/Ubuntu variantes ainsi j'ai écrit ces instructions simples.

(Dans les instructions suivantes, nous utilisons le répertoire ~/bin , car il s’agit automatiquement d’un emplacement à partir duquel les systèmes d’exploitation recherchent des commandes. Voir ici:

Instructions à toute épreuve pour que votre commande fonctionne:

# Open Terminal with Ctrl + Alt + T (or your system's own shortcut)

# You'll work in your home folder, no need to use Sudo for any of this

cd # Go to home directory

mkdir -p bin # Create folder ~/bin if it doesn't exist

# Be careful not to type /bin, that's the bin folder in system root: /

Sudo apt install nano # Skip this if you have Nano installed

nano bin/yournewcommand

    # In Nano, type:

    printf "Your new command works! \n" # \n means line break

    # Ctrl+X To leave Nano

    # Ctrl+Y To save the unsaved file

    # Enter to confirm

chmod +x bin/yournewcommand

yournewcommand # If you just created the bin folder, this command might not yet work.

# You must now log out and log back in to make the bin folder noticed (I think)

yournewcommand # Now it works! (You can use Tab to autocomplete the command you're typing)

# If you add a second file/command, it should work without logging out (at least in my tests)
0
Manu Järvinen