在这种情况下,我需要连接到远程机器,没有安装文本编辑器(没有vi或nano)。
编辑文本文件的唯一方法是使用echo和cat。
请您分享您的经验,在这种情况下如何编辑文本文件?也许有一种方法可以将文件输送到本地vim。
更新:为了澄清,这个问题更多的只是一个理论案例。有几次,我不得不用极小的设置在k8集群中调试pods。所以你可能需要更新一些吐露。
发布于 2020-08-21 14:13:17
在这种情况下,我会尝试将文件传输出去,并在另一台计算机上编辑它们,然后再将它们传输回来。如果您有ssh,那么您应该有scp (我希望),所以您应该能够将文件推入和输出。如果没有,还可以查找ftp将文件输入和输出。
如果不是,那么我认为您最好的选择是尝试使用cat、grep、sed、echo和I/O重定向(特别是附加于>>)。还有很多临时文件。
发布于 2020-08-21 14:51:52
如果安装了zsh,可以用zsh行编辑器编辑文件:
zmodload zsh/mapfile
vared 'mapfile[myfile.txt]'甚至:
autoload zed
zed myfile.txt发布于 2020-08-21 23:40:34
正如faxeyo所提到的,编辑文件的最简单方法是远程编辑它。本地机器上的Vim通常能够在SFTP上编辑文件,如果使用其他编辑器,它也可以远程工作。
但是,也许您正在编辑的文件只能作为其他用户进行修改,并且无法工作。如果远程系统是Linux系统,那么它上可能有busybox,而且某些版本的busybox包括vi和ed。vi功能不全,但功能足够,可以编辑文件。您可以使用busybox vi FILE或busybox ed file调用它们。您也可以通过静态链接的scp二进制文件进行busybox。
您的系统可能在其他地方有一个功能更好的ed二进制文件。它是一个行编辑器,非常类似于vi的冒号命令( ex命令)。虽然在许多Linux发行版上都是可选的,但它经常用于patch的一些更复杂的特性,因此它可能会出现。ed和ex模式的vi还具有工作愉快的特点,没有TTY。
一些非常老的Debian系统有ae,它可以在vi模式下运行。我所知道的所有其他非Linux开源操作系统都有一个vi、ex或ed在基本系统中,并且不允许通过它们的包管理器删除它们。
如果真的没有文本编辑器,我会用cat和遗传将大块数据写入临时文件,并使用sed编辑错误。我还会给sysadmin (当然是另一个系统)发送一封很好的电子邮件,询问他们是否可以安装一两个编辑器。
https://unix.stackexchange.com/questions/605561
复制相似问题