マニュアルページを開いて検索を実行するコマンドが機能しないのはなぜですか? [コピー]

マニュアルページを開いて検索を実行するコマンドが機能しないのはなぜですか? [コピー]

これマニュアルページを開き、単一のコマンド内で文字列を検索します。質問の半分は私がやりたいことを扱っています。

man chmodを実行してから/ a + xを実行して、a + xが上記のchmodのマニュアルページの最初の部分に移動するのではなく、特定の検索文字列のマニュアルページを開く方法があるかどうか疑問に思います。 vi(m)でこれを行い、vi + string filename.txtを実行する方法。

選択した回答は

man foobar | less +/searched_string

しかし、私が試したとき

man tmux | less +/^format

発売回数は減りましたが、また戻ってきます。

パターンが見つかりません(RETURNを押す)。

なぜパターンが見つかりませんか?


オペレーティングシステム - Ubuntu 15.10

% less --version
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

答え1

環境変数を使用して、LESS実行中の個々のコマンドをオーバーライドします。

また見なさい:

LESS='+/LESS[[:space:]]*Options' man less
LESS='+/\+cmd' man less
LESS='+/optional variable assignments' man bash
LESS=+/SIMPLE\ COMMAND\ EXPANSION man bash

私はしばらく前にメタポストでこれについてもっと広く議論しました。


検索パターンを作成するときに覚えておくべきこと:長い段落の途中で複数の連続した単語を選択すると、サイズの異なる端末でそのマニュアルページを表示したときに同じ行にないことがあります。たとえば、以下はフルスクリーン端末で機能します(私のものモニター)しかし、単語が複数行にわたって分割されるため、80列の端末ではそうではありません。

LESS=+/allowing' a shell script' man bash

以下は、単語間隔がどのように処理されるかによってman端末で信頼できません。

LESS=+/"The latest version" man bash

次の2つのコマンドは同じ場所に到達しますが、移植性が優れています。

LESS=+/^INVOCATION man bash
LESS=+/^BUG man bash

答え2

問題は、レスを開始して検索語をオプションとして渡すと、検索が大文字と小文字を区別することです。
したがって、解決策は、同じ大文字と小文字を使用する検索パターンを使用することです。たとえば、この仕事は

man tmux | less +/^FORMAT

より良い - シェル拡張の防止

man tmux | less '+/^FORMAT'

または代替的に

man tmux | less -p '^FORMAT'

背景

less / manを使用して検索するたびに、検索は大文字と小文字を区別しないため、呼び出し時に検索パラメータを渡すときも同じであると予想されます。
Ubuntuで使用されているmanバージョンには、-i大文字と小文字を区別しない検索オプションが少ないためです。
したがって、このオプションなしでlessを呼び出すと、lessというデフォルトの動作が適用され、lessを検索すると突然大文字と小文字が区別されます。

関連情報