コマンドと無限再帰をオフにするフラグ

コマンドと無限再帰をオフにするフラグ

複数の端末で使用しているときに自分の記録を上書きするので、その機能をオフにしたいと思いますfc -W。残念ながら、私はタイピングをたくさんする習慣があります。

エイリアスを作成することは不可能だと思いますfc -W

だから私は次のような関数を作ってみました。

# Make sure to never invoke fc -W
fc(){
    for x; do
        if [[ "${x}" == -W ]]; then
            echo "I'm sorry Dave. I'm afraid I can't do that."
            return
        fi
    done
    fc "${@}"
}

しかし、今度は呼び出しfc "${@}"が独自に呼び出され、無限の再帰が発生します。通常、私は/usr/bin/fc代わりにegを使ってこれを避けます。fcしかし:

$ type fc
> fc is a shell builtin

この場合、無限再帰を避ける方法は何ですか?または、コマンドのフラグを無効にするより良い方法はありますか?

ベストアンサー1

使用builtin:

builtin fc "$@"

これにより、組み込みfcコマンドが呼び出されます。


スタイル:診断メッセージは標準エラーストリームに送信され、関数は失敗時にゼロ以外の状態を返す必要があります。

echo 'Sorry, can not do that' >&2
return 1

おすすめ記事