소개
이번 챌린지에서는 쉘 명령어의 실행 결과를 캡처하고 처리하는 간단한 쉘 스크립트를 작성하는 방법을 배웁니다. 이는 작업을 자동화하고 명령줄 도구에서 특정 정보를 추출하는 데 필수적인 기술입니다. 명령어 출력을 변수에 담고, 데이터를 가공하며, 처리된 정보를 스크립트 내에서 활용하는 방법을 익히게 됩니다. 이 과정은 시스템 관리자에게 꼭 필요한 실무 스크립팅 능력을 키우는 데 도움이 될 것입니다.
명령어 출력을 처리하는 쉘 스크립트 작성
이 단계에서는 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명령어는 상세한 정보를 제공합니다. 각 줄에서 특정 열 (필드) 을 추출하려면awk나cut같은 도구를 사용해야 할 수도 있습니다.ls -l출력의 첫 번째 줄은 보통 "total"로 시작하며, 개별 파일을 처리할 때는 이 줄을 건너뛰어야 합니다.- 스크립트에 실행 권한 (
chmod +x) 이 있는지 확인하세요.
요약
이번 챌린지에서는 명령어의 출력을 처리하는 쉘 스크립트를 작성하는 방법을 배웠습니다. 구체적으로 ls -l의 출력을 캡처하고, 파일 크기와 이름을 추출하여 정해진 형식으로 표시해 보았습니다. 이 실습을 통해 명령어 치환, while read 루프, awk를 이용한 텍스트 처리와 같은 핵심적인 쉘 스크립팅 개념을 익혔습니다. 이러한 기술은 RHCSA 시험뿐만 아니라 일상적인 시스템 관리 업무에서 작업을 자동화하고, 로그 파일을 분석하며, 다양한 명령줄 도구에서 특정 데이터를 추출하는 데 매우 중요합니다.



