파일 및 디렉토리 작업

LinuxBeginner
지금 연습하기

소개

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

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

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

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

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

리눅스 디렉토리 구조 탐색하기

이 단계에서는 리눅스 파일 시스템을 둘러봅니다. 이를 통해 다양한 유형의 파일이 어디에 저장되는지, 시스템이 어떻게 구성되어 있는지 이해하게 될 것입니다.

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

    pwd

    pwd는 "print working directory"의 약자로, 현재 파일 시스템의 어느 위치에 있는지 알려줍니다.

  2. 이제 전체 디렉토리 구조를 확인해 봅시다:

    tree /

    와우! 정보가 정말 많죠? tree 명령어는 디렉토리 구조를 나무 모양 형식으로 보여줍니다. / 인자는 루트 디렉토리부터 시작하라는 의미입니다. 보이는 모든 내용을 다 이해하려고 애쓰지 마세요. 가장 중요한 부분들에 집중할 것입니다.

  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는 복사 (copy) 명령어입니다. 여기서는 file1.txtdir1 디렉토리 안으로 복사하고 있습니다.

  2. 이번에는 복사와 이름 변경을 한 번에 해봅시다:

    cp file2.txt dir2/file2_copy.txt
    ls dir2

    이 명령은 dir2 안에 file2.txt의 복사본을 만들면서 이름을 새롭게 지정합니다.

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

    mv file1.txt dir3/
    ls
    ls dir3

    mv는 이동 (move) 할 때 사용합니다. 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. 수정 시간을 기준으로 찾을 수도 있습니다. 최근 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 명령어를 통한 강력한 검색 기법을 탐구하여 시스템 전체에서 파일과 실행 파일을 빠르게 찾는 법을 익혔습니다.

이러한 기술들은 리눅스 작업의 기초가 됩니다. 리눅스 여정을 계속하면서 이 기초 위에 더 복잡한 작업과 시스템 관리 기술을 쌓아나가게 될 것입니다.

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

이제 여러분은 리눅스 파일 시스템을 효율적으로 탐색하고 조작할 수 있는 준비가 되었습니다. 계속해서 탐구하며 즐겁게 학습하세요!