这个命令会做什么

时间:2017-07-27 05:58:24

标签: linux shell vim

我不小心在我的控制台中运行了以下命令。这是一个复制粘贴错误。

vim  -> /etc/apache2/sites-available/25-xyz-https.conf.

但在那之后我的 25-xyz-https.conf 被破坏了。尽管我恢复了文件只是好奇地了解发生了什么。

2 个答案:

答案 0 :(得分:7)

发生这种情况:

vim -

表示在vim中打开标准输入。

> file

是shell的output redirection。 (vim)进程的标准输出将存储在file中。在{vim}进程启动之前,{<1}}将被shell 截断。

我建议在将内容粘贴到shell之前始终将file放入shell中。这使您有机会在执行之前查看该行,特别是如果您将该行与换行符粘贴在一起。 (将立即执行)

答案 1 :(得分:4)

shell跑了&#34; vim - &#34;然后将该命令的输出重定向到/etc/apache2/sites-available/25-xyz-htttps.conf

如果你运行&#34; vim - &#34;你会看到它做这样的事情:

Vim: reading from stdin...

你必须点击^ C才能打破stdin的读取,然后:q退出vim。

这是因为很多公用事业公司都在解释&#39; - &#39;字符作为标准输入(或标准输出,取决于上下文)。

如果你做了类似的事情:

date | vim -

这会打开&#39; vim&#39;显示当前日期的文件内容。没有打开的文件,您不能简单:w来保存文件,但您可以:w./thedate.txt将内容保存到./thedate.txt。重要的是&#39; date&#39;命令成为了“vim”的输入。命令。

之后,>字符只是重定向stdout来自整个&#34; vim - &#34;会话覆盖提供的文件。