Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- table status
- 순차탐색
- 욕심쟁이 방법
- 인프런워밍업클럽
- 터미널
- VI
- mycli
- Less
- 분할정복 방법
- 오블완
- 동적 프로그래밍 방법
- 알고리즘
- zsh theme
- oh-my-zsh
- MySQL
- spring boot
- 스터디2기
- mysql 표
- 이진탐색
- 맥
- 네트워킹데이
- mysql 표 출력
- Pager
- CS스터디
- zsh
- 티스토리챌린지
- 데이크스트라
- cs
- 인프런
- 오일러 경로
Archives
- Today
- Total
Develop
[리눅스 마스터 2급-2차] 5. 쉘 스크립트, 네트워크, 텍스트 처리 본문
안녕하세요 ~ .ᐟ
오늘은 쉘 스크립트, 네트워크, 텍스트 처리 명령어를 알아보겠습니다.
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

'자격증' 카테고리의 다른 글
| [리눅스 마스터 2급-2차] 4.파일시스템, 에디터, 소프트웨어 관리 (0) | 2025.12.07 |
|---|---|
| [리눅스 마스터 2급-2차] 3. 프로세스 관리 (0) | 2025.12.05 |
| [리눅스 마스터 2급-2차] 2. 파일 권한 및 소유권 (1) | 2025.12.05 |
| [리눅스 마스터 2급-2차] 1. 파일 및 디렉터리 관리 (1) | 2025.12.05 |
| [리눅스 마스터 2급] 리눅스 일반 (1차) (2) | 2025.06.10 |