중괄호 확장 이 무엇인지 이해하지만 최선의 방법을 모르겠습니다. 사용하세요.
언제 사용 하시나요?
팁이 있으면 편리하고 놀라운 예를 알려주세요.
답변
중괄호 확장은 경로 이름이 긴 경우 매우 유용합니다. 파일을 백업하는 빠른 방법으로 사용합니다 :
cp /a/really/long/path/to/some/file.txt{,.bak}
/a/really/long/path/to/some/file.txt
를
시퀀스 에서도 사용할 수 있습니다. 웹에서 많은 페이지 다운로드 :
wget http://domain.com/book/page{1..5}.html
또는
for i in {1..100} do #do something 100 times done
댓글
답변
중괄호 확장 큰 디렉토리 구조를 만들 때 매우 편리합니다.
mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2}
이렇게하면
find dir1 -type d dir1 dir1/subdir1 dir1/subdir1/subsubdir1 dir1/subdir1/subsubdir2 dir1/subdir2 dir1/subdir2/subsubdir1 dir1/subdir2/subsubdir2
한 단계 더 나아가 중괄호 확장을 중괄호 확장에 넣을 수도 있습니다.
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
위 예제와 동일한 디렉토리 구조를 제공합니다.
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
p>
댓글
- 중첩은 좋지만 중첩 예제 (
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
)는 ' 실제로 어떤 용도로도 사용되지 않습니다. 이렇게하면됩니다 :mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
. - @iconoclast,
subdir1
를 해석하면 목적이 있습니다. 그리고 비문 자적 의미의subdir2
.subdir1
를cat
로 바꾸고subdir2
를dog
예입니다. - @ephsmith : " subdir1 "를
cat " 및 " subdir2 " for " dog ", 중첩 예제는 subdir {1,2}을 사용하기 때문에 실패하고 대체 할 수있는 문자열이 없습니다. " subdir "를 사용하면 subdir {1,2}이 {cat, dog}을 반환합니다.
답변
입력을 줄이고 싶을 때 사용합니다.
geany /path/to/file1 /path/to/file2 # versus geany /path/to/file{1,2}
다른 예 :
wajig install libpam0g-dev libiw-dev libdb-dev # versus wajig install lib{pam0g,iw,db}-dev
Answer
실제 비교에 사용합니다. 개발 중에 원하는 테스트 출력으로 테스트 출력. 테스트 # 41이 실패하면 테스트 출력 (tests.output / 041 파일)과 원하는 출력 (tests.out / 041 파일)의 차이점을 쉽게 알 수 있습니다.
$ diff tests.{out,output}/041
답변
나에게 자주 사용되는 경우는 다음과 같습니다.
이름 변경 :
mv myText.{txt,tex}
또는
mv myText.tex{,.old}
또는
cp myText.tex{,.backup}
(마지막 2 개의 작업에 버전 관리를 사용하는 것이 덜 지저분하지만)
비교 용 (이미 언급) :
diff path{1,2}/a.txt
답변
여기에는 몇 가지 훌륭한 답변이 있지만 중괄호 확장을 사용하지 . 다른 응답자와 마찬가지로 명령 줄에서 중괄호 확장을 꽤 많이 사용합니다. 스마트 셸을 기대할 수 있기 때문에 별칭과 함수에도 사용합니다.
셸 스크립트에서 사용하지 않습니다 (스크립트에 다른 이유가없는 경우). bash 또는 zsh 여야하지만이 경우 perl
또는 python
와 같은 “실제”스크립팅 언어로 업그레이드하는 것이 가장 좋습니다. ). 중괄호 확장은 이동할 수 없습니다 . POSIX 쉘 표준. /bin/sh
– shebang ed 셸 스크립트에서 작동하더라도 더 많이 제거 된 시스템에서는 작동하지 않습니다. /bin/sh
셸 (예 : dash
).
한 숫자가 다른 경우 중괄호 확장이 필요하지 않습니다. 문자 클래스로 충분합니다.
Bashism :
diff file{1,2}
휴대용 :
diff file[12]
댓글
- 차이점은
file{1,2}
는 항상file1 file2
로 확장되지만file[12]
는 기존 파일 이름으로 만 확장됩니다.file1
가 있지만file2
가 ' t,file[12]
는file1
로만 확장됩니다.[]
확장은 실제로?
확장입니다 (" 경로 이름 확장 "라고 함). - 정답입니다. 중괄호 확장은 셸 globbing (경로 이름 확장이라고도 함). '
아직 언급되지 않았습니다. 중괄호 확장은 예기치 않게 누락 된 경로를 표시하는 데 더 좋습니다. 중괄호 확장 내부를 볼 수도 있습니다.
답변
매우 큰 파일을 다음으로 분할 한 후
split -b 100m hugeFile.zip part.
이 파일이 262 개 조각으로 분할되었다고 가정하겠습니다. 즉 part.aa
, part.ab
, part.ac
… part.kb
중괄호 확장 (예 : 다음)
cat part.{{a..j}{a..z},k{a..b}} > hugeFile.zip
program -f file1 -f file2 -f file3
대신program "-f file"{1..3}
를 수행 할 수 있습니다.
program
가 6 개 단어가 아닌"-f file1" "-f file2" "-f file3"
라는 세 단어를 가져 오기 때문에 실패합니다."-f" "file1" "-f" "file2" "-f" "file3"
.for
루프에서 사용하기 위해 확장을 사용하는 것은 약간 의미가 없습니다.for ((i=1; i<=100; i++))
더 효율적입니다.