Je suis sur Ubuntu et j'ai tapé cat .bash_history | grep git
et il est retourné
Correspondance de fichier binaire (entrée standard)
Mon bash_history
existe et il y a beaucoup de lignes qui commencent par git
.
Qu'est-ce qui a provoqué l'affichage de cette erreur et comment puis-je la réparer?
file .bash_history
(file ~/.bash_history
)?.bash_history: data
Réponses:
Vraisemblablement, le fichier
.bash_history
commence par des données non textuelles, ilgrep
est donc traité comme un fichier binaire. Ceci est confirmé par lafile .bash_history
sortie:Vous pouvez lire quelques octets depuis le début pour avoir une vue conforme:
Ici, je lis en premier 1 KiB.
Vous pouvez diriger le STDOUT vers
hexdump
/od
ou similaire.En tant que note latérale,
grep
prend le (s) nom (s) de fichier (s) en tant qu’argumentcat
; il suffit de faire:la source
head -c1k .bash_history
lisez les 38 premières lignes de mon fichier .bash_history. Tout était lisiblegrep -a git .bash_history
?-a
-il?-a
fait en sorte quegrep
le fichier soit binaire.-a
makegrep
traite un fichier binaire comme s'il s'agissait de texte.Vous pouvez utiliser
grep -a 'pattern'
.de man grep page:
la source
-z
drapeau sur plusieurs lignes.J'ai vu cette question aujourd'hui, parce que j'ai eu le même problème quand je veux m'engager
.bash_history
. (Petite remarque: j'ai renommé mon historique, de sorte qu'un nouveau a été créé. Ce nouvel historique n'a pas été traité comme un binaire.)Dans la réponse @heemayls, il est indiqué que les
grep
noms de fichierscat
sont inutiles. Ce n'est pas tout à fait vrai. De lagrep
page de manuel de s:Donc, vous pouvez utiliser
cat
et le diriger versgrep
. Cependant, cela ne résout pas le problème.bash_history
traité comme un binaire. La seule bonne chose à faire est d'utilisergrep -a
(comme dans la réponse de @AK_) si vous utilisezgrep
l'historique directement ou aveccat
un tuyau.cat .bash_history | grep -a git
ou
grep -a git .bash_history
la source