나는 종종 명령줄에서 매개변수 확장을 사용합니다.
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