7. 확장과 인용

확장

무엇이든 입력하면 쉘이 그것을 처리하기 전에 다른 무언가로 확장한다. (like 치환)

# echo : 표준출력으로 프린트
$ echo this is a test
this is a test
$ echo *
aaa bin lim lim.txt ls-error.txt ls-output-err.txt ls-output.txt ls-test.txt playground public_html result.txt testdir test.py

경로명 확장

와일드 카드로 동작하는 방식을 경로명 확장이라고 한다.

$ echo /usr/*/share
/usr/local/share

틸트(~) 확장

물결표(~) 기호는 현재 사용자의 홈 디렉토리명을 나타낸다.

$ echo ~
/home/linux-study/lim

# 사용자 이름을 지정할 경우
$ echo ~jehos
/home/jehos

산술 확장

$((expression))

산술 확장은 정수만을 허용한다.

$ echo $((2+2))
4

# 중첩해서 사용 가능
$ echo $(( $((5**2)) * 3 ))
75

# 괄호 사용 가능
$ echo $(( (5**2) * 3 ))
75

중괄호 확장

$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back

$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5

$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

$ echo {2009..2011}-0{1..9} {2009..2011}-{10..12}
2009-01 2009-02 2009-03 2009-04 2009-05 2009-06 2009-07 2009-08 2009-09 2010-01 2010-02 2010-03 2010-04 2010-05 2010-06 2010-07 2010-08 2010-09 2011-01 2011-02 2011-03 2011-04 2011-05 2011-06 2011-07 2011-08 2011-09 2009-10 2009-11 2009-12 2010-10 2010-11 2010-12 2011-10 2011-11 2011-12

매개변수 확장

$ echo $USER
lim

$ echo USER
USER

# 잘못된 변수명을 입력하면, 빈 문자열을 반환
$ echo $ABC

# 사용가능한 변수 목록
$ printenv | less

명령어 치환

$ ls -l $(which bash)
-rwxr-xr-x 1 root root 1037528 Jun 25  2016 /bin/bash