나는 우분투에 있고 타이핑 cat .bash_history | grep git
하고 돌아왔다.
이진 파일 (표준 입력) 일치
내 bash_history
존재하고로 시작하는 많은 줄이 있습니다 git
.
이 오류가 발생하는 원인은 무엇이고 어떻게 해결할 수 있습니까?
.bash_history: data
나는 우분투에 있고 타이핑 cat .bash_history | grep git
하고 돌아왔다.
이진 파일 (표준 입력) 일치
내 bash_history
존재하고로 시작하는 많은 줄이 있습니다 git
.
이 오류가 발생하는 원인은 무엇이고 어떻게 해결할 수 있습니까?
.bash_history: data
답변:
아마도 파일 .bash_history
은 텍스트가 아닌 데이터로 시작하므로 grep
파일을 이진 파일로 취급합니다. 이것은 file .bash_history
출력 으로 확인됩니다 .
.bash_history: data
처음부터 몇 바이트를 읽어 적합한보기를 가질 수 있습니다.
head -c1K .bash_history
여기서 나는 첫 번째 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
파일을 이진 파일로 취급합니다.
-a
확인 grep
이 텍스트 인 것처럼 이진 파일을 처리합니다.
나는이 질문을 오늘 보았습니다 .bash_history
. (작은 참고 : 새 기록이 만들어 지도록 내 기록의 이름을 변경했습니다.이 새로운 기록은 이진으로 처리되지 않았습니다.)
@heemayls 대답에서는 grep
파일 이름 cat
을 사용하며 쓸모 가 없다고 명시되어 있습니다. 이것은 전적으로 사실이 아닙니다. 에서 grep
의 man 페이지 :
파일이 지정되지 않았거나“-”파일이 제공되면 grep은 표준 입력을 검색합니다.
그래서 당신은 cat
그것을 사용 하고 파이프 할 수 있습니다 grep
. 그러나 이것은 .bash_history
바이너리로 취급되는 문제를 해결하지 못합니다 . 역사를 직접적으로 또는 파이프 를 사용 grep -a
하든 관계없이 유일한 올바른 방법은 @AK_의 답변과 마찬가지로 사용하는 것입니다 .grep
cat
cat .bash_history | grep -a git
또는
grep -a git .bash_history
file .bash_history
(file ~/.bash_history
) 의 결과는 무엇입니까?