3

Rをよく使っています。R では、次のように記述して関数のマニュアル ページを呼び出すことができます。

?print

私はそれに慣れすぎて、bash シェル ウィンドウでも断続的に入力しました。今、私はエイリアスを設定しました

?='man'

それはほとんどそれをカットします: 私は、例えば、することができます? ls. ただし、 で動作することをお勧めし?lsます。残念ながら、これは機能しません。後にスペースを入れずに疑問符を入力すると、bash が man ページを呼び出すようにする方法はありますか?

4

1 に答える 1

11

bash未定義のコマンドを処理するためのフックを提供します。名前が で始まるコマンドはほとんどないため?、このフックを使用して、そのようなコマンドを実行しようとする試みを処理できます。

command_not_found_handle () {
    if [[ $1 =~ ^\? ]]; then
        cmd=${1#\?}
        man $cmd
    else
        echo "$1: command not found" >&2
        return 127
    fi
}

この関数は.bashrcファイルに入るため、どのシェルでも使用できます。実行しようとすると

$ ?ls

コマンドが見つからない場合、フックはコマンドの検索に失敗した試みをインターセプトし、コマンド名が で始まることを判断し、?を取り除き?、結果を引数として に渡しますman。他の未定義のコマンドは、単に見つからないbashコマンドのデフォルト エラーと同様のエラー メッセージを生成し、ステータス 127 で終了します (bashコマンドが見つからないことを示すために通常同じステータスが使用されます)。

于 2012-10-12T14:04:07.133 に答える