私はUbuntuを使用していますが、入力するcat .bash_history | grep git
と戻りました
バイナリファイル(標準入力)が一致
私bash_history
は存在し、そこには多くの行がありgit
ます。
このエラーが表示される原因と修正方法を教えてください。
.bash_history: data
私はUbuntuを使用していますが、入力するcat .bash_history | grep git
と戻りました
バイナリファイル(標準入力)が一致
私bash_history
は存在し、そこには多くの行がありgit
ます。
このエラーが表示される原因と修正方法を教えてください。
.bash_history: data
回答:
おそらく、ファイル.bash_history
は非テキストデータで始まるためgrep
、ファイルはバイナリとして扱われます。これは、file .bash_history
出力によって確認されます。
.bash_history: data
適合ビューを得るために、最初から数バイトを読むことができます:
head -c1K .bash_history
ここで最初の1 KiBを読んでいます。
STDOUTをhexdump
/ od
または同様にパイプできます。
補足として、grep
引数としてファイル名を使用するため、ここでcat
は役に立ちません。ただやる:
grep git .bash_history
head -c1k .bash_history
。.bash_historyファイルの最初の38行を読んでください。すべてが読解可能
grep -a git .bash_history
?
-a
するの?
-a
はgrep
、ファイルをバイナリとして扱うようにします。
-a
grep
バイナリファイルをテキストのように処理します。
私はこの質問を今日見ました。なぜなら、私のgrepをしたいときに同じ問題があったからです.bash_history
。(ちょっとした注意:私は履歴を改名して、新しい履歴を作成しました。この新しい履歴はバイナリとして扱われませんでした。)
@heemaylsの回答では、grep
ファイル名cat
が必要であり、役に立たないことが記載されています。これは完全に真実ではありません。grep
s manページから:
ファイルが指定されていない場合、またはファイル「-」が指定されている場合、grepは標準入力を検索します。
したがって、使用cat
してパイプすることができますgrep
。ただし、これ.bash_history
はバイナリとして扱われる問題を解決しません。唯一の正しいことは、履歴を直接使用するかパイプを使用するgrep -a
かに関係なく(@AK_の回答のように)使用することです。grep
cat
cat .bash_history | grep -a git
または
grep -a git .bash_history
file .bash_history
(file ~/.bash_history
)の出力は?