답변:
예, 다른 프로세스로 파이프하거나 파일로 저장하면 안전합니다. 이진 stdout이 터미널 디스플레이에 일시적으로 엉망이 될 수있는 이스케이프 시퀀스 (임의로)를 포함 할 수 있기 때문에 이진 stdout을 터미널에 인쇄하게하면 잠재적 인 "이상성"이 발생합니다.
reset
하고 Enter 키를 눌러 수정할 수 있습니다.
reset<enter>
하여 터미널에서 보여지는 것과 같이 문자를 입력 할 때 실제로 해당 시퀀스 를 입력 하지 않는 유일한 경우 ...
stty sane; tput rs1
일련의 명령은 reset
작동하지 않는 코너 케이스가있을 때 트릭을 수행합니다 . Bakuriu가 언급 한 것 외에도 이러한 경우에는 터미널 라인 / 열 너비가 포함될 수 있거나 직렬 통신 (보레이트 / 패리티)과 관련된 설정을 추측하고 있습니다.
head
또는 같은 명령을 사용할 때의 주요 문제점은 명령 tail
이 행 지향적이고 이진 파일이 아니라는 것입니다. 줄 바꿈이있는 경우 줄 끝을 나타내는 데 사용되지 않는 경우가 많으며 그럴 경우 프로그램 메시지 또는 데이터 필드와 같은 문자열의 일부일 수 있습니다.
데이터가 어떤 식 으로든 구조화되어 있다면 분리 점을 선택할 때이를 고려하여 중간에 구조가 깨지지 않도록해야합니다.
파일의 구조를 알고 있다면 다음과 같은 명령을 사용할 수 있습니다
dd -if input-file -of output-file ...
특정 (증분 된) 오프셋에서 시작하여 특정 크기의 너무 많은 데이터 블록 만 파일로 복사하는 옵션이 있습니다.
그것은처럼 보이는 split
당신을 위해이 프로세스를 자동화합니다 @egmont에서 언급 한 바와 같이 명령하지만, 추가 옵션을 지정해야합니다, 그래서 라인 지향 기본적으로 나타납니다 같은 --bytes count
방법 큰 파일의 각 조각을해야 그것을 말해 있다.
참고로, 파일의 내용을 모르지만 적어도 의미있는 텍스트 데이터가 포함되어 있다고 의심되는 경우 strings
명령은 처리중인 내용을 먼저 살펴 보는 좋은 방법입니다.
strings -n 6 file | less
최소 6 자 이상의 인쇄 가능한 문자를 모두 찾아서 호출기에 표시하여 터미널에서 날지 않도록합니다. 기본값 인 4 자보다 조금 더 큰 숫자를 사용하면 인쇄 할 수 있지만 파일에서 그렇게 사용되지 않는 작은 데이터 조각을 제거 할 수 있습니다.
나중에와 같은 이진 편집기를 사용하여 파일을 더 자세히 탐색해야하는 경우 hexedit
흥미로운 부분을 찾을 수있는 랜드 마크가 있습니다.
strings
옵션이 있습니다- t x
인쇄 된 각 문자열 앞에 파일의 오프셋이 16 진수 (8 진수 / 10의 경우 10 진수)로 표시되어 나중에 찾을 위치를 알 수 있습니다. 매우 짧은 파일이라도 문자별로보아야 할 때 처리해야 할 것이 많습니다.
split
명령을 살펴보십시오 .