Develop

[리눅스 마스터 2급-2차] 5. 쉘 스크립트, 네트워크, 텍스트 처리 본문

자격증

[리눅스 마스터 2급-2차] 5. 쉘 스크립트, 네트워크, 텍스트 처리

230801 2025. 12. 8. 00:03

안녕하세요 ~ .ᐟ

오늘은 쉘 스크립트, 네트워크, 텍스트 처리 명령어를 알아보겠습니다.

 

 

1. 쉘 스크립트 기본

쉘 변수

*# 변수 선언 (=앞뒤 공백 없음!)*
NAME="Linux"
NUM=100

*# 변수 사용*
echo $NAME
echo ${NAME}

*# 환경변수 설정*
export PATH=$PATH:/new/path

*# 위치 매개변수*
$0  *# 스크립트 이름*
$1, $2  *# 첫번째, 두번째 인자*
$#  *# 인자 개수*
$*  *# 모든 인자*
$?  *# 마지막 명령어 종료 상태*

 

조건문

*# if 문*
if [ $NUM -gt 50 ]; then
    echo "50보다 큼"
elif [ $NUM -eq 50 ]; then
    echo "50과 같음"
else
    echo "50보다 작음"
fi

*# 비교 연산자*
-eq  *# equal (같음)*
-ne  *# not equal (다름)*
-gt  *# greater than (큰)*
-ge  *# greater or equal (크거나 같음)*
-lt  *# less than (작음)*
-le  *# less or equal (작거나 같음)

# 파일 테스트*
-f  *# 일반 파일*
-d  *# 디렉토리*
-e  *# 존재*
-r  *# 읽기 가능*
-w  *# 쓰기 가능*
-x  *# 실행 가능*

 

반복문

*# for 문*
for i in 1 2 3 4 5; do
    echo $i
done

for file in *.txt; do
    echo $file
done

*# while 문*
count=1
while [ $count -le 5 ]; do
    echo $count
    count=$((count + 1))
done

 

2. 네트워크 명령어

ifconfig (Interface Configuration) / ip

  • 네트워크 인터페이스 설정 확인/변경 도구
  • eth0, wlan0 같은 네트워크 카드 정보를 보여줌
ifconfig          *# 네트워크 인터페이스 정보 (구버전)*
ifconfig eth0     *# eth0 인터페이스 정보*
ifconfig eth0 up  *# 인터페이스 활성화*

ip addr           *# IP 주소 확인 (신버전)*
ip link           *# 네트워크 인터페이스 확인*
ip route          *# 라우팅 테이블 확인*

 

netstat (Network Statistics)

  • 네트워크 연결 상태, 포트 사용 현황 등 통계 정보 표시
  • 어떤 프로그램이 어떤 포트를 사용 중인지 확인 가능
netstat -a   *# all: 모든 소켓 (연결+대기)*
netstat -t   *# tcp: TCP 연결만*
netstat -u   *# udp: UDP 연결만*
netstat -l   *# listening: 대기중인 포트*
netstat -n   *# numeric: 숫자로 표시*
netstat -p   *# program: 프로그램 이름 표시*
netstat -r   *# route: 라우팅 테이블

# 조합 예시*
netstat -an  *# 모든 연결을 숫자로 표시*
netstat -tlnp  *# TCP 대기 포트를 숫자로, 프로그램과 함께*

 

ping (Packet Internet Groper)

  • 네트워크 연결 테스트 ( "살아있니?" 확인하는 명령어)
  • 상대 서버에 작은 패킷을 보내고 응답시간 측정

 

traceroute (Trace Route)

  • 목적지까지 거쳐가는 모든 경로(라우터) 추적
  • 어디서 네트워크가 느려지는지 확인 가능
ping google.com        *# 네트워크 연결 테스트*
ping -c 4 google.com   *# count: 4번만 ping*

traceroute google.com  *# 경로 추적*

 

wget (World Wide Web + get)

  • 인터넷에서 파일을 다운로드하는 명령어
  • 브라우저 없이 커맨드라인에서 파일 받기

 

curl (client + URL)

  • URL로 데이터를 주고받는 도구
  • 웹페이지 내용 확인, API 테스트 등에 사용
wget <http://example.com/file.txt>  *# 파일 다운로드*
wget -O newname.txt http://...    *# output: 다른 이름으로 저장*
wget -c http://...                *# continue: 이어받기*

curl <http://example.com>           *# URL 내용 출력*
curl -O <http://example.com/file>   *# 원본 이름으로 저장*
curl -o newname http://...        *# 지정한 이름으로 저장*

 

3. 텍스트 처리

grep (Global Regular Expression Print)

  • 파일에서 특정 패턴(문자열) 검색
  • 로그 파일에서 에러 찾을 때 필수!
grep "pattern" file       *# 패턴 검색*
grep -i "pattern" file    *# ignore-case: 대소문자 무시*
grep -v "pattern" file    *# invert: 일치하지 않는 행*
grep -n "pattern" file    *# number: 행번호 표시*
grep -r "pattern" dir     *# recursive: 디렉토리 재귀 검색*
grep -c "pattern" file    *# count: 일치하는 행 개수*
grep -w "word" file       *# word: 단어 단위 매칭*

 

sed (Stream EDitor)

  • 텍스트를 읽으면서(스트림) 바로 편집
  • 파일 내용 일괄 변경할 때 사용
  • s = substitute(치환), g = global(전체)
sed 's/old/new/' file           *# 각 행의 첫번째 old를 new로*
sed 's/old/new/g' file          *# global: 모든 old를 new로*
sed 's/old/new/2' file          *# 두번째 old만 변경*
sed -n '3p' file                *# 3번째 행만 출력*
sed '2,5d' file                 *# 2~5번째 행 삭제*
sed -i 's/old/new/g' file       *# in-place: 파일 직접 수정*

 

awk (Aho, Weinberger, Kernighan)

  • 개발자 이름의 첫 글자 (Aho, Weinberger, Kernighan)
  • 텍스트를 열(column) 단위로 처리
  • 표 형태 데이터 분석에 강력함
awk '{print $1}' file           *# 첫번째 필드 출력*
awk '{print $1, $3}' file       *# 1,3번째 필드 출력*
awk -F: '{print $1}' /etc/passwd  *# field-separator: : 구분자*
awk '$3 > 100' file             *# 3번째 필드가 100보다 큰 행*
awk 'NR==3' file                *# Number of Record: 3번째 행*
awk 'NF>2' file                 *# Number of Fields: 필드 2개 초과*

 

cut (Cut out sections)

  • 텍스트를 특정 구분자로 잘라내기
  • CSV 파일이나 구조화된 텍스트에서 특정 열만 추출
cut -f1 file              *# field: 1번째 필드 (탭 구분)*
cut -f1,3 file            *# 1,3번째 필드*
cut -d: -f1 /etc/passwd   *# delimiter: : 구분자로 1번째 필드*
cut -c1-5 file            *# character: 1~5번째 문자*

 

sort

  • 텍스트 행을 정렬
  • 알파벳순, 숫자순 등으로 정렬 가능

uniq

  • 연속된 중복 행을 제거
  • 보통 sort와 함께 사용: sort file.txt | uniq
sort file                 *# 정렬*
sort -r file              *# reverse: 역순 정렬*
sort -n file              *# numeric: 숫자로 정렬*
sort -k2 file             *# key: 2번째 필드로 정렬*
sort -u file              *# unique: 중복 제거*

uniq file                 *# 연속된 중복 행 제거*
uniq -c file              *# count: 중복 횟수 표시*
uniq -d file              *# duplicate: 중복 행만 표시*
uniq -u file              *# unique: 유일한 행만 표시*

 

wc (Word Count)

  • 파일의 행 수, 단어 수, 바이트 수 계산
  • 로그 파일 크기 파악, 데이터 개수 세기
wc file                   *# 행, 단어, 바이트 수*
wc -l file                *# lines: 행 수만*
wc -w file                *# words: 단어 수만*
wc -c file                *# characters: 바이트 수만*

 

4. 파이프와 리다이렉션

*# 파이프 (|): 명령어 연결*
ps aux | grep apache
cat file | sort | uniq

*# 리다이렉션*
command > file    *# 출력을 파일로 (덮어쓰기)*
command >> file   *# 출력을 파일로 (추가)*
command < file    *# 파일을 입력으로*
command 2> file   *# 에러를 파일로*
command &> file   *# 출력+에러 모두 파일로# /dev/null: 출력 버리기*
command > /dev/null 2>&1