개발/Linux

Bash shell과 Rules(기능)

달리초이 2022. 12. 30. 16:11


[목차]

1. Quoting Rule

2. Nesting commands

3. Alias

4. Prompt

5. Redirection

6. Pipeline


1. Quoting Rule

Metacharacters

- Shell에서 특별히 의미를 정해 놓은 문자들

- ₩ ? () $ ... * % {} [] 등

# 예시) 현재 위치에서
# 모든 파일 조회
echo *

# a로 시작하는 모든 파일 조회
echo a*

# ?는 Any Single Character. 4개의 문자수를 가진 파일 조회
echo ????

# {숫자1..숫자3}은 숫자1부터 숫자3까지를 뜻함
touch myfile{1..3}

 

 

Quoting Rule : 메타문자의 의미를 제거하고 단순 문자로 변경

- Backslash(\) : \ 바로 뒤의 메타 문자는 특별한 의미를 제거

- Double Quotes("") : "" 내의 모든 메타문자의 의미를 제거. 단 $, ``은 제외

- Single Quotes(''): ''내의 모든 메타문자의 의미를 제거

touch \*\*\*
touch my\*name
touch "**"
touch "This is a file"
touch '*'
touch '  '
echo 'Today is *date*'

 

 

2. Nesting commands

Command 치환

- 명령어의 실행 결과를 치환하여 명령을 실행

$(command)
`command`

echo "Today is $(date)"
echo "Today is `date`"
date +%Y%m%d

# report-20220101_v1 형식의 파일 생성
touch report-$(date +%Y%m%d)_v1
touch report-`date +%Y%m%d`_v2
echo 'Today is $(date +%Y-%m-%d)'
# 출력결과 : Today is $(date +%Y-%m-%d)
# single quotes는 모든 의미 제거

echo "Today is $(date +%Y-%m-%d)"
# 출력결과 : Today is 2022-01-01

 

 

3. Alias

Shell의 명령에 새로운 이름을 부여

명령들을 조합하여 새로운 이름의 명령을 생성

- alias 관리 명령

# 등록
alias name='command'

# 확인
alias
alias name

# 삭제
unalias name

 

 

4. Prompt

PS1 변수를 이용해 shell의 기본 프롬프트 모양을 설정

Bash shell에서만 Prompt 모양에 적용 가능한 특수 문자가 존재

특수문자 의미
\h 호스트 이름
\u 사용자 이름
\w 작업 디렉토리 - 절대경로
\W 작업 디렉토리 - 상대경로
\d 오늘 날짜
\t 현재 시간
\$ $또는 # 프롬프트 모양
PS1='\u@\h:\w\$ '

PS1='[\u@\h \W]\$ '

 

- 환경 변수는 로그인되어 있는 현재 셸에서만 적용된다. 따라서 자주 쓰는 건 별도로 .bashrc 파일에 등록해주자.

vi ~/.bashrc
# 맨 아래 추가 예시
PS1='[\u@\h:\W]\$ '
alias c=clear
alias h=history
alias rm='rm -i'

 

 

5. Redirection

- Communication Channels

bash shell에서는 표준 입출력을 번호를 붙여 관리한다.

0 : 표준입력

1 : 표준출력

2 : 표준에러

@ttabae-learn4274

- Redirection

리다이렉션 기능은 이 입출력 방향을 바꿀 수 있다.

0, 1은 생략 가능하다.

'>>' 사용 시 기존 내용에 추가한다.

Communication
channels
Redirection
characters
의미
STDIN 0< 0<< 입력을 키보드가 아닌 파일을 통해 받음
STDOUT 1> 1>> 표준 출력을 터미널이 아닌 파일로 출력
STDERR 2> 2>> 표준 에러 출력을 터미널이 아닌 파일로 출력
# 예시
# mailx : 메일을 보낼 수 있는 명령어
# 표준입력을 message.txt 내용으로 받음
mailx -s "sample mail" big@localhost 0< message.txt

# 0, 1은 생략 가능
mailx -s "sample mail" abcd@localhost < message.txt

date 1> date.out
date > date.out

# >> 사용 시 기존 내용에 추가
date >> date.out

# 에러 메시지 파일 저장
ls a.txt 2> error.txt

# 정상 메시지는 화면 출력, 에러 메시지는 파일 저장
ls file1 file100 2> /dev/null
# file1만 존재하는 경우 화면엔 file1이 출력되고 에러 내용은 /dev/null에 저장됨

 

 

6. Pipeline

명령의 실행결과를 다음 명령의 입력으로 전달

리눅스의 명령어를 조합하여 사용

기호: command1 | command2 | command3

@ttabae-learn4274

# ls 결과가 몇 라인인지 알려줌
ls -l | wc -l

# 현재 시스템의 계정 갯수 확인
cat /etc/passwd | cut -d: -f 1 | wc -l

# 오름차순 정렬
cat /etc/passwd | cut -d: -f 1 | sort

# alias 설정
alias usercount='cat /etc/passwd | wc -l'

 

 

 

 

- 출처 : 따배셸

3. Bash shell과 Rules

https://youtu.be/UlQ-xu-koR0

4. Bash shell과 Rules 2

https://youtu.be/lhtdmcYllfA

728x90
반응형