编辑权限文件
方法一
[Vim]以sudo权限来保存vim打开的readonly文件
champwang 2015-07-09 23:49:23 9410 收藏
分类专栏: tools VIM
版权
[Vim]以sudo权限来保存vim打开的readonly文件
本文要说的命令如下:
:w ! sudo tee % > /dev/null
1
在做 linux 配置的時候,会改到只讀的文件,比如 /etc/profile
$ ls -al /etc/profile
-rw-r–r– 1 root root 1139 Mar 14 17:30 /etc/profile
用 vim 打開該只文件 /etc/profile 修改后,保存會出錯:
:w
E45: ‘readonly’ option is set (add ! to override)
按提示在命令结尾加一个叹号,然后再次执行,还是出错:
:w!
“/etc/profile” E212: Can’t open file for writing
用以下命令可以解决。此时,Vim会有两次交互,
一,输入密码:
:w ! sudo tee % > /dev/null
[sudo] password for user:
二,警告文件已被修改了,并显示出一个选项菜单。
这里按 L键重新将该文件载入缓冲区。
Press ENTER or type command to continue
W12: Warning: File “/etc/profile” has changed and the buffer was changed in Vim as well
See “:help W12” for more info.
[O]K, (L)oad File:
该条命令如何工作:
查阅vim 的文档(输入:help :w),会提到 :write !{cmd}。
:[range]w[rite] [++opt] !{cmd}
Execute {cmd} with [range] lines as standard input
(note the space in front of the ‘!’). {cmd} is
executed like with “:!{cmd}”, any ‘!’ is replaced with
the previous command :!.
该命令会把缓冲区的内容作为标准输入传给指定的{cmd}, {cmd} 可以是任何外部的命令或程序。這裡調用了外部命令tee以sudo 权限运行保存。命令中符号 % 是vim 当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径,这里就会展开为当前文件的完整路径/etc/profile. 然后缓冲区的内容将当做标准输入,覆盖该编辑文件的内容。vim 检测到该文件被一个外部程序修改,就会跳出提示选择。然而这里的文件和缓冲区的内容是一致的。
这条命令怪模怪样,却经常用到。记在这里,加深理解,也有助于记住此命令。
————————————————
版权声明:本文为CSDN博主「champwang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/champwang/article/details/46823611
方法二
1. 终端下先 cd到该文件的目录下;
$ cd /Users/***/Documents
2. 执行命令 chmod a+x 文件名;
$ chmod a+x ~/keyfagaha
3. terminal自动运行写入功能,将选中的文件写成terminal 下的Unix可执行文件;
4. 最后,退出terminal,“control+click” 打开该文件即可。
————————————————
版权声明:本文为CSDN博主「W_Hhh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W_Hhh/article/details/101354245