使用touch和vi?

使用touch和vi?

在编辑之前通过触摸创建文件是否有好处......例如:

touch foo
vi foo

还是直接交给编辑?喜欢:

vi foo

我看到很多教程都使用前者(touch然后vi)。

答案1

touch编辑该文件首先确认您确实有能力创建该文件,而不是在编辑器中浪费时间只是为了发现文件系统是只读的或其他问题。

答案2

除了给出的答案之外,触摸的一个优点是,在您触摸该文件时编辑同一文件的任何其他用户/终端在尝试保存任何更改时都会收到警告。

WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?

即使您本身没有进行任何更改并且只触及了文件,这也会提醒他们。

答案3

除了接受的答案之外:

值得注意的是touch用于更新文件时间戳。如果您touch在存在的文件上使用,它会将文件时间戳更新为当前日期和时间。如果该文件不存在,则会创建一个空文件,并以当前日期和时间作为时间戳。

vi另一方面,除非您对其进行写入,否则不会创建新文件。

例如,如果我输入vi test.txt,输入一些注释,然后输入:q!;test.txt不会存在。

答案4

touch首先 ing没有任何好处;vi如果该文件不存在,将创建该文件。

接受的答案说它会检查您是否可以在编辑器中浪费时间之前在那里编写。确实如此,但现在您touch每次都会浪费时间打字。与正常工作的频率相比,无法在某个地方写入是相当特殊的(只要您记得sudo主目录或 之外的文件/tmp,或者以 root 身份登录)。

只需打开编辑器并执行您想要的操作,然后尝试保存文件。如果它不起作用,即使使用:w!,请将其保存到其他地方 ( :w ~/asdf) 并解决问题。修复后,您可以将文件内容从临时文件复制到原始文件:cat ~/asdf > /mnt/example.txt && rm ~/asdf。我们使用cat而不是mvor的原因cp是使用目的地的权限和其他属性。

此外,对于一些更高级的命令行用法,您可以在修复问题时vi使用Ctrl+后台(或使用, 或),最后再次运行写入命令。Z:suspend:susfg

编辑:帖子改进以响应/u/G-Man的评论。谢谢!

相关内容