![マニュアルページを開いて検索を実行するコマンドが機能しないのはなぜですか? [コピー]](https://linux33.com/image/6281/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E9%96%8B%E3%81%84%E3%81%A6%E6%A4%9C%E7%B4%A2%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
これマニュアルページを開き、単一のコマンド内で文字列を検索します。質問の半分は私がやりたいことを扱っています。
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を検索すると突然大文字と小文字が区別されます。