Wie kann ich meine Bewerbung bequemer starten?


9

Ich bin neu in Ubuntu. Ich habe eine Anwendung, die ich folgendermaßen öffne. Ich tippe in die Konsole:

cd ~/MyDirectory
./myapp +some arguments

Wie kann ich eine Lösung finden, um meine Anwendung zu starten, ohne diese Befehle jedes Mal in die Konsole einzugeben? Ich denke an ein Skript, wie ein Fledermaus-Skript oder .lnk in Windows.

Bei anderen ähnlichen Fragen habe ich keine Lösung gefunden, da nur einige Skripte erwähnt und diskutiert wurden. Ich habe nicht gefunden, wie ich den Befehl "cd" in anderen Fragen verwenden kann, und diese Frage ist kein Duplikat anderer, die ich vorschlage.


@steeldriver, nein, ich habe bei dieser Frage keine Lösung gefunden. Es gibt nichts über den Befehl cd und das Ausführen der App per Skript.
Nick

# 1 Möchten Sie, dass die Lösung ein Symbol ist, auf das Sie auf Ihrem Desktop klicken können, oder möchten Sie dies über die Eingabeaufforderung ausführen? # 2 Wie oft wird sich das Argument ändern?
RonJohn

Bei der Konversation (in diesem Fall sicher) wird davon ausgegangen, dass ein Desktop vorhanden ist. Sehr oft wird es in der Scripting-Welt keine geben.
McKenzm

Antworten:


21

Ein Skript ist ziemlich übertrieben.

Verwenden Sie eine .desktop-Datei wie:

[Desktop Entry]
Exec=/bin/bash -c "cd ~/MyDirectory && myapp some_arguments"
Name=Some App
Type=Application
  • Speichern Sie es als some_app.desktop
  • Machen Sie es ausführbar und doppelklicken Sie

NB

Die Frage ist, ob es aus einem eigenen Verzeichnis ausgeführt werden muss oder nicht. Wenn nicht, könnte der Befehl noch einfacher sein:

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

2
Wirklich danke dir. .desktopDatei ist genug für diese Aufgabe.
Nick

2
@allo Wenn OP nach einer Lösung fragt, die nicht die optimale für sein Problem ist, er jedoch nicht weiß, dass es eine bessere gibt, sollten Sie ihm die bessere Lösung für sein Problem geben, wenn Sie eine kennen. Wenn Sie nicht sehen, dass Sie den Punkt, an dem eine Antwort hier sein sollte, ganz verpassen.
Jacob Vlijm

1
@dessert Danke für die Bearbeitung. Wir müssen uns vielleicht mit Pfaden mit Leerzeichen befassen :)
Jacob Vlijm

1
Möglicherweise möchten Sie schreiben, ./myapp …anstatt nur, myapp …weil das aktuelle Verzeichnis .standardmäßig nicht Teil der PATH-Variablen ist.
PerlDuck

1
@allo Bitte zögern Sie nicht, Ihre eigene Antwort hinzuzufügen, wenn Sie der Meinung sind, dass die vorhandenen nicht ausreichen.
Fabby

13

Erstellen Sie eine Datei mit folgendem Inhalt:

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

Dann machen Sie es ausführbar:

chmod u+x scriptname

Jetzt können Sie dieses Skript folgendermaßen aufrufen: /pathtoscript/scriptname

Sie können dies mit der Antwort von v010dya kombinieren und dieses Skript in eine beliebige Datei binim $ PATH einfügen, sodass beide Aufrufmethoden möglich sind: in der Shell in einem beliebigen Verzeichnis-Typ scriptnameoder verwenden Sie die unten erläuterte Desktop-Verknüpfung. Wechseln Sie einfach /pathtoscriptzur tatsächlichen Platzierung des Skripts.

~/.local/share/applications/Erstellen Sie eine Verknüpfung zum Skript, platzieren Sie es in und benennen Sie es wie somename.desktop mit folgendem Inhalt:

[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

Dann erscheint es in der Anwendungsliste


1
Ihre Antwort funktioniert, danke. Aber es tut mir wirklich leid, das Skript ist zu schwer, ich wusste nichts davon. Und meine Antwort war konkret im Skript, aber nicht darin, irgendeine Lösung zu finden. Ich werde +1 zu dir.
Nick

1

Obwohl Sie bereits eine Lösung gefunden haben, auf die Sie doppelklicken können, gibt es eine Lösung, die das Ausführen über die Befehlszeile einfacher macht:

Schritt 1 - Schreiben Sie ein Skript

Dies wird bereits durch eine Antwort von LeonidMew abgedeckt , ich werde es hier kopieren:

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

und dann

chmod u+x scriptname

Schritt 2 - Erleichtern Sie die Ausführung

Sie müssen ein Verzeichnis erstellen ~/binund die Bash- Suche nach Befehlen durchführen. Also schreiben wir im Terminal:

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

Hier mache ich alles im Terminal, Sie können natürlich ein Verzeichnis dirin Ihrem Home-Verzeichnis erstellen und Ihr Skript dort auch über grafische Werkzeuge verschieben, mit denen Sie vertraut sind. Auch ich benutze vim als Editor, aber es ist ein wenig schwierig für Anfänger zu verwenden, ich würde Ihnen raten zu lernen, aber Sie können einfach einen anderen Editor (auch grafisch) verwenden, um .profilein Ihrem Home-Verzeichnis zu bearbeiten , beachten Sie, dass diese Datei ist standardmäßig ausgeblendet.

Sie müssen am Ende dieser Datei Folgendes hinzufügen

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

Wenn Sie vim verwenden , drücken Sie i, um mit dem Hinzufügen von Text zu beginnen und das Hinzufügen Esczu beenden. Danach geben Sie ein :wq, um eine Datei zu schreiben und zu beenden. Oder verwenden Sie, wie bereits erwähnt, einen einfacheren Editor.

Schritt 3 - Viel Spaß

Jetzt spielt es keine Rolle, in welchem ​​Verzeichnis Sie sich befinden, Sie können immer nur tippen scriptnameund drücken Enter. Sie können auch andere Skripte und Anwendungen platzieren, in denen Sie ausführbar sein möchten ~/bin.


1
Du hast geschrieben, wie man vim verlässt, +1 Nur ein Scherz, nette Antwort. Ihre Lösung ist nützlich. Es ist weiterhin möglich, eine .desktop-Datei zu erstellen und ein Skript über die Liste oder das Menü der Apps auszuführen (abhängig von DE). Nach dem Patchen ist .profile Logout / Login erforderlich. Auch home kann mit der Option noexec gemountet werden. In diesem Fall muss das Skript in / usr / local / bin / abgelegt werden (mit sudo).
LeonidMew
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.