37
5
Is there a way to edit a file if there are no vi, vim, joe, mcedit? In another words is there a way to edit a file using just the shell commands?
37
5
Is there a way to edit a file if there are no vi, vim, joe, mcedit? In another words is there a way to edit a file using just the shell commands?
21
In that instance, I'd try transferring files out and editing them on another computer, then transfer them back. If you have ssh, you should have scp (I hope), so you should be able to push files in and out. If not, you can also look for ftp to transfer files in and out.
If not, then I think your best option is to try and make use of cat, grep, sed, echo, and I/O redirection (especially append with >>
). And lots of temporary files.
Though if you have access to perl (or something similar), you can run it with no arguments and it will let you input a script source from standard input. Once you press ctrl+d, it can then run the script. You could use that method to create a file. It would be more powerful than hacking something on the command line as I mentioned before.
I'd also look out for netcat
/ nc
- there's often a very basic version included in busybox
– Attie – 2017-05-18T12:12:51.723
no sshd but I have telnetd – Eduard Florinescu – 2012-08-20T19:37:25.877
Then can you ftp? – Ben Richards – 2012-08-20T19:38:40.773
1I can use cat, grep, echo, and I/O redirection (especially append with >>) but no sed – Eduard Florinescu – 2012-08-20T19:42:51.173
Well, if you know exactly what you want to write into your file, you should be able to echo
each line and append it to the end of the file you want. Without sed
, editing would be a bit difficult, unless you have/know awk
. Personally, I don't, but it's another alternative to sed
. – Ben Richards – 2012-08-20T19:48:40.500
2Ftp works :) now I need to see where on this router do I have something that is writable. – Eduard Florinescu – 2012-08-20T19:50:05.963
3If you are connected to your device via telnet, I'd seriously think about just catting the file to the terminal (with a sufficiently large backscroll buffer), copy/pasting the entire thing into a local editor, making your changes, and then whipping up something that will turn that into a series of echo commands that will write a replacement file. – afrazier – 2012-08-20T19:50:47.717
All that will only work for pure text files though. Binary... not so much. (Oh, you have ftp? That makes it easy!) – afrazier – 2012-08-20T19:51:13.597
@afrazier that is the solution, but found found ftp working – Eduard Florinescu – 2012-08-20T19:53:03.320
5
One way would to be to output the result of an echo.
echo "foo" > bar.txt
This will make a file titled bar.yxy with the containing text, "foo".
3That's not really editing. – DavidPostill – 2016-07-23T22:50:21.417
2Gets the job done, untill you can get an editor on it. – Landon – 2016-07-25T07:40:27.600
4
I imagine you could do what you need with grep
and perl
- look for the line you want with grep
, edit that line with perl
(perl
can act like a big replacement for sed
) and then confirm you didn't make more changes than you intended by doing diff filename filename.new
. If so, make the changes permanent - mv filename.new filename
3
Assuming you're SSH'ing into your router, you can also use various utilities to transfer the file back and fourth to your computer/router. You can download a copy on your PC, modify it, and then SSH it back to the router via SFTP (see Putty or WinSCP if you're a Windows user).
If you're using a custom firmware on the router/gateway, however, you may be in luck. There are various Optware packages containing simple (and small) text editors. Depending on your needs, you could get the nano
package, or just go for busybox
which contains vi
.
1
Did you wipe out /bin or something? Otherwise maybe you could hack something together with the text utilities in the GNU Coreutils that should be standard on a linux system.
7This also happened to me, in docker.. It is very minimalistic. Now how the heck do i do something like that. The VM is ephemeral, i cannot ssh nor ftp, i have to use redirection and hacks like sed to change some files. It was a great challenge. See how reliant we are on editors :P – code ninja – 2014-06-26T21:33:55.517
3If this is a container or accessed via some other host you can use
echo <<EOF > new.file [paste here] EOF
. Edit contents of file on host PC. – pztrick – 2017-08-22T23:16:48.2331this is the case with my Docker image :( – Sridhar Sarnobat – 2018-10-26T17:58:12.100
You don't even have the
nano
binary on your system? :S – Breakthrough – 2012-08-20T19:25:43.1571I don't have nano, either! – Eduard Florinescu – 2012-08-20T19:26:48.407
1Its a router, but also I've seen also a custom gateway in this situation :) – Eduard Florinescu – 2012-08-20T19:32:52.390
Are you on DD-WRT? – Breakthrough – 2012-08-20T19:34:27.247
No, the default firmware – Eduard Florinescu – 2012-08-20T19:34:57.533
3Make a copy of the file you want to edit. Then do
cat file
, followed bycat >file
and arrange the parts with cut+paste and/or typing, finish withctrl-d
. – ott-- – 2012-08-20T20:08:12.1601You haven't said if
ed
is present or not... – dmckee --- ex-moderator kitten – 2012-08-21T02:02:55.957