1. 디렉토리 탐색 및 파일 관리

명령어 설명  예시
pwd 현재 위치 출력 pwd > /home/user
ls 파일 목록 보기 ls -l, ls -a
cd 디렉토리 이동 cd /var/log, cd ~
mkdir 새 폴더 생성 mkdir project
touch 새 파일 생성 touch index.html
cp 파일/폴더 복사 cp file1.txt file2.txt
mv 이동/이름 변경 mv old.txt new.txt
rm  파일 삭제  rm file.txt, rm -r folder
tree 디렉터리 구조 보기 tree . (설치 필요 : sudo apt install tree)

 

ls(List)

$ ls
file.txt

$ ls -a # 숨긴 파일 포함 (all)
.  ..  .bashrc  .profile  file.txt


$ ls -l # 상세 정보 보기
-rw-r--r--  1 user user  4096 May  7 11:30 file.txt

의미:

-rw-r--r-- : 파일 권한

1 : 하드 링크 수

user : 소유자

user : 그룹

4096 : 파일 크기 (바이트)

May 7 11:30 : 마지막 수정 시각

file.txt : 파일 이름

 

rm (Remove)

$ rm file.txt     # 일반 파일 삭제
$ rm file1.txt file2.txt  # 여러 파일 삭제  디렉토리는 삭제하지 못함 (오류 발생)

$ rm -r folder/ # 디렉토리와 그 안의 모든 파일/하위 디렉토리까지 재귀적으로 삭제 -r = recursive(재귀적)

$ rm -rf folder/ # (Recursive + Force) , 경고 없이 모든 내용을 삭제하므로 가장 위험한 조합

$ rm -rf /

 

2. 사용자 & 권한

명령어 설명 예시
whoami 현재 사용자  whoami > ubuntu
id 사용자 UID, 그룹 확인 id
adduser 사용자 추가 sudo adduser devops
passwd 비밀번호 설정 passwd user1
chown 소유권 변경 chown user:group file
chmod 권한 변경 chmod 755 script.sh

 

chown (파일/디렉토리의 소유자(owner)와 그룹(group) 변경

# 문법
chown [옵션] [소유자][:그룹] 파일명

# 예시
# 파일의 소유자를 ubuntu로 변경
chown ubuntu file.txt

# 파일의 소유자와 그룹을 ubuntu로 변경
chown ubuntu:ubuntu file.txt

# 그룹만 변경
chown :developers file.txt

# 디렉토리 및 내부 파일까지 소유자 변경
chown -R ubuntu:ubuntu /home/ubuntu/myfolder

 

chmod (파일/디렉토리의 권한(permission) 변경

chmod [옵션] [권한] 파일명

 

- 권한은 숫자 또는 기호로 지정

- 일반적으로 숫자 방식(755, 644 등)을 많이 사용

 

숫자 방식 권한 설명

권한 의미 숫자
r 읽기(Read) 4
w 쓰기(Write) 2
x 실행(Execute) 1

 

# 예시

# 소유자: rwx(7), 그룹: rx(5), 기타: rx(5)
chmod 755 script.sh

# 소유자: rw-(6), 그룹: r--(4), 기타: r--(4)
chmod 644 file.txt

# 모든 사용자에게 실행 권한 추가
chmod +x run.sh

# 그룹과 기타 사용자에게 쓰기 권한 제거
chmod go-w file.txt

 

3. 파일 내용 보기

명령어 설명 예시
cat  파일 전체 출력 cat readme.txt
more, less  페이지 단위 보기 less log.txt
head, tail 앞/뒤 일부 출력 tail -n 100 /var/log/syslog
grep 문자열 검색 grep "error" log.txt
wc 줄/단어/문자 수  wc -l file txt

 

head (파일의 "처음" N줄 보기)

# 기본 문법
head [옵션] 파일명

# 예시
head file.txt           # 앞 10줄 출력
head -n 5 file.txt      # 앞 5줄 출력
head -n 20 /var/log/syslog   # 시스템 로그의 앞 20줄 출력

 

tail (파일의 :마지막" N줄 보기)

# 기본 문법
tail [옵션] 파일명

# 예시
tail file.txt           # 뒤 10줄 출력
tail -n 15 file.txt     # 뒤 15줄 출력
tail -f /var/log/syslog # 실시간 로그 감시

-n [줄 수] : 마지막에서부터 몇 줄 출려할지 지정 (기본값 : 10줄)

-f : 실시간으로 파일 변경을 계속 출력 > 고르 모니터링에 매우 유용

'linux' 카테고리의 다른 글

systemd와 systemctl을 활용한 서비스 관리  (0) 2025.05.14
리눅스에서 자주 사용하는 명령어 & 문법 정리 -2  (2) 2025.05.08
리눅스 쉘이란?  (0) 2025.05.07
리눅스 커널이란?  (0) 2025.04.30
Linux란 무엇인가.?  (0) 2025.04.29

쉘(Shell)의 정의

쉘은 사용자와 운영체제 커널 사이에서 명령을 전달하는 인터페이스입니다.

리눅스에서 우리가 명령어를 입력하는 화면이 "쉘"입니다.

- 사용자 > 쉘에 명령어 입력 > 쉘이 커널에 전달 > 결과 출력

 

쉘의 종류

리눅스에는 다양한 종류의 쉘이 존재합니다.

쉘 종류 설명
sh (Bourne Shell) 가장 기본이 되는 쉘
bash (Bourne Again Shell) 대부분의 리눅스에서 기본 쉘, 가장 많이 사용
zsh 고급 자동 완성, 테마 등 편의 기능이 풍부
fish 친절한 문법과 컬러 하이라이팅
csh / tcsh C언어 스타일의 문법

 

내 쉘을 확인하는 방법

echo $SHELL

 

기본 쉘 변경

chsh -s /bin/bash # bash로 변경

 

쉘의 기본 기능

1. 명령어 실행

ls -l
cd /home
touch file.txt

 

2. 파이프 & 리디렉션

cat file.txt | grep "hello" # | : 앞 결과를 뒤에 전달
ls > list.txt # 출력 리디렉션
echo "test" >> list.txt # 덧붙이기

 

3. 환경 변수

echo $HOME
export MY_VAR="hello"
echo $MY_VAR

 

4. 명령어 기록 & 자동완성

history

 

 

유용한 Bash 기능 예시

기능 설명 예시
alias 명령어 단축 alias ll='ls-alF'
jobs, fg, bg 백그라운드 작업 관리 sleep 60 &
$(command) 명령어 결과를 변수처럼 사용 echo "오늘은 $(date)입니다."
.bashrc 쉘 설정 저장  자동 alias 등록 등

 

쉘을 배워야 하는 이유

- 서버에서는 GUI가 거의 없기 때문에 쉘은 필수 도구

- 리눅스 시스템 제어, 자동화, 모니터링 등에 광범위하게 활용

- DevOps/SysOps 분야에서는 쉘 스크립팅 능력이 기초이자 핵심

# 리눅스 커널은 무엇인가?

리눅스 커널은 리눅스 운영체제의 '핵심'입니다.

커널은 컴퓨터 하드웨어(CPU, 메모리, 디스크 등)와 소프트웨어(애플리케이션) 사이를 연결하는 다리 역할을 합니다.

커널이 없다면 우리가 입력하는 명령어나 프로그램은 하드웨어를 제대로 사용할 수 없게 됩니다.

 

# 리눅스 커널의 주요 역할

프로세스 관리 여러 프로그램을 동시에 실행할 때, CPU를 어떻게 분배할지 결정합니다.
메모리 관리 프로그램들이 필요한 메모리를 할당받고, 회수하는 작업을 담당합니다.
디바이스 제어 하드 디스크, 네트워크 카드, 그래픽 카드 등 하드웨어를 제어합니다.
파일 시스템 관리 파일 읽기/쓰기/권한 제어 및 디렉토리 구조 유지
네트워크 관리 인터넷, 서버 통신을 할 수 있도록 지원합니다.

 

# 커널은 그럼 눈에 직접 보일까?

일반 사용자는 커널을 직접 다루지 않습니다. 

우리가 사용하는 터미널(shell)이나 GUI(그래픽 유저 인터페이스)가 커널에 요청을 보내고, 커널은 이 요청을 받아서 하드웨어에 명령을 전달합니다. 자주 사용하는 'ls', 'cd', 'vim' 같은 명령어를 사용할 때도, 결국 이 모든 것이 커널을 통해 동작합니다.

 

# 리눅스 커널의 버전

리눅스 커널은 계속해서 발전해왔습니다.

버전을 확인하는 명령어는

uname -r

6.8 > 메이저 버전

0 > 마이너 버전

1024-aws > 디스트리뷰션에 맞게 커스터마이징된 정보라고 할 수 있습니다.

 

# 커널 업데이트해야 하나요?

커널 업데이트는 보안이나 성능에 중요한 영향을 줄 수 있습니다. 

특히 서버 환경에서는 보안 패치가 적용된 커널을 유지하는게 매우 중요합니다. 

 

Ubuntu 계열에서 커널 업데이트

sudo apt update
sudo apt install --install-recommends linux-generic

 

# 리눅스 커널의 구조 (구성 요소)

구성요소 설명
Process Scheduler 어떤 프로세스를 언제 실행할지 결정
Memory Manager 물리적/가상 메모리를 효율적으로 관리
File System Interface 다양한 파일 시스템 지원 (ext4,xfs 등)
Device Drivers 하드웨어 장치들과 통신하는 코드 모듈
Networking Stack TCP/IP 같은 네트워크 프로토콜 처리
System Call Interface (SCI) 사용자 공간 -> 커널 공간 진입 지점

 

# 커널은 언제 실행될까요?

- 시스템이 부팅될 때, BIOS/UEFI가 부트로더(grub)를 실행합니다.

- 부트로더는 커널 이미지(vmlinuz)를 메모리에 적재합니다.

- 커널이 로드되면, 디바이스 초기화 > init 프로세스 실행 > 사용자 로그인 가능.

 

# 커널은 운영체제인가요?

- 커널은 운영체제(OS)의 핵심 구성요소이지만, OS 전체는 아닙니다.

- OS는 커널 + 유틸리티 프로그램 + 셸 + 라이브러리 등을 모두 포함합니다.

- ex) 리눅스 OS = 리눅스 커널 + GNU 명령어들 + bash + 시스템 서비스 등

 

# 총 정리!!

리눅스 커널은 하드웨어를 직접 제어하면서, 사용자 프로그램이 하드웨어와 안전하게 상호작용할 수 있도록 중개합니다.

 

# 리눅스란 무엇인가요?

리눅스는 1991년, 핀란드의 리누스 토르발스가 개발한 오픈 소스 운영체제 커널입니다.

현재 서버, 클라우드, 모바일, 임베디드 시스템까지 광범위하게 사용되고 있습니다.

운영체제 커널 및 해당 커널을 탑재한 다양한 배포판을 아우릅니다.

 

# 리눅스 배포판

리눅스 배포판은 커널을 중심으로 여러 시스템 소프트웨어 및 응용 소프트웨어를 같이 묶어서 구성한 풀 커스텀 운영체제입니다.

주요 용도에 따라 데스크톱 용도, 서버 용도, 임베디드 용도 다용도 배포판 등이 존재합니다.

종류로는 대표적으로 데비안 계열과 페도라 계열이 있습니다.

출처: 나무위키

흔히 많이 사용하는 Amazon Linux, Red Hat Enterprise Linux, CentOS가 페도라 계열이고 ,패키지 형식은 .rpm이며 패키지 관리자로 yum/dnf를 사용하는 것이 특징입니다. 

 데비안 계열로는 대표적으로 Ubuntu, Kali Linux 등이 있습니다. 패키지 형식은 .deb이며 패키지 관리자는 apt를 사용합니다. 가장 많은 리눅스 배포판을 가지고 있는게 특징입니다.

 

# 구성요소

구성요소  설명 예시
커널 (Kernel) 하드웨어와 소프트웨어를 연결해주는 핵심, 프로세스 관리, 메모리 관리, 파일 시스템, 네트워크 관리 등을 담당 리눅스 커널 6.x, 5.x 버전 등
셸 (Shell) 사용자가 리눅스에 명령을 내리는 인터페이스, 명령어를 해석하고 커널에 전달 bash, zsh, fish 등
파일 시스템 (File System) 데이터를 저장하고, 구조화하는 방식, 파일/디렉토리로 구성 ext4, xfs, btrfs 등
유틸리티 및 어플리케이션 기본 명령어나 프로그램들, 파일 조작, 시스템 관리 네트워킹 등을 지원 ls, cp, mv, top, ss, systemctl 등

위 내용은 추후에 자세하게 다시 올릴 예정입니다.

+ Recent posts