셸에서의 특수문자
셸에서의 특수문자
문자 | 의미 |
---|---|
\ (백슬래시) | (1) 특수 문자의 기능을 제거하는 escape 문자 (2)긴 명령 행을 여러 줄로 분리할 때 사용 |
~ (틸드) | ~ 또는 ~username 은 사용자의 홈 디렉터리를 의미 |
. (도트) | (1) 현재 작업 디렉터리 (2) 혹은 명령 행 맨 앞에서 셸 스크립트를 실행하는 source 명령 |
.. (더블도트) | 현재 디렉터리의 부모 디렉터리 |
# (파운드) | # 문자 뒤는 주석 처리 |
$ (달러) | 변수를 표시할 때 사용$변수이름 은 변수의 값을 추출 |
& (앰퍼샌드) | 명령 백그라운드 실행 백그라운드 실행시에는 명령& 과 같이 사용혹은 “파일 디스크립터 참조”를 의미함 |
* (애스터리스크) | 파일 이름에 사용할 때 0개 이상의 임의 문자열을 뜻함docker* : docker로 시작하는 문자열*docker* : docker가 포함된 문자열 |
? (물음표) | 파일 이름에 사용할 때 1개의 임의 문자와 대응됨docker? : docker로 시작하면서 뒤에 한 글자가 있는 문자열 |
| (파이프) | 앞 명령의 출력을 다음 명령의 입력으로 연결시킴 |
< 또는 > | 입출력 리다이렉션 파일이나 명령어로부터 입력받을 때, 또는 파일로 출력할 때 사용 |
» | 표준 출력을 파일의 끝에 덧붙일 때 사용 |
! (느낌표) | 명령 히스토리 기능을 이용할 때 사용 |
(화이트스페이스) | 명령 행 구성 요소를 분리하는 역할 |
’’ (인용부호) ”” (인용부호) |
공백을 포함하는 문자열을 표시할 때 특별한 의미를 가진 문자를 일반 문자로 처리하기 위해 사용 |
`` (역따옴표) | 명령 치환 기능 : 명령의 결과를 다른 명령의 인수로 사용할 때 |
; (세미콜론) | 여러 명령을 순서대로 실행할 때 구분을 위해 사용 |
$() | 명령 치환. 하나의 명령의 출력을 다른 명령의 인자로 사용 $() 안쪽의 명령이 우선 실행되며, 이후 나머지 명령이 실행된다. |
파이프
파이프 | 설명 | |
---|---|---|
명령1 | 명령2 | 앞 명령의 결과의 표준출력을 뒤 명령으로 연결한다. |
명령1 2> &1 | 명령2 | 앞명령의 표준출력 및 표준오류 출력을 뒤 명령으로 연결한다. |
-앞 명령의 출력 결과를 다음 명령의 입력으로 연결
-명령1 | 명령2
와 같이 사용함
1
2
cat /etc/passwd | sort | more
# /etc/passwd 파일의 내용을 > 알파벳순으로 정렬하고 > 페이지 단위로 잘라 출력
1
2
3
4
ls | grep 'docker'
>> docker
>> docker-compose
>> docker_mounts
리다이렉션
리다이렉션 | 설명 |
---|---|
명령 > 파일 | 명령 수행의 결과를 표준 출력을 파일로 보냄 |
명령 2> 파일 | 명령 수행 중 표준 오류 출력을 파일로 보냄 |
명령 > file 2 > &1 | 표준출력과 표준오류 출력을 지정 파일로 보냄 |
명령 < 파일 | 명령 수행에 필요한 입력을 표준 입력 대신 파일로부터 얻음 |
명령 < 파일.in > file.out | file.in을 표준 입력으로 읽고, 표준 출력을 file.out으로 보냄 |
명령 » 파일 | 표준출력을 지정 파일의 끝에 덧붙임 |
명령 2 » 파일 | 표준요류 출력을 지정 파일 끝에 덧붙임 |
명령 » 파일 2 > &1 | 표준출력과 표준오류 출력을 지정 파일 끝에 덧붙임 |
1
2
3
4
5
6
7
8
9
10
11
# 입력 리다이렉션
sort < /etc/passwd
# 출력 리다이렉션
grep typedef /usr/include* > typedef.out
# 표준 오류 리다이렉션
python app.py > /dev/null 2>&1
# 출력을 파일에 덧붙임
ls 2>> error.txt
숫자의 의미
숫자 | 의미 |
---|---|
1 | 표준 출력 (STDOUT, 파일 디스크립터 1) |
2 | 표준 에러 (STDERR, 파일 디스크립터 2) |
명령 치환
하나의 명령의 결과를 다른 명령의 인수로 사용하는 방법. 지정된 부분의 명령을 셸이 먼저 해석한 후, 나머지 명령을 실행하는 순서로 진행된다. $(command) 또는 `command` 와 같이 사용한다.
1
2
3
4
5
which passwd
>> /usr/bin/passwd
ls -l $(which passwd)
>> -rwsr-xr-x. 1 root root 32656 May 15 2022 /usr/bin/passwd
인용 부호
인용 부호는 빈칸을 포함하는 문자열을 한 개의 인수로 사용할 때 사용한다.
인용 부호 | 설명 |
---|---|
작은따옴표 (‘’) | 안에 있는 모든 문자에 대해 특수문자의 의미를 제거함 |
큰따옴표 (“”) | 안에 있는 특수문자의 기능을 그대로 실행하도록 한다. 즉, $, ``, /, ! 를 해석해 확장한다. |
역슬래시 (\) | 역슬래시 뒤 하나의 문자에 대해 특수문자의 의미를 제거한다. 즉, 특수문자가 일반문자로 취급되게 한다. |
1
2
3
4
5
6
7
8
echo '$(date)'
>> $(date)
echo "$(date)"
>> Sun Nov 24 16:35:43 KST 2024
echo "\$(date)"
>> $(date)
헛갈림 주의!
-작은따옴표 : 특수문자 의미를 제거
-큰따옴표 : 특수문자 기능 그대로 유지
수식과 변수의 확장
사용법 | 설명 |
---|---|
$[수식] 또는 $((수식)) | 명령 수행 전에 수식의 결과를 계산해 전달 |
$변수 | 명령 수행 전에 변수의 값을 추출해 전달 |
1
2
3
4
5
echo "9 - 7 = $[9-7]."
>> 9 - 7 = 2
echo $HISTSIZE
>> 1000