소개

이 실습에서는 **명령 치환 (Command Substitution)**이라는 유용한 기능을 배웁니다.

이메일을 작성하면서 오늘 날짜를 넣고 싶다고 가정해 보겠습니다. 컴퓨터가 "오늘 날짜"를 자동으로 입력해 주기를 원할 것입니다.

Linux 에서는 $()를 사용합니다. $()는 컴퓨터에 "먼저 이 명령을 실행한 다음, 그 결과를 바로 여기에 넣어라"라고 지시합니다.

명령 치환은 셸에서 가장 유용한 명령 조합 기능 중 하나입니다. 한 명령의 출력을 직접 복사해 다른 명령에 붙여 넣는 대신, 셸이 자동으로 결과를 치환하도록 할 수 있습니다.

이 실습에서는 다음을 수행합니다.

  • date 명령의 출력 형식을 지정하는 방법을 배웁니다.
  • 오늘 날짜가 자동으로 이름에 포함된 폴더를 만듭니다 (예: 2025-12-23).

날짜 형식 지정

먼저 날짜를 원하는 형식으로 표시합니다.

date를 그대로 실행하면 정리되지 않은 문자열이 출력됩니다.

이는 많은 명령이 출력 형식을 지정하는 기능을 지원한다는 점을 보여 줍니다. Linux 도구에서는 다음 작업에 필요한 방식에 따라 사람이 읽기 쉬운 형식이나 컴퓨터가 처리하기 쉬운 형식을 선택할 수 있는 경우가 많습니다.

2025-12-23처럼 깔끔한 폴더 이름을 만들려면 +%F를 사용합니다.

date +%F

출력 예시:

2025-12-23

동적으로 폴더 만들기

이제 명령 치환을 사용해 보겠습니다.

날짜를 사용하여 디렉터리를 만들되, 날짜를 직접 입력하지 않겠습니다.

$()를 사용하여 mkdir 명령 안에 date 명령을 넣습니다. 컴퓨터는 $()를 보면 그 안의 부분을 먼저 실행합니다.

다음 명령을 실행합니다.

mkdir $(date +%F)

실행 과정:

  1. 셸이 $(date +%F)를 확인합니다.
  2. 셸이 date +%F를 먼저 실행하고 결과 (예: 2025-12-23) 를 가져옵니다.
  3. 셸이 $() 부분을 해당 결과로 바꿉니다.
  4. 셸이 mkdir 2025-12-23을 실행합니다.

이 과정을 통해 셸이 최종 명령을 여러 단계로 구성한다는 것을 알 수 있습니다. 명령 치환은 명령을 최종적으로 실행하기 전에 처리되므로, 그 결과를 일반적인 인수처럼 사용할 수 있습니다.

폴더 확인

명령이 제대로 실행되었는지 확인합니다.

ls를 실행합니다.

ls -l

오늘 날짜가 이름에 포함된 새 폴더가 표시되어야 합니다.

이 스크립트를 내일 실행하면 내일 날짜로 새 폴더가 생성됩니다. 자동 백업은 이러한 방식으로 작동합니다!

요약

이 실습에서는 한 명령의 출력을 다른 명령의 입력으로 사용하는 **명령 치환 (Command Substitution)**을 배웠습니다.

  • 사용 방법: $(command)
  • 처리 과정: Linux 는 먼저 내부 명령을 실행한 다음, $()를 그 결과로 바꿉니다.
  • 결과: 명령을 직접 입력하지 않아도 시간, 사용자 또는 기타 조건에 따라 달라지는 동적 명령을 만들 수 있습니다.

다음 명령을 실행하여 명령 치환이 다시 동작하는 모습을 확인해 보세요.

echo "Today is $(date)"