웹사이트 검색

초보자를 위한 Linux dd 명령 설명(예제 8개)


이 페이지에서

  1. Linux dd 명령
  2. Q1. dd 명령을 사용하여 입력 텍스트의 대소문자를 어떻게 변경합니까?\n
  3. Q2. 대신 파일을 읽고 쓰는 방법은 무엇입니까?
  4. Q3. 입력을 읽는 동안 텍스트를 건너뛰는 방법은 무엇입니까?
  5. Q4. 출력에서 각 입력 바이트 쌍을 바꾸는 방법은 무엇입니까?
  6. Q5. 출력 파일이 이미 존재하지 않는 경우에만 dd를 작동시키는 방법은 무엇입니까?\n
  7. Q6. 출력 파일이 추가 모드에서 업데이트되었는지 확인하는 방법은 무엇입니까?\n
  8. Q7. dd가 출력 파일을 만들지 않도록 하는 방법은 무엇입니까?\n
  9. Q8. stderr에 인쇄되는 정보의 수준을 제어하는 방법은 무엇입니까?\n
  10. 결론

때때로 Linux의 명령줄에서 작업하는 동안 데이터/텍스트가 대상에 기록되기 전에 형식이 지정되는 방식으로 복사 작업을 수행해야 할 수 있습니다. 간단한 예는 파일에서 텍스트를 복사하고 대상 파일에 대소문자가 변경된 버전(하위에서 상위로 또는 상위에서 하위로)을 쓰는 것입니다.

이 작업을 수행할 수 있는 방법을 찾고 있었다면 이 목적을 위해 만들어진 dd라는 명령줄 유틸리티가 있다는 사실에 기뻐할 것입니다. 이 자습서에서는 이해하기 쉬운 몇 가지 예를 사용하여 도구가 어떻게 작동하는지 설명합니다. 그러나 그 전에 여기에 언급된 모든 예제는 Ubuntu 18.04LTS에서 테스트되었음을 언급할 가치가 있습니다.

리눅스 dd 명령

즉, dd 명령을 사용하면 파일을 복사하고 변환할 수 있습니다. 이 도구는 원하는 서식 종류를 지정하는 데 사용할 수 있는 몇 가지 피연산자를 제공합니다. 매뉴얼 페이지에 설명된 명령의 일반 구문은 다음과 같습니다.

dd [OPERAND]...
dd OPTION

다음 Q&A 유형의 예는 dd 명령이 작동하는 방식에 대한 좋은 아이디어를 제공합니다.

Q1. dd 명령을 사용하여 입력 텍스트의 대소문자를 어떻게 변경합니까?

소문자로 작성된 텍스트 줄이 있고 요구 사항이 신속하게 대문자로 변환되어야 한다고 가정합니다. conv 명령줄 옵션(값으로 ucase 포함)을 사용하여 이를 수행할 수 있습니다.

예를 들면 다음과 같습니다.

위의 스크린샷은 명령과 입력 텍스트를 보여줍니다. Ctrl+d 키 조합을 사용하여 입력 입력이 완료되었음을 dd에 알리고 입력이 완료되자마자 명령이 다음 출력을 생성했습니다.

따라서 입력 텍스트가 소문자에서 대문자로 변환된 것을 볼 수 있습니다. 마지막 세 줄은 작업 관련 통계입니다.

참고: 마찬가지로 lcase 값을 사용하여 대문자 텍스트를 소문자로 변환할 수 있습니다.

Q2. 대신 파일을 읽고 쓰는 방법은 무엇입니까?

위의 첫 번째 예에서는 stdin(표준 입력)을 통해 텍스트를 입력했습니다. 그러나 항상 입력 및 출력 파일을 사용할 수 있습니다. 입력 및 출력 파일의 이름을 지정하려면 if 및 of 명령줄 옵션을 사용하십시오.

예를 들어 file1에 있는 텍스트의 대소문자를 변환한 다음 file2에 작성하려는 경우 다음과 같은 방법으로 이 작업을 수행할 수 있습니다.

dd if=file1 of=file2 conv=ucase

Q3. 입력을 읽는 동안 텍스트를 건너뛰는 방법은 무엇입니까?

원하는 경우 입력 텍스트를 읽는 동안 일부 초기 바이트를 건너뛰도록 dd에 요청할 수 있습니다. 이는 숫자 값이 필요한 건너뛰기 옵션을 사용하여 수행할 수 있습니다. 예를 들어 이 값이 N이면 dd는 입력 시작 시 N개의 ibs 크기 블록을 건너뜁니다. 이것은 도구가 한 번에 읽는 바이트 수를 지정하는 값을 가진 또 다른 명령줄 dd 옵션인 ibs로 이동합니다(기본값은 512).

따라서 입력 파일의 처음 4바이트를 건너뛰려면 먼저 ibs를 4로 설정한 다음 skip 값으로 1을 사용해야 합니다. 이렇게 하면 도구가 입력 파일을 읽는 동안 4바이트 블록 1개를 건너뛸 수 있습니다.

따라서 file1을 읽는 동안 hey, 텍스트를 건너뛰었음을 알 수 있습니다. 이것이 file2에 나타나지 않는 이유입니다.

Q4. 출력에서 각 입력 바이트 쌍을 바꾸는 방법은 무엇입니까?

그러한 요구 사항이 있는 경우 dd를 사용하여 모든 입력 바이트 쌍을 교환할 수도 있습니다. 이는 conv 명령줄 옵션의 값으로 swab을 사용하여 달성할 수 있습니다. 다음 스크린샷을 보면 상황이 더 명확해집니다.

Q5. 출력 파일이 이미 존재하지 않는 경우에만 dd를 작동시키는 방법은 무엇입니까?

출력 파일이 이미 존재할 때 dd 명령이 아무 작업도 수행하지 않아야 한다는 요구 사항이 있는 경우 conv 옵션에 대한 excl 값을 사용하여 이 조건을 적용할 수 있습니다.

다음 스크린샷은 실제 사용 사례를 보여줍니다.

Q6. 출력 파일이 추가 모드에서 업데이트되었는지 확인하는 방법은 무엇입니까?

기본적으로 dd는 출력 파일을 덮어씁니다(있는 경우). 그러나 대신 텍스트를 추가하려면 oflag FLAG에 추가 값을 사용하고 conv 옵션에는 notrunc를 사용하십시오.

예를 들어:

dd if=file1 of=file3 oflag=append conv=notrunc

다음은 위의 명령입니다.

Q7. dd가 출력 파일을 만들지 않도록 하는 방법은 무엇입니까?

원하는 경우 명령에 제공된 파일이 이미 존재하지 않는 경우 dd 명령이 출력 파일을 생성하지 않도록 강제할 수도 있습니다. 이는 conv 명령줄 옵션의 nocreat 값을 사용하여 수행할 수 있습니다.

예를 들어:

Q8. stderr에 인쇄되는 정보의 수준을 제어하는 방법은 무엇입니까?

원하는 경우 명령이 stderr에 인쇄하는 정보의 양을 제한할 수도 있습니다. 이 작업은 status 명령줄 옵션을 사용하여 수행할 수 있습니다. 예를 들어 오류 메시지를 제외한 모든 항목을 표시하지 않으려면 이 명령줄 옵션에 값 없음을 전달할 수 있습니다.

dd if=file1 of=file3 status=none

사용 가능한 다른 값은 noxfer 및 progress입니다. 상태 옵션에 대한 매뉴얼 페이지의 내용은 다음과 같습니다.

status=LEVEL
              The  LEVEL  of information to print to stderr; 'none' suppresses
              everything but error messages,  'noxfer'  suppresses  the  final
              transfer  statistics, 'progress' shows periodic transfer statis?
              tics

결론

이 자습서에서 설명하는 예제는 모든 dd 명령이 수행할 수 있는 작업을 탐색할 때 표면을 긁는 것입니다. 아이디어를 제공하기 위해 이 도구를 사용하여 가상 파일 시스템과 하드 드라이브 또는 시스템 파티션의 백업을 만들 수 있습니다. dd에 대한 자세한 내용은 해당 매뉴얼 페이지를 참조하십시오.