파일 및 디렉토리 작업

LinuxBeginner
지금 연습하기

소개

리눅스 파일 및 디렉토리 작업 실습에 오신 것을 환영합니다! 리눅스가 처음이라도 걱정하지 마세요. 각 단계에서 무엇을 해야 하는지뿐만 아니라, 왜 그렇게 하는지까지 차근차근 설명해 드립니다. 이 실습은 리눅스 작업의 기초가 되는 파일 시스템을 직접 경험해 볼 수 있도록 설계되었습니다.

본격적으로 시작하기 전에 몇 가지 기본 개념을 살펴보겠습니다:

  • 리눅스 파일 시스템: 컴퓨터의 모든 파일을 정리하는 트리 구조라고 생각하면 됩니다. 드라이브 문자(C:, D: 등)를 사용하는 윈도우와 달리, 리눅스는 모든 것이 뻗어 나가는 단일 루트 디렉토리(/)를 가지고 있습니다.
  • 디렉토리: 다른 운영 체제에서 '폴더'라고 부르는 것과 같은 리눅스 용어입니다. 파일과 다른 디렉토리를 담는 컨테이너입니다.
  • 파일: 리눅스에서는 거의 모든 것이 파일입니다! 일반 문서, 디렉토리, 심지어 하드웨어 장치까지도 파일로 취급됩니다. 이러한 통합된 접근 방식은 많은 작업을 단순화합니다.
  • 경로: 파일이나 디렉토리의 주소와 같습니다. 루트 디렉토리에서 시작하는 절대 경로와 현재 위치에서 시작하는 상대 경로에 대해 배울 것입니다.
  • 터미널: 리눅스와 상호 작용하기 위한 명령 센터입니다. 처음에는 낯설게 보일 수 있지만, 곧 시스템을 관리하는 강력한 도구임을 알게 될 것입니다.
  • 파일 검색: 리눅스는 시스템 전체에서 파일을 찾을 수 있는 강력한 도구를 제공합니다. findwhich와 같은 명령어를 사용하여 파일과 실행 파일을 빠르게 찾는 방법을 알아봅니다.

준비되셨나요? 리눅스 파일 시스템으로의 여정을 시작해 봅시다!

리눅스 디렉토리 구조 탐색

이번 단계에서는 리눅스 파일 시스템을 둘러보겠습니다. 이를 통해 파일들이 어디에 저장되는지, 시스템이 어떻게 구성되어 있는지 이해할 수 있습니다.

  1. 터미널을 엽니다. $ 기호로 끝나는 프롬프트가 보일 것입니다. 이곳에 명령어를 입력하게 됩니다. 현재 여러분은 /home/labex/project라는 프로젝트 디렉토리에 있습니다. 이를 확인해 봅시다:

    pwd
    

    pwd는 "print working directory"의 약자입니다. 파일 시스템 내에서 현재 위치를 알려줍니다.

  2. 이제 디렉토리 구조의 최상위 레벨을 확인해 봅시다:

    tree -L 1 /
    

    tree 명령어는 디렉토리 구조를 트리 형태로 보여줍니다. -L 1 옵션은 루트 디렉토리 아래의 첫 번째 레벨까지만 출력하도록 제한하여, 터미널이 복잡해지는 것을 방지합니다. / 인자는 루트 디렉토리부터 시작하라는 의미입니다. 보이는 모든 것을 이해하려고 너무 애쓰지 마세요. 가장 중요한 부분에 집중할 것입니다.

  3. 주요 디렉토리들을 탐색해 봅시다:

    ls /home
    ls /etc
    ls /bin
    
    • /home은 사용자 디렉토리가 저장되는 곳입니다. 일반적으로 각 사용자는 이곳에 자신의 디렉토리를 가집니다.
    • /etc는 시스템 설정 파일들을 포함합니다.
    • /bin은 모든 사용자가 사용할 수 있어야 하는 필수 명령어 바이너리(프로그램)를 담고 있습니다.
  4. 이제 루트 디렉토리로 이동하여 내용을 나열해 봅시다:

    cd /
    ls -l
    

    cd는 "change directory"를 의미합니다. /는 루트 디렉토리로 이동하게 합니다. ls -l은 디렉토리 내용을 상세 형식으로 나열합니다. -l은 명령어의 동작을 수정하는 옵션 또는 플래그라고 합니다.

  5. 다시 홈 디렉토리로 돌아갑시다:

    cd ~
    pwd
    

    ~는 파일 시스템 내 어디에 있든 항상 홈 디렉토리를 나타내는 바로가기입니다.

이 단계를 마치면 리눅스 디렉토리 구조에 대한 기본적인 이해와 탐색 방법을 익히게 됩니다. 모든 것을 외우지 않아도 괜찮습니다. 언제든지 이 명령어들을 사용하여 구조를 다시 확인할 수 있습니다.

경로 이해 및 탐색

파일 시스템에 대한 개요를 파악했으니, 이제 효율적으로 탐색하는 방법을 배워봅시다. 파일 시스템을 이동하는 데 필수적인 절대 경로와 상대 경로 개념을 살펴보겠습니다.

  1. 먼저 실습용 디렉토리 구조를 만들어 봅시다:

    mkdir -p ~/project/practice/subdirectory
    

    mkdir은 "make directory"를 의미합니다. -p 옵션을 사용하면 상위 디렉토리가 존재하지 않을 경우 함께 생성할 수 있습니다. 이 명령어는 project 디렉토리 안에 practice 디렉토리를, 그 안에 subdirectory를 생성합니다.

  2. 상대 경로를 사용하여 새 하위 디렉토리로 이동합니다:

    cd ~/project/practice/subdirectory
    pwd
    

    이 경로는 홈 디렉토리(~)를 기준으로 합니다. 현재 위치에 따라 달라지기 때문에 상대 경로라고 부릅니다.

  3. 이제 디렉토리 구조에서 한 단계 위로 이동해 봅시다:

    cd ..
    pwd
    

    ..은 항상 상위 디렉토리를 가리킵니다. 디렉토리 트리를 위로 이동할 때 유용한 바로가기입니다.

  4. 절대 경로를 사용하여 하위 디렉토리로 돌아가 봅시다:

    cd /home/labex/project/practice/subdirectory
    pwd
    

    이것은 절대 경로입니다. 루트 디렉토리(/)에서 시작하여 현재 위치와 상관없이 목적지까지의 전체 경로를 제공하기 때문입니다.

  5. 이제 몇 가지 탐색 바로가기를 연습해 봅시다:

    cd ~ ## 홈 디렉토리로 이동
    pwd
    cd - ## 이전 디렉토리로 이동
    pwd
    cd ## 홈 디렉토리로 이동하는 또 다른 방법
    pwd
    

    이 바로가기들은 타이핑을 많이 줄여줄 수 있습니다!

이 단계를 마치면 절대 경로와 상대 경로를 사용하여 파일 시스템을 자유롭게 탐색할 수 있게 될 것입니다. 연습이 완벽을 만듭니다. 주저하지 말고 이 명령어들을 직접 사용해 보세요!

파일 및 디렉토리 생성과 관리

파일 시스템 탐색에 익숙해졌으니, 이제 파일과 디렉토리를 생성하고 관리하는 방법을 배워봅시다. 이는 리눅스 작업의 기본 기술입니다.

  1. 프로젝트 디렉토리로 이동합니다:

    cd ~/project
    
  2. 여러 디렉토리를 한 번에 생성해 봅시다:

    mkdir dir1 dir2 dir3
    ls
    

    mkdir은 한 번의 명령으로 여러 디렉토리를 생성할 수 있습니다. ls는 현재 디렉토리의 내용을 나열하여 생성된 결과를 확인할 수 있게 해줍니다.

  3. 이제 빈 파일을 생성해 봅시다:

    touch file1.txt
    ls -l file1.txt
    

    touch는 빈 파일을 생성하거나 기존 파일의 타임스탬프를 업데이트할 때 사용합니다. ls -l 명령어는 파일 크기(0바이트여야 함)를 포함한 상세 정보를 보여줍니다.

  4. 내용이 포함된 파일을 생성해 봅시다:

    echo "Hello, Linux" > file2.txt
    cat file2.txt
    

    echo는 텍스트를 출력하고, >는 그 텍스트를 파일로 리다이렉션하여 파일이 없으면 생성합니다. cat은 파일 내용을 확인하는 데 사용됩니다.

  5. 이제 파일에 내용을 추가해 봅시다:

    echo "This is a new line." >> file2.txt
    cat file2.txt
    

    >>는 파일을 덮어쓰지 않고 내용을 추가합니다. 파일에 두 줄이 생겼음을 확인하세요.

  6. 마지막으로 중첩된 디렉토리 구조를 생성해 봅시다:

    mkdir -p nested/structure/example
    tree nested
    

    tree 명령어는 방금 생성한 디렉토리 구조를 시각적으로 잘 보여줍니다.

이 단계를 마치면 파일과 디렉토리를 생성하고, 파일에 내용을 추가하며, 파일 내용을 확인하는 데 익숙해질 것입니다. 이러한 작업들은 리눅스 파일 관리의 근간을 이룹니다.

파일 복사, 이동 및 이름 변경

파일과 디렉토리를 생성하는 방법을 알았으니, 이제 조작하는 방법을 배워봅시다. 파일과 디렉토리를 복사, 이동, 이름 변경하는 방법을 다룹니다.

  1. 파일 복사부터 시작해 봅시다:

    cp file1.txt dir1/
    ls dir1
    

    cp는 복사 명령어입니다. 여기서는 file1.txtdir1 디렉토리로 복사하고 있습니다.

  2. 이제 한 번의 명령으로 파일을 복사하고 이름을 변경해 봅시다:

    cp file2.txt dir2/file2_copy.txt
    ls dir2
    

    이 명령어는 file2.txtdir2에 복사하면서 새로운 이름을 부여합니다.

  3. 파일을 이동해 봅시다:

    mv file1.txt dir3/
    ls
    ls dir3
    

    mv는 파일을 이동할 때 사용합니다. file1.txt가 현재 디렉토리에는 없고 dir3에 나타나는 것을 확인하세요.

  4. mv를 사용하여 파일 이름을 변경할 수도 있습니다:

    mv dir3/file1.txt dir3/renamed_file.txt
    ls dir3
    

    이 명령어는 dir3 내의 file1.txt 이름을 renamed_file.txt로 변경합니다.

  5. 마지막으로 디렉토리와 그 내용을 복사해 봅시다:

    cp -r nested dir1/
    tree dir1
    

    -r 옵션은 cp에게 디렉토리를 재귀적으로(모든 하위 디렉토리와 파일 포함) 복사하라고 지시합니다.

파일을 이동하거나 복사할 때 절대 경로와 상대 경로를 모두 사용할 수 있다는 점을 기억하세요. 현재 상황에서 더 편리한 방법을 선택하면 됩니다.

파일 내용 확인 및 편집

마지막 단계에서는 파일 내용을 확인하는 더 고급 방법과 간단한 텍스트 편집기를 사용하여 파일을 편집하는 방법을 배웁니다.

  1. 히어 도큐먼트(here-document)를 사용하여 여러 줄이 포함된 새 파일을 생성해 봅시다:

    cat << EOF > multiline.txt
    Line 1: Hello, Linux
    Line 2: This is a multiline file.
    Line 3: Created using a here-document.
    EOF
    

    이것은 "히어 도큐먼트"를 사용하여 여러 줄의 파일을 만드는 방법입니다. 미리 정의된 내용으로 파일을 생성할 때 편리합니다. << 연산자 뒤에는 구분자(여기서는 EOF)가 옵니다. 셸은 구분자만 포함된 줄을 만날 때까지 이어지는 모든 줄을 입력으로 읽습니다. 이 텍스트 블록 전체가 multiline.txt 파일로 리다이렉션됩니다.

  2. 파일 내용을 확인합니다:

    cat multiline.txt
    

    cat은 이전에도 사용했지만, 파일 내용을 빠르게 확인할 때 특히 유용합니다.

  3. 줄 번호와 함께 파일을 확인합니다:

    nl multiline.txt
    

    nl은 출력에 줄 번호를 추가하며, 특정 줄을 참조할 때 도움이 됩니다.

  4. 파일의 처음 두 줄을 확인합니다:

    head -n 2 multiline.txt
    

    head 명령어는 파일의 시작 부분을 표시합니다. -n 2를 사용하면 처음 두 줄을 보여줍니다. -n2처럼 공백 없이 사용해도 동일하게 작동합니다.

  5. 파일의 마지막 줄을 확인합니다:

    tail -n 1 multiline.txt
    

    마찬가지로 tail은 파일의 끝부분을 확인하는 데 사용됩니다. -n 1-n1은 동일합니다.

  6. 이제 nano를 사용하여 파일을 편집해 봅시다:

    nano multiline.txt
    

    nano는 간단한 텍스트 편집기입니다. 화살표 키로 이동하고, 타이핑하여 편집하며, 화면 하단의 명령어를 따를 수 있습니다(^는 Ctrl 키를 의미합니다).

    파일에 네 번째 줄을 추가한 다음, 저장하고 종료하세요(Ctrl+X, 그 다음 Y, 마지막으로 Enter).

  7. 업데이트된 파일을 확인합니다:

    cat multiline.txt
    

    새로 추가된 줄이 파일에 포함된 것을 볼 수 있습니다.

이 명령어들은 명령줄에서 직접 파일 내용을 검사하고 수정할 수 있는 강력한 도구입니다.

리눅스에서 파일 찾기

파일을 빠르게 찾는 것은 리눅스에서 필수적인 기술입니다. 파일을 찾는 데 사용되는 일반적인 명령어들을 배워봅시다.

  1. 먼저 find 명령어를 사용하여 현재 디렉토리와 하위 디렉토리에서 모든 .txt 파일을 찾아봅시다:

    find . -name "*.txt"
    

    이 명령어는 현재 디렉토리와 하위 디렉토리의 모든 .txt 파일을 나열합니다. 아무것도 출력되지 않는다면 .txt 파일이 없는 것입니다. 하나 만들어 봅시다:

    echo "This is a test file" > test.txt
    find . -name "*.txt"
    

    이제 출력에서 ./test.txt를 볼 수 있습니다.

  2. 이제 시스템 전체에서 특정 파일을 검색해 봅시다:

    sudo find / -name "passwd"
    

    이 명령어는 파일 시스템 전체에서 "passwd"라는 이름의 파일을 검색합니다. 여기서 sudo를 사용하는 이유는 전체 파일 시스템(루트 디렉토리 /부터 시작)을 검색하려면 높은 권한이 필요하기 때문입니다. 많은 시스템 디렉토리는 일반 사용자가 읽을 수 없으므로, sudo를 통해 보호된 영역을 검색할 수 있습니다.

    다음과 비슷한 출력이 보일 것입니다:

    /etc/pam.d/passwd
    /etc/passwd
    /usr/bin/passwd
    /usr/share/doc/passwd
    /usr/share/lintian/overrides/passwd
    
  3. find 명령어는 매우 강력합니다. 파일 크기를 기준으로 검색할 수도 있습니다. 예를 들어, 홈 디렉토리에서 1MB보다 큰 파일을 찾아봅시다:

    find ~ -size +1M
    

    홈 디렉토리에서 1MB보다 큰 파일이 있다면 나열될 것입니다.

  4. find를 사용하여 특정 시간 내에 수정된 파일을 검색할 수도 있습니다. 지난 24시간 동안 수정된 홈 디렉토리의 파일을 찾아봅시다:

    find ~ -mtime -1
    
  5. 마지막으로 which 명령어를 사용하여 실행 파일의 위치를 찾아봅시다:

    which python
    

    다음과 같은 출력이 보일 것입니다:

    /usr/bin/python
    

    이 출력이 보이지 않는다면 다음을 시도해 보세요:

    which python3
    

이 명령어들을 사용하면 리눅스 시스템에서 파일을 쉽게 찾을 수 있습니다. find 명령어는 다양한 옵션을 조합할 수 있어 매우 강력하며, 여러 기준에 따라 파일을 찾는 데 유용한 다재다능한 도구입니다.

요약

축하합니다! 리눅스 파일 및 디렉토리 작업 실습을 완료했습니다. 배운 내용을 정리해 봅시다:

  1. 리눅스 디렉토리 구조를 탐색하며 /home, /etc, /bin과 같은 주요 디렉토리의 목적을 이해했습니다.
  2. 절대 경로와 상대 경로에 대해 배웠고, cd 명령어와 ~, .. 같은 바로가기를 사용하여 파일 시스템을 효율적으로 탐색하는 방법을 익혔습니다.
  3. mkdir, touch, echo 명령어를 사용하여 파일과 디렉토리를 생성하고 내용을 추가하는 연습을 했습니다.
  4. cpmv를 사용하여 파일과 디렉토리를 복사, 이동, 이름 변경하는 파일 조작법을 마스터했습니다.
  5. cat, head, tail로 파일 내용을 확인하고, nano 텍스트 편집기로 파일을 편집하는 방법을 배웠습니다.
  6. 마지막으로 findwhich 명령어를 사용하여 강력한 파일 검색 기술을 익혔고, 리눅스 시스템 전반에서 파일과 실행 파일을 빠르게 찾을 수 있게 되었습니다.

이 기술들은 리눅스 작업의 기초를 형성합니다. 앞으로 리눅스를 계속 공부하면서, 이러한 기초를 바탕으로 더 복잡한 작업과 시스템 관리 업무를 수행하게 될 것입니다.

이 기술들을 마스터하는 핵심은 연습입니다. 리눅스 환경에서 이 명령어들을 자유롭게 사용해 보세요. 자신만의 디렉토리 구조를 만들고, 파일을 옮기고, 내용을 편집하고, 다양한 기준으로 파일을 검색해 보세요. 연습할수록 리눅스 명령줄이 더 편안하게 느껴질 것입니다.

이제 파일 관리 및 검색 기술을 갖추었으니, 리눅스 파일 시스템을 효율적으로 탐색하고 조작할 준비가 되었습니다. 계속 탐구하고 즐겁게 학습하세요!