GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen einer ausführbaren Datei im Pfad mit demselben Namen wie eine vorhandene Funktion?

Manchmal definiere ich eine Funktion, die eine ausführbare Datei verdeckt und ihre Argumente oder Ausgabe optimiert. Die Funktion hat also denselben Namen wie die ausführbare Datei, und ich brauche eine Möglichkeit, die ausführbare Datei von der Funktion aus auszuführen, ohne die Funktion rekursiv aufzurufen. Zum Beispiel, um die Ausgabe von fossil diff automatisch auszuführen durch colordiff und less -R Ich verwende:

function fossil () {
    local EX=$(which fossil)
    if [ -z "$EX" ] ; then
        echo "Unable to find 'fossil' executable." >&2
        return 1
    fi
    if [ -t 1 ] && [ "$1" == "diff" ] ; then
        "$EX" "[email protected]" | colordiff | less -R
        return
    fi
    "$EX" "[email protected]"
}

Wenn ich sicher wäre, wo sich die ausführbare Datei befindet, könnte ich einfach /usr/bin/fossil eingeben . Bash erkennt diesen / bedeutet, dass der Befehl eine ausführbare Datei ist, keine Funktion. Aber da ich den genauen Standort nicht kenne, muss ich auf which zurückgreifen und Überprüfung des Ergebnisses. Gibt es einen einfacheren Weg?

Akzeptierte Antwort:

Verwenden Sie den command Shell eingebaut:

bash-4.2$ function date() { echo 'at the end of days...'; }

bash-4.2$ date
at the end of days...

bash-4.2$ command date
Mon Jan 21 16:24:33 EET 2013

bash-4.2$ help command
command: command [-pVv] command [arg ...]
    Execute a simple command or display information about commands.

    Runs COMMAND with ARGS suppressing  shell function lookup, or display
    information about the specified COMMANDs.  Can be used to invoke commands
    on disk when a function with the same name exists.

Linux
  1. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  2. Lassen Sie sich mit sort in der Befehlszeile sortieren

  3. '&&' vs. '&' mit dem 'test'-Befehl in Bash

  4. Rsync kopiert aktuelles Verzeichnis mit Namen

  5. Linux - Gleichzeitiges Ausführen desselben Befehls auf vielen Computern

Navigieren im Dateisystem mit relativen Pfaden in der Befehlszeile

Das fc Command Tutorial mit Beispielen für Anfänger

Bearbeiten von Text in der Befehlszeile mit grep

Zeiterfassung mit Timewarrior auf der Kommandozeile

So finden Sie Dateien mit dem fd-Befehl in Linux

Sicheres Kopieren von Dateien mit dem SCP-Befehl