`dd`가 인수에 `=`를 사용하는 이유는 무엇입니까?

`dd`가 인수에 `=`를 사용하는 이유는 무엇입니까?

dd이와 같은 보다 일반적인 접근 방식 대신 ( )와 함께 매개변수를 사용하는 이유는 무엇입니까 ?=if=/dev/zero-i /dev/zero

이 스타일의 역사적 이유나 장단점을 아는 사람이 있는지 궁금합니다.

이야기 시간: 제가 소프트웨어 개발을 시작했을 때 제가 무엇을 하고 있는지 전혀 몰랐고 이 dd스타일을 사용했습니다. C# 라이브러리에서 구현하는 것이 더 쉽기 때문입니다.(대부분의 개발자처럼 저도 아직 아무것도 모릅니다. Google, StackOverlow 및 복사-붙여넣기 사용법만 알고 있습니다.)

답변1

POSIX다음은 근거 섹션에서 언급됩니다 dd.

물론 유틸리티 구문 지침을 사용하도록 많은 피연산자를 설계할 수 있으며, 이로 인해 고전적인 하이픈 옵션 문자가 생성됩니다. 이 볼륨 POSIX.1-2017의 이 버전에서는DD많은 수의 애플리케이션이 과거 구현에 의존하기 때문에 JCL과 유사한 이상한 구문이 유지됩니다.

JCL에 대한 참조는 다음의 설명을 반영합니다.전문 용어 파일(항목에서는 "dd"를 동사로 설명하지만 이 참조는 dd유틸리티에 대한 것입니다.) 1:

Unix dd(1)는 IBM System/360 JCL(I/O 장치 사양에 대한 정교한 DD "데이터 세트 정의"가 있음)을 연상시키는 이상하고 확실히 Unixy가 아닌 키워드 옵션 구문으로 설계되었습니다.

故 데니스 리치썼다

dd는 항상 JCL dd 카드의 이름을 따서 명명됩니다.

이 스레드에는 예제가 포함되어 있습니다.JCL 데이터 정의:

//JOB SMILEY
//EXEC CCLG
//SYSPARM DD DSN=USR.LOCAL.INCLUDE.STDIO,DISP=SHR
//SYSIN DD *
MAIN()
{
PRINTF("HELLO, WORLD\N");
}
/*
//

당신은 또한 볼 수 있습니다대시 옵션에 관한 이 TUHS 스레드어디Andrew Warkentin은 JCL 스타일 key=value옵션을 인용했습니다..

장단점 측면에서 dd스타일 옵션은 일반적인 대시 스타일에 비해 한 가지 큰 장점이 있습니다. 즉, 모든 프로그램 매개변수가 명시적입니다. 대시 접두어를 혼합하는 옵션 및 파일 이름 과 같은 "전통적인" 명령 rm; Unix 스타일 시스템에서는 파일 이름이 대시로 시작할 수도 있으므로 이는 주어진 인수가 옵션인지 파일인지를 항상 확인할 수는 없음을 의미합니다. 이 문제는 해결될 수 있지만 dd스타일 옵션을 사용하면 문제를 완전히 피할 수 있습니다. (재미를 더하기 위해 GNU는 스타일이 아닌 옵션 도 dd지원합니다 .)dd--help--version


1 이 전문 용어 파일 항목의 전반적인 정확성논란이 많은, 그러나 JCL 연결은 그렇지 않습니다.

관련 정보