Come posso avviare la mia domanda in un modo più conveniente?


9

Sono nuovo in Ubuntu. Ho un'applicazione che apro nel modo seguente. Digito nella console:

cd ~/MyDirectory
./myapp +some arguments

Come posso trovare una soluzione, in modo da poter avviare la mia applicazione senza digitare questi comandi nella console ogni volta? Sto pensando a una sceneggiatura, come una bat-script o .lnk in Windows.

In altre domande simili non ho trovato una soluzione perché c'erano solo alcune menzioni e discussioni sugli script. Non ho trovato il modo in cui posso usare il comando "cd" in altre domande, e questa domanda non è duplicata di altre che suggerisco.


@steeldriver, no, non ho trovato la soluzione a questa domanda. non c'è nulla sul comando cd e sull'app in esecuzione tramite script.
nick

# 1 Do si desidera la soluzione per essere un'icona è possibile fare clic sul desktop, o questo sarà qualcosa di cui avete bisogno / desidera eseguire dal prompt dei comandi? # 2 Con che frequenza cambierà l'argomento?
RonJohn,

La conversazione (in questo caso sicura) presuppone che ci sia un desktop. Abbastanza spesso nel mondo degli script non ci sarà.
mckenzm,

Risposte:


21

Una sceneggiatura è piuttosto eccessiva.

Usa un file .desktop come:

[Desktop Entry]
Exec=/bin/bash -c "cd ~/MyDirectory && myapp some_arguments"
Name=Some App
Type=Application
  • Salva come some_app.desktop
  • Renderlo eseguibile e fare doppio clic

NB

La domanda è se deve essere eseguito dalla propria directory o meno. In caso contrario, il comando potrebbe anche essere più semplice:

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

2
Grazie davvero. .desktopil file è sufficiente per questa attività.
nick

2
@allo Se OP richiede una soluzione, che non è quella ottimale per il suo problema, ma non è consapevole che esiste una soluzione migliore, dovresti dargli la soluzione migliore per il suo problema se ne conosci una. Se non vedi che ti manca abbastanza il punto su quale dovrebbe essere una risposta qui.
Jacob Vlijm,

1
@dessert Grazie per la modifica. Potremmo avere a che fare con percorsi con spazi :)
Jacob Vlijm

1
Potresti voler scrivere ./myapp …invece che solo myapp …perché la directory corrente ., per impostazione predefinita, non fa parte della variabile PATH.
PerlDuck,

1
@allo Non esitate a aggiungere la vostra risposta se pensate che quelle esistenti non siano sufficienti.
Fabby,

13

Crea un file con il seguente contenuto:

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

Quindi renderlo eseguibile:

chmod u+x scriptname

Ora puoi chiamare questo script in questo modo: /pathtoscript/scriptname

È possibile combinare questo con la risposta di v010dya e inserire questo script in uno qualsiasi bindei $ PATH, quindi entrambi i metodi di chiamata sono possibili: nella shell in qualsiasi tipo di directory scriptnameo utilizzare il collegamento sul desktop spiegato di seguito. Basta passare /pathtoscriptal posizionamento effettivo dello script.

Crea un collegamento allo script, inseriscilo ~/.local/share/applications/e chiamalo come somename.desktop con il seguente contenuto:

[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

Quindi verrà visualizzato nell'elenco delle applicazioni


1
La tua risposta funziona, grazie. Ma mi dispiace davvero, la sceneggiatura è troppo dura, non lo sapevo. E la mia risposta è stata concretamente nella sceneggiatura, ma non nel trovare solo un modo di soluzione. Ti farò +1.
nick

1

Anche se hai già trovato una soluzione su cui puoi fare doppio clic, esiste una soluzione che rende più banale l'esecuzione dalla riga di comando:

Passaggio 1: scrivere uno script

Questo è già coperto da una risposta di LeonidMew , lo copierò qui:

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

e poi

chmod u+x scriptname

Passaggio 2: semplificare l'esecuzione

Devi creare una directory ~/bine fare in modo che bash cerchi i comandi. Quindi nel terminale scriviamo:

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

Qui sto facendo tutto nel terminale, puoi ovviamente creare una directory dirnella tua home directory e anche spostare il tuo script lì tramite strumenti grafici con cui ti senti a tuo agio. Inoltre sto usando Vim come editor, ma è un po 'difficile da usare per i principianti, ti consiglierei di imparare, ma puoi semplicemente usare un editor diverso (anche grafico) per modificare .profileall'interno della tua home directory, nota che questo file è nascosto per impostazione predefinita.

Devi aggiungere quanto segue alla fine di quel file

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

Se stai usando vim , premi iper iniziare ad aggiungere del testo e poi Escper terminare l'aggiunta. Successivamente, inserisci :wqper scrivere il file e uscire. Oppure, come ho già detto, usa un editor più semplice.

Passaggio 3: divertiti

Ora, non importa in quale directory ti trovi, puoi sempre semplicemente digitare scriptnamee premere Enter. Puoi anche inserire altri script e applicazioni in cui vuoi essere eseguibile ~/bin.


1
Hai scritto come uscire da Vim, +1 Sto scherzando, bella risposta. La tua soluzione è utile È ancora possibile creare file .desktop, eseguire script dall'elenco o dal menu delle app (a seconda di DE). Dopo aver corretto le patch .profile è necessario il logout / login. Anche home può essere montato con l'opzione noexec, in questo caso è necessario inserire lo script in / usr / local / bin / (usando sudo).
LeonidMew
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.