OS

[리눅스 마스터] 6-2. 쉘

noahkim_ 2026. 3. 10. 11:55

1. 분기문

코드) if

더보기
a=10

if [ $a -gt 5 ]; then
    echo "a는 5보다 크다"
fi
read a

if [ $a -gt 0 ]; then
    echo "양수"
elif [ $a -eq 0 ]; then
    echo "0"
else
    echo "음수"
fi

 

표) 조건 연산자

더보기
연산자 의미
-eq 같다
-ne 같지 않다
-gt 크다
-lt 작다
-ge 크거나 같다
-le 작거나 같다

 

 

2. 산술 연산

코드) $(( ))

더보기
echo $((a-b))

 

3. 문자열

head

  • 텍스트 파일이나 표준 입력의 앞부분을 출력하는 명령어

 

표) 주요 옵션

더보기
옵션 의미
-n 출력할 줄 수 지정
-c 출력할 문자 수 지정

 

tail

  • 파일이나 입력 데이터의 마지막 부분을 출력

 


표) 주요 옵션

더보기
옵션 의미
-n 마지막 n줄 출력
-c 마지막 n 문자(바이트) 출력
-f 파일 변경을 계속 추적 (로그 확인)

 

sed

  • 텍스트 스트림을 읽으면서 수정, 삭제, 출력하는 명령어
  • ✅ 줄 선택, 줄 삭제, 문자열 치환 

 

표) 주요 옵션

더보기
기능 명령어
문자열 치환 s
줄 출력 p
줄 삭제 d
특정 줄 선택 줄 번호

 

코드) sed

더보기
sed -n '5p' # 5번째 줄 출력
sed -n '5,10p' # 5~10번째 줄 출력
sed -n '5,10p' # 5~10번째 줄 출력

sed '3d' # 3번째 줄 삭제

sed 's/apple/orange/' # apple -> orange 치환 (첫번째 한개만)
sed 's/apple/orange/g' # apple -> orange 치환 (모든 apple 치환)
sed 's/^ *//' # 공백 제거

 

cut

  • 특정 부분을 잘라내는 명령어

 

표) 주요 옵션

더보기
옵션 설명
-c 문자 위치 기준 추출
-f 필드 기준 추출
-d 필드 구분자 지정

 

 

표) -d 구분자 규칙

더보기
상황 cut 동작
구분자가 없는 줄 줄 그대로 출력
구분자가 있고 필드 존재 해당 필드 출력
구분자가 있고 필드 없음 출력 없음

 

코드) cut

더보기
cut -c 1
cut -c 2,7
cut -c 2-7
cut -c 13-
cut -f 1-3 # CSV 파일 (구분자: ", ")에서 1~3번째 레코드 가져오기
cut -d " " -f 4 # 공백을 기준으로 단어를 나누고 4번쨰 단어 출력

 

uniq

  • 연속된 중복 줄을 세거나 개수를 세는 명령어

 

코드) uniq

더보기
uniq -c # 중복된 줄 함께 출력 (ex. 2 abc)
uniq -i # 대소문자 구분 안함
uniq -u # 유일하게 나온 문자만 출력

 

tr

  • 문자열 치환

 

코드) tr

더보기
tr '()' '[]'
tr -d 'a-z' # 소문자 삭제
tr -s ' ' # 공백들을 하나의 공백으로 압축

 

sort

  • 문자열 정렬

 

코드) sort

더보기
sort -r # 역순 정렬
sort -n # 숫자 정렬
sort -k2 -n # 두번째 컬럼 기준 정렬
sort -u # 중복 제거
sort -t$'\t' -k2 -nr # 탭을 구분자로 두번째 컬럼 기준 역순정렬

 

pasted

  • 여러 줄의 데이터를 한 줄로 붙이는 명령어
  • 기본적으로 탭을 구분자로 출력됨

 

코드) paste

더보기
paste -s # 여러줄을 한줄로
paste - - -  # 3개당 한줄씩 출력
paste -d ';' # ';'를 구분자로 출력