

1. /tmp로 이동 후 /root로 돌아간 뒤 /tmp/mtest 생성
cd /tmp/
cd /root/ 또는 cd 또는 cd ~
mkdir /tmp/mtest 또는 mkdir ~-/mtest
/tmp → /root 이동 확인 후 다시 /tmp/mtest 생성2. /tmp/mtest에 파일 다량 생성
cd /tmp/mtest
touch za{1..10}
touch zb{01..10}
touch zc{001..100}
touch ~-/z{a{1..10}, b{01..10}},c{001..100}}
za1 ~ za10 zb01 ~ zb10 zc001 ~ zc1003. 파일 삭제: [ ], ?, * 패턴 활용
rm za[1-9] za10
rm zb??
rm zc*
rm -f ~-/z{a[0-9],a10,b??,c*}
za[1-9] za10 : [ ]는 한 자리 수 / za10은 따로 지정zb?? : zb + 임의의 두 문자 (zb01 ~ zb10)zc* : zc로 시작하는 모든 파일4. /media 안에 디렉토리 & 파일 생성 + 정리
mkdir -p /media/{Music,Movie,Picture}
touch /media/music{00..20}.mp3
touch /media/movie{00..10}.avi
touch /media/picture{0..9}.jpg
mv /media/music*.mp3 /media/Music
mv /media/movie*.avi /media/Movie
mv /media/picture*.jpg /media/Picture
{}로 범위 또는 여러 항목 생성mv에서 *로 패턴 지정 → 간단하게 디렉토리별 정리5. ps -ef 결과를 pfile01에 저장
ps -ef > pfile01
2>/dev/null을 붙여도 OK)6. ls -R / 실행 시 에러는 출력하지 않게
ls -R / 2> /dev/null
2> : 표준 에러 리디렉션/dev/null : 에러를 버리는 공간 (= 블랙홀)7. rpm -qa 결과 중 sh가 포함된 항목만 필터링
rpm -qa | grep 'sh'
sh 포함된 항목만 출력8. 위 결과를 파일로 저장까지
rpm -qa | grep 'sh' > shlist.txt
shlist.txt 파일 생성됨/var/log/secure 파일의 심볼릭 링크 만들기
ln -s /var/log/secure /tmp/secure_s
-s: 심볼릭 링크 생성/tmp/secure_s는 실제 파일이 아닌 가상의 연결 파일1. root 패턴 검색
grep 'root' /tmp/secure_s
root가 포함된 줄 전체 출력2. /tmp/secure_s 에서 s로 시작해서 t로 끝나는 패턴 검색
grep s.*t /tmp/secure_s
s.*t는 s로 시작해서 t로 끝나는 문자열3. /tmp/secure_s 에서 대소문자를 무시하고 'ju' 패턴 검색
grep -i 'ju' /tmp/secure_s
-i: ignore case → Ju, JU, ju 등 모두 매치됨4. su가 정확한 단어로 포함된 줄 검색
grep -w 'su' /tmp/secure_s
-w: 정확한 단어 단위로 매칭sudo는 제외됨, su만 따로 존재해야 매치5. vagrant 정규표현식으로 검색
grep 'v[a-z]*t' /tmp/secure_s
v[a-z]*t: v로 시작해서 알파벳 여러 개 + t로 끝나는 단어vagrant도 포함됨grep 'vagrant'도 되지만, 여긴 패턴 매칭 연습이므로 정규표현식 강조6. /var/log 내에서 root 패턴 검색 (재귀 포함 가능)
grep -r 'root' /var/log
-r: 재귀적으로 하위 디렉토리 포함 검색7. 3월 01일~31일, 08:00~18:59 사이 내용 검색
egrep '^Mar [0-3][0-9] (0[8-9]|1[0-8])' /tmp/secure_s
^Mar: 줄 시작이 3월[0-3][0-9]: 01~39 가능 → 날짜 포괄0[8-9]: 1[0-8]8. root와 vagrant 동시 검색 (2가지 방법)
방법 ①: -e 옵션
grep -e 'root' -e 'vagrant' /tmp/secure_s
방법 ②: egrep OR 조건
egrep 'root|vagrant' /tmp/secure_s
9. . 자체를 검색 (2가지 방법)
방법 ①: 백슬래시 이스케이프
grep '\.' /tmp/secure_s
방법 ②: -F 옵션 (리터럴 모드)
grep -F '.' /tmp/secure_s
또는
fgrep '.' /tmp/secure_s
.는 기본적으로 "모든 문자 1개"를 의미하는 메타문자\. 또는 -F 옵션으로 문자 그대로 인식/var/log/ 디렉토리를 /tmp/로 복사
cp -r /var/log /tmp/
/tmp/log 디렉토리 생성됨 (하위 포함 복사)1. /tmp에서 이름이 messages인 파일 찾기
find /tmp -name 'messages'
-name: 정확한 이름 매칭 (대소문자 구분)2. /var/log에서 타입이 디렉토리 + 그룹이 utmp인 파일 찾기
find /var/log -type d -group utmp
-type d: 디렉토리
-group utmp: 그룹명이 utmp인 파일/디렉토리 대상
3. /tmp에서 5바이트 이하 파일 검색 + 자세히 출력
find /tmp -type f -size -5c -ls
또는
find /tmp -size -5c -exec ls -ild {} \;
-size -5c: 5바이트 보다 작은 (< 5 bytes)-ls: ls -l처럼 상세 정보 출력4. /tmp에서 파일명이 old로 끝나는 파일 → /root/로 이동
find /tmp -type f -name '*old' -exec mv {} /root/ \;
*old: 파일명이 old로 끝남-exec mv {} /root/ \;: 찾은 각 파일을 /root/로 이동5. /tmp에서 cron으로 시작하는 파일을 대화형으로 삭제
find /tmp -type f -name 'cron*' -ok rm -r {} \;
-ok: 실행 전 [y/n] 확인을 받는 안전한 삭제cron*: 파일명이 cron으로 시작6. /tmp에서 log가 포함된 일반 파일 삭제
find /tmp -type f -name '*log*' -exec rm {} \;
-type f: 일반 파일*log*: 이름 중간에 log 포함1. Command Mode
2. Insert Mode (Edit Mode)
i, a, o 등으로 진입 → 내용 입력 가능3. Last Line Mode (Extend Mode)
:로 진입 → 저장/종료/치환 등 수행i: 커서 앞에서 입력
a: 커서 뒤에서 입력
o: 아래 줄 새 줄 입력
O: 위 줄 새 줄 입력
I: 줄 맨 앞에서 입력
A: 줄 맨 뒤에서 입력
R: overwrite 모드 (Windows처럼 덮어쓰기)
r: 한 문자만 수정
cc: 또는 S 현재 줄 삭제 후 입력모드 진입
cw: 단어 삭제 후 입력
s: 문자 삭제 후 입력
h, j, k, l: 좌, 하, 상, 우 이동
^: 줄 맨 앞으로
$: 줄 맨 뒤로
H: 화면의 첫 번째 줄
L: 화면의 마지막 줄
gg: 또는 1G 문서 맨 위로
G: 문서 맨 아래로
nG: n번째 줄로 이동
dd: 줄 삭제
dw: 단어 삭제
d^: 커서부터 줄 앞까지 삭제
d$: 커서부터 줄 뒤까지 삭제
u: 실행 취소 (undo)
U: 해당 줄 전체 복원
Ctrl + r: 다시 실행 (redo)
yy: 줄 복사
yw: 단어 복사
y^: 커서부터 줄 앞까지 복사
y$: 커서부터 줄 뒤까지 복사
p: 커서 아래 붙여넣기
P: 커서 위 붙여넣기
:):w: 저장
:q: 종료 (수정 없을 때)
:q!: 저장 없이 강제 종료
:wq 또는 :x: 저장 후 종료
:set nu: 줄 번호 표시
:set nonu: 줄 번호 숨김
:n,m d: n~m 줄 삭제
:n,m co l: n~m 줄 복사 → l 아래에 붙여넣기
:n,m m l: n~m 줄 잘라서 → l 아래에 이동
:%s/A/B/g: 문서 전체에서 A를 B로 바꾸기
:n,m s/A/B/g: 특정 줄 범위에서만 바꾸기
/string: 앞으로 string 검색
?string: 뒤로 string 검색
n: 다음 검색결과로 이동
N: 이전 검색결과로 이동
:1,5 d: 5줄 삭제
:%s/old/new/g: 특정 단어 전체 치환
:5 co 10: 특정 라인 복사
:1,10 m $: 문서 맨 아래 붙여넣기
/root + n: root 포함된 줄 찾기
/etc/passwd 파일을 /root/passwd1으로 복사
cp /etc/passwd /root/passwd1
Vim 열기
vim /root/passwd1
1. 1번 라인을 14번 라인에 붙이기
방법 ①: 직접 복사/이동
1G → 1번 라인으로 이동
yy → 현재 라인 복사
14G → 14번 라인으로 이동
P → 해당 라인 위에 붙이기
방법 ②: 명령어 한 줄
:1 co 13
2. 1번 라인의 root 수정 → ro123o098t
1G → 1번 라인 이동
/oo → 두 번째 o로 이동
i → insert 모드
123 → 입력
<Esc>
/oo → 다음 o로 이동
a → append 모드
098 → 입력
<Esc>
root → ro123o098t3. 1번부터 10번까지 잘라서 마지막 줄 아래에 붙이기
방법 ①: 명령 조합
1G
10dd → 10줄 잘라내기
G → 마지막 줄 이동
p → 아래에 붙여넣기
방법 ②: 명령어 한 줄
:1,10 m $
$는 마지막 줄을 의미4. 4번 줄의 ot만 복사해서 adm 안에 붙여 aotdm 만들기
4G
/ot → ot로 이동
v2l → 비주얼 모드로 ot 선택
y → 복사
/adm → adm 단어로 이동
i 또는 l로 커서 이동 (d 앞에)
p → 붙여넣기
<Esc>
adm → aotdm5. 1~5번 줄의 / 기호를 |로 치환
:1,5 s/\//|/g
\/는 /를 문자로 인식하기 위한 이스케이프 처리6. 현재 작업 내용을 /root/vitest 파일로 저장하고 종료
:w /root/vitest
:q
:w → 저장, :q → 종료:q!, 저장 후 종료는 :wqkill [옵션 or 시그널번호] PID
-15 (정상 종료 요청 = SIGTERM)PID는 프로세스 번호 (ps, top, pgrep 등으로 확인 가능)
kill 1234
kill -15 1234
kill -9 1234
kill -STOP 1234
kill -CONT 1234
kill -HUP 1234
SIGKILL (-9): 강력하지만 위험 → 종료 준비를 못 하므로 파일 손상 가능성 있음
SIGTERM (-15): 정상적인 종료 요청 → 서비스는 신호를 감지해 종료 절차 수행
SIGSTOP / SIGCONT: fg, bg 명령어처럼 백그라운드 작업을 수동 제어 가능
터미널 4개 (pts/1 ~ pts/4) 열기
각각에서 다음 실행
sleep 1000 & # pts/1
sleep 2000 & # pts/2
sleep 3000 & # pts/3
sleep 4000 & # pts/4
메인 터미널 (pts/0)
gedit &
firefox &
1. sleep, gedit, firefox, bash의 PID / PPID 확인
ps -ef | egrep '(sleep|gedit|firefox|bash)' | grep -v grep
ps -ef: 전체 프로세스 표시PPID: 부모 프로세스 ID (ex: bash의 PID가 자식 sleep의 PPID로 나옴)PID: 각 프로세스 고유번호grep -v grep: grep 자신은 제외2. sleep 20000을 포그라운드로 실행 후 백그라운드로 전환
sleep 20000 # 실행 → Ctrl+Z 로 일시 정지
bg # 가장 최근 중지 작업을 백그라운드로
또는
jobs # 중지된 작업 목록 확인
bg %1 # 특정 작업 번호 백그라운드 전환
Ctrl+Z → 일시 정지bg → 백그라운드 재개fg → 포그라운드로 다시 전환 가능3. firefox 프로세스를 kill로 종료
kill -15 <PID>
또는
kill -TERM <PID>
확실히 종료 안되면: kill -9 <PID>
4. gedit 종료 (이름 기반 종료)
pkill gedit
pkill: 프로세스 이름으로 종료pgrep gedit으로 먼저 PID 확인 가능5. 특정 터미널에서 실행된 sleep 프로세스 종료
pkill -t pts/0 sleep
pkill -t pts/3 sleep
-t pts/X: 해당 터미널에서 실행된 프로세스만 타겟팅pkill은 PID 확인 없이 빠른 명령에 적합6. 모든 bash 셸 강제 종료
방법 1
killall -9 bash
방법 2
pkill -9 bash
tar [옵션] [파일명.tar] [대상 파일/디렉토리]
c: create (생성)
v: verbose (자세히 보기)
f: file (파일 이름 지정)
t: table (목차 확인)
x: extract (압축 해제)
z: gzip 압축 사용
j: bzip2 압축 사용
J: xz 압축 사용
명령어: compress(압축), uncompress(해제)
tar + compress 압축: tar Zcvf file.tar.Z target (Z: compress 사용)
tar + compress 해제: tar Zxvf file.tar.Z
확장자: .Z
압축속도: 매우빠름
압축률: 낮음
가장 오래된 방식, 유닉스 호환성
tar 옵션: z
확장자: .gz, .tar.gz
압축속도: 빠름
압축률: 낮음
기본 압축, 속도 빠르고 범용
tar 옵션: j
확장자: .bz2, .tar.bz2
압축속도: 보통
압축률: 중간
gzip보다 압축률 좋음, 다소 느림
tar 옵션: J
확장자: .xz, .tar.xz
압축속도: 느림
압축률: 높음
최대 압축률, 속도 느림, 최신 시스템에서 추천
1. /usr/bin 디렉토리 압축 (아카이브 + 압축)
tar cvf bin.tar /usr/bin
tar zcvf bin.tar.gz /usr/bin
tar jcvf bin.tar.bz2 /usr/bin
tar Jcvf bin.tar.xz /usr/bin
.tar → 아카이브만.tar.gz, .tar.bz2, .tar.xz → 아카이브 + 압축2. 압축 해제 (압축파일을 /tmp에 풀기)
tar Jxvf bin.tar.xz -C /tmp
-C는 지정한 경로에 압축을 풀기 위한 옵션bin.tar.xz는 현재 위치에 있어야 하고, /tmp 안에 압축 내용이 풀림.tar 파일은 단순 묶음 (압축 아님)x와 압축 형식 플래그를 같이 써야 함 (z, j, J)-C 옵션은 압축 해제 시 자주 사용됨 → 목적지 지정 가능