답변:
긴 경로 이름이있는 경우 브레이스 확장은 매우 유용합니다. 파일 을 백업하는 빠른 방법으로 사용합니다 .
cp /a/really/long/path/to/some/file.txt{,.bak}
에 복사 /a/really/long/path/to/some/file.txt
합니다/a/really/long/path/to/some/file.txt.bak
순서대로 사용할 수도 있습니다 . 한때 웹에서 많은 페이지를 다운로드하기 위해 그렇게했습니다.
wget http://domain.com/book/page{1..5}.html
또는
for i in {1..100}
do
#do something 100 times
done
program
세 단어를 얻기 때문에 실패합니다 : "-f file1" "-f file2" "-f file3"
, 6 : 대신 "-f" "file1" "-f" "file2" "-f" "file3"
.
for
루프 에서 사용하기 위해 확장을 사용하는 것은 쓸모가 없으며 for ((i=1; i<=100; i++))
보다 효율적 이므로 약간 의미가 없습니다.
큰 디렉토리 구조를 만들 때 중괄호 확장은 매우 편리합니다.
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}}
)는 실제로 어떤 목적으로도 사용되지 않습니다. 당신은 이것을 막 할 수 있습니다 : mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
.
subdir1
하고 subdir2
비 문학적 의미 로 목적을 제공합니다 . 교체 subdir1
로 cat
와 subdir2
함께 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
나를 위해 몇 가지 빈번한 경우는 다음과 같습니다.
이름을 바꾸려면 :
mv myText.{txt,tex}
또는
mv myText.tex{,.old}
또는
cp myText.tex{,.backup}
(마지막 2 개의 작업에 버전 제어를 사용하는 것이 덜 지저분하지만)
비교 (이미 언급) :
diff path{1,2}/a.txt
여기에는 몇 가지 훌륭한 답변이 있지만 중괄호 확장을 사용 하지 않을 때 언급 하지는 않습니다 . 다른 응답자와 마찬가지로 명령 줄에서 중괄호 확장을 사용합니다. 스마트 쉘을 기대할 수 있기 때문에 별칭과 함수에서도 사용합니다.
나는 할 수 없습니다 (이러한 경우에, 그와 같은 "진짜"스크립트 언어로 업그레이드하는 것이 최선의 방법이지만, 스크립트가 bash는 또는 zsh을해야 다른 이유가없는 한 내 쉘 스크립트에서 사용 perl
또는 python
). Brace 확장은 POSIX 셸 표준 이 아니므로 이식 이 불가능합니다. 그것이 당신의 작동하더라도 /bin/sh
- 오두막 에드 쉘 스크립트, 그것은 더 제거하는 시스템에서 작동하지 않습니다 /bin/sh
쉘 (예를 들어 dash
).
한 자릿수가 다른 경우에는 중괄호 확장이 필요하지 않습니다. 캐릭터 클래스로 충분합니다.
배 시즘 :
diff file{1,2}
가지고 다닐 수 있는:
diff file[12]
file{1,2}
항상로 확대 될 file1 file2
때, file[12]
단지 기존의 파일 이름으로 확장 : 경우 즉 file1
존재하지만 file2
하지 않습니다, file[12]
로 확장 file1
단지. []
확장은 정말의 제한된 버전 ?
확장 (그들은 "경로 확장"라고합니다).
program -f file1 -f file2 -f file3
할 수있는 일program "-f file"{1..3}