명령어 출력을 처리하는 쉘 스크립트 작성

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이번 챌린지에서는 쉘 명령어의 실행 결과를 캡처하고 처리하는 간단한 쉘 스크립트를 작성하는 방법을 배웁니다. 이는 작업을 자동화하고 명령줄 도구에서 특정 정보를 추출하는 데 필수적인 기술입니다. 명령어 출력을 변수에 담고, 데이터를 가공하며, 처리된 정보를 스크립트 내에서 활용하는 방법을 익히게 됩니다. 이 과정은 시스템 관리자에게 꼭 필요한 실무 스크립팅 능력을 키우는 데 도움이 될 것입니다.

이 콘텐츠는 챌린지입니다. 가이드가 제공되는 실습과 달리, 학습 단계를 따라가는 것이 아니라 스스로 과제를 해결해야 합니다. 챌린지는 다소 어려울 수 있습니다. 해결이 어렵다면 Labby 와 상의하거나 솔루션을 확인하세요. 통계에 따르면 이 챌린지는 초급 수준이며, 통과율은 89%, 학습자 만족도는 98%입니다.

명령어 출력을 처리하는 쉘 스크립트 작성

이 단계에서는 ls -l 명령어의 출력을 캡처하여 특정 정보 (파일 크기 및 파일 이름) 를 추출하고, 이를 정해진 형식에 맞춰 표시하는 쉘 스크립트를 작성합니다. 이 실습을 통해 쉘 스크립팅에서 흔히 발생하는 작업인 명령어 출력 파싱 방법을 익힐 수 있습니다.

과제

  • ls -l 명령어의 출력을 캡처하는 쉘 스크립트를 작성하세요.
  • 각 파일에 대해 ls -l 출력 결과에서 파일 크기와 파일 이름을 추출하세요.
  • 추출된 정보를 지정된 형식으로 출력하세요.

요구 사항

  • 스크립트는 ~/project/scripts 디렉토리에 생성해야 합니다.

  • 스크립트 파일 이름은 process_ls.sh로 지정하세요.

  • 스크립트는 반드시 #!/bin/bash 셰뱅 (shebang) 으로 시작해야 합니다.

  • 스크립트는 ls -l 명령어의 출력을 캡처하여 변수에 저장해야 합니다.

  • ls -l 출력에 나열된 각 파일에 대해 크기와 이름을 추출하세요.

  • 추출된 파일 크기와 이름을 다음 형식으로 표시하세요:

    File size: <file_size> bytes
    File name: <file_name>

    <file_size>는 실제 파일 크기 (바이트 단위) 로, <file_name>은 실제 파일 이름으로 대체되어야 합니다.

예시

파일이 들어 있는 디렉토리가 있다고 가정할 때, 스크립트를 실행하면 다음과 유사한 결과가 출력되어야 합니다:

[labex@host ~]$ cd ~/project/scripts
[labex@host scripts]$ nano process_ls.sh
[labex@host scripts]$ chmod +x process_ls.sh
[labex@host scripts]$ ./process_ls.sh
File size: 1300 bytes
File name: process_ls.sh
[labex@host scripts]$

실제 파일 크기와 이름은 현재 디렉토리의 내용에 따라 달라집니다.

힌트

  • 명령어 치환 (예: variable=$(command)) 을 사용하여 명령어의 출력을 캡처할 수 있습니다.
  • 명령어 출력의 각 줄을 처리하려면 while read 루프를 사용할 수 있습니다.
  • ls -l 명령어는 상세한 정보를 제공합니다. 각 줄에서 특정 열 (필드) 을 추출하려면 awkcut 같은 도구를 사용해야 할 수도 있습니다.
  • ls -l 출력의 첫 번째 줄은 보통 "total"로 시작하며, 개별 파일을 처리할 때는 이 줄을 건너뛰어야 합니다.
  • 스크립트에 실행 권한 (chmod +x) 이 있는지 확인하세요.
✨ 솔루션 확인 및 연습

요약

이번 챌린지에서는 명령어의 출력을 처리하는 쉘 스크립트를 작성하는 방법을 배웠습니다. 구체적으로 ls -l의 출력을 캡처하고, 파일 크기와 이름을 추출하여 정해진 형식으로 표시해 보았습니다. 이 실습을 통해 명령어 치환, while read 루프, awk를 이용한 텍스트 처리와 같은 핵심적인 쉘 스크립팅 개념을 익혔습니다. 이러한 기술은 RHCSA 시험뿐만 아니라 일상적인 시스템 관리 업무에서 작업을 자동화하고, 로그 파일을 분석하며, 다양한 명령줄 도구에서 특정 데이터를 추출하는 데 매우 중요합니다.