셸에서의 파일 시스템 작업

ShellBeginner
지금 연습하기

소개

이 실습에서는 셸에서 다양한 파일 테스트를 수행하는 방법을 배웁니다. 파일 테스트는 파일 시스템 내의 파일이나 디렉터리의 속성을 확인하는 데 필수적인 도구입니다. 이 실습을 마치면 리눅스 환경에서 파일을 다룰 때 가장 기본이 되는 기술인 주요 파일 테스트 명령어와 그 사용법에 익숙해질 것입니다.

이 과정은 단계별 안내를 통해 학습과 실습을 돕는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 실습은 초급 수준으로 99%의 높은 수료율을 기록하고 있으며, 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

테스트 파일 생성하기

파일 작업을 시작하기 전에 작업 환경을 이해하는 것이 중요합니다. 리눅스에서는 항상 특정 디렉터리 안에서 작업하게 되므로, 파일 시스템 내에서 현재 위치가 어디인지 파악하는 것이 기본입니다.

  1. WebIDE 에서 터미널을 엽니다. 이곳에 명령어를 입력하게 됩니다.

  2. test_file.txt라는 이름의 새 파일을 생성합니다.

    touch test_file.txt

    touch 명령어는 빈 파일을 생성할 때 사용합니다. 만약 파일이 이미 존재한다면, 내용물은 건드리지 않고 파일의 타임스탬프 (수정 시간) 만 업데이트합니다.

  3. 파일에 내용을 추가합니다.

    echo "This is a test file for our lab." > test_file.txt

    이 명령어는 echo를 사용하여 텍스트를 출력하고, >를 사용하여 그 출력을 파일로 보냅니다 (리다이렉션). >를 사용할 때는 주의해야 합니다. 기존에 파일 내용이 있었다면 모두 덮어쓰기 때문입니다.

  4. 파일 내용이 잘 들어갔는지 확인합니다.

    cat test_file.txt

    cat은 "concatenate"의 약자이지만, 주로 파일의 내용을 화면에 출력할 때 사용합니다. "This is a test file for our lab."이라는 메시지가 보이면 성공입니다.

실수를 했거나 처음부터 다시 하고 싶다면, 언제든지 rm test_file.txt 명령어로 파일을 삭제하고 1 단계부터 다시 시작할 수 있습니다.

파일 존재 여부 테스트하기

파일을 생성했으니, 이제 파일이 실제로 존재하는지 확인하는 방법을 배워보겠습니다. 이는 셸 스크립트에서 파일 작업을 수행하기 전에 반드시 거쳐야 하는 매우 흔한 작업입니다.

  1. file_exists.sh라는 이름의 새 스크립트 파일을 생성합니다.

    touch file_exists.sh
  2. 파일에 다음 내용을 작성합니다.

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -e "$filename" ]; then
      echo "$filename exists"
    else
      echo "$filename does not exist"
    fi

    코드의 의미를 살펴보겠습니다.

    • #!/bin/bash는 쉬뱅 (shebang) 이라고 불립니다. 시스템에 이 파일이 bash 스크립트임을 알려줍니다.
    • filename 변수에 "test_file.txt"를 할당합니다.
    • if 문은 파일의 존재 여부를 확인합니다. -e 옵션은 파일이 존재할 경우 참 (true) 을 반환하는 테스트 연산자입니다.
    • 파일 존재 여부에 따라 echo를 사용하여 적절한 메시지를 출력합니다.
  3. 파일을 저장하고 편집기를 종료합니다.

  4. 스크립트에 실행 권한을 부여합니다.

    chmod +x file_exists.sh
  5. 스크립트를 실행합니다.

    ./file_exists.sh

    출력 결과로 "test_file.txt exists"가 나타나야 합니다.

  6. 이제 파일이 없는 경우를 테스트해 보겠습니다. 먼저 테스트 파일의 이름을 바꿉니다.

    mv test_file.txt non_existent.txt

    이 명령어는 test_file.txtnon_existent.txt로 이름을 변경합니다.

  7. 원래 파일 이름인 "test_file.txt"를 확인하도록 스크립트를 수정하거나 확인합니다.

    nano file_exists.sh

    filename 변수가 "test_file.txt"로 설정되어 있는지 확인합니다.

  8. 스크립트를 다시 실행합니다.

    ./file_exists.sh

    이번에는 "test_file.txt does not exist"라는 메시지가 출력될 것입니다.

이 스크립트는 파일이 있을 수도 있고 없을 수도 있는 상황에서 스크립트가 안전하게 동작하도록 만드는 필수적인 기법을 보여줍니다.

디렉터리 존재 여부 테스트하기

파일 존재 여부를 확인하는 것과 마찬가지로, 디렉터리가 존재하는지도 확인할 수 있습니다. 이는 스크립트에서 특정 폴더에 파일을 저장하거나 접근하기 전에 유용하게 사용됩니다.

  1. dir_exists.sh라는 이름의 새 스크립트 파일을 생성합니다.

    touch dir_exists.sh
  2. 파일에 다음 내용을 작성합니다.

    #!/bin/bash
    
    dirname="test_directory"
    if [ -d "$dirname" ]; then
      echo "$dirname exists"
    else
      echo "$dirname does not exist"
    fi

    이 스크립트는 이전의 파일 확인 스크립트와 거의 같지만, -e 대신 -d를 사용합니다. -d 테스트는 대상이 '디렉터리'인 경우에만 참을 반환합니다.

  3. 파일을 저장하고 편집기를 종료합니다.

  4. 스크립트에 실행 권한을 부여합니다.

    chmod +x dir_exists.sh
  5. 스크립트를 실행합니다.

    ./dir_exists.sh

    "test_directory does not exist"라는 결과가 출력될 것입니다.

  6. 이제 디렉터리를 실제로 생성한 후 스크립트를 다시 실행해 봅니다.

    mkdir test_directory
    ./dir_exists.sh

    이제 "test_directory exists"라는 메시지가 보일 것입니다.

    mkdir은 새로운 디렉터리를 만드는 명령어입니다.

이 실습을 통해 디렉터리 존재 여부를 확인하는 방법을 익혔습니다. 이는 디렉터리를 생성, 수정 또는 삭제해야 하는 스크립트를 작성할 때 특히 유용합니다.

파일 권한 테스트하기

리눅스에서 모든 파일과 디렉터리는 누가 읽고, 쓰고, 실행할 수 있는지를 결정하는 권한 (permission) 을 가지고 있습니다. 이번 단계에서는 파일에 읽기 권한이 있는지 확인하는 방법을 배워보겠습니다.

  1. 먼저, 테스트 파일의 이름을 원래대로 되돌립니다.

    mv non_existent.txt test_file.txt
  2. file_readable.sh라는 이름의 새 스크립트 파일을 생성합니다.

    touch file_readable.sh
  3. 파일에 다음 내용을 작성합니다.

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -r "$filename" ]; then
      echo "You have read permission for $filename"
    else
      echo "You do not have read permission for $filename"
    fi

    이 스크립트는 현재 사용자가 파일을 읽을 수 있는지 확인하는 -r 테스트 연산자를 사용합니다.

  4. 파일을 저장하고 편집기를 종료합니다.

  5. 스크립트에 실행 권한을 부여합니다.

    chmod +x file_readable.sh
  6. 스크립트를 실행합니다.

    ./file_readable.sh

    "You have read permission for test_file.txt"라는 메시지가 출력될 것입니다.

  7. 이제 읽기 권한을 제거하고 스크립트를 다시 실행해 보겠습니다.

    chmod -r test_file.txt
    ./file_readable.sh

    이번에는 "You do not have read permission for test_file.txt"라는 메시지가 출력됩니다.

    chmod -r은 파일에서 읽기 권한을 제거하는 명령어입니다.

  8. 다음 실습을 위해 읽기 권한을 다시 복구합니다.

    chmod +r test_file.txt

    파일을 다시 읽을 수 있는 상태로 되돌려 놓는 것은 중요합니다.

이 스크립트는 파일 권한을 확인하는 방법을 보여줍니다. 파일 권한을 이해하고 관리하는 것은 시스템 보안과 스크립트의 정상적인 작동을 위해 매우 중요합니다.

요약

이 실습에서는 셸에서 수행하는 핵심적인 파일 시스템 작업들을 배웠습니다. 파일과 디렉터리의 존재 여부를 확인하고, 파일 권한을 테스트하는 스크립트를 직접 작성해 보았습니다. 이러한 기술은 리눅스 환경에서 파일을 다루는 데 있어 가장 기본이 되며, 더 복잡한 셸 스크립트를 작성하기 위한 토대가 됩니다.

학습한 내용은 다음과 같습니다:

  1. 작업 환경의 이해
  2. 파일 생성 및 조작
  3. 셸 스크립트 작성 및 실행
  4. 파일 및 디렉터리 존재 여부 테스트
  5. 파일 권한 확인

이러한 기술은 리눅스 시스템을 다루고 고급 셸 스크립트를 개발할 때 매우 유용하게 쓰일 것입니다. 스크립트에서 오류를 방지하기 위해 파일을 조작하기 전 항상 존재 여부를 확인하는 습관을 들이세요. 또한, 민감한 데이터나 시스템 파일을 다룰 때는 항상 파일 권한에 유의해야 합니다.

더 나아가고 싶다면 더 다양한 파일 테스트 연산자를 찾아보거나, 반복문 (loop) 이나 함수 (function) 와 같은 다른 셸 스크립트 구조를 학습하여 더 강력한 스크립트를 만들어 보세요.