[멋쟁이사자처럼부트캠프] ターミナルちゃん、超カワイイ!

[멋쟁이사자처럼부트캠프] ターミナルちゃん、超カワイイ!

오늘字

터미널 아이콘을 보고 문득 그런 생각이 듭니다. 이 얼마나 귀여운 모습인가...

터미널 짱를 보니 갑자기 제가 행복해집니다. 아리따운 터미널 짱과 같이 있다니...... 이런 터미널 짱을 위해서 명령어를 공부해서 터미널 짱을 잘 챙겨봅시다!!@@!

프롬프트(Prompt)와 홈 디렉터리

A. 프롬프트 개념

프롬프트는 시스템이 사용자의 명령을 입력받을 준비가 되었다는 것을 나타내는 신호입니다.

  • 기본 포맷 분석: ubunt@lris-minecraft-frp-vnic:~$
  • ubunt: 현재 로그인한 사용자 계정
  • lris-minecraft-frp-vnic: 시스템의 호스트명 (cat /etc/hostname으로 확인 가능)
  • ~: 현재 사용자의 홈 디렉터리 경로 의미 (/home/user1)
  • $ / #: 사용자 권한 구분 기호

B. 사용자 권한에 따른 프롬프트 구분

구분 프롬프트 기호 주요 특징 및 작업 권한
일반 사용자 $ 프로그램 실행, 파일 생성 가능

⚠️ 오직 자신에게 할당된 홈 디렉터리(~) 내에서만 작업 가능
관리자 (root) # 시스템 전체 권한 보유

사용자 생성, 패키지 설치 및 삭제(apt), 시스템 서비스 관리 등 수행

C. 쉘(Shell) 정보 확인 환경변수

  • 현재 사용자 확인: whoami
  • 호스트 정보 확인: hostname
  • 현재 지정된 쉘 확인: echo $SHELL (출력값: /bin/bash 등)
  • 프롬프트 포맷 확인 및 변경: echo $PS1 (변경 시: export PS1="[변경할포맷]")

일반 사용자에서 관리자(root) 권한으로 전환하는 방법

1) 일회성 관리자 권한 실행

명령어 앞에 sudo를 붙여 해당 명령만 임시로 관리자 권한으로 실행합니다.

sudo apt update
sudo apt install openssh-server

2) root 계정 쉘로 완전히 전환 ($ ──> #)

  • 방식 A (현재 작업 경로 유지): sudo -s (또는 sudo su)
ubunt@lris-minecraft-frp-vnic:~$ sudo -s
root@lris-minecraft-frp-vnic:/home/ubuntu# pwd
/home/ubuntu

  • 방식 B (root 계정의 환경까지 완벽 복사 및 root 홈으로 이동): sudo su -
ubuntu@lris-minecraft-frp-vnic:~$ sudo su -
root@lris-minecraft-frp-vnic:~# pwd
/root

3) 관리자 인증 캐시 삭제하기

sudo 비밀번호를 한 번 입력하면 일정 시간 동안 재입력을 요구하지 않습니다. 이 인증 캐시를 즉시 만료시키려면 다음을 입력합니다.

sudo -k

💡 su 명령어 요약su : 관리자(root) 계정으로 전환 (패스워드 필요)su 사용자명 : 현재 환경 변수를 유지한 채 지정한 사용자로 전환su - 사용자명 : 지정한 사용자의 환경 변수와 홈 디렉터리까지 모두 반영하여 전환

리눅스 명령어 매뉴얼 및 위치 확인

1) man 명령어 (상세 설명서)

man ls  # ls 명령어의 상세 매뉴얼 페이지 오픈

  • 매뉴얼 화면 내 단축키:
  • q: 매뉴얼 종료하고 터미널로 복귀
  • g / G: 맨 위로 이동 / 맨 아래로 이동
  • Ctrl + B / Ctrl + F: Page Up / Page Down
  • /검색어: 본문 내 단축어 검색 (n: 다음 매칭 단어, N: 이전 매칭 단어)

2) --help 옵션 (간이 설명서)

ls --help  # 명령어 뒤에 붙여 핵심 옵션만 빠르게 확인

3) which 명령어 (명령어 실행 파일의 실제 경로 확인)

which ls   # 출력: /usr/bin/ls


터미널 조작 꿀팁 및 히스토리(History) 단축키

A. 필수 터미널 단축키

  • Tab 키: 파일명, 디렉터리명, 명령어 자동 완성 (강력 추천)
  • Ctrl + L: 터미널 화면 깨끗하게 정리 (clear 명령어와 동일)
  • Ctrl + A / Ctrl + E: 커서를 문장의 맨 앞으로 / 맨 뒤로 이동
  • Ctrl + U / Ctrl + K: 커서 기준 앞쪽 전체 삭제 / 뒤쪽 전체 삭제
  • Ctrl + R: 이전에 사용했던 명령어 실시간 검색 (검색 후 Esc로 모드 탈출 가능)

B. 명령어 히스토리 관리 및 활용

터미널에 입력했던 명령어들은 가상 메모리와 물리 파일에 기록됩니다.

  • 기록된 목록 보기: history
  • 히스토리 기반 재실행 단축키:
  • !번호: 히스토리 리스트의 해당 번호 명령어 실행 (예: !3 입력 시 apt update 실행)
  • !!: 바로 직전에 내렸던 명령어 그대로 다시 실행
  • !글자: 해당 글자로 시작하는 가장 최근 명령어 실행
  • 메모리 히스토리 비우기: history -c
  • 물리적인 기록 파일: ~/.bash_history
  • 완전 영구 삭제를 원할 시: rm -rf ~/.bash_history (재접속 시 다시 자동 생성됨)
  • 💡 꿀팁: 명령어 입력 시 맨 앞에 공백(한 칸 띄우기)을 주고 명령어를 입력하면 해당 명령은 히스토리 기록에 남지 않습니다.

리눅스 파일 시스템 (File System)

1. 개념 및 파일 종류

⚠️ 리눅스의 대원칙: "Linux는 모든 장치, 디렉터리 등 모든 것을 '파일'로 간주하여 관리한다."
  • 가. 일반 파일: 일반 데이터(텍스트, 이미지, 바이너리 등)를 저장하는 파일
  • 나. 디렉터리: 파일들을 체계적으로 분류하기 위한 폴더. 리눅스에서는 디렉터리 자체도 하나의 파일로 취급됩니다.
  • 다. 심볼릭 링크: 윈도우의 '바로가기 아이콘'과 같은 개념의 연결 파일
  • 라. 장치 파일: 하드웨어 장치들을 제어하기 위한 파일 (예: 첫 번째 디스크 /dev/sda, 두 번째 디스크 /dev/sdb)

2. 파일 종류 및 데이터 형식 확인 방법

A. file 명령어 활용 (가장 정확한 파일 형식 확인)

file /etc/passwd   # 출력: /etc/passwd: ASCII text (텍스트 파일)
file /etc          # 출력: /etc/: directory (디렉터리 파일)
file /dev/sda      # 출력: /dev/sda: block special (블록 장치 파일)

💡 리눅스 표준 입출력 장치 파일 파일 매핑 (Java의 System.in/out과 일치)file /dev/stdin : 0번 (표준 입력)file /dev/stdout : 1번 (표준 출력)file /dev/stderr : 2번 (표준 에러)

B. ls -F 옵션 활용 (끝 문자로 종류 구별)

ls -aF /etc

  • 이름 끝에 붙는 기호의 의미:
  • / : 디렉터리 (Folder)
  • @ : 심볼릭 링크 (바로가기)
  • * : 실행 파일 (Executable)
  • 기호 없음 : 일반 파일

3. 디렉터리 계층 구조

리눅스는 드라이브 개념(C:\, D:\)이 없으며, 최상위 디렉터리인 / (루트 디렉터리)를 기점으로 모든 것이 나무뿌리처럼 뻗어나가는 단일 트리 구조입니다.

                  / (최상위 루트 디렉터리)
  ┌───────┬───────┼───────┬───────┬───────┐
/bin   /etc    /usr    /home   /tmp    /dev
                          │
                        /user1 (일반사용자 홈)

A. 주요 핵심 디렉터리 역할 요약

  • /bin : 리눅스 기본 시스템 명령어가 들어있는 방
  • /home: 일반 사용자들의 개인 홈 디렉터리가 생성되는 공간 (예: /home/user1)
  • /root: 최고 관리자(root)만을 위한 독립된 홈 디렉터리
  • /etc : 리눅스 시스템 및 패키지들의 모든 중요 설정 파일 보관소
  • /usr : 일반 사용자들이 쓰는 응용프로그램 설치 경로
  • /var : 로그(Log) 파일이나 데이터베이스 등 수시로 변경되는 가변 데이터 저장소
  • /tmp : 시스템이나 프로그램이 사용하는 임시 보관소 (재부팅 시 삭제될 수 있음)

B. 트리 구조 시각화 패키지 (tree)

sudo apt update && sudo apt install tree -y
tree     # 현재 디렉터리 하위 구조 시각화
tree -d  # 오직 디렉터리 구조만 시각화


4. 홈 디렉터리 vs 작업 디렉터리

  • 홈 디렉터리 (~): 로그인 시 사용자가 처음 위치하게 되는 고유의 영토입니다. 환경변수 $HOME에 주소가 설정되어 있습니다. 보안을 위해 일반 사용자 공간(/home/사용자)과 관리자 공간(/root)이 엄격히 분리되어 있습니다.
  • 작업 디렉터리 (.): 현재 내가 명령어를 내리며 머물고 있는 공간을 뜻합니다. pwd 명령어로 현재 작업 디렉터리의 전체 경로를 출력할 수 있습니다.
  • . : 현재 디렉터리
  • .. : 상위(부모) 디렉터리

5. 경로 이동 (cd)

절대 경로(/로 시작하여 고정된 위치를 찾음)와 상대 경로(현재 작업 공간 기점)를 모두 활용해 이동합니다.

cd /etc      # 절대 경로로 /etc 이동
cd ../tmp    # 상대 경로로 부모로 올라간 뒤 tmp 디렉터리로 이동
cd ~         # 로그인한 사용자의 홈 디렉터리로 즉시 이동
cd           # 아무것도 치지 않아도 홈 디렉터리로 즉시 이동


6. 디렉터리 내용 상세 조회 (ls)

ls [옵션] [대상경로]

  • 핵심 옵션 조합:
  • -a : 숨김 파일(파일명이 .으로 시작하는 파일)까지 전부 출력
  • -l : 파일의 상세 정보(권한, 크기, 수정일 등) 리스트 형태로 출력
  • -h : 파일 크기를 가독성 있게 단위 조합(K, M, G)으로 변경하여 출력
  • -R : 하위 디렉터리 내부까지 재귀적으로 전부 탈탈 털어서 출력
  • -i : 파일 고유 식별 번호인 inode 번호 출력

📊 ls -l 출력 결과 완벽 분석

d  rwxr-xr-x.  2  user  user  4096  2월 13 22:14  공개
①      ②     ③   ④    ⑤    ⑥         ⑦       ⑧

  1. ① 파일 종류: d(디렉터리), -(일반파일), l(심볼릭링크)
  2. ② 권한(Permission): 소유자 권한(rwx) / 그룹 권한 (r-x) / 기타 사용자 권한 (r-x)
  3. ③ 하드 링크 수: 해당 파일에 연결된 하드 링크의 개수
  4. ④ 소유자: 파일을 소유한 사용자 계정명
  5. ⑤ 소유 그룹: 파일을 소유한 그룹명
  6. ⑥ 파일 크기: 바이트(Byte) 단위 크기
  7. ⑦ 수정 날짜: 파일이 마지막으로 생성/변경된 시간
  8. ⑧ 파일명: 디렉터리 혹은 파일의 이름

7. 파일 내용 확인 명령어 가이드 (4가지 방식)

1) cat (데이터 용량이 적을 때)

파일 내용 전체를 터미널 화면에 한 번에 쏟아냅니다.

cat -n /etc/passwd  # -n 옵션 사용 시 줄 번호(Line Number)와 함께 출력

2) less (데이터 내용이 방대할 때 ★실무 정석)

화면 단위로 끊어서 출력해주며 대용량 로그 분석 시 필수적입니다.

  • 조작법: man 명령어 단축키와 동일 (q로 종료, /검색어로 키워드 검색 가능, 화살표 및 PageUp/Down 동작)

3) tail (파일의 뒷부분만 보기)

기본적으로 파일의 마지막 10줄을 출력합니다.

tail -n 3 /etc/passwd  # 마지막 3줄만 커스텀하여 출력

  • 🔥 실무 핵심 옵션 -F (실시간 로그 모니터링):
    터미널 창 두 개를 열어 로그 기록을 실시간 확인하는 모니터링 기법입니다.
# 1번 터미널 창: 실시간 인증 로그 대기 상태 진입
tail -F /var/log/auth.log

# 2번 터미널 창: 일부러 틀린 암호로 관리자 로그인 시도
sudo -s  (비밀번호 고의 오입력)

# 결과: 1번 터미널 창에 실시간으로 인증 실패(Failure) 로그가 올라오는 것을 목격 가능!

4) head (파일의 앞부분만 보기)

기본적으로 파일의 상위 10줄을 출력합니다.

head -n 5 /etc/passwd  # 상위 5줄만 출력


8. 주기적 명령 반복 실행 모니터링 (watch)

지정한 명령어를 특정 주기마다 반복 실행하여 변화를 화면에 하이라이트해 주는 유용한 도구입니다.

watch [옵션] 명령어

  • 옵션: -n [초] (실행 주기 지정), -d (기존 화면과 바뀐 변동 사항 하이라이팅)

📈 실시간 패킷 전송 모니터링 실습

# 1. 네트워크 도구 패키지 설치
sudo apt install net-tools -y

# 2. 1초 주기로 인터페이스 상태 확인 모드 진입 (패킷 크기 주시)
watch -n 1 -d ifconfig

# 3. 이 상태에서 파이어폭스 등 웹 브라우저를 켜고 사이트에 접속하면?
# -> 패킷 전송량이 증가함에 따라 바뀐 수치 데이터가 터미널 화면에 실시간으로 번쩍이며 하이라이팅됩니다!

독자 분들도 터미널 짱을 소중히 다뤄봅시다www