Frage

Ich möchte in der Lage sein, meine Aliase von meinem .bashrc in der "Run Application" Dialog zu führen, die aufkommt, wenn Sie Alt + F2 in Ubuntu / Gnome getroffen.

Wer weiß, wie dies zu tun?

War es hilfreich?

Lösung

http://www.freedesktop.org/wiki/Specifications ist wahrscheinlich eine gute Ort zu starten. Ich finde diese sehr schwierig die meiste Zeit zu folgen, aber manchmal kann man es herausfinden. Insbesondere die "Desktop Entry Specification".

Auch ich glaube nicht, Sie Aliase von .bashrc zu verwenden, werden in der Lage, zumindest nicht ohne irgendeine Art von Wrapper-Skript zu schreiben. Ich denke, es muss eine ausführbare Datei sein. Natürlich könnte man einfach die gute alte symlinks- to- gleichen + verwenden what's- my- Name Trick ...

(Was als Referenz, geht wie folgt aus:

  1. ein Skript, das seinen eigenen Namen als Parameter verwendet.
  2. Erstellen Sie symbolische Links zu dem Script die Parameterwerte wie die Link-Namen verwenden.)

Investigating ...

Einige lässig Untersuchung zeigt, dass diese zu schaffen ist ziemlich einfach, wenn Sie Nautilus verwenden, (zumindest die Version, die ich habe):

  1. Bringen Sie das Kontextmenü für eine zufällige Datei auf, und verwenden Sie „Öffnen mit“. -> „Öffnen mit anderen Anwendungs“
  2. Entfalten der „Verwenden Sie einen benutzerdefinierten Befehl“ und geben Sie in so etwas wie:
    1. xterm -e 'bash -c "unzip -l %f; sleep 5"'
  3. Dies führt zu
    1. der Befehl des ausgeführt wird (also nicht geben rm -rf)
    2. eine Datei in ~/.local/share/applications/ genannt xterm-usercreated.desktop

Hier zumindest, erhalte ich die Folge Datei:

[Desktop Entry]
Encoding=UTF-8
Name=xterm
MimeType=application/zip;
Exec=xterm -e 'bash -c "unzip -l %f; sleep 5"' %f
Type=Application
Terminal=false
NoDisplay=true

4: Ein Blick auf das System xterm .desktop ich diese finden:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=XTerm
GenericName=
Comment=XTerm: terminal emulator for X
Icon=/usr/share/pixmaps/xterm-color_32x32.xpm
Exec=xterm
Terminal=false
Categories=X-Debian-Applications-Terminal-Emulators;

5: Bearbeiten der .usercreated.desktop-Datei folgendermaßen aus:

[Desktop Entry]                                                                 
Type=Application                                                                
Encoding=UTF-8                                                                  
Name=xtermz                                                                     
Exec=xterm -e 'bash -c "unzip -l %f; sleep 5"' %f                               
Terminal=false                                                                  
Categories=X-Local-WTF                                                          

6: Führen Sie xdg-Desktop-Menü Forceupdate --mode Benutzer

7: "xtermz" zeigt nun in der Liste nach oben ... Success

8: Yuck! Dies macht es auch im Hauptmenü angezeigt werden, unter „Sonstiges“. Seltsam!


Einige Anmerkungen:

  • In meinem Debian / testing, xdg-desktop-menu und Freunde (insbesondere xdg-icon-resource) leben im xdg-utils Paket.
  • Sie sollten in der Lage sein, eine .desktop Datei von Grund auf neu zu erstellen.
  • Sie sollten Lage sein, die .desktop-Datei installieren mit xdg-desktop-menu install bla bla

Andere Tipps

Sie können nur einen symbolischen Link auf / usr / bin hinzufügen: ln -s <YOUR_ALIAS_PATCH> <ALIAS_NAME>

Ich kann nicht die Aliase arbeiten, so dass ich tue dies statt:

  • ein Shell-Skript Erstellt zu tun, was ich will, und steckt es in meinem Home-Verzeichnis

  • Setzen Sie einen Link zu meinem Shell-Skript in / usr / bin:

    • z sudo ln -s ~ / bin / MyShellScript.sh / usr / bin / MyShortcutName

Es funktioniert!

Sie können ein paar Dinge tun. Als Brad Parks + Nostoc sagt, könnten Sie ein Skript in Ihrem lokalen Pfad gesetzt, der das Programm ausführt:

$ cat my/local/path/terminal
#! /bin/bash
gnome-terminal

Wenn Sie nicht möchten, dass dies für die viele Aliase tun, dann ein einzigen „alias Testamentsvollstrecker“ auf Ihrem lokalen Pfad hinzufügen:

$ cat my/local/path/myAlias
#! /bin/bash
CMD="$*"
eval "$CMD"

Dann wird in dem Dialog, würden Sie geben "Meinalias aliasedProgram arg1 arg2 usw.".

Ich kann nicht die Aliase arbeiten, so dass ich tue dies statt:

ein Shell-Skript Erstellt zu tun, was ich will, und steckt es in meinem Home-Verzeichnis Setzen Sie einen Link zu meinem Shell-Skript in / usr / bin: z sudo ln -s ~/bin/MyShellScript.sh /usr/bin/MyShortcutName Es funktioniert!

Es funktioniert, weil / usr / bin in Ihrem Pfad variabel ist. eine bessere Alternative wäre, ein verstecktes Verzeichnis in Ihrem Zuhause zu schaffen, wie ~ / .scripts /

und dann auf dieses Verzeichnis Ihrem Pfad hinzuzufügen. Sie können jetzt alle Ihre Skripte in diesem Verzeichnis setzen.

Es gibt eine sehr einfache Lösung für Linux Mint und Ubuntu (Ich habe es nicht auf anderen Distributionen überprüfen):

mkdir ~/bin  #actually, need to run this line just once
cd ~/bin
ln -s /bin/any/your/application.sh YOUR_ALIAS_NAME

Zum Beispiel, Ich mag laufen calc von Alt + F2 Menü, so dass mein Skript ist:

mkdir ~/bin
cd ~/bin
ln -s /usr/bin/gnome-calculator calc

Wenn Sie irgendwelche Parameter übergeben wollen, können Sie einen kurzen Shell-Skript in ~/bin schaffen könnten:

#create the file:
echo '#!/bin/sh
firefox --private-window' > ~/bin/pfx
#make my script executable:
chmod 755 ~/bin/pfx

Die Lösung basiert auf der Tatsache, dass es eine Datei .profile in Hauptdir aus der Box genannt ist. Ich hoffe, Ihr bereits wissen, was .profile Datei . Im Rahmen seiner Arbeit, fügt diese Datei ~/bin zum $PATH (wenn bin vorhanden ist).

Ich dachte, bin in home ist nicht sicher, aber dieser Artikel empfiehlt beschriebene Art und Weise zu folgen: https://help.ubuntu.com/community/HomeFolder#Installing_Software_Into_The_Home_Directory

Statt Alt-F2 der Verwendung von Befehlen außerhalb des Terminals laufen zu lassen, verwende ich gnome-do statt; es ist viel bequemer und flexibel (sobald es eingerichtet ist). Sie sind noch nicht shell „Aliase“ laufen gehen zu können, aber Sie können gnome-tun, um die „Dateien und Ordner“ Plugin konfigurieren zu verwenden und dann alle „* .desktop“ Anwendungen, die Sie ausführen möchten zur Verfügung stehen wird für Laufen, Öffnung, etc. Sie auch auf die gleiche Weise ausgeführt Shell-Skripte haben kann.

Ich habe etwas ähnliches zu @YAG.

Ich habe ein Bash-Skript in / usr / local / bin namens 'mein':

echo -e '#!/usr/bin/bash\n~/bin/$@' > ~/temp
sudo cp ~/temp /usr/local/bin/my
rm ~/temp

Nun, wenn ich in ~ / bin aus Alt + F2 ein Skript aufrufen, möchte ich nur ein:

my script.sh

Die Vorteile sind, dass alle Benutzer ihre eigenen ~ / bin-Verzeichnis zugreifen, und Sie haben keinen neuen Symlink für jeden ~ / bin / * Datei zu machen.

Der Nachteil ist, dass Sie benötigen, mein 'jedes Mal eingeben, und zählen können nicht auf der Funktion zum automatischen Vervollständigung von alt + f2 zu vervollständigen ‚script.sh‘

Ich habe dieses Skript unter dem Namen / usr / bin / b, und gab es globale Lese- / Ausführungsberechtigung:

#!/bin/bash -i
eval "$@"

Jetzt kann ich den Befehl

b foo arg1 arg2

die im Grunde läuft

foo arg1 arg2

als ob es in einer interaktiven Shell eingegeben worden ist. Es ist in Ordnung Aliase zu verwenden, Verbindung Befehle, etc.

Geben Sie einfach: bash -ic 'MY_ALIAS'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top