it-swarm.com.de

Wie führe ich Skripts aus, ohne den vollständigen Pfad einzugeben?

Ich würde gerne wissen, ob es eine Möglichkeit gibt, ein Programm/Shell-Skript auszuführen, ohne den vollständigen Pfad einzugeben:

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

Sie können einfach symlink erstellen. Erstellen Sie es in /usr/local/bin. Alles was Sie brauchen, ist das Kommando auszuführen:

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

Danach sollten Sie Ihr file ausführbar machen:

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

Jetzt sollten Sie jederzeit in Ihrem Terminal name_of_new_command ausführen können.

Beachten Sie, dass dies nur für den Heimgebrauch von Linux eine gute Lösung ist.

60
c0rp

Sie können Ihrer Variablen PATH/opt/idea/bin hinzufügen:

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

Danach können Sie es einfach mit idea.sh ausführen.

Sie möchten diese Zeile wahrscheinlich in Ihre ~/.bashrc -Datei einfügen.

28
janos

Sie können eine Funktion in Ihrem ~/.bashrc erstellen:

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

Oder Sie können ein alias erstellen:

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

In beiden Fällen können Sie es ausführen, indem Sie Folgendes aufrufen:

$ some-name

Wenn die Datei nicht davon abhängt, wo sie ausgeführt wird, können Sie sie zu Ihrem ~/bin hinzufügen:

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, falls vorhanden, wird Ihrem $PATH automatisch hinzugefügt. Dann rufen Sie direkt file an:

$ file

(Falsche Wahl des Namens. Nennen Sie ihn weniger allgemein.)

15
muru

Sie können einen Launcher mit dem folgenden Befehl erstellen:

gnome-desktop-item-edit --create-new <path-where-to-save>. Ich werde dieses Fenster nicht öffnen.

enter image description here

Benennen Sie es nach Belieben und geben Sie Folgendes in das Befehlsfeld ein

sh -c '/opt/idea/bin/idea.sh' und speichern Sie es.

Jetzt können Sie diese Datei mit dem neu erstellten Launcher ausführen

OR

Sie können eine .desktop-Datei mit folgendem Inhalt erstellen

[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>'

Speichern Sie es nun mit der Erweiterung .desktop an einem beliebigen Ort.

Mach es ausführbar mit diesem Befehl chmod a+x <your-desktop-file>

Doppelklicken Sie jetzt, um es zu öffnen.

10
g_p

Wir können die Datei /opt/idea/bin/idea.sh auch direkt mit bash_aliases ausführen.

Öffnen Sie die Datei ~/.bashrc, indem Sie

gedit ~/.bashrc

Entfernen Sie den # vor den Zeilen und speichern Sie ihn, so dass die Zeilen wie folgt aussehen:

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

Öffnen Sie nun die Datei ~/.bash_aliases,

gedit ~/.bash_aliases

Fügen Sie die folgenden Zeilen in die Datei ein und speichern Sie sie.

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

Quell die ~/.bashrc Datei,

source ~/.bashrc

Jetzt können Sie die /opt/idea/bin/idea.sh -Datei direkt ausführen, indem Sie

idea
7
Avinash Raj

Mit dem Befehl bind können wir eine Funktion definieren und einen Hotkey hinzufügen. Öffne die ~/.bashrc Datei und füge diese Zeile hinzu:

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

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

Jetzt, wenn Sie drücken F12wird Ihr Programm gestartet.

Hinweis: Eine schnelle Methode zur Ermittlung des Escape-Codes:

Öffnen Sie Ihr Terminal und drücken Sie Ctrl+V. Drücken Sie nun Ihre bevorzugte Tastenkombination. Der richtige Escape-Code sollte angezeigt werden. Stellen Sie einfach sicher, dass ^[ durch \e ersetzt wird, bevor Sie die Verknüpfung hinzufügen, z. Ersetzen Sie ^[[24~ durch \e[24~.

7
αғsнιη

Erwägen Sie zusätzlich zu den anderen guten Antworten, eine Verknüpfung zu ~/.local/bin herzustellen und dieses Verzeichnis zu Ihrem PATH hinzuzufügen (beispielsweise aus Ihrem .bashrc). Für diese Methode sind keine speziellen Berechtigungen erforderlich (im Gegensatz zum Beispiel zum Verknüpfen mit /usr/local/bin). Auf diese Weise haben Sie möglicherweise eine Standardverzeichnisstruktur, ohne Ihr $ HOME zu überfluten. Weitere Informationen hierzu finden Sie unter https://unix.stackexchange.com/ Fragen:

4
abstrus

Erstellen Sie einen Softlink in /usr/bin direcotyr:

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

Führen Sie es jetzt mit:

idea.sh
1
J.Franks

Oder Sie können einfach verwenden

nano ~/.bashrc

und hinzufügen

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

am Ende speichern und beenden. Anschließend können Sie einfach den Dateinamen eingeben.

0
Help the Newbie

Ich habe alle Antworten hier und an anderen Stellen befolgt, und so wenige erwähnen dies nicht, dass Sie möglicherweise LOG OUT benötigen, damit der Befehl schließlich funktioniert.

Um es noch einmal zusammenzufassen, besonders für Xubunt, aber auch für andere Debian/Ubunt Varianten habe ich diese einfachen Anweisungen geschrieben.

(In den folgenden Anweisungen verwenden wir das Verzeichnis ~/bin, da dies automatisch ein Ort ist, an dem diese Betriebssysteme nach Befehlen suchen. Siehe hier:

Narrensichere Anweisungen, um Ihren Befehl zum Laufen zu bringen:

# 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