私は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、ファイルをバイナリとして扱うようにします。
-agrepバイナリファイルをテキストのように処理します。
私はこの質問を今日見ました。なぜなら、私のgrepをしたいときに同じ問題があったからです.bash_history。(ちょっとした注意:私は履歴を改名して、新しい履歴を作成しました。この新しい履歴はバイナリとして扱われませんでした。)
@heemaylsの回答では、grepファイル名catが必要であり、役に立たないことが記載されています。これは完全に真実ではありません。greps manページから:
ファイルが指定されていない場合、またはファイル「-」が指定されている場合、grepは標準入力を検索します。
したがって、使用catしてパイプすることができますgrep。ただし、これ.bash_historyはバイナリとして扱われる問題を解決しません。唯一の正しいことは、履歴を直接使用するかパイプを使用するgrep -aかに関係なく(@AK_の回答のように)使用することです。grepcat
cat .bash_history | grep -a git
または
grep -a git .bash_history
file .bash_history(file ~/.bash_history)の出力は?