TIL: Shell Scripting, Linux Commands & Terminal Tips

수정·2026년 3월 16일

TIL

목록 보기
3/10

학습 목표
- 셸 스크립트를 이해한다
- 터미널 에뮬레이터를 사용하는 데 편리한 기능들을 정리한다
- 저번 포스트에서 다루지 못한 셸 명령어들을 포함한 명령어 모음집을 정리한다
(해당 포스트의 명령어 모음집은 추후 업데이트 될 수 있습니다.)

마지막 업데이트: 26.03.16

셸 스크립트

명령어가 길거나, 명령어 여러 개를 이어서 실행해야 할 때, 이 명령어들을 파일로 묶어 파일 하나로 실행할 수 있게 만든 프로그램

  • .sh로 끝나는 파일
  • 한 줄에 한 명령어씩 작성하면 된다
    • !/bin/bash
      이 스크립트 파일을 실행할 때 어떤 프로그램을 사용해야 할지 알려준다
      • !/usr/bin/python3 를 쓰면 파이썬도 스크립트 파일로 실행가능하다
    • #으로 주석을 넣을 수 있다
  • chmod +x test.sh
    파일을 실행하기 위해서는 실행권한을 추가해줘야 한다

셸의 조건문과 연산자

  • || 를 사용해 이전 명령이 false를 반환한 경우에만 다음 명령을 실행
  • && 를 사용해 이전 명령이 true를 반환한 경우에만 다음 명령을 실행
  • > 명령어의 결과를 파일에 저장 (덮어쓰기)
  • >> 명령어의 결과가 기존 파일 뒤에 추가됨
  • | 앞의 명령어의 결과를 입력으로 받아 이어서 처리할 수 있게 해줌
  • << 파일을 따로 만들지 않고, 스크립트 코드 안에 적힌 텍스트 뭉치를 입력으로 보낼 때 사용
  • < 파일의 내용을 명령어의 입력으로 집어넣을 때 사용
    다만, |로 대체할 수 있는 수준의 명령어라 잘 사용하지 않음

편리한 기능

  1. 터미널 에뮬레이터에서 무언가를 복사하거나 붙여넣을 때에는 ctrl+shift+c, ctrl+shift+v를 사용한다
  2. 상하 방향키를 통해 이전에 실행했던 명령어들을 재사용할 수 있다
  3. history 명령을 통해 실행한 명령들을 표시할 수 있다
    이때 나오는 번호를 참고하여 !번호를 실행하면 해당 번호의 명령이 재실행됨
  4. ctrl+a, ctrl+e를 통해 명령어의 앞, 뒤로 커서를 이동할 수 있다 (좌우 방향키로도 가능하다)
  5. 실수로 ctrl+z를 눌러 프로세스를 중지시켰다면, fg를 통해 다시 재개시킬 수 있다
  6. 실수로 vi 편집기에 처음 들어갔다면, ctrl+c 또는 esc를 누른 뒤 :q! 를 입력하고 엔터를 눌러 편집기를 종료할 수 있다
    • 참고로 편집한 사항이 있어 저장하고 싶다면 w를 추가해 :wq!를 입력하면 된다
  7. sudo apt install curlcurl parrot.live를 통해 춤추는 앵무새를 볼 수 있다
    (우분투가 설치된 로컬 환경에서만 할 수 있다)

명령어 모음

touch 빈 파일을 생성해주는 명령어

셀 환경

history 셸 명령어 이력을 출력
man 프로그램의 매뉴얼 페이지를 출력
which 명령어의 전체 경로를 출력
export 셸 변수나 함수를 현재 환경으로 내보냄
env 명령어가 제공되지 않은 경우, 현재 환경의 정보를 출력 (명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행.)

텍스트 처리

echo 뒤이어 입력한 내용을 출력
cat 하나 이상의 텍스트 파일을 순서대로 출력
sort 입력된 텍스트를 줄 단위로 정렬
less 텍스트 파일의 내용을 자유롭게 조회하고 검색
head 텍스트 파일의 앞 몇 줄만 출력
tail 텍스트 파일의 마지막 몇 줄만 출력
cut 텍스트를 구분자(delimiter)에 따라 나눔
uniq 텍스트 중 중복 값들을 제거
grep 정규식을 활용해 텍스트를 검색
wc 텍스트를 단어, 줄, 문자 등 단위로 셈
comm 텍스트 파일을 비교
zcat 압축된 텍스트 파일을 출력
sed 정규식을 활용해 텍스트를 변형
awk 텍스트를 스캔하고 변형

파일 제어 및 이동

ls 현재 디렉토리 내의 파일 및 폴더들을 출력
cd Change Direcotry의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동
cp 파일을 복사
mv 파일을 이동
rm 파일을 삭제

  • -r 옵션
  • -f 옵션
    chown 대상 파일의 소유 사용자와 그룹을 변경
    chmod 대상 파일의 권한을 변경
    find 파일을 찾음
    pwd Present Working Directory의 약자로, 현재 내가 위치한 디렉토리 위치 출력
    ln 파일에 대한 링크를 생성
    touch 파일 접근 및 수정 시간을 변경. 빈 파일을 만들 때도 사용
    tar 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축
    mount 새로운 저장장치를 파일시스템으로서 추가
    rename 여러 파일들의 이름을 규칙에 따라 한번에 변경
    df 파일시스템의 남은 용량을 표시

시스템 및 프로세스 제어

sudo 이어지는 명령을 최고 관리자 권한으로 실행
apt-get APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거
ps 현재 프로세스 목록을 출력
kill PID에 해당하는 프로세스에 시그널을 보냄
fg 배경에서 실행되는 작업을 전경으로 가져옴
bg 작업을 배경으로 보냄
jobs 전경 및 배경 작업의 목록을 표시

기타

ssh 원격으로 셸에 접속
tmux 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지
watch 이어지는 명령을 주기적으로 실행하여 표시
curl 주어진 URL과 통신
wget 네트워크를 통해 파일을 다운로드
scp SSH를 통해 원격으로 파일을 전송
ssh-keygen SSH 공개키 비밀키 쌍을 생성
ssh-copy SSH 공개키를 해당 서버에 등록
rsync 원격으로 파일을 동기화
xarg 명령어를 구성하여 실행. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능
cron 주기적으로 실행될 명령을 등록
htop 프로세스 목록 및 자원 사용량을 시각적으로 표시

알아두면 좋은 배경지식

  • bash창에서 입력칸 앞의 root@wtetysocxvx7e6avqwhctccah-776475db6-h2swf:~# 는 뭘까?
    • @앞: root는 현재 로그인한 사용자명
    • @뒤: wtetysocxvx7e6avqwhctccah-776475db6-h2swf는 컴퓨터의 이름, 호스트명
    • :뒤: ~ 현재 위치
    • 맨 뒤: (현재 로그인 사용자)
      • #은 최고 관리자 계정을 의미.
      • $는 일반 사용자를 의미
  • 주요 폴더들
    • /home 사용자별 홈 디렉토리들이 있는 곳
    • /root 최고 관리자 계정의 홈 디렉토리
    • /mnt 저장장치(HDD, SSD)가 붙는 위치
    • /media 이동식 미디어(USB 드라이브)가 붙는 위치
    • /tmp 재부팅 시 삭제될 임시 파일들을 저장하는 폴더
    • /dev 컴퓨터에 연결된 하드웨어 및 가상 기기들을 가리키는 파일들
    • /proc 현재 실행 중인 프로세스들을 가리키는 파일들
    • /etc 각종 설정 파일들
    • /bin 실행 가능한 프로그램(binary)들
    • /sbin 시스템 관리용 프로그램들
    • /usr 다중 사용자 모드에서 사용 가능한 파일 및 프로그램들 (root 계정만 있는 단일 사용자 모드에서는 사용 불가)
    • /var 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 파일

0개의 댓글