我正在尝试使用 vi 编辑器编辑 sources.list,但在保存文件时出现以下错误:
/etc/apt/sources.list" E212: Can't open file for writing
Vim 有一个内置的帮助系统。在 Vim 中运行 :h E212
会打印以下内容:
由于某种原因,您正在写入的文件无法创建或覆盖。原因可能是您没有在目录中写入的权限或文件名无效。
您可能希望使用 sudo vim FILE
以超级用户身份编辑该文件。或者,如果您不想离开现有的 vim 会话(现在拥有适当的 sudo 权限),您可以运行:
:w !sudo tee % > /dev/null
这将保存文件。
这一直发生在我身上,我打开一个根文件进行写入:
而不是丢失所有更改并使用 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”表示“确定”。不要重新加载,否则您将丢失所做的更改。
:w !chmod 777 %
我得到 chmod: changing permissions of ‘filename’: Operation not permitted
...
:w !sudo chmod 777 %
。
sudo vi temp.tx
工作得很好。
对我来说,有一个非常简单的解决方案。我试图在一个不存在的文件夹中编辑/创建一个文件。因为我已经在我试图在其中编辑/创建文件的文件夹中。
即pwd folder/file
并且正在打字
sudo vim folder/file
很明显它正在寻找文件夹中的文件夹并且无法保存。
我在级别 2 中引用了 Zsolt,我输入:
:w !sudo tee % > /dev/null
然后在我的情况下,我仍然无法修改文件,所以它提示添加“!”。所以我输入
:q!
然后它工作
或者您可能在只读挂载的 fs 上
因为该目录不存在。
可以使用 :!mkdir -p /etc/apt/
创建目录。
然后:wq
对我来说,在运行 vim 之前将文件系统从只读更改为:
bash-3.2# mount -o remount rw /
将用户更改为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
应作为最后的手段使用。
只需打开文件 -
sudo vi filename.txt
然后进行文件更改并使用 :wq
退出
尝试以 root 身份连接,然后编辑文件。这对我有用
使用 sudo
预先附加您的命令。
例如,使用 sudo vim textfile.txt
代替 vim textfile.txt
。这将解决问题。
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
在目录中的文件上使用 git rm
时出现此错误。
我在类似 ~/gitRepo/code/newFeature
在 newFeature 中只有一个文件。我对该文件执行了 git rm
,然后尝试使用 vi 创建一个新文件 myNewFile。
Ubuntu 显示我仍然在 newFeature 目录中,但实际上 git rm
已经删除了整个目录。
我不得不退出 vi,向上导航一个目录,然后重新创建 newFeature 目录。
当我的目录路径不正确时出现此错误,请确保您的目录名称和路径正确
更改该类型的其他用户的权限 setfacl -mu:username:rw filename
:wq 或 :wq! vi 编辑器不退出意味着您对密码没有权限,请根据您所做的检查权限。例如你有root权限
==> sudo vi /etc/ansible/hosts/ :wq 现在它的工作
您只需要以 root 访问权限访问 Gemfile。 vi
之前:
命令:
sudo su -
然后:
vi ~/...