[목차]
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 : 표준에러
- 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
# 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
4. Bash shell과 Rules 2
'개발 > Linux' 카테고리의 다른 글
Bash Shell Positional Parameters (위치 매개변수) (0) | 2023.01.02 |
---|---|
Bash Shell Script (셸 스크립트와 작성법) (0) | 2022.12.30 |
Linux Shell이란, Bash shell과 변수 (0) | 2022.12.30 |
Linux 기본 명령어 (0) | 2022.12.27 |
Linux 주요 디렉토리 (0) | 2022.12.26 |