본문 바로가기
프로그래밍/리눅스

Linux CentOS7 Shell 특수문자

by 참외롭다 2023. 5. 17.
반응형

# 셸에서 사용되는 특수 문자 

 

셸에서 특별한 의미를 가지고 있는 특수 문자들이 있는데 이를 메타 문자라 한다.

 

# ~ :  홈 디렉터리를 나타낸다.

cd ~

# root 의 홈 디렉토리를 나타낸다.

cd ~root

# . : 현재 디렉터리를 나타내거나, 명령행 맨 앞에서 source 라는 의미로 셸 스크립트를 실행 시킬 때도 사용한다.

cd .

# .. : 부모 디렉터리를 뜻한다.

cd ..

# '' : 내부를 모두 일반 문자 취급한다.

echo 'hello world'

# "" : `, ₩, ! 를 제외한 모든 문자들을 일반 문자 취급한다.

echo "hello world"

# # : 주석을 의미한다.

# $ : Shell 변수 기호로 뒤에 오는 문자열을 변수로 취급한다.

$foo='bar'

# & : 특정 명령을 백그라운드에서 실행하도록 할때 사용한다.

# * : 아무 것도 없는 경우를 포함한 모든 문자를 뜻한다.

# ? : 보통 한 문자를 대체할때 사용한다.

# () : 부속 shell 을 뜻하는 기호로 하나의 셸 단위로 묶어준다.

# ₩ : 탈출 문자로 바로 다음에 오는 특수문자의 기능을 없엔다. alias 앞에서 사용되는 경우에도 alias의 기능을 없에준다.
# 추가로 셸에서 긴 명령행 입력시 행을 연장할 때도 사용한다.

# [] : 사이에 선택할수 있는 문자를 나열하여 '~중의 하나'라고 표현한다. 범위를 지정할 때는 ~를 사용한다.

# a,b 또는 c

[abc]

# dash 또는 underscore(_)

[-_]

# * 또는 ?

[*?]

# a,b,c 중 하나

[a-c]

# 알파벳 소문자

[a-z]

# 숫자가 아닌 문자

[!0-9]

# c,h,a,r 가 아닌 것

[^chars]

# 모든 알파벳

[a-zA-Z]

# ; : shell 명령 분리자이다. 명령어를 순차적으로 실행

# {} : 제시된 문자열 중 하나로 대치시킨다.

b{ed, olt, ar}s : beds, bolts, bars

# / : 디렉터리 경로 분리자이다.

# *는 모든 문자를 뜻한다. 즉 a로 시자하는 모든 파일을 보여준다.

$ ls a*

# ? 는 한 문자를 대체한다.

$ ls a.?

# [a-c]는 a,b 또는 c 한 문자를 가리킨다.

$ ls [a-c].*

# a나 b가 들어가지 않는 파일만을 찾아 출력한다.

$ ls [!ab].*

# 인용 부호

 

인용 부호 는 메타 문자가 가지고 있는 특수한 기능을 제거할때 사용하는 부호다.

 

$ 는 shell 변수를 나타낼 때 사용한다. 변수에 특정한 값을 부여할 때는 = 을 사용한다.

 

$name = posein
echo $name

posein

echo $PATH

 


# ''(작은따옴표)

 

''(작은따옴표) 는 모든 특수 문자의 의미를 제거한다.

 

$ echo '$PATH'

$PATH

# ""(큰따옴표)

 

""(큰따옴표) 는 $, ₩, `, !  를 제외한 모든 문자들의 특별한 의미를 없앤다.

echo "$PATH"

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# ₩(역슬래시)

 

₩(역슬래시) 는 기호 다음에 나오는 문자의 특별한 의미를 제거하거나, 명령행이 긴 경우 다음 라인까지 명령행을 연장할 때 사용한다. 특정 명령어에 옵션 기본 장착과 같은 alias가 설정되어있을 경우 앞부분에 ₩ 를 붙여 실행하면 옵션없이 기본명령어로 실행한다.

 

//  $의 특수한 기능을 없애고, 단순한 문자열로 만들어 출력한다.
echo \$PATH

$PATH

// 바로 뒤의 $의 특수한 기능을 없애고, 환경변수 $PATH를 출력한다.
echo \$$PATH

/usr/bin/sbin...

// 명령 입력 중에 \ 를 입력하면 줄 이 바뀌고 2차 프롬프트 > 가 나타나 계속 입력할 수 있다.
./config --with-apxs2=/usr/local/apache/bin/apxs \
> --with-mysql=/usr/local/mysql \
> -- with-config-file-path=/usr/local/apache/conf

// ls 명령어에 커스텀 alias가 적용되어 있을경우 \를 붙이면 무시하고 원래대로 동작한다.
\ls

# 백쿼츠(``)

 

백쿼츠(``) 는 명령어 대체 역할을 하는 문자로 백쿼츠로 묶여진 문자열은 명령어로 인식된다.

 

// `` 안의 pwd를 명령어로 인식하여 그 결과값을 출력한다.
echo "Current directory `pwd`"

Current directory /home/root

 

반응형