在编辑之前通过触摸创建文件是否有好处......例如:
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
而不是mv
or的原因cp
是使用目的地的权限和其他属性。
此外,对于一些更高级的命令行用法,您可以在修复问题时vi
使用Ctrl+后台(或使用, 或),最后再次运行写入命令。Z:suspend
:sus
fg
编辑:帖子改进以响应/u/G-Man的评论。谢谢!