태그 보관물: echo

echo

에코가 일부 파일을 두 번 일치시키는 이유는 무엇입니까? file{1..12} $ echo *e{1..12} file1

$ touch file{1..12}

$ echo *e{1..12}
file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12

$ echo *{1..12}
file1 file11 file12 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12

왜 이런 일이 일어나고 있는지 이해할 수 없습니다. 누군가 설명해 주시겠습니까?



답변

중괄호는 와일드 카드 패턴이 아닙니다. bash 확장 문서를 확인하십시오 : 괄호는 프로세스 초기에 확장되고 와일드 카드 패턴은 마지막 단계 ¹에서 확장됩니다.

처음에는 명령은 두 단어로 구성되어 echo, *{1..12}. 중괄호 확장 한 후, 명령이 13 개 단어를 포함 echo, *1, *2, …, *12. 그런 다음 와일드 카드 패턴이 확장됩니다. *1로 끝나는 파일 이름 목록으로 확장 1뿐만 아니라 포함 file1뿐만 아니라 file11(사전 식 순서 이후에 분류된다). 마찬가지로 *2로 확장 file12하고 file2(이 순서로). 당신이 얻을 그래서 echo, file1, file11, file12, file2하나의 파일과 일치하고 다른 와일드 카드 것을 : file3, file4, …, file12.

¹ 마지막으로 매뉴얼의 설명을 따르지만 “인용 제거”는 실제로 중요하지 않습니다. 따옴표는 확장 프로세스보다 먼저 구문 분석됩니다.


답변