GNU/Linux >> Linux の 問題 >  >> Linux

既存の関数と同じ名前のパスで実行可能ファイルを実行しますか?

実行可能ファイルをシャドウイングし、その引数または出力を微調整する関数を定義することがあります。したがって、関数は実行可能ファイルと同じ名前であり、関数を再帰的に呼び出さずに関数から実行可能ファイルを実行する方法が必要です。たとえば、fossil diffの出力を自動的に実行するには colordiffを介して およびless -R 私が使用するもの:

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

実行可能ファイルの場所がわかれば、/usr/bin/fossilと入力するだけです。 。 Bashは/を認識します コマンドは、関数ではなく実行可能ファイルであることを意味します。しかし、正確な場所がわからないため、whichに電話する必要があります。 結果を確認します。もっと簡単な方法はありますか?

承認された回答:

commandを使用します シェルビルトイン:

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. findコマンドを使用して権限を監査する方法

  2. 同じ名前でエイリアスされた元のコマンドを実行するにはどうすればよいですか?

  3. 同じ引数で別のコマンドを実行するにはどうすればよいですか?

  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxatコマンドでタスクをスケジュールする

  3. コマンドラインでsortを使用してソートする

  1. sedを使用してコマンドラインでテキストを操作する

  2. C で実行可能ファイルの場所を見つけるにはどうすればよいですか?

  3. Bash の「test」コマンドでの「&&」と「&」の比較