How can I edit a file if there is no vi, vim, joe, etc?

104,473

Solution 1

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.

Solution 2

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".

Solution 3

Use a terminal that lets you copy and paste with the mouse, and assemble your files that way?

e.g.  cat > myfile
(use terminal to copy/paste)
^D

If it is a binary file, use this to turn it into text which you can copy with the mouse:

 openssl base64 -in <infile>

then on another computer, openssl again to decode it using the -d switch, edit however you like (e.g. hexedit) then re-encode, and on the box with no editor, openssl again to decode it and paste from your terminal. do

Solution 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

Solution 5

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.

Share:
104,473

Related videos on Youtube

Eduard Florinescu
Author by

Eduard Florinescu

Coding my way out of boredom. “If the fool would persist in his folly he would become wise.” (William Blake)

Updated on September 18, 2022

Comments

  • Eduard Florinescu
    Eduard Florinescu over 1 year

    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?

    • Breakthrough
      Breakthrough over 11 years
      You don't even have the nano binary on your system? :S
    • Eduard Florinescu
      Eduard Florinescu over 11 years
      I don't have nano, either!
    • Eduard Florinescu
      Eduard Florinescu over 11 years
      Its a router, but also I've seen also a custom gateway in this situation :)
    • Breakthrough
      Breakthrough over 11 years
      Are you on DD-WRT?
    • Eduard Florinescu
      Eduard Florinescu over 11 years
      No, the default firmware
    • ott--
      ott-- over 11 years
      Make a copy of the file you want to edit. Then do cat file, followed by cat >file and arrange the parts with cut+paste and/or typing, finish with ctrl-d.
    • dmckee --- ex-moderator kitten
      dmckee --- ex-moderator kitten over 11 years
      You haven't said if ed is present or not...
    • code ninja
      code ninja almost 10 years
      This 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
    • pztrick
      pztrick over 6 years
      If 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.
    • Sridhar Sarnobat
      Sridhar Sarnobat over 5 years
      this is the case with my Docker image :(
    • Prabowo Murti
      Prabowo Murti over 2 years
      @codeninja yes you're right. Happened to us too. Great we still have cat
  • Eduard Florinescu
    Eduard Florinescu over 11 years
    no sshd but I have telnetd
  • Eduard Florinescu
    Eduard Florinescu over 11 years
    I can use cat, grep, echo, and I/O redirection (especially append with >>) but no sed
  • user3359503
    user3359503 over 11 years
    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.
  • Eduard Florinescu
    Eduard Florinescu over 11 years
    Ftp works :) now I need to see where on this router do I have something that is writable.
  • afrazier
    afrazier over 11 years
    If 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
    afrazier over 11 years
    All that will only work for pure text files though. Binary... not so much. (Oh, you have ftp? That makes it easy!)
  • Eduard Florinescu
    Eduard Florinescu over 11 years
    @afrazier that is the solution, but found found ftp working
  • DavidPostill
    DavidPostill almost 8 years
    That's not really editing.
  • Landon
    Landon almost 8 years
    Gets the job done, untill you can get an editor on it.
  • Attie
    Attie almost 7 years
    I'd also look out for netcat / nc - there's often a very basic version included in busybox
  • Adi Prasetyo
    Adi Prasetyo about 3 years
    sadly no cursor while booting process is broken, like in grub or initramfs.