dd
댓글 옵션 맨페이지swab
swab swap every pair of input bytes
왜?
나한테 뭘 하고 싶은지 묻지 마세요. 특별한 일을 하는 것도 아니고 그냥 머리만 긁적일 뿐입니다. 스와핑을 제공하려는 경우 모든 단어 크기에 대해 스와핑을 제공하면 어떨까요? 꼭 필요한 것은 아니지만 인접한 2바이트만 교환하는 경우 특정 하드웨어 시나리오와 연결되어야 합니다. 왜 이것이 매뉴얼에 문서화되어 있지 않습니까 info
?
답변1
그게 원래 목적이었으니까. 말로더글라스 맥길로이유닉스를 만든 팀의 리더였던UNIX 연구 자료: The Programmer's Handbook(1971-1986)에서 주석이 달린 발췌문:
DD(v5 74페이지)
dd는 원래 DEC 컴퓨터의 ASCII, 리틀 엔디안 바이트 스트림 세계와 IBM의 EBCDIC, 빅 엔디안, 블록 세계 사이에서 파일을 변환하기 위한 것이지만 적절한 개자식 구문이 제공되었습니다(Thompson, v5). 파이크는 문화적 기이함을 발견했습니다. 가족들이 아이들의 이상한 말을 이어가듯이, 사용자들은 인용하는 데 익숙합니다.DDJCL 스타일 공식을 사용
dd if=input of=output
하거나 을 사용하거나cat input | dd of=output
기본 담론을 사용하는 경우는 거의 없습니다dd <input >output
.
"v5 페이지 74"는 다음을 의미합니다.유닉스 v5 매뉴얼(이 PDF의 51페이지). 이것해당 소스 코드또한 온라인.
EBCDICIBM 시스템에서 사용되는 문자 인코딩입니다. 그것은 똑같이 중요하다ASCII 코드그 다음에. ASCII와 EBCDIC 모두 문자를 8비트 바이트로 인코딩합니다. IBM과 DEC 시스템 모두 16비트 단어를 사용했습니다. (실제로 다른 단어 크기, 특히 18과 36이 있지만 dd
16비트 단어를 염두에 두고 작성되었습니다.) 이 목적을 위한 최신 시뮬레이션은 다음을 사용합니다.상.
원래 목적은 dd
빠르게 중요하지 않게 되었습니다. 특히 바이트 단위로 액세스할 수 없는 테이프 드라이브 사이에서 이진 데이터를 블록 단위로 복사하는 방법이 되었습니다. 따라서 dd
오늘날에는 기본적으로 관련이 없습니다. 도구가 텍스트 파일과 같은 작업만 하는 dd
오래된 unices에서는 유용했습니다 cat
(데이터를 한 줄씩 처리했기 때문에 한 줄은 적은 양의 메모리에 들어가야 했지만 그렇지 않음) 널 바이트), 그러나 최신 유니스에서는 이러한 도구가 일반적으로 바이너리 파일을 지원합니다.head
tail
어쨌든 dd
다른 바이트 순서 변경 시나리오로 확장하는 것이 유용하다고 생각한 사람은 아무도 없습니다. 그 이유 중 하나는 컴퓨터가 점점 일반화됨에 따라 컴퓨터와 독립적인 방식으로 데이터 형식을 정의하는 것이 더욱 일반화되었기 때문입니다. 오늘날에도 엔디안 변환이 필요하지만 전체 파일에서는 거의 사용되지 않습니다. 일반적으로 데이터의 일부만 워드 지향이고 다른 부분은 바이트 지향이므로 그대로 두어야 합니다.
아마도 인코딩 시퀀스라고 말하는 것이 더 정확할 것입니다. 그러나 여기서는 관련이 없습니다.