Я на Ubuntu и я набрал, cat .bash_history | grep git
и он вернулся
Двоичный файл (стандартный ввод) соответствует
Мой bash_history
существует, и в нем много строк, начинающихся с git
.
Что вызвало отображение этой ошибки и как я могу ее исправить?
file .bash_history
(file ~/.bash_history
)?.bash_history: data
Ответы:
Предположительно файл
.bash_history
начинается с нетекстовых данных, следовательноgrep
, обрабатывает файл как двоичный файл. Это подтверждаетсяfile .bash_history
выводом:Вы можете прочитать несколько байтов с начала, чтобы иметь соответствующее представление:
Здесь я читаю первый 1 КиБ.
Вы можете направить STDOUT к
hexdump
/od
или подобному.Как примечание,
grep
принимает имя файла (ов) в качестве аргумента, поэтомуcat
здесь бесполезно; просто сделать:источник
head -c1k .bash_history
прочитайте первые 38 строк моего файла .bash_history. Все было читабельноgrep -a git .bash_history
?-a
?-a
позволяетgrep
обрабатывать файл как двоичный файл.-a
сделатьgrep
процесс двоичного файла, как если бы это был текст.Вы можете использовать
grep -a 'pattern'
.от man grep page:
источник
-z
флага для соответствия нескольким строкам.Я видел этот вопрос сегодня, потому что у меня была та же самая проблема, когда я хочу grep мой
.bash_history
. (Небольшое примечание: я переименовал свою историю, чтобы была создана новая. Эта новая история не считалась двоичной.)В ответе @heemayls говорится, что он
grep
принимает имена файлов иcat
будет бесполезен. Это не совсем правда. Изgrep
справочной страницы:Таким образом, вы можете использовать
cat
и передать этоgrep
. Однако это не решает проблему, которая.bash_history
рассматривается как двоичный файл. Единственное, что нужно - это использоватьgrep -a
(как в ответе @AK_)grep
историю вы напрямую или сcat
помощью канала.cat .bash_history | grep -a git
или же
grep -a git .bash_history
источник