Bash
結合大括號擴展和輸出重定向
通常,我在命令行上使用參數擴展,例如
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)
但也感謝使用其他外殼的答案。
您可以鍵入:
$ cat very-long-filename.ext1
Ctrl+WCtrl+Y
>Ctrl+Y
Backspace2
或者:
$ cat very-long-filename.
Ctrl+WCtrl+Y`ext1`>
Ctrl+Yext2
要真正使用大括號擴展,請注意:
cat a.ext1 > a.ext2
也可以寫成:
cat > a.ext2 a.ext1
但是你不能這樣做:
cat > a.ext{2,1}
但是,您可以這樣做:
eval cat \> a.ext{2,1}
關於什麼:-
f=really-long-filename; cat "$f.ext1" > "$f.ext2"