IT/AIX&Linux

하루 5분 AIX - 메타문자

뜻밖의 행복 2013. 5. 30. 22:00
반응형

 

안녕하세요?


뜻밖의 행운입니다.


오늘은


shell 이용에 있어 기본적인 메타문자에 대해 다루어 보겠습니다.


메타 문자


우선 메타 문자란 문자 자체로 인식되지 못하고 shell에 의해서 어떤 뜻으로 해석되는 문자를 메타 문자라고 합니다.  


메타 문자는 다음과 같습니다  < > | ; ! * ? " $ \ [ ] & ' ` \ 


이렇게 정의만 들어서는 잘 감이 오지 않을 수가 있는데요


아래 예시를 보겠습니다.



# ls

1  2  3

# touch 4

# ls

1  2  3  4

# touch >

ksh: syntax error: `newline or ;' unexpected

# awe;lkrj

ksh: awe:  not found

ksh: lkrj:  not found

# touch

usage: touch [-amcf] [MMDDhhmm[YY]] [-t [[CC]YY]MMDDhhmm[.SS]] [-r ref_file] file ...


처음 ls로 파일이 1,2,3 3개가 있는게 보입니다.


touch 명령어로 4라는 빈파일을 만들었죠


ls 로 확인 해보니 1,2,3,4 파일이 있는게 보입니다.

 

 


그럼 이제 touch 명령어로 > 이름인 파일을 만들어 볼까요?

touch > 하니 바로 error 가 떨어진게 보이시죠?


>이 메타 문자 이기 때문입니다. 


>자체로 기능이 있기 때문에 옵션과 아규먼트가 필요하다고 나오지요


즉 쉽게 생각하자면 메타 문자는 한글자로 된 명령어로 생각하는게 쉽습니다.


shell 에서 touch 라고 치면 밑에 사용법에 관한 설명이 나옵니다.


이것은 touch가 명령어 즉 원래 shell에서 의미가 있는 단어이기 때문입니다.


반대로 touch 이에 제가 멋대로 쓴 글자들은 아무런 의미가 없기 때문에 그냥 에러가 떨어질 뿐입니다. 


중간에 메타문자 ; 들어가서 오류가 뜨는게 보이시죠?


각 메타문자가 무엇을 의미하는지는 shell 심화에서 다루도록 하겠습니다.


메타 문자에 대해 간략히 알아 봤으니 이제 


메타 문자의 부분인 와일드 카드에 대해 다루어 보겠습니다.(자동차에는 세단, 스포츠카 등의 종류가 있듯이)


와일드 카드는 메타 문자의 부분으로 파일 패턴을 일치시키는데 사용됩니다.  와일드 카드 문자는 다음과 같습니다.  * ? ! [ ] [-] 

 

  ?는 한 문자와 1:1 대응되는 와일드 카드입니다.

 

쉘은 파일 이름의 ? 자리에 오직 단 하나의 문자를 대응합니다.  

 

? 와일드 카드는 파일 이름의 맨 앞에 있는 . 는 대응시키지 못합니다. 

 

밑을 볼까요?

 

# ls
11 111 112 1123 1155 212
# ls 11?
111 112
# rm 11??
# ls
11 111 112 212
# ls *
11 111 112 212
# rm *
# ls
#


ls를 하니 11, 111, 112, 1123, 1155, 212 가 보입니다.

 

일전에 다룬 ls 명령어 11? 를 하면 어떤 결과가 나와야 할까요?

 

아까 ? 한개는 문자 한개와 같다고 했습니다.

 

11?는 3문자와 같으니 앞에는 11이 와야 하고 뒤에 ?에는 한자리 문자 아무거나 오면 됩니다.

 

따라서 111, 112 가 나오게 되겠지요

 

와일드 카드 ?를 ls만 쓸 수 있을까요?

 

아닙니다 위에 보시다시피 rm 에도 대응해서 쓸 수 있는 것을 볼 수 있습니다.

 

그 다음 와일드 카드 * 아마 컴퓨터를 좀 다루신 분들을 짐작이 될것입니다.

 

*는 여러 문자를 나타내는 와일드 카드입니다. ? 한개가 한개의 문자와 1:1 이 었다면

 

*는 0개 이상의 문자로 확장됩니다. 0개 이상이니까 말그대로 모든것 입니다.

 

ls *하니까 0개 이상의 모든 문자들이 검색 되었습니다.

 

rm * 하니까 어떻게 되었나요?

 

rm 명령어는 아직 다룬적이 없지만

 

다음에 필수 기본 명령어를 한번 따로 다루겠습니다.

 

그 때 자세히 배우겠습니다.


반응형