학습 목표
- 셸 스크립트를 이해한다
- 터미널 에뮬레이터를 사용하는 데 편리한 기능들을 정리한다
- 저번 포스트에서 다루지 못한 셸 명령어들을 포함한 명령어 모음집을 정리한다
(해당 포스트의 명령어 모음집은 추후 업데이트 될 수 있습니다.)
마지막 업데이트: 26.03.16
명령어가 길거나, 명령어 여러 개를 이어서 실행해야 할 때, 이 명령어들을 파일로 묶어 파일 하나로 실행할 수 있게 만든 프로그램
.sh로 끝나는 파일!/bin/bash!/usr/bin/python3 를 쓰면 파이썬도 스크립트 파일로 실행가능하다#으로 주석을 넣을 수 있다chmod +x test.sh|| 를 사용해 이전 명령이 false를 반환한 경우에만 다음 명령을 실행&& 를 사용해 이전 명령이 true를 반환한 경우에만 다음 명령을 실행> 명령어의 결과를 파일에 저장 (덮어쓰기)>> 명령어의 결과가 기존 파일 뒤에 추가됨| 앞의 명령어의 결과를 입력으로 받아 이어서 처리할 수 있게 해줌<< 파일을 따로 만들지 않고, 스크립트 코드 안에 적힌 텍스트 뭉치를 입력으로 보낼 때 사용< 파일의 내용을 명령어의 입력으로 집어넣을 때 사용|로 대체할 수 있는 수준의 명령어라 잘 사용하지 않음 ctrl+shift+c, ctrl+shift+v를 사용한다history 명령을 통해 실행한 명령들을 표시할 수 있다!번호를 실행하면 해당 번호의 명령이 재실행됨ctrl+a, ctrl+e를 통해 명령어의 앞, 뒤로 커서를 이동할 수 있다 (좌우 방향키로도 가능하다)ctrl+z를 눌러 프로세스를 중지시켰다면, fg를 통해 다시 재개시킬 수 있다vi 편집기에 처음 들어갔다면, ctrl+c 또는 esc를 누른 뒤 :q! 를 입력하고 엔터를 눌러 편집기를 종료할 수 있다w를 추가해 :wq!를 입력하면 된다sudo apt install curl 및 curl 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캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 파일