CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
    • 1.셸 첫걸음: 명령 한 줄을 읽는 법
    • 2.디렉터리와 파일 다루기
    • 3.내용 보기와 찾기
    • 4.사용자와 계정 관리
    • 5.Week 3 종합 복습: 명령어 한 장 정리
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 3/Day 1

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 3 · Day 1읽기 약 9분
핵심 정리
  • 프롬프트 끝의 $는 일반 사용자, #는 root다. 이 한 글자가 권한을 말해준다.
  • 명령은 명령어 [옵션] [인자] 세 토막으로 읽는다.
  • 옵션은 짧은 형(-a) 과 긴 형(--all) 이 있고, 짧은 형은 -la처럼 묶어 쓸 수 있다.
  • /로 시작하면 절대 경로, 아니면 현재 위치 기준의 상대 경로다. .=현재, ..=상위, ~=홈.
  • 모르는 명령은 man 명령어 로 찾는다. Tab 자동완성과 ↑ 히스토리가 오타를 줄여준다.

Day 1 - 셸 첫걸음: 명령 한 줄을 읽는 법

프롬프트 읽기

로그인하면 이런 줄이 뜬다. 이게 프롬프트, 명령을 기다린다는 표시다.

   user@localhost:~$
    │      │      ││
    │      │      │└── $ = 일반 사용자,  # = root
    │      │      └─── 현재 디렉터리 (~ 는 홈 디렉터리)
    │      └────────── 호스트명(컴퓨터 이름)
    └───────────────── 로그인한 사용자 이름
  • $와 #의 구분이 가장 중요하다. 교재나 문서에서 #으로 시작하는 명령은 "관리자 권한으로 실행하라"는 뜻이다.
  • root로 상시 로그인하지 않는 것이 원칙이다. 필요할 때만 sudo로 잠깐 권한을 올린다.

배포판마다 프롬프트 모양이 다르다

프롬프트는 PS1이라는 변수에 적힌 형식대로 그려진다. 배포판마다 기본값이 달라 같은 상황도 다르게 보인다.

계열보이는 모양특징
RedHat 계열 (CentOS · Rocky)[user@localhost ~]$대괄호로 감싸고, 현재 디렉터리의 마지막 이름만 보여준다
Debian 계열 (Ubuntu)user@localhost:~$콜론으로 잇고, 현재 디렉터리의 경로 전체를 보여준다
[user@localhost ~]$ cd /usr/share/doc
[user@localhost doc]$ su -
Password:
[root@localhost ~]#
  • 시험 지문에는 [root@www ~]# 같은 RedHat 계열 모양이 쓰인다. 모양이 달라도 읽는 법은 같다 — 사용자, 호스트, 위치, 그리고 맨 끝의 $ / #.
  • 위 예에서 /usr/share/doc으로 옮기자 위치 자리가 doc으로 바뀌었고, su -로 root가 되자 끝 글자가 #로 바뀌었다.
  • 프롬프트의 각 토막은 명령으로도 확인할 수 있다.
whoami       # user         ← 로그인한 사용자 이름
hostname     # localhost    ← 호스트명
pwd          # /home/user   ← 현재 디렉터리의 전체 경로

명령의 구조

   $ ls -l /home
     │   │    │
     │   │    └── 인자(argument) — 무엇에 대해
     │   └─────── 옵션(option)   — 어떻게
     └─────────── 명령어(command) — 무엇을
토막설명예
명령어실행할 프로그램 이름ls, cp, mkdir
옵션동작 방식을 바꾼다. 보통 -로 시작-l, -a, --help
인자대상. 파일명·디렉터리·문자열/home, a.txt
  • 셸은 공백으로 토막을 나눈다. 그래서 파일명에 공백이 있으면 따옴표로 묶거나 \ 로 escape 해야 한다.
  • 대소문자를 구분한다. LS는 ls가 아니다.
  • 옵션과 인자는 둘 다 생략할 수 있다. ls만 쳐도 되고, ls /home처럼 옵션 없이 인자만 줘도 된다. 대괄호 [ ]가 "생략 가능"이라는 뜻이다.

공백이 토막을 가른다 — 따옴표가 필요한 순간

touch my file.txt        # my 와 file.txt, 파일이 두 개 생긴다
touch "my file.txt"      # 공백이 든 파일 하나
touch my\ file.txt       # 위와 같다 (\ 가 바로 뒤 공백 하나를 보호)
표기셸이 하는 일
"..." 큰따옴표공백은 보호하되 $변수는 값으로 바꾼다
'...' 작은따옴표안의 글자를 전부 글자 그대로 둔다
\ 역슬래시바로 뒤 한 글자만 보호한다
echo "$HOME"     # /home/user   ← 변수의 값이 나온다
echo '$HOME'     # $HOME        ← 글자 그대로 나온다

한 줄에 명령 여러 개

기호뜻예
;앞 명령의 성공 여부와 무관하게 차례로 실행cd /tmp; ls
&&앞 명령이 성공했을 때만 뒤를 실행mkdir work && cd work
||앞 명령이 실패했을 때만 뒤를 실행cd work || echo "없음"

옵션의 두 형태

형태모양특징
짧은 형(short)-a한 글자. 여러 개를 묶을 수 있다 → -l -a = -la
긴 형(long)--all뜻이 분명하다. 묶을 수 없다
ls -l -a /home     # 따로 쓰기
ls -la /home       # 묶어 쓰기 — 같은 뜻
ls --all /home     # 긴 형

함정: 긴 형은 --(하이픈 두 개) 로 시작한다. -all처럼 하이픈 하나로 쓰면 -a -l -l로 해석된다.

값을 받는 옵션

옵션 가운데는 뒤에 값이 따라붙는 것이 있다. 짧은 형은 띄어 쓰고, 긴 형은 =로 잇는 것이 보통이다.

head -n 5 a.txt          # 짧은 형 + 값
head --lines=5 a.txt     # 긴 형 + 값 — 같은 뜻
  • 이때 5는 인자가 아니라 -n 옵션의 값이다. 명령이 처리할 대상(인자)은 a.txt 하나다.
  • GNU 명령 대부분은 --help(사용법)와 --version(버전)을 공통으로 받는다. 옵션이 기억나지 않으면 명령어 --help부터 쳐 본다.

셸은 명령을 어디서 찾나

ls라고만 쳐도 실행되는 것은, 셸이 PATH 변수에 적힌 디렉터리를 앞에서부터 차례로 뒤져 같은 이름의 실행 파일을 찾아 주기 때문이다.

echo $PATH
# /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/bin
which cp
# /usr/bin/cp

우리가 치는 "명령"은 사실 세 종류다.

종류설명예
내장 명령(builtin)셸 프로그램 안에 들어 있는 명령. 별도 실행 파일이 필요 없다cd, echo, history, exit
외부 명령디스크에 실행 파일로 있는 명령. PATH에서 찾는다ls, cp, man
별칭(alias)긴 명령에 붙여 둔 짧은 이름ll → ls -l
type cd      # cd is a shell builtin
type ls      # ls is aliased to `ls --color=auto'
type cp      # cp is /usr/bin/cp
  • command not found 가 나오면 셋 중 하나다 — 오타, 프로그램이 설치되지 않음, 실행 파일이 PATH 밖에 있음.
  • 현재 디렉터리는 PATH에 들어 있지 않다. 그래서 지금 위치에 있는 실행 파일은 ./script.sh처럼 경로를 붙여 실행한다.
  • which는 PATH에서 실행 파일의 위치를 찾고, type은 그 이름이 내장·별칭·외부 중 무엇인지까지 알려 준다. 내장 명령은 실행 파일이 따로 없을 수 있어 type으로 확인하는 편이 정확하다.

경로 읽기

표기뜻
/루트 디렉터리. 모든 경로의 시작점
.현재 디렉터리
..한 단계 위(상위) 디렉터리
~현재 사용자의 홈 디렉터리
-직전에 있던 디렉터리 (cd -)
   절대 경로   /home/user/docs/a.txt     ← / 로 시작. 어디서 실행하든 같은 곳
   상대 경로   docs/a.txt                ← 현재 위치 기준
              ../user2/b.txt            ← 위로 한 칸 갔다가 내려감
  • /로 시작하는가만 보면 절대·상대가 갈린다. 이 한 줄이 시험 포인트다.

모를 때 찾는 법

명령하는 일
man 명령어매뉴얼 페이지. 가장 표준적인 도움말
명령어 --help간단한 사용법 요약
info 명령어GNU의 상세 문서
whatis 명령어한 줄 설명
apropos 키워드키워드로 명령 검색
which 명령어실행되는 파일의 경로
type 명령어그것이 명령인지 별칭인지 내장인지

man 페이지의 섹션 번호

같은 이름이 명령어이기도 하고 설정 파일이기도 할 때 섹션으로 구분한다.

섹션내용
1일반 사용자 명령
5설정 파일 형식
8시스템 관리자 명령
man 1 passwd      # passwd 명령
man 5 passwd      # /etc/passwd 파일의 형식
  • man 안에서는 q로 나가고, 화살표·Space로 넘기며, /단어로 검색한다.
  • 섹션을 지정하지 않으면 정해진 검색 순서에서 처음 발견된 하나만 나온다. 그래서 man passwd는 명령(1)을 보여 주고, 파일 형식을 보려면 5를 명시해야 한다.

섹션은 원래 아홉 개다. 시험에는 1·5·8이 주로 나오지만 전체 그림을 알아 두면 헷갈리지 않는다.

섹션내용섹션내용
1일반 사용자 명령6게임
2시스템 호출7기타(규약·표준 등)
3라이브러리 함수8시스템 관리자 명령
4특수 파일(장치)9커널 루틴
5설정 파일 형식

man 페이지 한 장의 구성

항목담긴 것
NAME명령 이름과 한 줄 설명
SYNOPSIS사용 형식 — 옵션과 인자를 어떤 순서로 쓰는가
DESCRIPTION상세 설명
OPTIONS옵션별 설명
FILES관련 설정 파일
SEE ALSO함께 볼 다른 매뉴얼
SYNOPSIS
       ls [OPTION]... [FILE]...
  • [ ] 는 생략할 수 있다는 뜻, ... 는 여러 개를 이어 쓸 수 있다는 뜻이다. 위 한 줄은 "옵션도 파일도 없어도 되고, 여러 개 줘도 된다"로 읽는다.
  • SEE ALSO에 passwd(5)처럼 적힌 괄호 안 숫자가 바로 섹션 번호다.

도움말 명령끼리의 관계

명령같은 일을 하는 man 옵션찾는 방식
whatis 이름man -f 이름이름이 정확히 일치하는 매뉴얼의 한 줄 설명
apropos 키워드man -k 키워드이름과 설명에 키워드가 들어 있는 매뉴얼 전부
whatis passwd
# passwd (1)   - update user's authentication tokens
# passwd (5)   - password file
apropos "copy files"
# cp (1)       - copy files and directories
  • 명령 이름을 알면 whatis, 모르고 하려는 일만 알면 apropos 다.
  • 내장 명령은 man보다 help cd 처럼 셸의 help로 보는 것이 빠르다.

손이 덜 아프게 하는 습관

키하는 일
Tab명령·파일명 자동 완성. 두 번 누르면 후보 목록
↑ / ↓이전에 친 명령 불러오기
history명령 기록 보기
Ctrl + C실행 중인 명령 중단
Ctrl + D입력 종료 / 로그아웃
Ctrl + L화면 지우기 (clear와 같음)

Tab 자동완성은 오타를 줄여줄 뿐 아니라 경로가 맞는지 확인하는 수단이기도 하다. 완성이 안 되면 그 경로가 없는 것이다.

Ctrl + C · Z · D 는 서로 다른 일을 한다

셋 다 "멈춘다"처럼 보이지만 결과가 다르다.

키실제로 일어나는 일그 뒤
Ctrl + C실행 중인 명령에 중단 신호(SIGINT) 를 보낸다명령이 끝난다
Ctrl + Z일시 정지 신호를 보낸다명령이 멈춘 채 남는다. fg로 다시 이어 간다
Ctrl + D신호가 아니라 "입력이 끝났다"(EOF) 는 표시입력을 기다리던 명령이 정상 종료한다. 빈 프롬프트에서는 로그아웃
$ sleep 100
^Z
[1]+  Stopped                 sleep 100
$ fg
sleep 100
^C
$
  • Ctrl + Z로 멈춘 명령은 사라진 것이 아니다. 종료하려던 것이었다면 Ctrl + C를 썼어야 한다.
  • 줄을 고칠 때는 Ctrl + A(줄 맨 앞으로) · Ctrl + E(줄 맨 끝으로) · Ctrl + U(커서 앞을 지움)가 편하다.

내일은 이 문법으로 실제 파일과 디렉터리를 다루는 명령들을 익힌다.

📖 용어

  • 프롬프트(Prompt) : 셸이 명령을 기다린다는 표시. 사용자·호스트·현재 위치·권한을 보여준다.
  • 옵션(Option) : 명령의 동작 방식을 바꾸는 표시. -a 같은 짧은 형과 --all 같은 긴 형이 있다.
  • 인자(Argument) : 명령이 처리할 대상. 파일명이나 디렉터리 이름이 온다.
  • 절대 경로 : /부터 시작하는 전체 경로. 현재 위치와 무관하게 같은 곳을 가리킨다.
  • 상대 경로 : 현재 디렉터리를 기준으로 하는 경로.
  • 홈 디렉터리 : 사용자에게 할당된 개인 디렉터리. ~로 줄여 쓴다.
  • man 페이지 : 명령의 공식 매뉴얼. 섹션 번호로 같은 이름을 구분한다.
  • 자동 완성 : Tab 키로 명령·경로의 나머지를 채워 넣는 기능.
  • 내장 명령(Builtin) : cd처럼 셸 안에 들어 있는 명령. type으로 확인하고 help로 도움말을 본다.
  • PATH : 셸이 명령의 실행 파일을 찾을 때 뒤지는 디렉터리 목록. 현재 디렉터리는 들어 있지 않다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 셸 프롬프트의 마지막 문자가 #일 때 알 수 있는 것으로 알맞은 것은?

문제 2

다음 중 ls -l -a 와 같은 의미를 갖는 명령으로 알맞은 것은?

문제 3

다음 중 절대 경로에 해당하는 것으로 알맞은 것은?

문제 4

다음 중 /etc/passwd 파일의 형식에 대한 매뉴얼을 보려고 할 때 알맞은 명령은?

문제 5

다음 중 실행 중인 명령을 강제로 중단할 때 사용하는 키 조합으로 알맞은 것은?

이전Week 2 종합 복습: 설치에서 부팅까지 한 줄로Week 2 · Day 5다음 디렉터리와 파일 다루기Week 3 · Day 2

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 프롬프트 읽기
  • 배포판마다 프롬프트 모양이 다르다
  • 명령의 구조
  • 공백이 토막을 가른다 — 따옴표가 필요한 순간
  • 한 줄에 명령 여러 개
  • 옵션의 두 형태
  • 값을 받는 옵션
  • 셸은 명령을 어디서 찾나
  • 경로 읽기
  • 모를 때 찾는 법
  • man 페이지의 섹션 번호
  • man 페이지 한 장의 구성
  • 도움말 명령끼리의 관계
  • 손이 덜 아프게 하는 습관
  • Ctrl + C · Z · D 는 서로 다른 일을 한다
  • 용어
  • 연습 문제