GNU/Linux >> Tutoriales Linux >  >> Linux

¿Está ejecutando un ejecutable en la ruta con el mismo nombre que una función existente?

A veces defino una función que sombrea un ejecutable y modifica sus argumentos o salida. Entonces, la función tiene el mismo nombre que el ejecutable, y necesito una forma de ejecutar el ejecutable desde la función sin llamar a la función de forma recursiva. Por ejemplo, para ejecutar automáticamente la salida de fossil diff a través de colordiff y less -R Yo uso:

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]"
}

Si quisiera estar seguro de la ubicación del ejecutable, simplemente podría escribir /usr/bin/fossil . Bash reconoce que / significa que el comando es un ejecutable, no una función. Pero como no sé la ubicación exacta, tengo que recurrir a llamar a which y comprobando el resultado. ¿Existe una forma más sencilla?

Respuesta aceptada:

Usa el command shell integrado:

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. Programación de tareas con el comando cron de Linux

  2. Programar una tarea con Linux al mando

  3. Ordenarse con ordenar en la línea de comando

  4. ¿Cómo encuentro la ubicación del ejecutable en C?

  5. Linux:ejecutar el mismo comando en muchas máquinas a la vez

Navegando por el sistema de archivos con rutas relativas en la línea de comando

El tutorial del comando fc con ejemplos para principiantes

Manipulación de texto en la línea de comando con grep

Seguimiento del tiempo con Timewarrior en la línea de comandos

Cómo encontrar archivos con el comando fd en Linux

Copie archivos de forma segura con el comando SCP