如果没有vi,vim,joe等,如何编辑文件?


35

如果没有vi,vim,joe,mcedit,是否可以编辑文件?换句话说,有没有一种方法可以仅使用shell命令来编辑文件?


1
我也没有纳米!
爱德华(Eduard Florinescu)2012年

1
它是一个路由器,但在这种情况下我也看到了一个自定义网关:)
Eduard Florinescu 2012年

3
复制您要编辑的文件。然后cat file,接着cat >file进行剪切和粘贴和/或键入操作,并按完成ctrl-d
ott-- 2012年

7
在docker中,这也发生在我身上。这非常简单。现在我该怎么做这样的事情。虚拟机是临时的,我不能使用ssh或ftp,我必须使用重定向和sed之类的黑客来更改某些文件。这是一个巨大的挑战。看看我们对编辑的依赖性如何:P
代码ninja

3
如果这是一个容器或通过其他主机访问,则可以使用echo <<EOF > new.file [paste here] EOF。编辑主机PC上的文件内容。
pztrick

Answers:


18

在这种情况下,我会尝试将文件传输出去并在另一台计算机上进行编辑,然后再传输回去。如果您使用ssh,则应该具有scp(我希望如此),因此您应该能够将文件推送进出。如果没有,您也可以寻找ftp来传输文件进出。

如果没有,那么我认为您最好的选择是尝试利用cat,grep,sed,echo和I / O重定向(尤其是在后面加上>>)。还有很多临时文件。

尽管如果可以访问perl(或类似的东西),则可以不带任何参数地运行它,它可以让您从标准输入中输入脚本源。按ctrl + d后,它即可运行脚本。您可以使用该方法来创建文件。正如我之前提到的那样,它比在命令行上破解某些东西更强大。


没有sshd,但我有telnetd
Eduard Florinescu 2012年

那你可以ftp吗?
本·理查兹

1
我可以使用cat,grep,echo和I / O重定向(尤其是在>>
后面

2
ftp可以用:)现在,我需要查看此路由器上的可写内容。
爱德华·弗洛里内斯库

3
如果您是通过telnet连接到设备的,则我会认真考虑将文件放置到终端上(具有足够大的向后滚动缓冲区),将整个内容复制/粘贴到本地编辑器中,进行更改,然后进行鞭打会把事情变成一系列回声命令,这些回声命令将写入替换文件。
afrazier 2012年

4

我想你可以做你需要什么grepperl-查找要与线grep,编辑与线perlperl可以像一个大的替代sed),然后确认比你打算这样做,你没有做出更多的改变diff filename filename.new。如果是这样,请使更改永久生效-mv filename.new filename


3

假设您要通过SSH进入路由器,还可以使用各种实用程序将文件传输回去,然后再传输到计算机/路由器。您可以在PC上下载副本,进行修改,然后通过SFTP将其通过SSH SSH回路由器(如果您是Windows用户,请参阅PuttyWinSCP)。

但是,如果您在路由器/网关上使用自定义固件,则可能会遇到问题。有各种Optware软件包,其中包含简单(和小型)文本编辑器。根据您的需要,您可以获取nano软件包,也可以只busybox包含其中的vi


2

一种方法是输出回声的结果。

echo "foo" > bar.txt

这将创建一个名为bar.yxy的文件,其中包含文本“ foo”。


3
那不是真正的编辑。
DavidPostill

2
完成工作,直到您可以找到编辑器为止。
兰登

1

您是否清除了/ bin或其他内容?否则,您可能会与GNU Coreutils中的文本实用程序一起破解某些东西,这在Linux系统上应该是标准的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.