나는 우분투에 있고 타이핑 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_의 답변과 마찬가지로 사용하는 것입니다 .grepcat
cat .bash_history | grep -a git
또는
grep -a git .bash_history
file .bash_history(file ~/.bash_history) 의 결과는 무엇입니까?