바이브 빌드 (Vibe Build)

혼자서 서버구축, 바이브 코딩, WebUI 제작, 배포, 운영, 응용과정을 기록하는 기술 블로그 입니다.

Linux 기본 명령어

Linux 기본 명령어

Article Guide

목  차

핵심 요약

Linux 서버 관리에서는 현재 위치와 대상을 확인하고, 한 번에 하나의 명령을 실행한 뒤 결과를 검증하는 습관이 중요합니다. 처음에는 pwd, ls, cd, mkdir, touch, cat, cp, mv, rm처럼 파일과 폴더를 다루는 명령부터 익히면 됩니다.

명령은 일반적으로 명령어 옵션 대상 형식으로 사용합니다. 삭제·이동·재귀 옵션과 sudo는 시스템에 직접 영향을 줄 수 있으므로 실행 전에 현재 위치, 대상 경로와 예상 범위를 다시 확인합니다. Linux 서버는 일반적으로 마우스보다 터미널에 명령어를 입력해서 관리합니다.

처음에는 검은 화면에 명령어를 입력하는 방식이 어렵게 느껴질 수 있습니다. 하지만 실제 서버 관리에서 반복해서 사용하는 명령어는 많지 않습니다.

먼저 다음 작업에 필요한 명령어부터 익히면 됩니다.

  • 현재 위치 확인하기
  • 폴더와 파일 목록 보기
  • 폴더 이동하기
  • 폴더와 파일 만들기
  • 파일 복사하기
  • 파일과 폴더 이동하기
  • 파일과 폴더 삭제하기
  • 파일 내용 확인하기
  • 명령어 도움말 보기
  • 서버 종료 및 재부팅하기

이 글에서는 Ubuntu 서버를 기준으로 Linux 기본 명령어를 설명합니다.

터미널과 명령어 구조

Linux 터미널의 기본 구조

Linux 서버에 로그인하면 다음과 비슷한 입력 줄이 나타납니다.

apple2ne1@project-dev-server:~$

각 부분의 의미는 다음과 같습니다.

apple2ne1 @ project-dev-server : ~ $
사용자명     서버 이름             현재 위치
  • apple2ne1: 현재 로그인한 사용자
  • project-dev-server: 접속한 서버의 이름
  • ~: 현재 사용자의 홈 폴더
  • $: 일반 사용자 권한으로 로그인한 상태

관리자 계정인 root로 로그인하면 $ 대신 #가 표시될 수 있습니다.

root@project-dev-server:~#

일반적으로는 root 계정으로 직접 작업하기보다 일반 사용자로 로그인한 후 필요한 명령에만 sudo를 붙이는 것이 안전합니다.

SSH로 Linux 서버에 접속한 Terminal에서 사용자명, 서버 호스트 이름, 홈 폴더와 일반 사용자 프롬프트가 표시된 화면

명령어의 기본 형식

Linux 명령어는 일반적으로 다음 형식으로 사용합니다.

명령어 옵션 대상

예를 들어 다음 명령을 살펴보겠습니다.

ls -la /home

각 부분의 의미는 다음과 같습니다.

ls      -la      /home
명령어   옵션      대상 경로
  • ls: 파일과 폴더 목록 확인
  • -la: 자세한 정보와 숨김 파일 표시
  • /home: 확인할 폴더

모든 명령어에 옵션과 대상이 필요한 것은 아닙니다.

pwd

pwd처럼 명령어만 입력해 사용하는 경우도 있습니다.

현재 위치와 경로 확인하기

pwd: 현재 위치 확인

현재 어느 폴더에서 작업하고 있는지 확인하려면 pwd 명령을 사용합니다.

pwd

pwd는 print working directory의 줄임말입니다.

실행 결과:

/home/apple2ne1

현재 작업 위치가 /home/apple2ne1이라는 뜻입니다.

서버에서 파일을 복사하거나 삭제하기 전에는 pwd로 현재 위치를 확인하는 습관을 들이는 것이 좋습니다.

절대 경로와 상대 경로

Linux에서 파일이나 폴더의 위치를 나타내는 방법에는 절대 경로와 상대 경로가 있습니다.

절대 경로

최상위 폴더인 /부터 시작하는 전체 경로입니다.

/home/apple2ne1/project

절대 경로는 현재 위치와 관계없이 항상 같은 위치를 가리킵니다.

예:

cd /home/apple2ne1/project

상대 경로

현재 위치를 기준으로 표현하는 경로입니다.

현재 위치가 /home/apple2ne1이라면 다음 명령은 그 아래의 project 폴더로 이동합니다.

cd project

상대 경로는 현재 위치에 따라 가리키는 대상이 달라질 수 있습니다.

경로에서 자주 사용하는 기호

Linux 경로에는 몇 가지 특별한 기호가 사용됩니다.

기호 의미
/ Linux 전체 폴더 구조의 시작점
~ 현재 사용자의 홈 폴더
. 현재 폴더
.. 바로 위의 상위 폴더
- 직전에 있던 폴더

예를 들어 다음 명령은 현재 사용자의 홈 폴더로 이동합니다.

cd ~

다음 명령도 같은 결과를 냅니다.

cd

상위 폴더로 이동하려면 다음과 같이 입력합니다.

cd ..

바로 전에 있던 폴더로 돌아가려면 다음 명령을 사용합니다.

cd -

파일과 폴더 목록 확인하기

ls: 목록 보기

현재 폴더에 있는 파일과 하위 폴더를 확인하려면 ls 명령을 사용합니다.

ls

실행 결과 예:

Documents  Downloads  project  notes.txt

색상이 적용된 터미널에서는 폴더와 파일이 서로 다른 색으로 표시될 수 있습니다.

ls -l: 자세히 보기

파일 권한, 소유자, 크기, 수정 시간을 함께 확인하려면 -l 옵션을 사용합니다.

ls -l

실행 결과 예:

drwxr-xr-x 2 apple2ne1 apple2ne1 4096 Jul 20 10:20 project
-rw-r--r-- 1 apple2ne1 apple2ne1  520 Jul 20 10:30 notes.txt

주요 항목은 다음과 같습니다.

권한          소유자       그룹          크기   수정 날짜      이름
drwxr-xr-x   apple2ne1   apple2ne1    4096   Jul 20 10:20   project

첫 번째 글자가 d이면 폴더입니다.

drwxr-xr-x

첫 번째 글자가 -이면 일반 파일입니다.

-rw-r--r--

ls -a: 숨김 파일 보기

Linux에서는 이름이 점으로 시작하는 파일이나 폴더를 숨김 항목으로 취급합니다.

예:

.ssh
.bashrc
.git

숨김 항목을 포함해 확인하려면 다음 명령을 사용합니다.

ls -a

ls -la: 자세한 정보와 숨김 파일 함께 보기

실무에서 가장 자주 사용하는 형태입니다.

ls -la

-l-a 옵션을 함께 사용한 것입니다.

다음 두 명령은 같은 의미입니다.

ls -la
ls -l -a
Linux 터미널에서 `ls`, `ls -l`, `ls -a`와 `ls -la` 명령을 실행해 기본 목록, 상세 정보와 숨김 파일 표시 결과를 비교하는 화면

특정 폴더의 목록 확인

현재 위치를 이동하지 않고 다른 폴더의 내용을 확인할 수도 있습니다.

ls /home

홈 폴더의 내용을 자세히 확인하려면 다음과 같이 입력합니다.

ls -la /home/apple2ne1

폴더 이동하기

cd: 폴더 이동

다른 폴더로 이동할 때 cd 명령을 사용합니다.

cd는 change directory의 줄임말입니다.

cd project

현재 위치 아래의 project 폴더로 이동합니다.

이동 후 현재 위치를 확인합니다.

pwd

홈 폴더로 이동

다음 명령은 현재 사용자의 홈 폴더로 이동합니다.

cd

또는 다음과 같이 입력할 수 있습니다.

cd ~

홈 폴더는 일반적으로 다음과 같은 위치입니다.

/home/사용자명

예:

/home/apple2ne1
Linux 터미널에서 `cd` 명령으로 Directory를 이동한 뒤 `pwd`를 실행해 변경된 현재 경로를 확인하는 화면

상위 폴더로 이동

현재 폴더 바로 위로 이동하려면 다음 명령을 사용합니다.

cd ..

예를 들어 현재 위치가 다음과 같다면,

/home/apple2ne1/project

cd ..를 실행한 후 위치는 다음과 같습니다.

/home/apple2ne1

두 단계 위로 이동하려면 다음과 같이 입력합니다.

cd ../..

최상위 폴더로 이동

Linux 전체 폴더 구조의 시작점으로 이동하려면 다음 명령을 사용합니다.

cd /

/는 root directory라고 부릅니다.

다음과 같은 주요 폴더를 볼 수 있습니다.

ls

실행 결과 예:

bin  boot  dev  etc  home  opt  root  tmp  usr  var
Linux 터미널에서 `cd ..`, `cd ~`와 `cd /` 명령을 차례로 실행하고 `pwd`로 상위 폴더, 홈 폴더와 루트 폴더 이동 결과를 확인하는 화면

이전 폴더로 돌아가기

직전에 있던 폴더로 이동하려면 다음 명령을 사용합니다.

cd -

예:

cd /etc
cd /var
cd -

마지막 명령을 실행하면 다시 /etc로 돌아갑니다.

폴더 만들기

mkdir: 폴더 만들기

새 폴더를 만들려면 mkdir 명령을 사용합니다.

mkdir는 make directory의 줄임말입니다.

mkdir project

현재 위치에 project 폴더가 생성됩니다.

확인:

ls -l

여러 폴더 한 번에 만들기

여러 개의 폴더를 한 번에 만들 수 있습니다.

mkdir images documents backup

다음 세 개의 폴더가 생성됩니다.

images
documents
backup
Linux 터미널에서 `mkdir` 명령으로 Directory를 만든 뒤 `ls -l`을 실행해 생성된 Directory를 확인하는 화면

mkdir -p: 하위 폴더까지 함께 만들기

다음과 같은 여러 단계의 폴더를 한 번에 만들고 싶다고 가정하겠습니다.

project/config/nginx

일반 mkdir 명령으로 실행하면 하위 폴더가 없어서 오류가 발생할 수 있습니다.

mkdir project/config/nginx

오류 예:

mkdir: cannot create directory ‘project/config/nginx’: No such file or directory

이때 -p 옵션을 사용합니다.

mkdir -p project/config/nginx

필요한 하위 폴더까지 모두 생성됩니다.

project
└── config
    └── nginx

-p는 parent directories를 함께 만든다는 의미로 이해하면 쉽습니다.

이미 해당 폴더가 있어도 일반적으로 오류 없이 넘어갑니다.

Linux 터미널에서 `mkdir -p project/config/nginx`를 실행한 뒤 상위 폴더를 포함한 중첩 폴더 구조가 생성된 결과를 확인하는 화면

파일 만들기

touch: 빈 파일 만들기

내용이 없는 빈 파일을 만들려면 touch 명령을 사용합니다.

touch notes.txt

확인:

ls -l

실행 결과 예:

-rw-r--r-- 1 apple2ne1 apple2ne1 0 Jul 20 11:10 notes.txt

파일 크기가 0이므로 아직 내용이 없는 파일입니다.

여러 파일 한 번에 만들기

다음과 같이 여러 개의 빈 파일을 한 번에 만들 수 있습니다.

touch file1.txt file2.txt file3.txt

touch의 또 다른 기능

이미 존재하는 파일에 touch를 실행하면 파일 내용은 바뀌지 않고 수정 시간이 현재 시간으로 갱신됩니다.

touch notes.txt

따라서 touch는 단순히 파일 생성 명령이라기보다 파일의 시간 정보를 갱신하는 명령이기도 합니다.

파일 내용 확인하기

cat: 파일 전체 내용 보기

텍스트 파일의 내용을 한 번에 확인하려면 cat 명령을 사용합니다.

cat notes.txt

내용 예:

Linux server setup notes
SSH port: 22

짧은 파일을 확인할 때 편리합니다.

파일이 매우 길면 내용이 빠르게 지나가므로 다른 명령을 사용하는 것이 좋습니다.

less: 긴 파일 내용 보기

긴 파일을 한 화면씩 확인하려면 less 명령을 사용합니다.

less notes.txt

주요 조작키:

기능
Space 다음 화면
b 이전 화면
방향키 한 줄씩 이동
/단어 단어 검색
n 다음 검색 결과
q 종료

서버 로그나 긴 설정 파일을 확인할 때 자주 사용합니다.

예:

less /var/log/auth.log

권한이 필요한 경우 다음과 같이 실행할 수 있습니다.

sudo less /var/log/auth.log

head: 파일 앞부분 보기

파일의 처음 10줄을 확인하려면 다음 명령을 사용합니다.

head notes.txt

처음 20줄을 보려면 -n 옵션을 사용합니다.

head -n 20 notes.txt

tail: 파일 마지막 부분 보기

파일의 마지막 10줄을 확인하려면 다음 명령을 사용합니다.

tail notes.txt

마지막 20줄:

tail -n 20 notes.txt

tail -f: 실시간 로그 보기

로그 파일에 새 내용이 추가되는 것을 실시간으로 확인하려면 다음 명령을 사용합니다.

tail -f /var/log/auth.log

SSH 접속 기록처럼 계속 갱신되는 로그를 확인할 때 유용합니다.

종료하려면 다음 키를 누릅니다.

Ctrl + C

파일 편집하기

nano: 간단한 텍스트 편집기

터미널에서 파일을 수정할 때 초보자가 사용하기 쉬운 편집기는 nano입니다.

nano notes.txt

파일이 없으면 새 파일이 만들어지고, 파일이 있으면 기존 내용을 편집합니다.

화면 아래쪽에 다음과 같은 단축키가 표시됩니다.

^O Write Out
^X Exit

여기서 ^Ctrl 키를 뜻합니다.

저장하기

Ctrl + O

파일 이름을 확인한 후 Enter를 누릅니다.

종료하기

Ctrl + X

저장하고 종료하기

  1. Ctrl + O
  1. Enter
  1. Ctrl + X

수정한 후 바로 종료하려고 Ctrl + X를 누르면 저장할지 묻는 화면이 나타날 수 있습니다.

Save modified buffer?
  • Y: 저장
  • N: 저장하지 않고 종료
  • Ctrl + C: 종료 취소
Linux 터미널에서 `nano`로 텍스트 파일을 열어 내용을 편집하고 화면 아래에서 저장과 종료 단축키를 확인하는 화면

파일과 폴더 복사하기

cp: 파일 복사

파일을 복사하려면 cp 명령을 사용합니다.

cp는 copy의 줄임말입니다.

cp notes.txt notes-backup.txt

notes.txt를 복사해서 notes-backup.txt라는 새 파일을 만듭니다.

확인:

ls -l

다른 폴더로 파일 복사

현재 위치의 파일을 다른 폴더로 복사할 수 있습니다.

cp notes.txt backup/

파일 이름을 변경하면서 복사할 수도 있습니다.

cp notes.txt backup/server-notes.txt

cp -r: 폴더 복사

폴더를 내부 파일과 함께 복사하려면 -r 옵션을 사용합니다.

cp -r project project-backup

-r은 recursive의 줄임말입니다.

하위 폴더와 파일까지 반복해서 복사한다는 의미입니다.

cp -i: 덮어쓰기 전 확인

같은 이름의 파일이 이미 있을 경우 덮어쓰기 전에 확인하려면 -i 옵션을 사용합니다.

cp -i notes.txt backup/notes.txt

다음과 같은 질문이 나타날 수 있습니다.

cp: overwrite 'backup/notes.txt'?

덮어쓰려면 y, 취소하려면 n을 입력합니다.

cp -a: 속성을 유지하며 복사

권한, 소유권, 시간 정보 등을 최대한 유지하면서 복사하려면 -a 옵션을 사용할 수 있습니다.

cp -a project project-backup

백업 작업에서 자주 사용됩니다.

파일과 폴더 이동하기

mv: 파일 이동

파일을 다른 폴더로 이동하려면 mv 명령을 사용합니다.

mv는 move의 줄임말입니다.

mv notes.txt documents/

현재 위치의 notes.txtdocuments 폴더 안으로 이동합니다.

mv: 파일 이름 변경

Linux에서는 파일 이름을 바꾸는 작업도 mv 명령으로 처리합니다.

mv notes.txt server-notes.txt

notes.txt의 이름이 server-notes.txt로 변경됩니다.

폴더 이름 변경

폴더 이름도 같은 방식으로 변경할 수 있습니다.

mv old-project new-project

여러 파일을 현재 폴더로 이동

여러 파일을 이동할 때는 글롭으로 상위 폴더 전체를 선택하지 말고, 먼저 대상을 확인한 뒤 파일명을 명시하는 편이 안전합니다.

ls -la ..
mv ../notes.txt ../config.yaml .

마지막의 .은 현재 폴더를 뜻합니다. 이 예시는 상위 폴더의 notes.txtconfig.yaml만 현재 폴더로 이동합니다.

상위 폴더 전체를 선택하는 넓은 글롭을 사용하면 현재 폴더의 형제 항목까지 예상하지 않게 이동할 수 있고, 점으로 시작하는 숨김 파일은 선택되지 않습니다. 초보 실습에서는 사용하지 않습니다.

파일과 폴더 삭제하기

rm: 파일 삭제

파일을 삭제하려면 rm 명령을 사용합니다.

rm notes.txt

Linux 터미널에서 삭제한 파일은 일반적으로 휴지통으로 이동하지 않습니다.

명령을 실행하면 즉시 삭제되므로 주의해야 합니다.

여러 파일 삭제

여러 파일을 한 번에 삭제할 수 있습니다.

rm file1.txt file2.txt file3.txt

rm -i: 삭제 전 확인

삭제하기 전에 확인 질문을 표시하려면 -i 옵션을 사용합니다.

rm -i notes.txt

실행 결과 예:

rm: remove regular file 'notes.txt'?

삭제하려면 y, 취소하려면 n을 입력합니다.

처음 Linux를 배울 때는 rm -i를 사용하는 것이 안전합니다.

rmdir: 빈 폴더 삭제

내용이 없는 빈 폴더를 삭제하려면 rmdir 명령을 사용합니다.

rmdir empty-folder

폴더 안에 파일이나 다른 폴더가 있으면 삭제되지 않습니다.

오류 예:

rmdir: failed to remove 'project': Directory not empty

rm -r: 내용이 있는 폴더 삭제

폴더와 그 안의 모든 파일을 함께 삭제하려면 -r 옵션을 사용합니다.

rm -r project

이 명령은 project 폴더와 내부 내용을 모두 삭제합니다.

삭제 전에 하나씩 확인하려면 다음과 같이 입력합니다.

rm -ri project

rm -rf: 강제 삭제

다음 명령은 확인 없이 폴더와 모든 내용을 강제로 삭제합니다.

rm -rf project

옵션 의미:

-r = 하위 항목까지 반복 삭제
-f = 존재하지 않는 파일과 인수를 무시하고 확인 질문을 표시하지 않음

rm -rf는 매우 강력하고 위험한 명령입니다.

특히 다음과 같은 명령은 실행하면 안 됩니다.

sudo rm -rf /

이 명령은 시스템 전체를 삭제 대상으로 지정하는 매우 위험한 명령입니다. 현대 GNU rm은 기본적으로 / 직접 삭제를 거부하지만, 보호 장치를 우회하거나 다른 경로를 잘못 지정한 재귀 삭제는 시스템을 심각하게 손상시킬 수 있습니다.

다음과 같이 경로 변수가 비어 있는 경우도 위험할 수 있습니다.

rm -rf "$TARGET"/*

$TARGET 값이 예상과 다르거나 비어 있으면 잘못된 위치를 삭제할 수 있습니다.

삭제 전에는 반드시 다음 명령으로 확인합니다.

pwd
ls -la

그리고 삭제할 대상을 먼저 출력해 보는 것이 좋습니다.

ls -la project

파일 검색하기

find: 파일과 폴더 찾기

현재 폴더 아래에서 특정 이름의 파일을 찾으려면 다음과 같이 입력합니다.

find . -name "notes.txt"

각 부분의 의미:

find   .   -name   "notes.txt"
검색   현재 위치   이름으로   검색할 이름

대소문자를 구분하지 않고 찾기

-iname을 사용하면 대소문자를 구분하지 않습니다.

find . -iname "notes.txt"

다음 파일들이 모두 검색될 수 있습니다.

notes.txt
Notes.txt
NOTES.TXT

폴더만 찾기

폴더만 검색하려면 -type d를 사용합니다.

find . -type d -name "backup"

파일만 찾기

일반 파일만 검색하려면 -type f를 사용합니다.

find . -type f -name "*.txt"

*.txt는 이름이 .txt로 끝나는 모든 파일을 뜻합니다.

파일 내용 검색하기

grep: 파일 안의 문자열 찾기

파일 내용에서 특정 단어나 문장을 찾으려면 grep 명령을 사용합니다.

grep "SSH" notes.txt

notes.txt에서 SSH가 들어간 줄을 출력합니다.

대소문자를 구분하지 않고 검색

grep -i "ssh" notes.txt

다음 표현을 모두 검색할 수 있습니다.

SSH
ssh
Ssh

줄 번호와 함께 표시

grep -n "SSH" notes.txt

실행 결과 예:

12:SSH port is 22.

12는 해당 문장이 파일의 12번째 줄에 있다는 뜻입니다.

여러 파일과 하위 폴더에서 검색

현재 폴더와 하위 폴더의 모든 파일에서 검색하려면 -r 옵션을 사용합니다.

grep -r "project-dev-server" .

대소문자를 구분하지 않고 줄 번호까지 표시하려면 다음과 같이 입력합니다.

grep -rin "project-dev-server" .

파일 크기와 저장 공간 확인하기

du: 파일과 폴더 사용량 확인

현재 폴더의 전체 사용량을 보기 쉽게 확인하려면 다음 명령을 사용합니다.

du -sh .

옵션 의미:

-s = 합계만 표시
-h = 사람이 읽기 쉬운 단위로 표시

결과 예:

1.2G    .

현재 폴더가 약 1.2GB를 사용하고 있다는 뜻입니다.

특정 폴더 크기 확인

du -sh project

현재 위치의 각 항목 크기를 확인하려면 다음 명령을 사용할 수 있습니다.

du -sh *

숨김 항목은 포함되지 않을 수 있습니다.

df: 디스크 전체 사용량 확인

디스크의 전체 용량과 남은 공간을 확인하려면 다음 명령을 사용합니다.

df -h

결과 예:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       916G   42G  828G   5% /

주요 항목:

  • Size: 전체 크기
  • Used: 사용 중인 공간
  • Avail: 남은 공간
  • Use%: 사용률
  • Mounted on: 연결된 위치

서버 저장 공간이 부족할 때 가장 먼저 확인하는 명령입니다.

시스템과 사용자 정보 확인하기

whoami: 현재 사용자 확인

현재 로그인한 사용자 이름을 확인합니다.

whoami

결과 예:

apple2ne1

id: 사용자와 그룹 정보 확인

현재 사용자의 ID와 소속 그룹을 확인하려면 다음 명령을 사용합니다.

id

실행 결과 예:

uid=1000(apple2ne1) gid=1000(apple2ne1) groups=1000(apple2ne1),27(sudo)

현재 사용자가 sudo 그룹에 포함되어 있다면 관리자 권한이 필요한 명령을 sudo로 실행할 수 있습니다.

groups: 소속 그룹 확인

현재 사용자가 속한 그룹만 간단히 확인하려면 다음 명령을 사용합니다.

groups

결과 예:

apple2ne1 sudo

hostname: 서버 이름 확인

현재 서버의 이름을 확인합니다.

hostname

결과 예:

project-dev-server

더 자세한 시스템 정보를 확인하려면 다음 명령을 사용할 수 있습니다.

hostnamectl

uname: Linux 커널 정보 확인

기본 커널 이름 확인:

uname

전체 정보 확인:

uname -a

Ubuntu 버전 확인

Ubuntu 버전을 확인하려면 다음 명령을 사용합니다.

lsb_release -a

또는 다음 파일을 확인할 수 있습니다.

cat /etc/os-release

결과 예:

NAME="Ubuntu"
VERSION="26.04 LTS"

날짜와 시간 확인

현재 서버 날짜와 시간을 확인합니다.

date

결과 예:

Mon Jul 20 13:30:15 PDT 2026

시간대 설정까지 확인하려면 다음 명령을 사용합니다.

timedatectl

네트워크 기본 명령어

ip addr: IP 주소 확인

서버의 네트워크 주소를 확인하려면 다음 명령을 사용합니다.

ip addr

간단히 다음과 같이 입력할 수도 있습니다.

ip a

출력 내용 중 다음과 같은 부분을 찾습니다.

inet 192.168.1.231/24

여기서 서버 IP 주소는 다음과 같습니다.

192.168.1.231

127.0.0.1은 서버 내부에서만 사용하는 loopback 주소이므로 외부 PC에서 접속할 때 사용하는 주소가 아닙니다.

간단하게 IP 주소만 확인

다음 명령은 서버에 할당된 IP 주소를 간단하게 보여줍니다.

hostname -I

결과 예:

192.168.1.231

여러 네트워크 장치가 있으면 IP 주소가 여러 개 표시될 수 있습니다.

ping: 네트워크 연결 확인

다른 장치와 통신이 되는지 확인하려면 ping 명령을 사용합니다.

ping 192.168.1.240

인터넷 연결 확인:

ping google.com

Linux의 ping은 계속 실행될 수 있습니다.

종료하려면 다음 키를 누릅니다.

Ctrl + C

횟수를 4회로 제한하려면 다음과 같이 입력합니다.

ping -c 4 google.com

ss: 사용 중인 포트 확인

현재 서버에서 열려 있거나 대기 중인 포트를 확인하려면 다음 명령을 사용할 수 있습니다.

ss -tuln

옵션 의미:

  • t: TCP
  • u: UDP
  • l: listening 상태
  • n: 포트 번호를 숫자로 표시

SSH 기본 포트인 22번을 확인하려면 다음과 같이 사용할 수 있습니다.

ss -tuln | grep ":22"
Linux 터미널에서 `ss -tuln` 명령을 실행해 TCP와 UDP 수신 대기 소켓의 로컬 주소와 포트 목록을 확인하는 화면

관리자 권한 사용하기

sudo: 관리자 권한으로 실행

일반 사용자가 시스템 설정을 변경하려면 관리자 권한이 필요할 수 있습니다.

이때 명령 앞에 sudo를 붙입니다.

sudo apt update

sudo는 명령을 다른 사용자 권한으로 실행합니다. 별도로 사용자를 지정하지 않으면 일반적으로 root 권한으로 실행합니다.

처음 실행하면 현재 사용자 비밀번호를 요구할 수 있습니다.

[sudo] password for apple2ne1:

비밀번호를 입력할 때 화면에는 글자나 별표가 표시되지 않습니다.

입력되지 않는 것이 아니라 보안을 위해 화면에 표시하지 않는 것입니다.

비밀번호를 입력한 후 Enter를 누릅니다.

모든 명령에 sudo를 붙이면 안 되는 이유

sudo는 시스템 전체에 영향을 줄 수 있는 강한 권한입니다.

잘못된 명령을 실행하면 다음과 같은 문제가 생길 수 있습니다.

  • 시스템 파일 삭제
  • 권한과 소유자 변경
  • 서비스 중단
  • 부팅 오류
  • 네트워크 연결 끊김

개인 홈 폴더에서 일반 파일을 만들거나 수정할 때는 보통 sudo가 필요하지 않습니다.

예를 들어 다음 명령은 일반 사용자로 실행하는 것이 좋습니다.

mkdir ~/project
touch ~/notes.txt
nano ~/notes.txt

sudo를 사용해 개인 파일을 만들면 소유자가 root가 되어 나중에 일반 사용자가 수정하지 못할 수 있습니다.

프로그램 설치와 업데이트

apt update: 패키지 목록 갱신

Ubuntu에서 프로그램 설치 정보를 갱신하려면 다음 명령을 사용합니다.

sudo apt update

이 명령은 프로그램 자체를 업데이트하는 것이 아니라 설치 가능한 패키지 목록을 최신 상태로 갱신합니다.

apt upgrade: 설치된 프로그램 업데이트

설치된 패키지를 최신 버전으로 업데이트하려면 다음 명령을 사용합니다.

sudo apt upgrade

확인 질문이 나타나면 내용을 확인한 후 진행합니다.

자동으로 yes를 선택하려면 -y 옵션을 사용할 수 있습니다.

sudo apt upgrade -y

하지만 서버에서는 변경 내용을 확인한 후 진행하는 것이 더 안전합니다.

프로그램 설치

예를 들어 tree 프로그램을 설치하려면 다음과 같이 입력합니다.

sudo apt install tree

설치 여부를 묻는 질문이 나타날 수 있습니다.

Do you want to continue? [Y/n]

계속하려면 Y 또는 Enter를 누릅니다.

프로그램 삭제

설치한 프로그램을 삭제하려면 다음 명령을 사용합니다.

sudo apt remove tree

설정 파일까지 함께 삭제하려면 다음 명령을 사용할 수 있습니다.

sudo apt purge tree

사용하지 않는 의존 패키지를 정리하려면 다음 명령을 사용합니다.

sudo apt autoremove

서비스 관리하기

systemctl status: 서비스 상태 확인

SSH 서비스 상태를 확인하려면 다음 명령을 사용합니다.

sudo systemctl status ssh

주요 상태:

active (running)

서비스가 정상적으로 실행 중이라는 뜻입니다.

상태 화면에서 빠져나오려면 다음 키를 누릅니다.

q

서비스 시작

sudo systemctl start ssh

서비스 중지

sudo systemctl stop ssh

원격 SSH로 접속한 상태에서 SSH 서비스를 중지하면 현재 또는 이후 연결에 문제가 생길 수 있으므로 주의해야 합니다.

서비스 재시작

설정 파일을 변경한 후에는 먼저 구문을 검사합니다.

sudo sshd -t

오류가 없을 때 다음 명령으로 설정을 적용합니다.

sudo systemctl restart ssh

원격 SSH 연결에서 재시작하면 접속이 끊길 수 있으므로 별도의 서버 콘솔이나 복구 수단을 준비합니다.

부팅 시 자동 실행 설정

다음 명령은 ssh.service를 직접 실행하는 구성에서 사용합니다. Ubuntu 22.10 이후의 소켓 활성화 구성은 이어지는 ssh.socket 설명을 함께 확인합니다.

sudo systemctl enable ssh

자동 실행 해제:

sudo systemctl disable ssh

자동 실행 여부 확인:

sudo systemctl is-enabled ssh

Ubuntu 설치 과정에서 OpenSSH 서버 선택 후 disabled 표시

Ubuntu 22.10 이후, 특히 Ubuntu 24.04 LTS에서 설치 과정 중 OpenSSH Server를 선택했는데 ssh.servicedisabled로 표시되는 경우, SSH가 ssh.service가 아니라 ssh.socket 방식으로 활성화되어 있기 때문일 수 있습니다. 배포판 버전과 설치 후 변경 사항에 따라 구성은 달라질 수 있습니다.

따라서 ssh.servicedisabled만으로 부팅 후 SSH를 사용할 수 없다고 판단하면 안 됩니다. ssh.socket과 실제 포트의 수신 대기 상태를 함께 확인합니다.

다음 명령으로 확인해 보세요.

systemctl is-enabled ssh.socket
systemctl is-active ssh.socket

정상적인 예:

enabled
active

이 상태에서는 컴퓨터가 부팅될 때 ssh.socket이 먼저 대기하고 있다가, 외부에서 SSH 접속 요청이 들어오면 ssh.service를 실행합니다. 이를 소켓 활성화(socket activation)라고 합니다.

상태를 자세히 확인하려면:

systemctl status ssh.socket
systemctl status ssh.service

또는 SSH 포트가 실제로 열려 있는지 확인합니다.

sudo ss -tlnp | grep ':22'

결과 예:

LISTEN 0 4096 0.0.0.0:22

이 결과가 나오면 SSH 접속 요청을 받을 준비가 된 것입니다.

Linux 터미널에서 `systemctl is-enabled ssh.service`를 실행해 SSH 서비스의 자동 실행 상태가 `disabled`로 표시된 화면
Linux 터미널에서 `systemctl status ssh.service`를 실행해 SSH 서비스의 Loaded와 Active 상태를 확인하는 화면

명령 실행 중지와 화면 정리

Ctrl + C: 실행 중인 명령 중지

계속 실행되는 명령을 중지할 때 사용합니다.

예:

ping google.com

중지:

Ctrl + C

tail -f, 일부 설치 명령, 실행 중인 프로그램을 중단할 때도 사용할 수 있습니다.

clear: 터미널 화면 정리

터미널 화면을 깨끗하게 정리하려면 다음 명령을 사용합니다.

clear

단축키로도 실행할 수 있습니다.

Ctrl + L

화면에 표시된 내용만 정리될 뿐 이전 명령 기록이 삭제되는 것은 아닙니다.

history: 이전 명령 확인

지금까지 입력한 명령을 확인하려면 다음 명령을 사용합니다.

history

실행 결과 예:

101  pwd
102  ls -la
103  cd project
104  nano notes.txt

특정 단어가 포함된 명령만 찾을 수도 있습니다.

history | grep ssh

이전 명령 다시 사용

키보드의 위쪽 방향키를 누르면 이전에 입력한 명령을 다시 불러올 수 있습니다.

아래쪽 방향키를 누르면 다음 기록으로 이동합니다.

이전 명령을 다시 입력할 필요 없이 일부만 수정해서 실행할 수 있습니다.

Tab: 자동 완성

파일명이나 폴더 이름을 일부만 입력한 후 Tab을 누르면 자동으로 완성됩니다.

예를 들어 다음 폴더가 있다고 가정하겠습니다.

project-development

다음과 같이 일부만 입력합니다.

cd pro

그 후 Tab을 누르면 자동으로 완성될 수 있습니다.

cd project-development

비슷한 이름이 여러 개이면 Tab을 두 번 눌러 가능한 목록을 확인할 수 있습니다.

자동 완성은 오타를 줄이고 긴 경로를 빠르게 입력하는 데 매우 유용합니다.

명령어 도움말 보기

--help: 간단한 도움말

대부분의 명령어는 --help 옵션을 제공합니다.

ls --help
cp --help
rm --help

지원하는 옵션과 사용 방법을 확인할 수 있습니다.

man: 명령어 설명서

더 자세한 설명을 보려면 man 명령을 사용합니다.

man ls

man은 manual의 줄임말입니다.

주요 조작:

기능
Space 다음 화면
b 이전 화면
/단어 검색
q 종료

예:

man chmod

which: 명령어 위치 확인

특정 명령어가 어느 경로에 설치되어 있는지 확인합니다.

which ssh

결과 예:

/usr/bin/ssh

명령어가 설치되어 있지 않으면 아무 결과가 나오지 않을 수 있습니다.

명령어 연결하기

파이프 |

한 명령의 결과를 다른 명령으로 전달할 때 파이프를 사용합니다.

history | grep ssh

동작 순서:

  1. history가 이전 명령을 출력
  1. grep ssh가 그중 ssh가 포함된 줄만 표시

다른 예:

ls -la | less

파일 목록이 길 때 한 화면씩 확인할 수 있습니다.

>: 결과를 파일에 저장

명령의 출력 결과를 파일에 저장하려면 >를 사용합니다.

ls -la > file-list.txt

화면에 출력하는 대신 file-list.txt에 저장합니다.

파일이 이미 있으면 기존 내용이 덮어써집니다.

>>: 기존 파일 뒤에 추가

기존 내용을 유지하면서 새로운 결과를 뒤에 추가하려면 >>를 사용합니다.

date >> server-log.txt

명령을 실행할 때마다 날짜 정보가 파일 뒤에 추가됩니다.

&&: 앞 명령이 성공하면 다음 명령 실행

mkdir project && cd project

동작 순서:

  1. project 폴더 생성
  1. 생성에 성공하면 project로 이동

프로그램 목록을 갱신한 후 업데이트하려면 다음과 같이 사용할 수 있습니다.

sudo apt update && sudo apt upgrade

앞 명령이 실패하면 뒤의 명령은 실행되지 않습니다.

;: 성공 여부와 관계없이 다음 명령 실행

pwd; ls -la

pwd가 끝나면 성공 여부와 관계없이 ls -la가 실행됩니다.

처음 Linux를 사용할 때는 여러 명령을 한 줄에 연결하기보다 하나씩 실행하면서 결과를 확인하는 것이 좋습니다.

서버 종료와 재부팅

서버 종료

Linux 서버를 안전하게 종료하려면 다음 명령을 사용합니다.

sudo shutdown now

또는 다음 명령을 사용할 수 있습니다.

sudo poweroff

서버 전원이 꺼지면 SSH 연결도 종료됩니다.

물리적인 서버를 다시 사용하려면 전원 버튼을 누르거나 WOL 같은 원격 전원 기능이 필요할 수 있습니다.

일정 시간 후 종료

10분 후 종료:

sudo shutdown +10

종료 예약 취소:

sudo shutdown -c

서버 재부팅

서버를 재부팅하려면 다음 명령을 사용합니다.

sudo reboot

재부팅을 시작하면 SSH 연결이 끊어집니다.

서버가 다시 시작될 때까지 잠시 후 재접속해야 합니다.

네트워크 설정이나 SSH 설정을 변경한 직후에는 바로 재부팅하기 전에 설정이 올바른지 먼저 확인하는 것이 좋습니다.

자주 사용하는 기본 명령어 요약

명령어 기능
pwd 현재 위치 확인
ls 파일과 폴더 목록 확인
ls -la 숨김 항목을 포함한 자세한 목록 확인
cd 폴더 이동
mkdir 폴더 생성
mkdir -p 상위 폴더를 포함해 생성
touch 빈 파일 생성 또는 수정 시간 갱신
cat 파일 전체 내용 출력
less 긴 파일을 한 화면씩 확인
head 파일 앞부분 확인
tail 파일 마지막 부분 확인
tail -f 로그 실시간 확인
nano 텍스트 파일 편집
cp 파일 복사
cp -r 폴더 복사
mv 파일 이동 또는 이름 변경
rm 파일 삭제
rmdir 빈 폴더 삭제
rm -r 폴더와 내부 내용 삭제
find 파일과 폴더 검색
grep 파일 내용 검색
du -sh 폴더 사용량 확인
df -h 디스크 전체 사용량 확인
whoami 현재 사용자 확인
id 사용자와 그룹 정보 확인
hostname 서버 이름 확인
ip addr 네트워크와 IP 주소 확인
ping 네트워크 연결 확인
sudo 관리자 권한으로 명령 실행
systemctl 서비스 상태 확인 및 관리
history 이전 명령 확인
clear 터미널 화면 정리
man 명령어 설명서 확인
shutdown 서버 종료
reboot 서버 재부팅

초보자가 꼭 기억해야 할 주의사항

삭제 전 현재 위치를 확인한다

pwd
ls -la

특히 rm, rm -r, rm -rf를 사용하기 전에는 현재 위치와 삭제 대상을 반드시 확인해야 합니다.

경로에 공백이 있으면 따옴표를 사용한다

다음과 같은 폴더 이름이 있다고 가정하겠습니다.

My Project

공백이 있는 경로는 따옴표로 묶습니다.

cd "My Project"

또는 공백 앞에 역슬래시를 사용할 수 있습니다.

cd My\ Project

Linux에서는 공백이 명령어와 대상을 구분하는 역할을 하기 때문입니다.

대문자와 소문자를 구분한다

Linux는 파일명과 명령어에서 대문자와 소문자를 구분합니다.

다음 파일들은 서로 다른 파일입니다.

notes.txt
Notes.txt
NOTES.txt

다음 명령도 서로 다릅니다.

ls
LS

ls는 정상 명령이지만 LS는 일반적으로 존재하지 않는 명령입니다.

명령어의 철자를 정확히 입력한다

다음은 올바른 명령입니다.

mkdir project

다음은 잘못된 명령입니다.

mkidr project

오류 예:

mkidr: command not found

command not found가 표시되면 먼저 명령어 철자를 확인합니다.

개인 파일 작업에는 불필요한 sudo를 사용하지 않는다

홈 폴더에서 파일이나 폴더를 만드는 데는 일반적으로 sudo가 필요하지 않습니다.

mkdir ~/project
touch ~/project/notes.txt

불필요하게 sudo를 사용하면 파일 소유자가 root가 되어 일반 사용자가 수정하지 못할 수 있습니다.

명령 실행 후 결과를 확인한다

명령어를 여러 개 한꺼번에 실행하기보다 하나씩 실행하고 결과를 확인하는 습관이 좋습니다.

예:

mkdir project

확인:

ls -ld project

이동:

cd project

현재 위치 확인:

pwd

이러한 방식은 실수를 줄이고 Linux 명령어의 동작을 이해하는 데 도움이 됩니다.

기본 실습

다음 실습을 순서대로 진행하면 주요 기본 명령을 익힐 수 있습니다.

1단계: 홈 폴더로 이동

cd

현재 위치 확인:

pwd

2단계: 연습 폴더 만들기

mkdir linux-practice

확인:

ls -l

3단계: 연습 폴더로 이동

cd linux-practice

현재 위치 확인:

pwd

4단계: 하위 폴더 만들기

mkdir documents backup

확인:

ls -l

5단계: 파일 만들기

touch notes.txt

6단계: 파일 편집하기

nano notes.txt

다음 내용을 입력합니다.

Linux command practice
서버 이름: project-dev-server

저장:

Ctrl + O
Enter

종료:

Ctrl + X

7단계: 파일 내용 확인

cat notes.txt

8단계: 파일 복사

cp notes.txt backup/notes-backup.txt

확인:

ls -l backup

9단계: 파일 이동

mv notes.txt documents/

확인:

ls -l documents

10단계: 파일 이름 변경

mv documents/notes.txt documents/linux-notes.txt

11단계: 전체 구조 확인

tree가 설치되어 있다면 다음 명령을 사용할 수 있습니다.

tree

예상 결과:

.
├── backup
│   └── notes-backup.txt
└── documents
    └── linux-notes.txt

tree가 설치되어 있지 않으면 다음 명령으로 설치할 수 있습니다.

sudo apt install tree

12단계: 연습 폴더 삭제

먼저 홈 폴더로 이동합니다.

cd

삭제할 폴더를 확인합니다.

ls -la linux-practice

확인하면서 삭제합니다.

rm -ri linux-practice

핵심 정리

Linux 기본 명령어를 익힐 때 모든 명령을 한 번에 암기할 필요는 없습니다.

먼저 다음 명령을 반복해서 사용하는 것이 좋습니다.

pwd
ls -la
cd
mkdir
touch
nano
cat
cp
mv
rm

서버 작업 전에는 현재 위치를 확인합니다.

pwd

파일과 폴더 상태를 확인합니다.

ls -la

삭제나 이동 명령을 실행하기 전에는 대상 경로를 다시 확인합니다.

ls -la 대상경로

Linux 명령어는 짧지만 시스템에 직접 영향을 줍니다. 하나의 명령을 실행하고 그 결과를 확인하는 습관을 들이면 서버 작업을 훨씬 안전하게 진행할 수 있습니다.

주의 사항과 한계

  • rm, mv, cp의 덮어쓰기와 삭제 동작은 명령 옵션, 별칭과 배포판 환경에 따라 달라질 수 있으므로 --help 또는 man으로 현재 환경을 확인합니다.
  • rm -rf는 확인 없이 파일과 폴더를 재귀적으로 제거하므로 학습 목적의 일반적인 해결 명령으로 사용하지 않습니다.
  • sudo는 필요한 명령에만 사용하고, 실행 전에 대상 경로와 명령의 영향을 확인합니다.
  • apt upgrade와 서비스 재시작은 운영 중인 서비스에 영향을 줄 수 있으므로 변경 내용과 점검 시간을 먼저 확인합니다.
  • ping 응답이 없다고 네트워크 연결이 반드시 끊긴 것은 아닙니다. 방화벽이나 대상 장치가 ICMP 응답을 차단할 수 있습니다.
  • 이 문서는 기본 명령의 입문 범위를 다루며 셸 확장, 권한, 프로세스, 로그 분석과 네트워크 진단의 전체 내용을 대신하지 않습니다.

작성 및 검증 정보

  • 작성자: apple2ne1
  • 검토자: apple2ne1
  • 직접 수행 여부: Ubuntu 서버를 기준으로 작성된 기존 예시를 보존했으며 이번 정리 과정에서는 별도 Linux 환경에서 직접 실행하지 않음
  • 마지막 문서 검토일: 2026-08-02
  • 검증 방법: GNU Coreutils, Ubuntu Manpages, Ubuntu 24.04 LTS 릴리스 노트와 systemd 공식 문서에서 기본 명령, 옵션과 OpenSSH 소켓 활성화 동작을 대조

참고 자료 및 출처

관련 문서

  • Linux MOC
  • Linux Directory 권한
  • 같은 Network에서 project-dev-server 사용 준비

Previous article
Next article