如何在没有文本编辑器的情况下编辑文本文件?

如何在没有文本编辑器的情况下编辑文本文件?

我发现自己处于需要连接(使用 ssh)到未安装文本编辑器(没有edex或)的远程计算机vi的情况nano。这是在正在运行的生产服务器上。我们不安装(也不允许)文本编辑器,基本上是因为以下信念:

  • 你并不真的需要它们。
  • 将它们排除在外可能也会增加安全性。

但是,您仍然需要不时地进行调试和故障排除。

外壳是 Bash。我能看到编辑文本文件的唯一方法是使用echocat

您能否分享一下在这种情况下如何编辑文本文件的经验?也许有一种方法可以将文件传输到本地vim

更新:澄清一下,这个问题只是一个理论案例。有几次我不得不使用非常少的设置来调试 k8 集群中的 pod。因此您可能需要更新一些配置。

答案1

在这种情况下,我会尝试将文件传出并在另一台计算机上编辑它们,然后将它们传回。如果你有ssh,你应该有scp(我希望),所以你应该能够将文件推入和推出。如果没有,您还可以寻找ftp传入和传出文件。

如果没有,那么我认为最好的选择是尝试使用catgrepsedecho和 I/O 重定向(尤其是附加>>)。还有很多临时文件。

答案2

正如 Faxeyo 提到的,编辑文件的最简单方法是远程编辑。本地计算机上的 Vim 通常能够通过 SFTP 编辑文件,如果您使用其他编辑器,它也可能能够远程工作。

但是,也许您正在编辑的文件只能以其他用户的身份进行修改,并且该文件不起作用。如果远程系统是Linux系统,则可能有busybox,某些版本的busybox包括vied。它的vi功能并不完整,但它的功能足以编辑文件。您可以使用busybox vi FILE或调用它们busybox ed file。您也可以scp通过静态链接的二进制文件。busybox

您的系统在其他地方可能有一个功能更强大的ed二进制文件。它是一个行编辑器,很像viex命令)的冒号命令。虽然在许多 Linux 发行版上是可选的,但它通常用于 的一些更深奥的功能patch,因此它可能存在。 ed并且该ex模式vi还具有无需 TTY 即可工作的愉快特点。

一些非常老的 Debian 系统有ae,它可以在模式下运行vi。我所知道的所有其他非 Linux 开源操作系统在基本系统中都有viex或之一ed,并且不允许通过包管理器删除它们。

如果确实没有文本编辑器,我会使用cat和 heredocs 将数据块写入临时文件,并使用sed.我还会向系统管理员(当然是从另一个系统)发送一封友好的电子邮件,询问他们是否可以安装一两个编辑器。

答案3

如果zsh安装了,您可以使用 zsh 行编辑器编辑文件:

zmodload zsh/mapfile
vared 'mapfile[myfile.txt]'

甚至:

autoload zed
zed myfile.txt

答案4

这不是您问题的答案,但它仍然可能对有相同问题的人有所帮助。我寻找了此问答的解决方法,但最终不需要它们。我想在浪费了一些时间之后分享这一点。

我没有看到房间里的大象。只需安装 vim: apt-get install vim.在我的容器中,这有效,无需将安装程序添加到映像中。这应该适用于您有权安装的任何其他地方。

相关内容