结合大括号扩展和输出重定向

Ber*_*ard 7 command-line shell bash io-redirection

通常,我在命令行上使用参数扩展,例如

cp a.{ext1,ext2}
Run Code Online (Sandbox Code Playgroud)

这是扩展到

cp a.ext1 a.ext2
Run Code Online (Sandbox Code Playgroud)

但是,在很多情况下,我不使用cp,而是使用另一种工具,我们称之为cat,我会做一些输出重定向,比如

cat a.ext1 > a.ext2
Run Code Online (Sandbox Code Playgroud)

在我的情况下a可能会有所不同,或者很长,所以我希望能够使用某种括号扩展,至少只需要a在单行中出现一次。我怎样才能得到它?

我专门使用

$ bash --version
GNU bash, version 3.2.51(1)
Run Code Online (Sandbox Code Playgroud)

但是使用其他外壳的答案也很受欢迎。

Sté*_*las 11

您可以输入:

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

或者:

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

要真正使用大括号扩展,请注意:

cat a.ext1 > a.ext2
Run Code Online (Sandbox Code Playgroud)

也可以写成:

cat > a.ext2 a.ext1
Run Code Online (Sandbox Code Playgroud)

但是你不能这样做:

cat > a.ext{2,1}

但是,您可以这样做:

eval cat \> a.ext{2,1}
Run Code Online (Sandbox Code Playgroud)