GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter un exécutable dans le chemin avec le même nom qu'une fonction existante ?

Parfois, je définis une fonction qui masque un exécutable et modifie ses arguments ou sa sortie. Ainsi, la fonction porte le même nom que l'exécutable, et j'ai besoin d'un moyen d'exécuter l'exécutable à partir de la fonction sans appeler la fonction de manière récursive. Par exemple, pour exécuter automatiquement la sortie de fossil diff via colordiff et less -R J'utilise :

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 j'étais sûr de l'emplacement de l'exécutable, je pourrais simplement taper /usr/bin/fossil . Bash reconnaît que / signifie que la commande est un exécutable, pas une fonction. Mais comme je ne connais pas l'emplacement exact, je dois recourir à l'appel which et vérification du résultat. Existe-t-il un moyen plus simple ?

Réponse acceptée :

Utilisez la command shell intégré :

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. Planification des tâches avec la commande Linux cron

  2. Planifier une tâche avec la commande Linux at

  3. Soyez trié avec sort en ligne de commande

  4. Multi-tâches en ligne de commande avec screenie

  5. Comment puis-je exécuter une commande différente mais avec les mêmes arguments ?

Naviguer dans le système de fichiers avec des chemins relatifs sur la ligne de commande

Le didacticiel de commande fc avec des exemples pour les débutants

Manipuler du texte en ligne de commande avec grep

Suivi du temps avec Timewarrior en ligne de commande

Comment rechercher des fichiers avec la commande fd sous Linux

Copier des fichiers en toute sécurité avec la commande SCP