假设我有“a.txt”。我想复制该文件并使用VI打开新复制的文件。
cp a.txt b.txt
vi b.txt
如何将两个命令合并在一个命令中?
答案1
您可以使用 vi 本身进行复制,方法是打开 a.txt,然后将内容保存到 b.txt(有效复制它),然后切换到 b.txt。
把它们放在一起:
vi -c 'w b.txt' -c 'e#' a.txt
这相当于运行vi a.txt
,然后运行:w b.txt
命令(在 内部vi
),这会将内容保存到名为 b.txt 的文件中。但此时 vi 仍将编辑 a.txt,因此您继续执行该:e#
命令,这意味着“编辑替代文件”(或“编辑最后一个文件”),并且鉴于 vi 刚刚触及 b.txt,它将切换到编辑该文件。
答案2
使用&&
运算符
cp a.txt b.txt && vi b.txt
答案3
您可以编写自己的函数并使用该函数。在下面的示例中,您可以使用 cp1 作为命令。
例子:
$ cat test.txt
function cp1() {
source_file=$1
destination_file=$2
cp "${source_file}" "${destination_file}"
vi "${destination}"
}
$ . ./test.txt
$ cp1 a.txt b.txt
答案4
如果您想要一种节省输入的方法,您可以使用 bash 内置功能来重复上一个命令的最后一个单词。你可以通过以下方式做到这一点ALT+.
> cp a.txt b.txt
> vi ALT+.
非常有用,让你想起 vim 的点运算符。
快乐打高尔夫球。