혹시 *
, {}
, ?
, []
와 같은 문자들로 이루어진 특별한 패턴을 사용하여 파일을 검색할 수 있다는 것을 아나요?
그래요, 파일을 검색하기 위한 이러한 패턴들을 사용하는 것이 있습니다.
이는 글로빙(globbing) 이라고 부르거나,
글로브 패턴(glob) 패턴이라고 부릅니다.
글로빙은 유닉스와 비슷한 시스템, 게다가 윈도우 내부의 많은 쉘에 내장 되어 있는 기능입니다.
예시로서 bash 라는 유명한 유닉스 쉘을 사용하여 이를 살펴 봅시다.
Glob exposition - 글로브 설명
Globbing(글로빙) 은 파일 이름과 경로 이름의 패턴과 일치시킬 수 있는 기능입니다.
이를 수행하기 위해서, 심볼이라는 와일드카드를 설정합니다.
심볼은 다른 문자들을 표현하거나, 문자가 아예 없다는 것을 표현 할 수 있습니다.
Glob pattern(글로브 패턴) 은 정규 표현식(regex) 에서도 사용되는 몇 가지 문자들을 사용합니다.
regex
: 정규 표현식 ==> regular expression
이는 혼동을 자주 일으키는 이유입니다.
밑의 스니펫은 k
로 끝나는 모든 파일 이름들을 일치시키는 방법을 보여주고 있습니다.
$ ls
Brunt Damar Dukat Garak Martok Quark Weyoun
$ ls *k
Garak Martok Quark
당신은 *k
패턴이 k
로 끝나는 파일 이름들을 일치시키는 것을 볼 수 있습니다.
여기, *
와일드카드 심볼은 특별한 의미를 가집니다.
파일을 검색할 때 사용할 수 있는 또다른 특별한 문자들을 살펴봅시다.
Glob patterns - 글로브 패턴
밑의 테이블 리스트는 글로빙에 사용되는 가장 흔한 와일드카드들입니다.
* |
모든 숫자를 포함한(/ ) 제외한 모든 문자이거나, 아무런 문자도 없다. |
? |
모든 문자중 하나 |
[] or {} |
{file1, file3, file6} 와 같은 문자열의 그룹이거나, [0-9] , [a-zA-Z] , [p1k] 와 같은 패턴의 집합 |
[!] or [^] |
어떤 패턴을 부정하는 문자열의 집합. 이는 대괄호와 함께 사용됩니다. ex - [!1-5] |
우리는 터미널에서 ls
, cp
, mv
, rm
명령어와 함께 글로브 패턴을 사용 할 수 있습니다.
심지어, git
에서도 사용이 가능합니다.
Example :
rm file{1-6}
cp ~/.* /mnt/usb/
git add *.scm
이제, 글로빙(Globbing) 과 정규 표현식(regex) 를 비교 해 봅시다.
Globbing and regular expressions - 글로빙과 정규표현식
자주, 글로브 패턴과 정규표현식 간의 혼동이 있습니다.
우리가 이전에 말했던 것 처럼, 글로브 패턴은 정규표현식에서도 사용되는 몇 가지 문자들을 사용합니다.
이제 각각의 영역에서 사용되는 것을 확실히 만듭시다.
그리고 두 영역 간의 차이점이 무엇인지 알아봅시다.
짧게 말해서, 글로빙은 파일 이름에 대한 것입니다.
정규 표현식은 작성된 프로그램과 grep
명령어의 파라미터와 같은 텍스트에 관한 것 입니다.
또한, 정규 표현식은 글로빙보다 주로 더 정교하며, 복잡합니다.
정규 표현식은 더 많은 문자들을 사용하며, 이는 많은 옵션과 기능들을 가지고 있는 이유입니다.
몇 개의 심볼들은 글로빙과 정규표현식에서 동일한 의미를 가집니다.
구부러진 괄호 {}
그리고 사각 괄호 []
와 같은 심볼들입니다.
하지만, 별표 *
와 물음표 ?
에는 조심해야 합니다.
이 두 심보들은 글로브 패턴과 정규 표현식에서 서로 다른 목적을 가지고 있습니다.
아마 당신이 이미 아는 것 처럼, 글로브 패턴에서 *
은 0 개의 문자, 혹은 더 많은 문자들을 의미합니다.
하지만 정규표현식에서는, *
는 이전의 문자가 0 개 이상임을 의미합니다.
ex - ba*
이면, 정규표현식은 b
, ba
, baa
, baaa
가 됩니다.
?
심볼은 글로브에서 모든 문자중 하나의 문자를 의미하며,
정규표현식에서는 ?
심볼 바로 직전의 문자가 없거나, 하나가 있음을 의미합니다.
정규표현식에서 .
심볼의 의미는, 글로빙에서 ?
심볼이 의미하는 것과 동일합니다.
그리고 정규표현식에서의 .*
결합은, 글로브 패턴에서의 *
심볼과 의미가 같습니다.
Conclusion - 결론
글로빙은 그리 어렵지 않으며, 이는 확실히 정규표현식보다 쉽습니다.
우리가 논의한 주요 지점은 이렇습니다 :
- 글로빙은 파일과 디렉토리 이름에 대한 것입니다.
- 글로빙에서 사용되는 가장 흔한 와일드카드는
* ? ! ^ {} []
입니다. *
,?
,.
심볼은 글로빙과 정규표현식에서 의미하는 것이 서로 다릅니다.
words to remember
exposition : 박람회, 설명, 주제 제시부
asterisks : 별표
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Introduction to docker and installation (0) | 2024.08.27 |
---|---|
Containers - 컨테이너 기초 의미 (0) | 2024.08.23 |
Loops and sequences - Bash 반복문 (0) | 2024.08.20 |
Conditional statements and test checks - bash if-else 조건문 (0) | 2024.08.17 |
Archiving and extracting data - 데이터 보관 및 추출 (0) | 2024.08.15 |