공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 02 / 10

텍스트 보기·편집 (less·vi)

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 cat 의 옵션과 nl

cat 은 작은 파일을 그대로 출력합니다. 옵션 둘이 진단에 유용합니다.

bash
cat -n conf.txt             # 줄 번호
cat -A conf.txt             # 탭은 ^I, 줄 끝은 $, CR 은 ^M
nl -ba conf.txt             # 빈 줄까지 번호

cat -A 는 "분명 같은데 왜 다르지" 를 해결합니다. 보이지 않는 탭, 줄 끝 공백, Windows 의 ^M 이 드러납니다.

2.2 less 로 읽기

less 파일 로 열면 화면 단위로 보여 주고 키로 움직입니다. more 는 아래로만 가는 옛 도구라 less 만 씁니다.

키 동작
Space / b 한 화면 아래 / 위
G / g 끝 / 처음
/단어 아래로 검색
n / N 다음 / 이전 일치
F 파일 끝을 따라가기
q 나가기

less +F app.log 로 열면 tail -f 처럼 따라가다 Ctrl+C 로 멈춰 검색할 수 있습니다. less -N 은 줄 번호를 켭니다. 파이프 끝에 | less 를 붙여 긴 출력을 넘겨 봅니다.

2.3 sort

옵션 뜻
-n 숫자로 비교
-r 내림차순
-k2 2번째 열 기준
-t, 열 구분자
-u 중복 제거
-f 대소문자 무시
-h K·M·G 단위

-n 이 없으면 10 이 2 보다 앞에 옵니다. 사전순으로 1 이 2 보다 작기 때문입니다. 열 기준 정렬은 -k2 -n 처럼 함께 씁니다.

2.4 uniq

uniq 는 바로 옆 줄이 같을 때만 합칩니다. 그래서 항상 sort 뒤에 옵니다.

bash
sort names.txt | uniq         # 중복 제거
sort names.txt | uniq -c      # 개수 붙여서
sort names.txt | uniq -d      # 중복된 것만
sort names.txt | uniq -u      # 한 번만 나온 것만

sort | uniq -c | sort -rn 이 "무엇이 가장 많이 나오나" 의 고정 패턴입니다. 로그의 IP, 에러 종류, 호출 경로를 셀 때 그대로 씁니다.

2.5 cut 과 paste

bash
cut -d' ' -f2 fruits.txt      # 공백 구분 2번째 열
cut -d, -f1,3 data.csv        # 1·3 열
cut -c1-3 fruits.txt          # 1~3번째 글자
paste a.txt b.txt             # 옆으로 붙이기
paste -sd+ nums.txt | bc      # 3+10+7 을 만들어 계산

cut 은 구분자 하나만 인식해 공백이 여러 개면 열이 어긋납니다. 그럴 때는 운영 묶음 02 의 awk '{print $2}' 가 낫습니다. column -t 는 열을 맞춰 보기 좋게 출력합니다.

2.6 diff 와 comm

두 파일이 어디가 다른지 봅니다. 설정 파일 비교에 매일 씁니다.

bash
diff a.txt b.txt              # 5c5 형식
diff -u a.txt b.txt           # -/+ 통합 형식, git 과 같음
diff -q a.txt b.txt           # 다른지만 (종료 코드 1)
diff -r dir1 dir2             # 폴더끼리
comm -12 <(sort a) <(sort b)  # 양쪽에 있는 줄만

5c5 는 5번 줄이 바뀌었다는 뜻이고 < 가 첫 파일, > 가 둘째 파일입니다. -u 형식이 읽기 쉬워 실무에서는 대부분 -u 를 씁니다.

2.7 tr

글자 단위로 바꾸거나 지웁니다. 줄 단위 도구인 sed 보다 단순합니다.

bash
tr 'a-z' 'A-Z'                # 대문자로
tr ',' '\n'                   # 쉼표를 줄바꿈으로
tr -d '\r'                    # CR 삭제
tr -s ' '                     # 연속 공백을 하나로

tr -d '\r' 이 Windows 에서 만든 파일의 ^M 을 없애는 가장 짧은 방법입니다. dos2unix 가 없는 서버에서 씁니다.

2.8 인코딩과 줄 끝

file 이 인코딩과 줄 끝을 알려 줍니다. 한글이 깨지거나 스크립트가 첫 줄부터 실패하면 이것부터 봅니다.

bash
file ko.txt                   # UTF-8 Unicode text
file win.txt                  # ASCII text, with CRLF line terminators
sed -i 's/\r$//' win.txt      # CRLF -> LF
iconv -f EUC-KR -t UTF-8 old.txt > new.txt   # 인코딩 변환

서버는 UTF-8 이 기본입니다. 옛 시스템에서 온 EUC-KR 파일은 iconv 로 바꾸고, -c 를 붙이면 변환 못 하는 글자를 건너뜁니다.

2.9 vi 의 두 모드

vi 는 명령 모드와 입력 모드가 있습니다. 열면 명령 모드이고, i 를 누르면 입력 모드, Esc 로 다시 명령 모드입니다.

상황 키
글자 입력 시작 i
입력 끝 Esc
저장 :w
나가기 :q
저장 후 나가기 :wq
저장 안 하고 나가기 :q!

: 로 시작하는 것은 명령 모드에서 화면 맨 아래에 치는 명령입니다. 막혔을 때는 Esc 를 두 번 누르고 :q! 를 치면 어디서든 나옵니다.

2.10 vi 편집 키

키 동작
dd 줄 삭제
yy 줄 복사
p 붙여넣기
u 되돌리기
x 글자 삭제
o 아래 새 줄에서 입력
A 줄 끝에서 입력
5dd 5줄 삭제

숫자를 앞에 붙이면 반복입니다. dd 로 지운 줄은 p 로 다른 곳에 붙일 수 있어 잘라내기가 됩니다.

2.11 vi 이동·검색·치환

키 동작
gg / G 처음 / 끝
:10 10번 줄로
/단어 검색, n 다음
:set nu 줄 번호 표시
:%s/old/new/g 전체 치환
:noh 검색 강조 끄기

:%s/old/new/g 는 운영 묶음 02 의 sed s///g 와 같은 문법입니다. % 가 전체 범위, g 가 줄 안 전부입니다. :5,10s/a/b/ 처럼 줄 범위를 줄 수도 있습니다.

2.12 nano 와 편집기 선택

nano 는 화면 아래에 키가 표시되는 쉬운 편집기입니다. 있으면 초보자에게 좋지만 최소 설치 서버에는 없는 경우가 많습니다.

bash
nano conf.txt                 # Ctrl+O 저장, Ctrl+X 나가기
EDITOR=vi crontab -e          # 다른 도구가 부르는 편집기 지정

vi 는 모든 리눅스에 있습니다. nano 가 편해도 vi 의 열 개 키는 알아 둬야 낯선 서버에서 막히지 않습니다.

핵심 원리
  • 2.1 cat 의 옵션과 nl
  • 2.2 less 로 읽기
  • 2.3 sort
  • 2.4 uniq
  • 2.5 cut 과 paste
  • 2.6 diff 와 comm
  • 2.7 tr
  • 2.8 인코딩과 줄 끝
  • 2.9 vi 의 두 모드
  • 2.10 vi 편집 키
  • 2.11 vi 이동·검색·치환
  • 2.12 nano 와 편집기 선택
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제