关于vi:/etc/apt/sources.list“E212:无法打开文件进行编写

/etc/apt/sources.list" E212: Can't open file for writing

我尝试使用vi编辑器编辑sources.list,但在保存文件时出现以下错误:

1
/etc/apt/sources.list" E212: Can't open file for writing


1
2
3
For some reason the file you are writing to cannot be created or overwritten.
The reason could be that you do not have permission to write in the directory
or the file name is not valid.

VIM有一个内置的帮助系统。我只是引用了它对:h E212所说的话。

您可能希望以超级用户身份编辑文件,如sudo vim FILE。或者,如果您不想离开现有的VIM会话(现在拥有适当的sudo权限),您可以发布:

1
:w !sudo tee % > /dev/null

这将保存文件。

高温高压


这种情况一直发生在我身上,我打开一个根文件来写:

而不是失去所有的变化和重新开放与苏丹。请参阅本演示,了解如何保存这些更改:

一次性安装演示为较低用户创建一个根拥有的只读文件:

1
2
3
4
5
sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el

首先以普通用户身份打开文件:

1
vi temp.txt

然后对文件进行一些更改,它会警告您它是只读的。使用此命令。

1
:w !chmod 777 %

然后写入文件:

1
:wq!

权限已展开,文件已保存。您需要感叹号,因为您正在以较小的用户身份编辑根文件。

该命令的作用说明:

:w表示写入文件。爆炸意味着开始解释为贝壳。chmod表示更改权限,777表示所有地方的完全权限。百分比表示当前文件名。

它应用更改。它询问您是否要重新加载。按"O"代表"OK"。不要重新加载,否则会丢失更改。


或者您可能在只读安装的fs上


对我来说,有一个非常简单的解决方案。我试图在不存在的文件夹中编辑/创建文件。因为我已经在文件夹中了,所以我试图在其中编辑/创建一个文件。

pwd folder/file

正在打字

1
sudo vim folder/file

很明显,它在文件夹中查找文件夹,但未能保存。


对于我来说,在运行vim之前将文件系统从只读更改为:

1
bash-3.2# mount -o remount rw /

我引用了2级zsolt,我输入:

1
:w !sudo tee % > /dev/null

然后在我的情况下,我仍然不能修改文件,所以它提示添加"!"所以我输入

1
:q!

然后它工作


当我在目录中的文件上使用git rm时,得到了这个错误。

我有点像~/gitrepo/code/newfeature

在NewFeature中只有一个文件。我在那个文件上做了一个git rm,然后尝试使用vi创建一个新文件mynewfile。

Ubuntu显示我仍然在新功能目录中,但实际上git rm已经删除了整个目录。

我必须退出vi,向上导航一个目录,然后重新创建新的功能目录。


您正在访问的文件可能在同一目录中已有一个交换副本(或交换版本)。

因此,首先查看隐藏文件是否存在。

例如,有关以下类型的文件,请参见

1
.system.conf.swp

通过使用命令

1
ls -a

然后,用…

1
rm .system.conf.swp

通常,我建议开始使用超级用户权限,使用…

1
sudo su

尝试以根目录连接,然后编辑文件。这对我有用


您只需要使用根访问权限访问gemfile。在vi之前:

命令:

1
sudo su -

然后:

1
vi ~/...