実行可能ファイルと組み込み関数が-で始まる文字列引数をスイッチとして解釈するのをブロックしますか? [コピー]

実行可能ファイルと組み込み関数が-で始まる文字列引数をスイッチとして解釈するのをブロックしますか? [コピー]

ファイルからダッシュで始まる文字列を検索するとします"-something"。たとえば、次のようになります。

grep "-something" filename.txt

grepただし、他の実行可能ファイルと組み込みプログラムでは、これが認識されないコマンドラインスイッチであると予想しているため、エラーが発生します。これが起こらないようにする方法はありますか?

答え1

正規表現パターンを表示するために使用されますgrep-e

grep -e "-something" filename.txt

一般的な組み込み機能を使用する場合は、多くの--ユーティリティで「オプションの終わり」を表示します(GNU grepでは表示されません)。

答え2

grep単純な文字リストを使用して、実際にハイフンで始まらないように正規表現を変更することもできます。

 grep '[-]something'

このトリックは、伝統的に間違った一致を避けるために使用されていましたps

ps -f | grep myprog 
# lists both the process(es) running myprog AND the grep process
# making it harder to do things like choose the right process to kill(1)

ps -f | grep '[m]yprog'
# lists only the 'real' processes because [m]yprog matches "myprog" 
# but [m]yprog does NOT match "grep [m]yprog"

しかし、現代では単にpgrep(または)を使用する方がpkill楽です。

関連情報