GNU+linux/shell

리눅스 와일드카드 개념 & 활용으로 고급 명령어 사용! - 2편

ensuta 2021. 1. 17. 00:42
728x90
반응형

리눅스 와일드카드 ( wildcard ), 정확히는 와일드카드 문자 ( wildcard character ) 이다.

와일드카드는

컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 문자열 기호를 가리킨다

영어의 대명사를 생각하면 쉽다.

리눅스는 C언어로 작성되었는데, 와일드카드 기능은 C언어의 연산자와 매우 유사하다.

UNIX에서 부터 사용되어 왔으므로 UNIX 계열(UINX-like)에선 모두 사용할 수 있다.

설명이 난해할 수 있으나 예제를 참고하면 감이 올 것이다.

 

말로 설명하기 애매한 부분이 많아서 사진을 첨가.

종류
{} 중괄호. 
안의 각 문자열과 일치 (딕셔너리)
[] 대괄호.
안의 문자열 중 하나와 일치
- 양 옆에 있는 문자에서 문자범위를 설정
대괄호와 쓰인다
[! ] 또는 [^ ] [ ] 의 여집합 (complementary set)
* 애스터리스크.
0개 이상의 문자를 대체
? 1개의 글자를 대체
~ 해당 유저의 홈 디렉토리 (/home/<userid>)

 

와일드카드는 따옴표( "  " ) 안에 넣으면 안된다

' ~ ' 와 ' * ' 의 예시로 보자

$ ls -al "~/abc def/a*"
ls: '~/abc def/a*'에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다

$ ls -al "~/abc def/a"*
ls: '~/abc def/a'*에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다

$ ls -al ~"/abc def/a*"
ls: '/home/<userid>/abc def/a*'에 접근할 수 없습니다: 그런 파일이나 디렉터리가 없습니다

$ ls -al ~"/abc def/a"*
apple
appear
abc
abc2
abcdir/

와일드카드 문자가 따옴표 안에 작성되면 문자열(String)로 인식된다.

 

 

' * ' 모든 문자와 일치하는 와일드 카드 문자

' ? ' 하나의 문자와 일치하는 와일드 카드 문자

 

애스터리스크와 ' ? ' 의 활용

$ ls tes* 
(test.txt, tes/123.txt 등 일치하는 모든 파일/디렉토리(내부)가 출력)

$ ls test.tx? 
(test.txt, test.txx 등 하나 일치한 파일을 출력)

간단한 ls 명령에서 대괄호와 ' ! ' , ' - ' 를 활용해보자

파일이 수천 개 넘게 존재할 때 유용할 것이다. -R 옵션과 파이프라인을 함께 쓰면 유용하다

$ ls -l 
total 0
-rw-r--r--. 1 root root 0 Aug 20 21:30 aaa
-rw-r--r--. 1 root root 0 Aug 20 21:30 CCC
-rw-r--r--. 1 root root 0 Aug 20 21:32 Other
-rw-r--r--. 1 root root 0 Aug 20 21:44 shvatio?
-rw-r--r--. 1 root root 0 Aug 20 21:31 So#Me
-rw-r--r--. 1 root root 0 Aug 20 21:47 Zvezda*

$ ls -l [!a-C]*
-rw-r--r--. 1 root root 0 Aug 20 21:32 Other
-rw-r--r--. 1 root root 0 Aug 20 21:44 shvatio?
-rw-r--r--. 1 root root 0 Aug 20 21:31 So#Me
-rw-r--r--. 1 root root 0 Aug 20 21:47 Zvezda*

$ ls -l [!aZ]*
-rw-r--r--. 1 root root 0 Aug 20 21:30 CCC
-rw-r--r--. 1 root root 0 Aug 20 21:32 Other
-rw-r--r--. 1 root root 0 Aug 20 21:44 shvatio?
-rw-r--r--. 1 root root 0 Aug 20 21:31 So#Me

고급 명령어에 필수인 와일드카드를 꼭 알아두자.

 

노가다 코딩 풍자

유닉스 계열에선 꼭 필요하고 알아둬야 하는 개념이다.

특히 컴퓨터의 주 기능이라 할 수 있는 반복노동을 극히 줄여준다.

CLI 환경에서 작업을 해야한다면 모르면 손해다!

반응형