중괄호 확장과 출력 리디렉션 결합

중괄호 확장과 출력 리디렉션 결합

나는 종종 명령줄에서 매개변수 확장을 사용합니다.

cp a.{ext1,ext2}

다음으로 확장

cp a.ext1 a.ext2

그러나 많은 경우에 나는 을 사용하지 않고 cp대신 다른 도구를 사용합니다. 이를 호출 cat하고 출력 리디렉션을 수행합니다.

cat a.ext1 > a.ext2

내 경우에는 다를 수도 있고 꽤 길 수도 있으므로 최소한 한 줄에 한 번만 발생 a하면 되는 일종의 중괄호 확장을 사용할 수 있었으면 좋겠습니다 . a어떻게 얻을 수 있나요?

나는 독점적으로 사용합니다

$ bash --version
GNU bash, version 3.2.51(1)

그러나 다른 쉘을 사용한 답변도 높이 평가됩니다.

답변1

다음을 입력할 수 있습니다:

$ cat very-long-filename.ext1Ctrl+WCtrl+Y>Ctrl+YBackspace2

또는:

$ cat very-long-filename.Ctrl+WCtrl+Yext1>Ctrl+Yext2

실제로 중괄호 확장을 사용하려면 다음 사항에 유의하세요.

cat a.ext1 > a.ext2

다음과 같이 작성할 수도 있습니다.

cat > a.ext2 a.ext1

하지만 다음과 같은 경우에는 다음을 수행할 수 없습니다.

cat > a.ext{2,1}

그러나 다음과 같이 할 수 있습니다.

eval cat \> a.ext{2,1}

에서는 zsh익명 함수를 사용할 수도 있습니다.

(){cat $1 > $2} a.ext{1,2}

또는:

(){cat ${1}1 > ${1}2} a.ext

답변2

무엇에 대해서:-

f=really-long-filename; cat "$f.ext1" > "$f.ext2"

답변3

쉘 함수 사용

 xyx () { cat "$1".$2 > "$1".$3; }

그 다음에

xyz fie foo fum

다음으로 확장

cat fee.foo > fee.fum

관련 정보