Jak mogę zapisać bieżącą zawartość less do pliku?

91

Jeśli przesłałem wyniki polecenia do potoku, lessa następnie zdecydowałem, że chcę zapisać zawartość do pliku, czy jest to możliwe?

Próbowałem ustawić znak ana końcu bufora, a następnie wróciłem na górę i |aviwysłałem całą zawartość vi, ale to nie działa.

Jonathan Day
źródło
1
Twoja oryginalna technika działałaby, gdybyś polecił vi ładowanie ze standardowego wejścia, wykonując |avi -.
Joe Shaw,

Odpowiedzi:

102

W moim systemie man lessmówi

       s nazwa pliku
              Zapisz dane wejściowe w pliku. Działa to tylko wtedy, gdy wejście to
              potok, a nie zwykły plik.

Pracuje dla mnie!

RedGrittyBrick
źródło
4
Jakoś mi to nie działa - pisanie „przesuwa okno o jedną linię”. Jestem na komputerze Mac.
benroth
2
@benroth: Prawdopodobnie masz lesskeyplik, który zmienia normalne polecenia. Zobaczman lesskey
RedGrittyBrick
8
sdla mnie też nie działa, ale -o filedziała.
user1338062,
1
I dlaczego, do cholery, nie jest to wspomniane, gdy wpisuję „h”, aby uzyskać interaktywną pomoc? +1, jeśli przeczytałeś interaktywną pomoc i dlatego nie pomyślałeś, aby skonsultować man less...
Peter V. Mørch,
1
@comfreak: Tak, jest mniej niż 487 w Ubuntu 18.04, ale nie mniej niż 481 w Debian 9 / stretch / stable
Peter V. Mørch
24

Akceptowana odpowiedź nie działa na komputerze Mac - jak mówi @benroth, naciśnięcie sprzesuwa się w dół linii - ale możesz użyć innej metody.

W less --help:

|Xcommand            Pipe file between current pos & mark X to shell command.

i

A mark is any upper-case or lower-case letter.
Certain marks are predefined:
     ^  means  beginning of the file
     $  means  end of the file

Więc jeśli przejdziesz na górę bufora ( <), a następnie:

|$cat > /tmp/foo.txt

zawartość bufora zostanie zapisana do /tmp/foo.txt.

Joe Shaw
źródło
Ta metoda może być szczególnie przydatna, gdy chcesz potokować bieżący bufor oglądany za pomocą innego polecenia.
Doron Behar,
3

Po lessotwarciu możesz zapisać pełne dane wyjściowe w pliku. Podobnie jak vimmniej obsługuje polecenia.

Wystarczy wpisać klucz s, a następnie lesspoprosi o nazwę pliku, w którym chcesz zapisać zawartość, po prostu wpisz nazwę pliku, a następnie wpisz Enter.

Twoje zdrowie

Magnos Hammes
źródło
0

Użyj >operatora. Na przykład: less foo.bar > output.txt.

Dror
źródło
Dzięki @Dror, ale jestem już w mniejszej aplikacji, już nie po bashu
Jonathan Day
Cenny wkład w Q / A. Zamiast rozpocząć zupełnie osobne pytanie, ludzie potrzebujący metody skryptu do wielu plików za pomocą Less Viewer mogą wiele skorzystać. Zaoszczędziłem godziny pracy (po wielu poszukiwaniach). Dzięki!
LD James
0

Nie, jeśli zacząłeś mniej, ale jeśli wiesz, że chcesz wysłać go do mniej i pliku, możesz użyć polecenia tee

command | tee out_file | less
użytkownik151019
źródło
Dzięki, Mark, ale szczególnie szukam, jak to zrobić, jeśli mam już mniej
Jonathan Day
0

Moja odpowiedź przychodzi odrobinę za późno. Ale tylko w celach informacyjnych, w odpowiedzi na powyższe obawy Benrotha: Dla użytkowników OSX zawsze istnieje możliwość zrzucenia zawartości pagera do pliku dziennika za pomocą opcji „-l” (czytaj DASH ELL ) w wierszu dwukropka.

Pager poprosi o plik dziennika. Wpisz go i naciśnij [CR]

superk
źródło