Ubuntuで私は入力して戻っcat .bash_history | grep git
てきました。
バイナリファイル(標準入力)一致
Myがbash_history
存在し、で終わる行がたくさんありますgit
。
このエラーが表示される原因と回避策は何ですか?
答え1
あなたはそれを使用することができますgrep -a 'pattern'
。
~から人々はgrepページ:
-a、--text
テキストなどのバイナリファイルを処理するには:--バイナリ=テキストオプション。
答え2
おそらくファイルは.bash_history
テキストではなくデータで始まるので、grep
ファイルはバイナリファイルとして扱われます。出力は次のことを確認しますfile .bash_history
。
.bash_history: data
一貫したビューを得るために、最初から数バイトを読み取ることができます。
head -c1K .bash_history
まずここで1KiBを読んでみましょう。
hexdump
STDOUTを/または同様にパイプすることができますod
。
ちなみに、grep
ファイル名はパラメータとして使用されるため、cat
ここでは役に立ちません。
grep git .bash_history
答え3
これは、bash レコードの null バイトが原因で発生する可能性があります。 NULL文字を含む行を削除すると、問題が解決する可能性があります。 grepのPerl-regexpモードを使用して確認できます。
grep -Pa '\x00' .bash_history
この投稿UNIX以外のシステムに関する提案があります。
答え4
エラーは、ファイルのデータがバイナリであるために発生します。 stringsコマンドを使用すると、strings
一般的に使用される検索で人が読める部分を表示できます。grep
strings data | grep -i whatever