소개
리눅스 기본 파일 작업 실습에 오신 것을 환영합니다! 리눅스에서는 거의 모든 것이 파일로 취급되므로, 파일 작업은 시스템 사용의 가장 기초가 됩니다. 이 실습에서는 파일과 디렉토리를 관리하는 가장 일반적인 명령어들을 안내하며, 리눅스 시스템을 탐색하고 정리하는 데 능숙해지도록 도와드릴 것입니다.
작업 환경 이해하기
리눅스에서 각 사용자는 일반적으로 ~로 표시되는 "홈 디렉토리"를 가집니다. 하지만 이 실습 환경에서는 기본 작업 디렉토리인 /home/labex/project에서 시작합니다.
먼저 바탕 화면에서 터미널을 열거나, 실습 환경의 터미널 탭으로 전환해 주세요.

현재 위치를 확인하는 것부터 시작해 보겠습니다.
pwd
pwd는 "print working directory"의 약자입니다. 파일 시스템 내에서 현재 위치를 표시합니다. 이 명령어는 리눅스 파일 구조 내에서 자신의 위치를 파악하는 데 매우 중요합니다. 출력 결과로 /home/labex/project가 나타나야 합니다.
이제 현재 디렉토리와 홈 디렉토리의 관계를 살펴보겠습니다.
echo ~
참고: 특정 국가의 키보드 레이아웃 차이로 인해 바탕 화면 터미널에서
~기호를 입력할 수 없는 경우, VM 인터페이스 왼쪽 상단에 있는 독립형 터미널 탭으로 전환해 보세요.
이 명령어는 홈 디렉토리의 경로인 /home/labex를 표시합니다.
현재 디렉토리의 내용을 보려면 다음을 사용하세요.
ls
이 명령어는 현재 작업 디렉토리(/home/labex/project)에 있는 파일과 디렉토리 목록을 보여줍니다.
홈 디렉토리의 내용도 확인해 보겠습니다.
ls ~
이 명령어는 현재 작업 디렉토리와는 다를 수 있는 홈 디렉토리의 내용을 나열합니다.
현재 작업 디렉토리와 홈 디렉토리의 차이를 이해하는 것은 리눅스 파일 시스템을 효과적으로 탐색하는 데 중요합니다.
파일 시스템 탐색하기
리눅스는 "계층적 파일 시스템"을 사용합니다. 가지가 뻗어 있는 큰 나무를 상상해 보세요. 주 줄기는 단일 슬래시 /로 표시되는 "루트 디렉토리"라고 합니다. 다른 모든 디렉토리와 파일은 이 루트에서 뻗어 나옵니다.
이 나무 구조에서 이동하는 방법을 살펴보겠습니다.
- 현재 위치 확인:
pwd
/home/labex/project가 표시되어야 합니다. 만약 그렇지 않다면 다른 디렉토리에 있는 것일 수 있습니다. cd /home/labex/project를 사용하여 시작 지점으로 돌아오세요.
- 현재 디렉토리의 내용 보기:
ls
현재 위치의 모든 파일과 폴더를 나열합니다. /home/labex/project는 비어 있으므로 아무것도 보이지 않을 것입니다.
- 상위 디렉토리로 한 단계 이동:
cd ..
..은 "상위 디렉토리"를 의미합니다. 이 명령어를 실행한 후 다시 pwd를 입력해 보세요. 이제 /home/labex에 있을 것입니다.
- 프로젝트 디렉토리로 돌아가기:
cd project
이 명령어를 통해 /home/labex/project로 돌아갑니다.
- 홈 디렉토리로 이동:
cd ~
~는 홈 디렉토리를 가리키는 바로가기입니다. pwd를 입력하여 /home/labex에 있는지 확인하세요.
- 절대 경로를 사용하여 프로젝트 디렉토리로 돌아가기:
cd /home/labex/project
루트(/)에서 시작하여 전체 위치를 지정하므로 이를 "절대 경로"라고 합니다.
파일 생성 및 디렉토리 내용 나열
이제 탐색 방법을 알았으니, 파일을 생성하고 디렉토리 내용을 나열하는 방법을 살펴보겠습니다.
먼저 /home/labex/project 디렉토리에 있는지 확인하세요.
cd /home/labex/project
- 몇 개의 파일을 생성해 보겠습니다.
touch file1.txt
touch 명령어는 빈 파일을 생성하는 데 사용됩니다. 파일이 이미 존재하면 내용을 변경하지 않고 파일의 타임스탬프만 업데이트합니다. 새 빈 파일을 만드는 간단한 방법입니다.
echo "Hello, Linux" > file2.txt
이 명령어는 두 가지 작업을 수행합니다.
echo는 텍스트를 출력하는 명령어입니다.>기호는echo의 출력을file2.txt라는 파일로 리다이렉션(방향 전환)합니다. 파일이 없으면 생성되고, 있으면 내용이 덮어쓰여집니다.
echo "Hidden file" > .hiddenfile
이것은 숨김 파일을 생성합니다. 리눅스에서 점(.)으로 시작하는 모든 파일이나 디렉토리 이름은 숨김 처리됩니다.
- 이제 디렉토리를 생성해 보겠습니다.
mkdir testdir
mkdir 명령어("make directory"의 약자)는 testdir이라는 새 디렉토리를 생성합니다.
- 기본 목록 보기:
ls

현재 디렉토리의 내용이 표시됩니다. file1.txt, file2.txt, testdir이 보여야 합니다.
- 상세 목록 보기:
ls -l
-l 옵션(숫자 1이 아닌 소문자 L)은 "긴(long)" 형식의 목록을 제공합니다. 파일 권한, 소유자, 크기, 수정 날짜와 같은 추가 세부 정보를 볼 수 있습니다.
- 숨김 파일 보기:
ls -a
우리가 생성한 .hiddenfile을 포함하여 모든 파일을 보여줍니다.
- 옵션 결합:
ls -la
긴 형식(-l)과 모든 파일 표시(-a)를 결합한 것입니다.
- 특정 디렉토리의 내용 나열:
ls -l testdir
testdir 디렉토리의 내용을 나열합니다(현재는 비어 있어야 합니다).
이 단계의 나열 명령어들은 실습과 시각적 확인을 위한 것입니다. 실습 진행 상황은 필요한 파일과 디렉토리가 올바르게 생성되었는지 확인하여 평가됩니다.
파일 및 디렉토리 복사하기
이제 작업할 파일들이 생겼으니, 복사하는 방법을 배워보겠습니다.
- 파일 복사:
cp file1.txt file1_copy.txt
현재 디렉토리에 file1.txt의 복사본인 file1_copy.txt를 생성합니다.
복사본을 확인해 보겠습니다.
ls
- 다른 디렉토리로 파일 복사:
cp file2.txt testdir/
file2.txt를 testdir 디렉토리로 복사합니다.
- 디렉토리 복사:
cp -r testdir testdir_copy
-r 옵션은 "recursive(재귀적)"를 의미합니다. 디렉토리를 복사할 때는 모든 내용을 포함하기 위해 이 옵션이 필수입니다.
- 복사본 확인:
ls
ls testdir
ls testdir_copy

파일 및 디렉토리 이동과 이름 변경
mv 명령어는 리눅스에서 이동과 이름 변경 모두에 사용됩니다.
- 파일 이름 변경:
mv file1.txt newname.txt
file1.txt의 이름을 newname.txt로 변경합니다.
- 파일을 디렉토리로 이동:
mv newname.txt testdir/
newname.txt를 testdir 디렉토리로 이동합니다.
- 디렉토리 이름 변경:
mv testdir_copy new_testdir
testdir_copy의 이름을 new_testdir로 변경합니다.
- 한 번의 명령어로 이동 및 이름 변경:
mv testdir/newname.txt ./original_file1.txt
newname.txt를 testdir에서 꺼내어 현재 디렉토리에 original_file1.txt라는 이름으로 변경합니다.
- 변경 사항 확인:
ls
ls testdir

파일 및 디렉토리 삭제하기
파일과 디렉토리를 삭제하는 것은 강력한 작업입니다. 그래픽 인터페이스와 달리 명령줄에는 "휴지통"이 없는 경우가 많습니다. rm으로 삭제한 내용은 일반적으로 영구적으로 사라집니다. 명령어를 실행하기 전에 항상 다시 확인하세요!
생성한 파일과 디렉토리를 정리해 보겠습니다. /home/labex/project 디렉토리에 있는지 확인하세요.
pwd
ls -a
original_file1.txt, .hiddenfile, file2.txt와 같은 파일들과 testdir, new_testdir 같은 디렉토리가 보여야 합니다.
-rw-rw-r-- 1 labex labex 12 May 3 08:44 .hiddenfile
-rw-rw-r-- 1 labex labex 0 May 3 08:45 file1_copy.txt
-rw-rw-r-- 1 labex labex 13 May 3 08:44 file2.txt
drwxrwxr-x 2 labex labex 23 May 3 08:45 new_testdir
-rw-rw-r-- 1 labex labex 0 May 3 08:44 original_file1.txt
drwxrwxr-x 2 labex labex 23 May 3 08:45 testdir
단일 파일 삭제:
rm original_file1.txtrm명령어("remove"의 약자)는 파일을 삭제합니다. 확인해 봅시다.lsoriginal_file1.txt가 사라졌을 것입니다.대화형으로 삭제(더 안전함):
file2.txt를 삭제해 보겠지만, 이번에는 대화형 플래그-i를 사용하겠습니다.rm -i file2.txt-i옵션은 각 파일을 삭제하기 전에 확인을 요청합니다.y(yes)를 입력하고 Enter를 눌러 삭제를 확인하세요.n이나 다른 키를 입력하면 파일이 삭제되지 않습니다.ls확인했다면
file2.txt가 사라졌을 것입니다.빈 디렉토리 삭제:
testdir_copy의 이름을 변경하여 만든new_testdir을 기억하시나요? 비어 있는지 확인해 봅시다.ls new_testdir비어 있다면(파일이 보이지 않는다면),
rmdir을 사용하여 삭제할 수 있습니다.rmdir new_testdirrmdir(remove directory)은 빈 디렉토리에서만 작동합니다.lsnew_testdir은 비어 있지 않기 때문에 삭제할 수 없습니다.비어 있지 않은 디렉토리 삭제 시도:
이제 4단계에서 복사한
file2.txt가 여전히 들어 있는testdir에rmdir을 시도해 보겠습니다.ls testdir rmdir testdirrmdir: failed to remove 'testdir': Directory not empty와 같은 오류 메시지가 나타날 것입니다.rmdir은 파일이나 다른 디렉토리가 포함된 디렉토리를 삭제할 수 없기 때문에 예상된 결과입니다.디렉토리와 그 내용 삭제(재귀적):
비어 있지 않은 디렉토리를 삭제하려면
rm에-r(recursive) 옵션을 사용해야 합니다.rm -r testdir이 명령어는
testdir디렉토리와 그 안의 모든 것을 삭제합니다. 이 명령어는 주의해서 사용하세요.lstestdir이 이제 사라졌을 것입니다.강제 삭제(매우 주의해서 사용):
때로는 쓰기 방지가 되어 있더라도 확인 없이 파일을 삭제하고 싶을 수 있습니다(여기에는 없지만).
-f(force) 옵션이 이 역할을 합니다.숨김 파일을 삭제해 보겠습니다.
rm .hiddenfile ls -a이제
-r과-f를 결합해 보겠습니다.rm -rf명령어는 매우 강력하고 잠재적으로 위험합니다. 디렉토리를 재귀적으로(-r) 삭제하고 확인 없이 강제로(-f) 삭제합니다.!!! 위험 구역 !!!
rm -rf를 실행하기 전에 무엇을 삭제하는지 절대적으로 확실히 알고 있어야 합니다. 작은 오타 하나로 중요한 시스템 파일이나 개인 데이터가 삭제될 수 있습니다. 되돌릴 수 없습니다. 예를 들어,rm -rf /는 전체 시스템을 삭제하려고 시도할 수 있습니다(권한이 있는 경우). 항상 경로를 다시 확인하세요.안전하게 시연하기 위해 임시 디렉토리와 파일을 만들어 보겠습니다.
mkdir temp_dir touch temp_dir/temp_file.txt ls -R temp_dir참고:
cp나rm에서 사용한-r(소문자) 대신ls와 함께-R(대문자)을 사용한 것을 눈치채셨을 것입니다. 이는 단순히 대소문자 차이가 아니라 완전히 다른 옵션입니다!ls에서-R은 "재귀적 나열(하위 디렉토리 나열)"을 의미하고,-r은 "역순 정렬"을 의미합니다.cp와rm의 경우 재귀 옵션은-r(소문자)입니다. 항상 매뉴얼(man command)을 확인하여 각 명령어의 특정 옵션을 이해하세요.이제 강제로 삭제해 보겠습니다.
rm -rf temp_dir삭제 확인:
lstemp_dir이 사라졌을 것입니다.
기억하세요: 리눅스 명령줄에서 삭제된 파일은 일반적으로 영원히 사라집니다. rm은 신중하게 사용하세요!
요약
축하합니다! 리눅스의 필수 파일 작업들을 배웠습니다.
cd와pwd를 사용한 파일 시스템 탐색touch와mkdir을 사용한 파일 및 디렉토리 생성ls와 그 옵션들을 사용한 내용 나열cp를 사용한 파일 및 디렉토리 복사mv를 사용한 이동 및 이름 변경rm과rmdir을 사용한 파일 및 디렉토리 삭제
이 명령어들은 리눅스 파일 관리의 기초를 형성합니다. 연습을 통해 명령줄에서 파일과 디렉토리를 관리하는 데 능숙해질 것입니다.
특히 rm은 복구 불가능하게 파일과 디렉토리를 영구적으로 삭제하므로, 이 명령어들을 사용할 때는 항상 주의하세요.
리눅스 여정을 계속하면서 각 명령어와 옵션에 대해 더 자세히 알아보려면 매뉴얼 페이지(예: man ls)를 탐색해 보세요. 즐거운 탐험 되세요!



