Jak mogę edytować plik, jeśli nie ma vi, vim, Joe itp.?

35

Czy istnieje sposób edycji pliku, jeśli nie ma vi, vim, joe, mcedit? Innymi słowy, czy istnieje sposób edycji pliku przy użyciu tylko poleceń powłoki?

Eduard Florinescu
źródło
1
Ja też nie mam nano!
Eduard Florinescu,
1
To router, ale widziałem też niestandardową bramę w tej sytuacji :)
Eduard Florinescu,
3
Utwórz kopię pliku, który chcesz edytować. Następnie zrób cat file, a następnie cat >fileułóż części za pomocą cut + paste i / lub pisania, zakończ za pomocą ctrl-d.
ott--
7
Zdarzyło mi się to również w oknie dokowanym. Jest to bardzo minimalistyczne. Teraz, jak do cholery, robię coś takiego. VM jest efemeryczna, nie mogę ssh ani ftp, muszę użyć przekierowania i hacków takich jak sed, aby zmienić niektóre pliki. To było wielkie wyzwanie. Zobacz, jak bardzo jesteśmy zależni od redaktorów: P
kod ninja
3
Jeśli jest to kontener lub dostęp do niego można uzyskać za pośrednictwem innego hosta echo <<EOF > new.file [paste here] EOF. Edytuj zawartość pliku na komputerze hosta.
pztrick

Odpowiedzi:

18

W takim przypadku spróbuję przenieść pliki i edytować je na innym komputerze, a następnie przenieść z powrotem. Jeśli masz ssh, powinieneś mieć scp (mam nadzieję), więc powinieneś być w stanie wypychać i wysyłać pliki. Jeśli nie, możesz także poszukać ftp do przesyłania i odbierania plików.

Jeśli nie, to myślę, że najlepszą opcją jest skorzystanie z przekierowania cat, grep, sed, echo i we / wy (szczególnie z dodatkiem >>). I wiele plików tymczasowych.

Chociaż jeśli masz dostęp do perla (lub czegoś podobnego), możesz go uruchomić bez argumentów i pozwoli ci on na wprowadzenie źródła skryptu ze standardowego wejścia. Po naciśnięciu kombinacji klawiszy Ctrl + D można uruchomić skrypt. Możesz użyć tej metody do utworzenia pliku. Byłoby to potężniejsze niż hakowanie czegoś w linii poleceń, jak już wspomniałem.

Ben Richards
źródło
nie sshd, ale mam telnetd
Eduard Florinescu,
Więc możesz ftp?
Ben Richards,
1
Mogę używać przekierowania cat, grep, echo i I / O (szczególnie dołączam do >>), ale bez sed
Eduard Florinescu,
2
Ftp działa :) teraz muszę zobaczyć, gdzie na tym routerze mam coś, co można zapisać.
Eduard Florinescu,
3
Jeśli jesteś podłączony do swojego urządzenia za pomocą telnetu, poważnie zastanowię się nad przechwyceniem pliku do terminala (z wystarczająco dużym buforem przewijania wstecznego), skopiowaniem / wklejeniem całej rzeczy do lokalnego edytora, wprowadzeniem zmian, a następnie ubiciem znaleźć coś, co zmieni to w szereg poleceń echa, które zapiszą plik zastępczy.
afrazier
4

Wyobrażam sobie, że możesz zrobić to, czego potrzebujesz grepi perl- poszukać linii, którą chcesz grep, edytować tę linię za pomocą perl( perlmoże działać jak duży zamiennik dla sed), a następnie potwierdzić, że nie wprowadziłeś więcej zmian, niż zamierzałeś diff filename filename.new. Jeśli tak, wprowadź zmiany na stałe -mv filename.new filename

AlexWebr
źródło
3

Zakładając, że korzystasz z SSH do routera, możesz także użyć różnych narzędzi do przesłania pliku z powrotem i czwartego do komputera / routera. Możesz pobrać kopię na swój komputer, zmodyfikować ją, a następnie przesłać SSH z powrotem do routera przez SFTP (patrz Putty lub WinSCP, jeśli jesteś użytkownikiem systemu Windows).

Jeśli jednak używasz niestandardowego oprogramowania układowego w routerze / bramie, możesz mieć szczęście. Istnieją różne pakiety Optware zawierające proste (i małe) edytory tekstu. W zależności od potrzeb możesz uzyskać nanopakiet lub po prostu wybrać, busyboxktóry zawiera vi.

Przełom
źródło
2

Jednym ze sposobów byłoby wyprowadzenie wyniku echa.

echo "foo" > bar.txt

Spowoduje to utworzenie pliku o nazwie bar.yxy z ​​tekstem zawierającym „foo”.

Landon
źródło
3
To nie jest tak naprawdę edycja.
DavidPostill
2
Wykonuje zadanie, dopóki nie uzyskasz edytora.
Landon
1

Czy wyczyściłeś / bin czy coś? W przeciwnym razie możesz zhakować coś razem z narzędziami tekstowymi w GNU Coreutils, które powinny być standardem w systemie Linux.

bobmagoo
źródło