반응형

리눅스 기본 명령어 완벽 가이드 – 초보자도 바로 따라하는 실습 예제

리눅스 터미널 앞에서 명령어가 헷갈리시나요? 오늘은 **자동완성, 파일 관리, 사용자 관리, 권한 설정**까지 리눅스의 핵심 명령어를 실습 예제와 함께 완전히 정리해드립니다.

반응형

안녕하세요! 리눅스를 처음 접하면 가장 먼저 마주하는 게 ‘명령어’죠. 처음엔 lscd 정도만 알아도 뭔가 프로그래머가 된 기분이 들지만, 막상 깊게 들어가면 디렉터리 구조, 권한, 사용자 관리까지 배워야 할 게 많습니다. 이번 글에서는 리눅스 기본 명령어를 **PDF 자료의 예제 코드 그대로** 가져와 실습과 함께 설명드릴 거예요. 명령어 설명과 예제, 그리고 제가 직접 써본 팁까지 곁들여서 초보자도 쉽게 이해할 수 있도록 구성했습니다. 글을 끝까지 보시면, 리눅스 환경에서 기본 작업을 혼자서 척척 해낼 수 있을 겁니다.

1. 자동 완성과 명령어 이력 활용

리눅스 터미널의 **자동 완성** 기능은 초보자뿐 아니라 숙련자에게도 필수입니다. 긴 디렉터리 경로나 파일명을 모두 타이핑하지 않고 Tab 키 한 번으로 완성할 수 있으니까요.

자동 완성 기본 사용법

cd /li   [Tab]   syst   [Tab]   sys   [Tab]
  • 파일명이나 디렉터리명을 일부 입력한 후 Tab을 누르면 나머지가 자동 완성됩니다.
  • 비슷한 이름이 여러 개라면, Tab을 두 번 눌러 후보 목록을 확인합니다.

예를 들어 cd /etc로 이동 후 cd sys + Tab을 누르면 후보가 여러 개 나오고, syst까지 입력하면 systemd로 바로 완성됩니다.

명령어 이력 관리 – history

자동 완성과 함께 많이 쓰는 기능이 명령어 이력입니다. 터미널에서 위/아래 화살표를 누르면 이전에 실행했던 명령어가 나옵니다.

$ history       # 모든 명령어 이력 확인
$ history -c    # 명령어 이력 전체 삭제

💡 : 특정 명령어를 다시 실행하고 싶을 땐 !번호 형식을 사용하면 됩니다. 예를 들어 !25는 이력 25번 명령을 바로 실행합니다.

실습 시나리오 예제

  1. 홈 디렉터리에서 /etc로 이동
  2. sys 입력 후 Tab 두 번 눌러 후보 목록 확인
  3. syst 입력 후 Tab 눌러 systemd로 완성
  4. 이전 명령어 기록을 history로 확인

이렇게 자동 완성과 이력 기능만 잘 활용해도, 리눅스 작업 속도가 2배는 빨라집니다.

2. 디렉터리 구조와 이동 명령어

리눅스 시스템은 계층형 디렉터리 구조를 가지고 있습니다. 최상위는 루트 디렉터리(/)이며, 그 아래에 다양한 역할을 하는 디렉터리들이 배치됩니다. 이를 이해하면 파일 위치를 빠르게 파악하고 이동할 수 있습니다.

기본 디렉터리 이동 명령어

$ pwd          # 현재 디렉터리 경로 확인
$ ls           # 현재 디렉터리 목록 출력
$ ls -l        # 상세 정보까지 출력
$ cd ..        # 상위 디렉터리로 이동
$ cd users     # 하위 디렉터리로 이동
$ cd ~         # 홈 디렉터리로 이동

💡 : clear 명령을 사용하면 터미널 화면 내용을 한 번에 지워서 작업 결과를 깔끔하게 볼 수 있습니다.

주요 시스템 디렉터리 설명

디렉터리 설명
/bin → /usr/bin 기본 명령어 저장소 (ls, cp, mv 등), 실제 위치는 /usr/bin
/boot 시스템 부팅에 필요한 커널, 부트로더 설정 파일
/dev 디바이스 파일, 하드웨어 장치 접근 (/dev/sda 등)
/etc 시스템 설정 파일 저장소
/home 일반 사용자 홈 디렉터리
/lib → /usr/lib 시스템 라이브러리 저장소, 실제 위치는 /usr/lib
/sbin → /usr/sbin 시스템 관리용 명령어 저장소
/var 변경되는 데이터 저장 (로그, 캐시 등)

심볼릭 링크(lrwxrwxrwx)는 다른 경로를 참조하는 기능입니다. 예를 들어 /bin 디렉터리가 /usr/bin으로 연결되어 있어도, 사용자는 그냥 /bin 안의 명령어를 실행하면 됩니다.

디렉터리 구조 실습

  1. sudo su -로 root 권한 획득
  2. cd /로 루트 디렉터리 이동
  3. ls -l로 하위 디렉터리 및 링크 구조 확인

이 과정을 거치면, 디렉터리 구조의 큰 그림을 머릿속에 그릴 수 있어 이후 파일 관리가 훨씬 수월해집니다.

3. 파일 생성·편집·삭제·복사·이동 🔧

리눅스에서 가장 자주 하는 일이 바로 파일 생성편집, 그리고 삭제/복사/이동입니다. 아래 예제들은 첨부된 PDF의 실습 명령을 그대로 사용해 정리했습니다. (명령은 터미널에서 순서대로 실행하세요.)

3-1) 작업 디렉터리 만들기와 이동 🚶

1. Documents 디렉터리로 이동 후 testdir 디렉터리를 생성하고 testdir 디렉터리로 이동
$ mkdir testdir
$ cd testdir
  • mkdir는 디렉터리를 생성하고, cd는 이동합니다.
  • 경로를 길게 입력할 때는 Tab 자동완성을 적극 활용하세요.

3-2) Vim으로 텍스트 파일 생성/편집 ✍️

터미널에서 텍스트 편집은 Vim을 많이 사용합니다. PDF의 예제를 그대로 따라가며 첫 파일을 만들어 봅니다.

2. testdir 디렉터리에 test.txt 파일을 생성하기 위해 vim 명령을 사용
$ vim test.txt

Vim은 입력 모드ex(명령) 모드가 있습니다. PDF의 안내처럼 다음 흐름으로 저장/종료를 연습합니다.

3. 새로 만든 파일에 아무 내용이나 입력해 보면 제대로 입력되지 않음
Vim에는 문서를 작성하는 ‘입력 모드’와 문서를 저장하는 ‘ex 모드’가 있음
Vim 명령으로 문서를 생성하거나 편집할 때 ‘ex모드’가 기본 모드
영문자 I 또는 a를 누름
Esc 키를 누르고 명령어 입력
4. 텍스트 입력을 위해 ex 모드 상태에서 i 또는 a를 눌러서 입력 모드 상태로 변경 → “안녕하세요. “ 입력
파일을 저장하기 위해 입력 모드에서 Esc 키를 누르고 ex 모드로 변경
 ‘:wq’를 입력하고 저장하고 Vim 편집기 종료하고 터미널 환경으로 돌아옴

만약 비정상 종료로 .swp 파일이 남았다면 PDF에 나온 대로 처리합니다.

⚫ 비정상 종료 : .test.txt.swp 스왑 파일 생성
▪ 스왑 파일 삭제하기
ls -a 명령을 입력하여 파일 확인, rm -rf .new.txt.swp 명령 입력
▪ 해당 스왑 파일을 삭제하면 new.txt 파일을 정상적으로 편집할 수 있음

3-3) 텍스트 내용/파일 유형 빠르게 확인 👀

▪ 터미널 환경에서 텍스트 문서의 내용을 간단히 확인할 때는 리눅스의 cat {파일이름} 명령을 사용
▪ test.txt 파일의 내용 확인
$ cat text.txt

⚫ 텍스트로 작성된 파일의 앞 10행 또는 마지막 10행만 출력 : head, tail
$ head cloud-init.log
$ tail cloud-init.log

⚫ 텍스트로 작성된 파일을 화면에 페이지 단위로 출력
$ more cloud-init.log

⚫ File이 어떤 종류의 파일인지를 표시
$file test.txt
$file cloud-init.log

💡 참고 : cat text.txt는 PDF의 표기 그대로 인용했습니다. 실습 중 실제 파일명이 test.txt라면 cat test.txt로 확인하세요.

3-4) 파일/디렉터리 조작(생성·삭제·복사·이동) 🧩

명령 용도 PDF 예제 (그대로)
touch 크기 0의 새 파일 생성, 기존 파일이면 수정시간 갱신 $touch abc.txt
cp 파일/디렉터리 복사 $cp abc.txt cba.txt
mv 이름 변경 또는 위치 이동 $mv abc.txt test.txt
rm 파일/디렉터리 삭제 $ rm -r testdir
rmdir 비어있는 디렉터리 삭제 $rmdir test

삭제 옵션 자세히 보기 (rm)

옵션 설명 PDF 표기
-r 디렉터리와 내부 전체를 재귀적으로 삭제 -r 옵션을 붙이면 디렉터리 안에 있는 하위 디렉터리와 파일을 모두 삭제
-f / --force 확인 없이 강제 삭제 강제 삭제삭제 확인 메시지 없이 파일을 강제로 삭제
-i 삭제 전 확인 요청 삭제 확인파일을 삭제하기 전에 확인 메시지를 표시
-v / --verbose 삭제 과정을 상세 출력 삭제 과정을 자세히 출력
-rf 디렉터리 강제 삭제(주의) 디렉터리와 그 안의 모든 파일을 강제로 삭제

⚠️ 주의 : rm -rf는 복구가 거의 불가능하니, 경로를 두 번 확인하고 실행하세요.

3-5) 세션 마무리와 정리 🧹

⚫ 터미널 종료
$ exit
  • 실습 후에는 history로 실행 이력을 점검하고, 중요 명령은 메모해 두면 다음 작업이 빨라집니다.
  • clear로 화면을 정리하면 결과 확인이 한결 수월해요.

3-6) 체크리스트 ✅

4. 사용자와 그룹 관리 👥

리눅스는 다중 사용자 시스템입니다. 즉, 여러 사용자가 동시에 한 시스템을 쓰더라도 계정그룹, 그리고 권한으로 작업 범위를 깔끔하게 나누죠. 이 파트에서는 첨부된 자료의 예제 코드 그대로 보여드리면서, 계정 정보가 어디에 저장되는지, 어떤 명령으로 사용자를 추가·변경·삭제하는지 한 번에 정리합니다. 중간중간 초보자가 헷갈리기 쉬운 포인트도 체크해 둘게요. 🙂

4-1) 사용자/비밀번호/그룹 정보 파일 📁

가장 기본은 /etc/passwd, /etc/shadow, /etc/group 세 파일입니다. 자료의 예제를 그대로 확인해 볼게요.

# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
…
tcpdump:x:72:72::/:/sbin/nologin
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash

각 행은 사용자 이름:암호:사용자 ID:그룹 ID:전체 이름:홈 디렉터리:기본 셸 의미를 가집니다. 예시도 그대로 살펴보죠.

# cat passwd
root:x:0:0:root:/root:/bin/bash
  • root : 시스템 관리자 계정 (UID=0, GID=0), 홈 /root, 셸 /bin/bash
  • 비밀번호는 실제로 /etc/shadow에 저장되므로 x로 표시됩니다.
root:$6$saltsalt$EtlHlRc.4Ivkj93v9I.vI4u/:18648:0:99999:7:::

위와 같은 /etc/shadow 항목은 암호화된 비밀번호, 마지막 변경일, 최소/최대 사용기간, 만료 경고, 잠금 기간, 계정 만료일 등의 필드를 포함합니다.

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:ec2-user
…
users:x:100:
nobody:x:65534:
…
screen:x:84:
ec2-user:x:1000:

/etc/group 형식은 그룹명:비밀번호:그룹ID:그룹에 속한 사용자명입니다. 예를 들어 adm 그룹은 시스템 로그 확인 권한 등 특정 역할을 갖습니다.

파일 역할 핵심 필드
/etc/passwd 사용자 기본 정보 name:x:UID:GID:comment:home:shell
/etc/shadow 암호/만료 정책 hash:lastchg:min:max:warn:inactive:expire
/etc/group 그룹 정보 group:x:GID:members

4-2) 사용자(User) 관리 명령어 🧑‍💻

자료의 명령을 그대로 따라 적었습니다. 옵션 설명도 함께 보세요.

▪ 새로운 사용자를 추가
useradd [옵션] 사용자이름
# useradd newuser

• 사용자 생성시 옵션
 -u : ID 지정
 -g : 그룹 지정                 useradd -G wheel john
 -d : 홈 디렉터리 지정     useradd -d /home/john john
 -s : 셸 지정                     useradd -s /bin/bash john
▪ 사용자의 비밀번호를 지정하거나 변경
# passwd newuser
▪ 사용자의 속성을 변경
usermod [옵션] 사용자이름
# usermod -g root test1

• 옵션
-l: 사용자 이름 변경
-d: 홈 디렉터리 변경
-m: 홈 디렉터리 이동
-s: 기본 셸 변경
-g: 추가 그룹 지정
-L: 계정 잠금,  -U: 계정 잠금 해제 
▪ 사용자를 삭제
# userdel tester
▪ 사용자의 암호를 주기적으로 변경하도록 설정
# chage -m 2 newuser
  • 주의 : userdel 전에는 중요한 홈 디렉터리 자료를 백업하세요.
  • 계정 정책은 chage로 최소/최대 사용 기간 등을 관리할 수 있습니다.

4-3) 그룹(Group) 관리 명령어 🧩

▪ 현재 사용자가 속한 그룹을 보여줌
# groups
▪ 새로운 그룹을 생성
# groupadd tester
▪ 그룹의 속성을 변경
# groupmod -n newtester tester
• 옵션
-n: 그룹 이름 변경
-g: 그룹 ID(GID) 변경
▪ 그룹을 삭제
# groupdel newtester
▪ 그룹의 암호를 설정하거나, 그룹의 관리를 수행
# gpasswd newgroup
범주 명령 용도/예시
사용자 useradd, passwd, usermod, userdel, chage 생성/비번/속성변경/삭제/암호정책
그룹 groupadd, groupmod, groupdel, gpasswd, groups 생성/변경/삭제/관리/소속확인

4-4) 자주 하는 실수와 안전수칙 🚨

  • /etc/passwd/etc/group을 직접 편집하는 대신 해당 user*/group* 명령을 사용하세요.
  • 계정 잠금(usermod -L)과 해제(-U)는 실수로 서비스 계정을 막지 않게 신중히.
  • 새 사용자 생성 시 -s /bin/bash 등 원하는 셸을 명시하고, 홈 디렉터리(-d)도 함께 확인하세요.

4-5) 따라 해보는 간단 루틴 ✅

  1. useradd newuserpasswd newuser로 비밀번호 설정
  2. groupadd tester → 필요 시 groupmod -n newtester tester
  3. usermod -g root test1로 기본 그룹 바꾸기(예시)
  4. groups로 소속 그룹 확인
  5. chage -m 2 newuser로 암호 정책 적용

5. 🔑 파일 소유권과 권한 관리

리눅스는 모든 파일과 디렉터리에 대해 소유권접근 권한을 설정합니다. 이를 통해 시스템의 보안과 안정성을 유지하죠. 이번 절에서는 chmod, chown, chgrp 명령을 이용해 권한을 설정하고 소유권을 변경하는 방법을 살펴봅니다.

5-1. 파일 권한 구조 이해

리눅스 파일 권한은 소유자(owner), 그룹(group), 기타 사용자(others)로 나뉘며, 각 주체별로 읽기(r), 쓰기(w), 실행(x) 권한을 부여하거나 제거할 수 있습니다.

# 파일 상세 정보 확인
ls -l
-rwxr-xr--  1 user group  4096 Aug 11 10:00 script.sh
  • r : 읽기 권한 (4)
  • w : 쓰기 권한 (2)
  • x : 실행 권한 (1)

5-2. chmod : 권한 변경

chmod 명령어는 기호 모드와 8진수 모드 두 가지 방법으로 권한을 변경할 수 있습니다.

# 실행 권한 추가 (기호 모드)
chmod u+x script.sh

# 읽기/쓰기/실행 권한 설정 (8진수 모드)
chmod 755 script.sh
8진수 값 권한
7 rwx (읽기, 쓰기, 실행)
6 rw- (읽기, 쓰기)
5 r-x (읽기, 실행)

5-3. chown : 파일 소유권 변경

chown 명령은 파일이나 디렉터리의 소유자를 변경합니다. 주로 관리자 권한이 필요합니다.

# 소유자 변경
sudo chown user1 file.txt

# 소유자와 그룹 변경
sudo chown user1:group1 file.txt

5-4. chgrp : 그룹 소유권 변경

그룹 소유권만 변경하려면 chgrp 명령을 사용합니다.

# 그룹 소유권 변경
sudo chgrp developers project/

💡 TIP : 권한과 소유권 변경은 보안에 직결되므로 변경 전 반드시 필요성을 확인하세요.

6. 💡 실습 팁과 자주 쓰는 명령어 모음

리눅스를 다루다 보면 기본 명령어를 빠르게 활용하는 것이 큰 도움이 됩니다. 이번 절에서는 실습 중 유용하게 쓸 수 있는 명령어 모음과 함께, 초보자가 헷갈리기 쉬운 사용 팁을 정리했습니다.

6-1. 디렉터리 탐색과 이동

# 현재 작업 디렉터리 확인
pwd

# 홈 디렉터리로 이동
cd ~

# 상위 디렉터리로 이동
cd ..

# 특정 경로로 이동
cd /etc
  • pwd : 현재 경로를 출력
  • cd : 디렉터리 이동
  • .. : 상위 디렉터리

6-2. 파일 및 디렉터리 관리

# 파일 목록 보기
ls -l

# 숨김 파일 포함 목록 보기
ls -la

# 디렉터리 생성
mkdir new_folder

# 파일 복사
cp source.txt backup.txt

# 파일 이동/이름 변경
mv file1.txt file2.txt

# 파일 삭제
rm file.txt
명령어 설명
ls -l 자세한 파일 정보 출력
mkdir 새 디렉터리 생성
cp 파일 복사

6-3. 파일 내용 확인 및 검색

# 파일 내용 출력
cat file.txt

# 페이지 단위로 보기
less file.txt

# 특정 단어 검색
grep "keyword" file.txt

💡 TIP : grep-n 옵션을 주면 검색 결과의 줄 번호까지 함께 표시됩니다.

6-4. 시스템 상태 확인

# 현재 로그인 사용자
who

# 현재 실행 중인 프로세스
ps aux

# 디스크 사용량
df -h

# 메모리 사용량
free -h
  • df -h : 디스크 공간을 사람이 읽기 쉬운 단위로 표시
  • free -h : 메모리 사용량을 보기 좋게 출력

🔚 마무리

이번 글에서는 리눅스 기본 명령어와 파일 관리, 권한 설정, 실습 팁까지 초보자도 쉽게 따라 할 수 있는 예제로 정리했습니다. 명령어 하나하나가 단순해 보여도, 실제 서버 운영이나 개발 환경에서 적용해 보면 그 가치가 훨씬 크게 느껴질 것입니다.

앞으로 리눅스를 더 깊게 배우고자 한다면, 오늘 배운 명령어를 반복 연습하며 자신의 워크플로우에 자연스럽게 녹여내는 것이 중요합니다.

또한, 파일 권한과 소유권 개념은 보안과 직결되므로 반드시 숙지해야 하며, 실무에서 발생할 수 있는 오류를 미리 예방하는 습관을 들이는 것이 좋습니다.

 

다음에는 프로세스 관리, 네트워크 관련 명령어, 셸 스크립트 등 한 단계 더 심화된 주제로 찾아오겠습니다. 꾸준히 연습하고 체득한다면, 리눅스는 더 이상 어렵지 않고 여러분의 든든한 도구가 될 것입니다. 🚀

반응형

+ Recent posts