我不小心在我的控制台中运行了以下命令。这是一个复制粘贴错误。
vim -> /etc/apache2/sites-available/25-xyz-https.conf.
但在那之后我的 25-xyz-https.conf 被破坏了。尽管我恢复了文件只是好奇地了解发生了什么。
答案 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;会话覆盖提供的文件。