Search

Bash

Linux용 표준 셸 스크립팅 언어

Bash란?

Linux 머신을 관리하는 데 중요한 도구(“Bourne Again Shell”의 약어)

Shell

운영 체제에 작업을 수행하도록 명령하는 프로그램
컴퓨터의 콘솔에 명령을 입력하고 명령을 직접 실행하거나 스크립트를 사용하여 명령 일괄 처리를 실행 가능
시스템 관리자에게 담당하는 컴퓨터를 자세히 제어하는 데 필요한 성능과 정밀도를 제공

Bash 기본 사항?

Bash 구문 이해
command [options] [arguments]
Bash
복사

현재 작업 디렉터리의 내용 표시

ls
ls /etc
Bash
복사
/etc 하위 디렉토리의 내용 나열
ls -a /etc
Bash
복사
표시되지 않는 파일&디렉토리(마침표 시작) → -a 플래그를 통해서 대상 디렉토리에 있는 모든 항목 나열 가능
ls -al /etc
Bash
복사
플래그 결합 가능

도움말 보기

man
man mkdir 또는 mkdir --help
Bash
복사
Usage: mkdir [OPTION]... DIRECTORY... Create the DIRECTORY(ies), if they do not already exist. Mandatory arguments to long options are mandatory for short options too. -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask -p, --parents no error if existing, make parent directories as needed -v, --verbose print a message for each created directory -Z set SELinux security context of each created directory to the default type --context[=CTX] like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX --help display this help and exit --version output version information and exit GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report mkdir translation bugs to <http://translationproject.org/team/> Full documentation at: <http://www.gnu.org/software/coreutils/mkdir> or available locally via: info '(coreutils) mkdir invocation'
Bash
복사

와일드카드 사용

Bash 명령에서 하나 이상의 문자를 나타내는 기호

* (0개 이상의 일치하는 문자)

ls *.png
Bash
복사
파일 이름이 .png로 끝나는 파일만 표시하려는 경우

? (단일 문자)

ls 000?.jpg
Bash
복사
0001.jpg ~ 000N.jpg의 파일을 찾아서 나열

[] (출력을 필터링하는 법)

ls *.[jp]*
Bash
복사
마침표 & (j or p)인 파일을 나열
ls [a-zA-Z]*
Bash
복사
이름이 소문자 or 대문자로 시작하는 모든 파일 나열

Bash 명령 및 연산자

Bash 명령

ls 명령

현재 디렉터리 또는 명령의 인수에 지정된 디렉터리의 내용을 나열
디렉터리 목록에 해당 항목을 포함하려면 -a 플래그를 사용
현재 디렉터리에 있는 파일 및 디렉터리에 대한 자세한 내용을 보려면 -l 플래그를 사용
ls -al *.gif
Bash
복사

cat 명령

파일 내에 있는 내용을 확인하려는 경우 파일이 텍스트 파일이 아닌 경우 출력이 잘 이해되지 않을 것
cat /etc/os-release
Bash
복사

sudo 명령

슈퍼 사용자 권한으로 로그인하지 않고 관리자 권한이 필요한 명령을 실행하려는 경우 (가끔 루트 사용자(시스템 관리자, 슈퍼 사용자)만 실행 가능한 명령을 수행해야 작업이 흘러가는 경우)
sudo cat /etc/at.deny
Bash
복사

cd, mkdir, rmdir 명령

cd(change directory)
현재 디렉터리를 다른 디렉터리로 변경
cd orders
Bash
복사
orders라는 하위 디렉토리로 전환
mkdir
디렉터리 생성 가능
mkdir orders
Bash
복사
orders라는 하위 디렉토리를 생성
mkdir --parents orders/2019
Bash
복사
하위 디렉토리 및 그 아래의 하위 디렉토리를 만드는 경우 : —parents 플래그 사용

rm 명령

파일을 삭제
rm -i *
Bash
복사
-i 플래그 : 삭제 전 되물어봄
rm -r orders
Bash
복사
-r 플래그 : 비어있지 않은 order 하위 디렉토리 & 포함된 모든 하위 항목들 삭제

cp 명령

파일뿐만 아니라 원하는 경우 전체 디렉터리와 하위 디렉터리를 복사
cp 0001.jpg 0002.jpg
Bash
복사
0002.jpg라는, 0001.jpg 파일의 복사본을 만듦
다만 이미 존재하는 경우엔 자동으로 덮어씌워버리기 때문에, -i 플래그를 통해 경고를 표시해주는 것이 안전함
cp -i 0001.jpg 0002.jpg
Bash
복사
와일드카드를 사용해 여러 파일을 한 번에 복사 가능
cp * photos
Bash
복사
현재 디렉터리에 있는 모든 파일을 photos라는 하위 디렉터리에 복사
만약, 아직 존재하지 않는 디렉터리를 생성해 복사를 수행하려면 -r 플래그를 사용
cp -r photos images
Bash
복사
photos의 하위 디렉터리들도 전부 복사됨

ps 명령

현재 실행 중인 모든 프로세스의 스냅샷을 제공(모든 셸 프로세스가 표시)
ps -e // 실행 중인 모든 프로세스를 나열(셸 프로세스 X, 모든 프로세스 O) ps -ef // 실행 중인 프로세스를 더울 포괄적으로 확인 ps aux // 'ps -ef'와 동일 기능 수행
Bash
복사

w 명령

사용자가 추가되거나 삭제되며 경우에 따라 원치 않는 사용자가 있는 경우, 시스템 관리자가 해당 사용자를 시스템에 로그인 할 수 없도록 호출 가능
서버에 있는 사용자를 확인하기 위해 w(who) 명령어 제공 → 현재 컴퓨터 시스템 내 사용자 및 해당 사용자의 작업에 대한 정보 표시

Bash I/O 연산자

< 연산자

키보드 이외의 원본으로 입력 리디렉션
sort < file.txt
Bash
복사
파일의 내용을 사전순으로 정렬

> 연산자

화면 이외의 대상으로 출력 리디렉션
ls > listing.txt
Bash
복사
현재 디렉터리에 있는 모든 항목을 나열하되 listing.txt라는 파일에서 출력을 캡처

>> 연산자

동일한 작업을 수행하되 덮어쓰지 않고 추가
ls >> listing.txt
Bash
복사
덮어쓰지 않고, 이미 포함된 내용 앞에 추가

| 연산자

한 명령의 출력을 다른 명령의 입력으로 파이핑
ps -ef | grep daemon
Bash
복사
“daemon”이라는 단어를 포함하는 줄만 포함하도록 출력을 필터링 (실행 중인 프로세스 목록 내용을 입력값으로 이용)