ChatGPT解决这个技术问题 Extra ChatGPT

/etc/apt/sources.list" E212:无法打开文件进行写入

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

/etc/apt/sources.list" E212: Can't open file for writing
当我试图将文件写入的目录超过其最大值时,我得到了这个。光盘使用
作为其中一个答案中提到的评论,如果文件所在的文件夹已被删除或首先不存在,您可能会得到此信息。根据情况查找用于更改目录或从 vi 创建目录的命令。

M
Maëlan

Vim 有一个内置的帮助系统。在 Vim 中运行 :h E212 会打印以下内容:

由于某种原因,您正在写入的文件无法创建或覆盖。原因可能是您没有在目录中写入的权限或文件名无效。

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

:w !sudo tee % > /dev/null

这将保存文件。


谢谢!就我而言,它试图在不存在的目录中编辑不存在的文件。事实证明,虽然您可以“打开”不存在的文件,然后通过保存它来创建它,但这不适用于不存在的目录。现在我知道了 Vim 的内置帮助系统! :)
谢谢!就我而言,我试图写入网络驱动器,并且我的网络权限在该屏幕会话中部分崩溃。我最终写入 /var 中的一个临时文件,并将其从另一个 ssh 实例复制到我的主目录。
回滚了 invalid edit
:h E212 说:“.bashrc” E212:无法打开文件进行写入 E433:没有标签文件 E149:对不起,对 E212 没有帮助
E
Eric Leschinski

这一直发生在我身上,我打开一个根文件进行写入:

而不是丢失所有更改并使用 sudo 重新打开。请参阅如何保存这些更改的演示:

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

sudo touch temp.txt
sudo chown root:root temp.txt
sudo chmod 775 temp.txt
whoami
el

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

vi temp.txt

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

:w !chmod 777 %

然后写入文件:

:wq!

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

该命令的作用说明:

:w 表示写入文件。 bang 表示开始解释为 shell。 chmod 表示更改权限,777 表示任何地方的完全权限。百分比表示当前文件名。

它应用更改。它会询问您是否要重新加载。按“O”表示“确定”。不要重新加载,否则您将丢失所做的更改。


chmod:无法更改 vimrc 上的文件模式:不允许操作
当使用 :w !chmod 777 % 我得到 chmod: changing permissions of ‘filename’: Operation not permitted...
如果您收到权限错误,请使用 :w !sudo chmod 777 %
谢谢@LamerLink 你救了我这一天。我实际上是在我的 centos7 机器上设置 turn/stun 服务器。
对我来说 sudo vi temp.tx 工作得很好。
N
Nitisha

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

pwd folder/file

并且正在打字

sudo vim folder/file

很明显它正在寻找文件夹中的文件夹并且无法保存。


o
oscarz

我在级别 2 中引用了 Zsolt,我输入:

:w !sudo tee % > /dev/null

然后在我的情况下,我仍然无法修改文件,所以它提示添加“!”。所以我输入

:q! 

然后它工作


这不只是退出文件,而不是保存它吗?
k
kellogs

或者您可能在只读挂载的 fs 上


这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。
@DmitryG这里没有问题,只是说明了一种情况。这就是我遇到同样情况的原因,我认为人们会发现了解它很有用。
M
Mr.Wang

因为该目录不存在。

可以使用 :!mkdir -p /etc/apt/ 创建目录。

然后:wq


P
Przemysław Czechowski

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

bash-3.2# mount -o remount rw /

s
somspeaks

将用户更改为root

sodu su -

浏览到等

vi sudoers

在用户权限部分查找 root 用户。你会得到它

root ALL=(ALL:ALL) ALL 

为您的用户名输入相同的条目。如果您的用户名是“myuser”,则添加

myuser ALL=(ALL:ALL) ALL

它看起来像

root ALL=(ALL:ALL) ALL 

myuser ALL=(ALL:ALL) ALL 

保存。将root用户更改为您的用户。现在尝试与您遇到 sudoers 问题的方法相同


这是不好的做法。 root 应作为最后的手段使用。
V
Vishal Ghai

只需打开文件 -

sudo vi filename.txt

然后进行文件更改并使用 :wq 退出


K
Kazman

尝试以 root 身份连接,然后编辑文件。这对我有用


D
DannyDannyDanny

使用 sudo 预先附加您的命令。

例如,使用 sudo vim textfile.txt 代替 vim textfile.txt。这将解决问题。


谢谢它帮助!
Z
Zgpeace

1.需要创建目录,比如

mkdir -p /var/dir1/dir2

2.你可以vi或者vim你的文件,然后修改,保存esc>.wq,比如

vim /var/dir1/dir2/filename.txt

佚名

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

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

例如,请参阅以下类型的文件

.system.conf.swp

通过使用命令

ls -a

然后,使用...删除它

rm .system.conf.swp

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

sudo su

D
DatabaseShouter

在目录中的文件上使用 git rm 时出现此错误。

我在类似 ~/gitRepo/code/newFeature

在 newFeature 中只有一个文件。我对该文件执行了 git rm,然后尝试使用 vi 创建一个新文件 myNewFile。

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

我不得不退出 vi,向上导航一个目录,然后重新创建 newFeature 目录。


S
Safrullah Mohomed

当我的目录路径不正确时出现此错误,请确保您的目录名称和路径正确


E
Engr Qamar Abbas

更改该类型的其他用户的权限 setfacl -mu:username:rw filename


s
shivaji g

:wq 或 :wq! vi 编辑器不退出意味着您对密码没有权限,请根据您所做的检查权限。例如你有root权限

==> sudo vi /etc/ansible/hosts/ :wq 现在它的工作


W
Wtower

您只需要以 root 访问权限访问 Gemfile。 vi 之前:

命令:

sudo su -

然后:

vi ~/...

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅