{,string}
구문을 이해하는 데 어려움을 겪습니다 . 나는 주로 다음과 같은 파일 이름을 바꾸는 데 사용 mv test{,.original}
하지만 잘 이해하지 못합니다.
echo asdf{,.fdsa}
산출:
asdf asdf.fdsa
하지만
echo asdf{asdf,.fdsa}
산출:
asdfasdf asdf.fdsa
나는 쭉 읽어보려고 노력한다이것#
나는 or 를 사용하여 유사한 패턴을 찾았 ?
지만 지금은 을 사용 ,
하여 패턴을 찾아야 한다고 생각하지만 그것이 수행되는 작업은 아니라고 생각합니다.
어떻게 작동하나요?
답변1
버팀대 확장입니다. 여기에서 자세한 내용을 읽어보세요.배쉬 매뉴얼.
중괄호 안의 쉼표로 구분된 목록에서 각 가능성을 생성합니다.
echo asdf{asdf,.fdsa}
asdfasdf asdf.fdsa
echo
다음 내용을 그대로 반영하세요(모든 경우는 아니지만 단순화를 위해 이 예에서는).asdf{asdf,.fdsa}
두 가지 가능성으로 확장됩니다(기호가 있으므로,
목록을 두 부분으로 나눕니다). 먼저asdf
변경되지 않은 부분을 얻은 다음asdf
이를 다른 부분(중괄호 목록의 첫 번째 항목)과 연결한 다음asdf
공백을 사용하여 다른 부분(목록의 두 번째 항목)과 연결합니다..fdsa
동일한 문자열을 접두사 및 중괄호 내부에 사용하면 약간 혼란스러울 수 있으므로 더 명확하게 하기 위해 다음을 시도해 보겠습니다.
$ echo a{,b,.c,def}gh
agh abgh a.cgh adefgh
이것은 다음과 같이 번역됩니다.
a
+ 빈 문자열 +gh
=agh
a
+b
+gh
=abgh
a
+.c
+gh
=a.cgh
a
+def
+gh
=adefgh