Estoy en Ubuntu y escribí cat .bash_history | grep git
y regresó
El archivo binario (entrada estándar) coincide
Mi bash_history
sí existe y hay muchas líneas que comienzan con git
.
¿Qué causó la visualización de este error y cómo puedo solucionarlo?
file .bash_history
(file ~/.bash_history
)?.bash_history: data
Respuestas:
Presumiblemente, el archivo
.bash_history
comienza con datos que no son de texto, porgrep
lo tanto, trata el archivo como binario. Esto se confirma por lafile .bash_history
salida:Puede leer algunos bytes desde el principio para tener una vista conforme:
Aquí estoy leyendo primero 1 KiB.
Puede canalizar el STDOUT a
hexdump
/od
o similar.Como nota al margen,
grep
toma los nombres de archivo como argumento, por lo quecat
es inútil aquí; solo haz:fuente
head -c1k .bash_history
lea las primeras 38 líneas de mi archivo .bash_history. Todo era legiblegrep -a git .bash_history
?-a
hacer?-a
hacegrep
que el archivo sea tratado como binario.-a
hacergrep
procesar un archivo binario como si fuera texto.Puedes usar
grep -a 'pattern'
.de la página man grep :
fuente
-z
bandera para que coincida en varias líneas.He visto esta pregunta hoy, porque tuve el mismo problema cuando quería agarrarme
.bash_history
. (Pequeña nota: cambié el nombre de mi historial para que se creara uno nuevo. Este nuevo historial no se trató como un binario).En @heemayls answer se dice que
grep
toma nombres de archivo ycat
sería inútil. Esto no es enteramente verdad. Desdegrep
la página de manual de s:Para que pueda usarlo
cat
y canalizarlogrep
. Sin embargo, esto no resuelve el problema que.bash_history
se trata como un binario. Lo único correcto es usargrep -a
(Me gusta en la respuesta de @AK_) ya seagrep
el historial directamente o concat
una tubería.cat .bash_history | grep -a git
o
grep -a git .bash_history
fuente