1012\
2026년 10월 26일 공유
리눅스 텍스트 처리와 파일 관리 기초
개요
- 콘텐츠 유형: 강의
- 리눅스 서버 관리에서는 설정과 상태 정보가 텍스트 파일에 많이 저장된다. 여러 서버를 관리하거나 보안 점검을 자동화할 때는 명령어와 스크립트를 활용해 파일을 일괄적으로 확인한다.
- 강의에서는 텍스트 파일 조회·검색·정렬 명령과 파일 시간 정보, 셸의 특수문자 및 인용부호를 다뤘다.
핵심 개념
- 파일 조회:
cat,head,tail,less
- 패턴 검색:
grep및 정규표현식
- 파일 정보 확인:
touch,stat
- 텍스트 집계와 정렬:
wc,sort
- 셸 특수문자: 와일드카드, 따옴표, 변수 확장, 명령 치환
상세 노트
1. 텍스트 파일 조회
cat: 파일 전체를 출력한다.
head: 파일 앞부분을 출력한다.
tail: 파일 뒷부분을 출력한다.
less: 파일을 한 화면씩 살펴본다.
head -n 10 file.txt # 처음 10줄tail -n 10 file.txt # 마지막 10줄tail -n +11 file.txt # 11번째 줄부터 끝까지head와 tail은 줄 범위를 지정해 필요한 부분만 확인할 수 있다. 실무에서는 로그나 설정 파일의 일부를 확인할 때 자주 사용한다.2. grep 검색과 옵션
grep은 파일에서 지정한 패턴이 포함된 줄을 찾아 출력한다. 기본적으로 줄 단위로 검색한다.grep 'Linux' file.txt주요 옵션:
-c: 패턴이 일치하는 줄 수를 출력한다. 한 줄에 패턴이 여러 번 있어도 한 줄로 센다.
-v: 패턴이 없는 줄을 출력한다.
-i: 대소문자를 구분하지 않는다.
-n: 결과에 줄 번호를 표시한다.
-A N: 일치한 줄과 그 뒤의 N개 줄을 함께 출력한다.
-h: 여러 파일 검색 결과에서 파일명 표시를 생략한다.
-E: 확장 정규표현식을 사용한다.
grep -c 'Linux' file.txtgrep -v '^#' config.txt # 주석으로 시작하지 않는 줄 확인grep -i 'money' file.txtgrep -n 'Linux' file.txtgrep -A 3 'coffee' file.txtgrep -h 'Linux' *.txtgrep -E 'good|coffee' a.txtgrep -c는 패턴이 등장한 횟수가 아니라 일치하는 줄의 개수를 센다. 패턴이 포함된 실제 항목 수를 세려는 경우에는 목적에 맞는 별도 처리가 필요하다.3. 정규표현식 기초
정규표현식은 검색 조건을 세밀하게 표현하는 방법이다.
[abc]:a,b,c중 한 문자가 있는 경우
[0-9]: 숫자 한 자리
[^abc]:a,b,c가 아닌 문자 한 자리
^pattern: 줄의 시작에 있는 패턴
pattern$: 줄의 끝에 있는 패턴
.: 임의의 한 문자
*: 바로 앞 표현이 0회 이상 반복되는 경우
-E와|: 여러 패턴 중 하나와 일치시킨다.
grep '[0-9]' file.txtgrep -E 'good|coffee' a.txt와일드카드와 정규표현식의 기호는 맥락에 따라 의미가 다르다. 예를 들어 셸의
*는 파일명 패턴에 사용되지만, grep의 정규표현식에서 *는 앞 표현의 반복을 뜻한다.4. 파일 시간과 touch
touch file: 파일이 있으면 수정 시간(mtime)을 현재 시각으로 갱신하고, 없으면 빈 파일을 만든다.
stat file: 접근 시간(access time), 수정 시간(mtime), 상태 변경 시간(ctime) 등 파일 정보를 확인한다.
- mtime은 파일 내용의 수정 시각이며,
touch등으로 변경할 수 있다.
- ctime은 파일 내용 자체가 아니라 권한·소유자 등 메타데이터의 변경 시각을 나타낸다. 임의로 과거 시각으로 설정할 수 없으며, 보안 점검에서 중요한 단서가 될 수 있다.
따라서 파일의 mtime만으로 변경 여부를 단정하지 말고, 점검 목적에 따라 ctime 등 다른 정보도 함께 확인해야 한다.
5. 셸의 와일드카드와 인용부호
- 셸에서
?는 문자 하나,*는 임의의 문자열을 나타내는 파일명 와일드카드다.
- 작은따옴표(
'...')는 내부 내용을 대부분 그대로 전달해 변수·명령 치환을 막는다.
- 큰따옴표(
"...")는 공백을 묶으면서도 변수와 명령 치환을 허용한다.
- 백슬래시(
\)는 뒤따르는 특수문자의 기능을 제한할 때 사용한다.
ls A? # A 다음에 문자 하나가 오는 이름ls A* # A로 시작하는 이름echo '$USER' # $USER를 문자 그대로 출력echo "$USER" # 변수 USER의 값 출력6. 변수와 명령 치환
- 셸 변수는
name=value형식으로 설정한다. 등호 앞뒤에는 공백을 두지 않는다.
$name은 변수의 값을 참조한다.
echo는 뒤에 전달된 내용을 출력한다.
- 명령 치환은 명령의 실행 결과를 다른 명령의 인수처럼 사용할 때 쓴다. 현대적인 표기는
$(...)이다.
user="example"echo "$user"ls -l "$(which passwd)"7. wc: 줄·단어·문자 수 집계
wc는 파일의 줄 수, 단어 수, 문자 또는 바이트 수를 집계한다.wc file.txtwc -l file.txt # 줄 수명령 결과를 파이프로 전달해 항목 수를 세는 방식도 활용할 수 있다.
some-command | wc -l8. sort: 줄 정렬
sort는 기본적으로 파일 내용을 정렬해 출력하며, 별도 저장하지 않으면 원본 파일은 바뀌지 않는다.-r: 역순 정렬
-n: 숫자값 기준 정렬
-k N: N번째 필드 기준 정렬
-t '문자': 필드 구분자 지정
sort file.txtsort -r file.txtsort -n numbers.txtsort -t ':' -k 3 -n /etc/passwd숫자를 기본 문자 순서로 정렬하면
100이 99보다 먼저 나올 수 있으므로 숫자값 기준 정렬에는 -n을 사용한다. /etc/passwd처럼 콜론으로 필드를 구분하는 파일은 -t ':'로 구분자를 지정할 수 있다.보안 점검에서는
/etc/passwd의 UID 필드를 숫자 기준으로 정렬해 UID가 0인 계정이 있는지 확인할 수 있다. UID 0은 슈퍼유저 권한을 의미하므로, 예상치 않은 UID 0 계정은 점검 대상이다.