Mi piacerebbe sapere se esiste un modo per eseguire script programma / shell senza digitare il percorso completo:
/opt/idea/bin/idea.sh
Mi piacerebbe sapere se esiste un modo per eseguire script programma / shell senza digitare il percorso completo:
/opt/idea/bin/idea.sh
Risposte:
Puoi semplicemente creare un collegamento simbolico . Crealo in /usr/local/bin
. Tutto ciò che serve è eseguire il comando:
sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command
Dopodiché dovresti rendere il tuo file
eseguibile:
chmod +x /full/path/to/your/file
Ora dovresti essere in grado di correre name_of_new_command
in qualsiasi momento nel tuo terminale.
Nota che questa è una buona soluzione solo per l'uso domestico di Linux.
/usr/local/bin
che punti a uno script in una cartella home privata, ad esempio /home/jack/myscript.sh
, poiché solo l'utente jack
potrebbe normalmente eseguirlo. Il collegamento simbolico sarà visibile per altri utenti, ma non per il file a cui punta. Su un sistema a utente singolo questo potrebbe non avere importanza, ma è comunque buona norma posizionare script (o collegamenti a script) in cui tutti gli utenti possono leggere /usr/local/bin
e script privati (o collegamenti a script) di un singolo utente nella loro ~/bin
cartella.
Puoi aggiungere /opt/idea/bin
alla tua PATH
variabile:
PATH=/opt/idea/bin:"$PATH"
Dopo questo puoi eseguirlo semplicemente idea.sh
.
Probabilmente vuoi aggiungere questa linea nel tuo ~/.bashrc
file.
idea
, è necessario creare un collegamento o un alias con quel nome che punta allo idea.sh
script.
idea.sh
script non è tale script, infatti spostarlo all'esterno della directory di installazione non è completamente supportato. Le regole di packaging Debian non si applicano qui.
Puoi creare una funzione nel tuo ~/.bashrc
:
some-name () {
/path/to/your/file
# or:
#cd /path/to/your
#./path
}
Oppure puoi creare un alias
:
alias some-name='/path/to/your/file'
# or
#alias some-name='cd /path/to/your/; ./file'
In entrambi i casi, puoi eseguirlo chiamando:
$ some-name
Se il file non dipende da dove è in esecuzione, considera di aggiungerlo al tuo ~/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
, se esiste, viene aggiunto $PATH
automaticamente al tuo . Quindi chiami direttamente file
:
$ file
(Cattiva scelta del nome, considera di chiamarlo qualcosa di meno generico.)
file
al tuo ~/bin
, che è quello che faccio di solito (per gli script più lunghi). Probabilmente l'avrei anche messo in cima :) Gli alias sono buoni per le scorciatoie per i comandi con determinati parametri, ad es alias l='ls -CF'
. Anche se ho visto usi molto più fantastici di alias . Non tendo a dichiarare le funzioni in ~/.bashrc
(preferisco avere tutti i miei script organizzati in file separati in ~/bin
). Anche se tutto questo è una questione di gusti, immagino :)
cd
, perché lo script può dipendere dalla directory di lavoro. :) Altrimenti, sì, tendo a mettere i file in ~/bin
me stesso.
Puoi creare un lanciatore usando il seguente comando:
gnome-desktop-item-edit --create-new <path-where-to-save>
. Non aprirò questa finestra.
Assegnalo al nome che preferisci e nella casella di comando digita quanto segue
sh -c '/opt/idea/bin/idea.sh'
e salvalo.
Ora puoi eseguire quel file usando il launcher appena creato
O
È possibile creare un file .desktop con i seguenti contenuti
[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>'
Ora salvalo con l' .desktop
estensione in qualsiasi luogo.
Renderlo eseguibile con questo comando chmod a+x <your-desktop-file>
Ora fai doppio clic per aprirlo.
Possiamo definire una funzione e aggiungere un tasto di scelta rapida usando il bind
comando per chiamarla. Apri il ~/.bashrc
file e aggiungi questa riga:
# define function that opens your program in working directory
Openprog(){
/your-Program/path/here
}
# bind hotkey to it (<F12>)
bind -x '"\e[24~":"Openprog"'
Ora quando premi F12, il tuo programma verrà avviato.
Nota: un modo rapido per determinare il codice di escape:
Apri il tuo terminale e premi Ctrl+ V. Ora premi la tua scorciatoia da tastiera preferita. Dovrebbe apparire il codice di escape corretto. Assicurati di sostituirlo ^[
con \e
prima di aggiungere il collegamento a, ad esempio sostituirlo ^[[24~
con \e[24~
.
Possiamo anche eseguire il /opt/idea/bin/idea.sh
file direttamente usandobash_aliases
Apri il ~/.bashrc
file eseguendo,
gedit ~/.bashrc
Rimuovi le #
linee prima e salvale, in modo che le linee sembrino,
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Ora apri il ~/.bash_aliases
file,
gedit ~/.bash_aliases
Aggiungi le righe seguenti in quel file e salvalo,
alias idea='cd /opt/idea/bin && sudo ./idea.sh'
Finalmente il ~/.bashrc
file sorgente ,
source ~/.bashrc
Ora puoi eseguire il /opt/idea/bin/idea.sh
file direttamente da,
idea
Oltre alle altre buone risposte, considera il collegamento simbolico ~/.local/bin
e l'aggiunta di questa directory al tuo PERCORSO (dall'interno del tuo .bashrc
esempio). Questo metodo non richiede autorizzazioni speciali (diversamente dal collegamento simbolico a /usr/local/bin
, ad esempio). In questo modo, potresti avere una struttura di directory standard senza inondare $ HOME. Maggiori informazioni al riguardo su queste https://unix.stackexchange.com/ domande:
Oppure puoi semplicemente usare
nano ~/.bashrc
e aggiungi
PATH=/full/path/to/file:"$PATH"
alla fine, quindi salva ed esci. Successivamente, puoi semplicemente digitare il nome del file.
Ho seguito tutte le risposte qui e in altri posti e così pochi non riescono a menzionare che potrebbe essere necessario disconnettersi affinché il comando funzioni alla fine.
Per ricapitolare, specialmente per Xubuntu , ma anche per altre varianti di Debian / Ubuntu ho scritto queste semplici istruzioni.
(nelle seguenti istruzioni usiamo la directory ~ / bin , perché è automaticamente un posto da dove questi SO cercano i comandi. Vedi qui :
# 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)