Saya di Ubuntu dan saya mengetik cat .bash_history | grep git
dan kembali
File biner (input standar) cocok
Saya bash_history
memang ada dan ada banyak baris di dalamnya yang dimulai dengan git
.
Apa yang menyebabkan tampilan kesalahan ini dan bagaimana cara memperbaikinya?
file .bash_history
(file ~/.bash_history
)?.bash_history: data
Jawaban:
Agaknya file
.bash_history
dimulai dengan data non-teks, karenanyagrep
memperlakukan file sebagai biner. Ini dikonfirmasi olehfile .bash_history
output:Anda dapat membaca beberapa byte dari awal untuk memiliki tampilan yang sesuai:
Di sini saya membaca 1 KiB pertama.
Anda dapat mengirim pipa STDOUT ke
hexdump
/od
atau serupa.Sebagai catatan tambahan,
grep
gunakan nama file sebagai argumen, jadicat
tidak berguna di sini; kerjakan saja:sumber
head -c1k .bash_history
baca 38 baris pertama file .bash_history saya. Semuanya dapat dibacagrep -a git .bash_history
?-a
harus dilakukan-a
menjadikangrep
file ini sebagai biner.-a
membuatgrep
proses file biner seolah-olah itu teks.Anda bisa menggunakannya
grep -a 'pattern'
.dari halaman manual grep :
sumber
-z
bendera untuk mencocokkan beberapa baris.Saya telah melihat pertanyaan ini hari ini, karena saya mempunyai masalah yang sama ketika saya ingin mengerti
.bash_history
. (Catatan Kecil: Saya mengubah nama riwayat saya, sehingga yang baru dibuat. Sejarah baru ini tidak diperlakukan sebagai biner.)Dalam jawaban @heemayls dinyatakan, itu
grep
mengambil nama file dancat
tidak berguna. Ini tidak sepenuhnya benar. Darigrep
halaman manual s:Jadi Anda bisa menggunakan
cat
dan mengirimnya ke pipagrep
. Namun ini bukan memecahkan masalah yang.bash_history
diperlakukan sebagai biner. Satu-satunya hal yang benar adalah menggunakangrep -a
(Seperti dalam jawaban dari @AK_) apakah Andagrep
sejarah langsung atau dengancat
dan pipa.cat .bash_history | grep -a git
atau
grep -a git .bash_history
sumber