티스토리 뷰

파일 이름 대치

- 다뤄야 할 파일 이름이 많은 경우(ex. 현재 디렉토리의 모든 .c 확장자를 가진 파일) 모두 명시하기 힘들다.

- 대표문자 (wildcard character)를 이용해 한 번에 여러 파일들을 나타냄

대표문자 의미
* 빈 문자열을 포함하여 임의의 문자열을 나타냄
? 임의의 한 문자를 나타냄
[..] 대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능

 

- 원리: 쉘이 명령어를 실행하기 전에 대표문자를 그 대표문자가 나타내는 파일 이름들로 먼저 대치하고 실행된다.

 

$ gcc *c

-> 현재 디렉터리에 (a.c, b,c, test.c ) 이렇게 파일 3개가 있다면

$ gcc a.c b.c, test.c 와 같이 파일 이름이 대치되어 실행됨

 

 

 

명령어 대치 (Command substitution)

- 어떤 명령어를 실행할 때 다른 명령어의 실행 결과를 이용할 수 있다

- 역따옴표( `) 를 사용하면 그 부분은 명령어의 실행 결과로 대치된 후에 실행된다.

$ echo 현재 시간은  `date `
현재 시간은 2020. 10. 16 (금) 17:41:48 KST

$ echo 현재 디렉터리 내의 파일의 개수 :  `ls | wc -w `
현재 디렉터리 내의 파일의 개수 : 32

 

 

 

 

대치 기능의 제한 --> 따옴표 사용!

- 작은 따옴표(' ')는 대표문자 대치, 변수 대치, 명령어 대치를 모두 제한한다.

- 큰 따옴표(" ")는 대표문자 대치만 제한한다.

- 따옴표가 중첩되면 바깥에 있는 따옴표가 효력을 갖는다.

 

- 필요성 

$ echo 3 * 4 = 12
3 a.c b.c test.c

대표문자 대치 * 기호가 현재 디렉터리 내의 파일로 대치되어 버림..

$ echo '3 * 4 = 12'
$ echo "3 * 4 = 12"

3 * 4 = 12

작은 따옴표( ' ' ) 나 큰 따옴표(" ") 를 이용해 대표문자 대치 제한

 

 

- 작은 따옴표와 큰 따옴표 차이

$ name=나가수
// 작은 따옴표 = 대표문자 대치 제한, 번수 대치 제한, 명령어 대치 제한
$ echo '내 이름은 $name 현재 시간은 `date`'
내 이름은 $name 현재 시간은 `date`

// 큰 따옴표 = 대표문자 대치 제한
$ echo "내 이름은 $name 현재 시간은 `date`"
내 이름은 나가수 현재 시간은 2016. 11. 11 (금) 10:27:48 KST

작은 따옴표 사용한 경우, $name 이라는 변수 값 대치 제한과, `date`명령어 대치를 제한함

큰 따옴표를 사용한 경우, 변수대치와 명령어대치는 이루어지지 않음. (변수는 앞에 $을 붙여 변수값으로 출력되고, `(역따옴표)를 사용한 명령어 대치도 그대로 실행됨)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함