본문 바로가기
개발

리눅스 Shell Expansion 종류

by 플리트우드 2025. 3. 7.

출처 : https://effective-shell.com/part-6-advanced-techniques/understanding-shell-expansion/ 

 

Understanding Shell Expansion | Effective Shell

When you are working with the shell there are a number of techniques that you can use to take simple commands and make more useful. For example, if we wanted to create three files, we could run touch file1 file2 file3, or we could use 'brace expansion' and

effective-shell.com

 

리눅스는 명령을 수행하기 위해 사용자가 입력한 문자열을 해석한다. 이때 쉘 확장이란 걸 하는데, 쉘 확장에는 어떤 종류가 있는지 알아보자.

 

1. Brace Expansion

중괄호를 사용하여 주어진 범위의 패턴을 생성한다.

예시1
예시2
예시3
예시4

처음과 끝 숫자를 준 뒤, 증가값을 줄 수도 있다.

for x in {0..10..2}
do
	echo $x
done

/* test.sh */

bash test.sh 출력

 

 

 

2. Tilde Expansion

~를 $HOME으로 확장한다.

 

 

 

3. Parameter Expansion

$변수 또는 ${변수}를 사용하여, 변수나 파라미터의 이름을 그 으로 치환한다.

fruit = 이름, appels = 값

문자가 섞이지 않도록 ${}를 써서 parameter expansion라는 걸 명시해야할 때가 있다. 

 

 

 

4. Command Substitution

$(명령어)나 `명령어`를 사용하여 명령어를 수행한다. 실행되면 해당 부분은 명령 수행 결과(출력)로 치환된다.

안에 있는 명령어는 subshell에서 실행된다. subshell은 지금 셸의 상태를 복사하여 만든 새로운 셸을 말한다.

$() 표현을 권장한다.

$(date)가 date를 실행한 결과로 대체된 모습

 

variable에 date를 실행한 결과(출력)이 들어간 모습

 

 

 

5. Arithmetic Expansion

$((수식))을 사용하여, 해당 부분을 안에 있는 수식을 계산한 결과값으로 치환한다.

 

 

 

6. Pathname Expansion

*, [], ?를 사용하여 존재하는 파일 중 패턴과 일치하는 걸 찾는다

글로빙이라고도 부른다.

* : 모든 문자, 길이상관없음

 

 

[] : 범위내에서 한글자 일치

 

 

 

? : 모든 문자, 한글자 일치