중괄호 확장은 언제 사용합니까?

중괄호 확장 이 무엇인지 이해하지만 최선의 방법을 모르겠습니다. 사용하세요.

언제 사용 하시나요?
팁이 있으면 편리하고 놀라운 예를 알려주세요.

답변

중괄호 확장은 경로 이름이 긴 경우 매우 유용합니다. 파일을 백업하는 빠른 방법으로 사용합니다 :

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 

댓글

  • 인수 중복에도 사용할 수 있습니다. ' -f 인수 작동 할 파일. program -f file1 -f file2 -f file3 대신 program "-f file"{1..3}
  • 를 수행 할 수 있습니다.

  • 유감입니다. 나는 방금 그것을 발견했지만 rhis를 알지 못하고 수년간 매우 긴 경로에서 백업 작업을 수행했습니다. 감사합니다.
  • @Patrick : program가 6 개 단어가 아닌 "-f file1" "-f file2" "-f file3"라는 세 단어를 가져 오기 때문에 실패합니다. "-f" "file1" "-f" "file2" "-f" "file3".
  • @dogbane : 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}} 

p>

댓글

  • 중첩은 좋지만 중첩 예제 (mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}})는 ' 실제로 어떤 용도로도 사용되지 않습니다. 이렇게하면됩니다 : mkdir -p dir1/subdir{1,2}/subsubdir{1,2}.
  • @iconoclast, subdir1를 해석하면 목적이 있습니다. 그리고 비문 자적 의미의 subdir2. subdir1cat로 바꾸고 subdir2dog 예입니다.
  • @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.acpart.kb

중괄호 확장 (예 : 다음)

cat part.{{a..j}{a..z},k{a..b}} > hugeFile.zip 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다