$
私はちょうどlessで始まる検索パターンを渡してみました。
less +/'\$l' myfile.pl
わかりました。
There is no -l option ("less --help" for help)
ドキュメントを読んだ後、代替-p
オプションを試しました。
less -p'\$l' myfile.pl
同じエラーが発生しました。
それから発見しました。 (後のスペースに注意してください-p
。)
less -p '\$l' myfile.pl
動作します。つまり、エラーメッセージなしでファイルを開き、最初の項目に移動します$l
。
長いオプションバリアントが--pattern=$l
機能しない
less --pattern='\$l' myfile.pl
There is no -l option ("less --help" for help)
=
そして仕事よりスペース
less --pattern '\$l' myfile.pl
これは
less -V
less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman
openSUSE Leap 42.3から
今質問はこれがバグですか?
答え1
からman less
:
--use-backslash This option changes the interpretations of options which follow this one. After the --use-backslash option, any backslash in an option string is removed and the following character is taken literally. This allows a dollar sign to be included in option strings.
その後、バックスラッシュとドルを避ける必要があります。
less --use-backslash +'/\\\$l' myfile.pl
答え2
これは特徴。からman less
:
一部のオプション(-kや-Dなど)では、オプション文字の後に文字列が必要です。オプションの文字列は、ドル記号($)が見つかると終了したと見なされます。たとえば、MS-DOSでは、次のように2つの-Dオプションを設定できます。
LESS="Dn9.1$Ds4.1"
だからあなたはこれを行うことができます:
LESS='ppattern$i' PAGER=less man less
まず、検索では大文字と小文字を区別しませんless
。pattern
--use-backslash
\
脱出するために使用することができます$
。
これで変数には意味がありますが、$LESS
コマンドラインのオプションの引数にはほとんど意味がありません。この場合、報告できるバグと見なすことができます。
また、処理は$
vsとvsの違いを説明するオプションを含むパラメータ$
と同じパラメータで発生した場合にのみ発生するため、混乱が発生してエラーと見なされる可能性が高い理由があります。-p '\$l'
-p'\$l'
--pattern '\$l'
--pattern='\$l'
次の問題も発生する可能性があります。
less -p' foo'
選択肢less
を見つける場所(もう一度選択肢を使用)詳細については、ソースコードの関数を確認してください。"foo"
" foo"
-p ' foo'
scan_option()
options.c