Historia * wyjścia * terminala?

19

W dużym stopniu korzystam z funkcji, aby poruszać się po historii poleceń w moim terminalu; Zastanawiam się, czy istnieje jakiś sposób na nawigację w historii wyników poleceń? (oprócz utrzymywania dużego powiększenia i oparcia się na klawiszu pgup)

Nie mogę po prostu „ponownie uruchomić polecenia”, ponieważ w mojej konkretnej sytuacji zmienia się źródło poleceń; Często muszę patrzeć na wyniki poprzedniej zmiany.

Hacki mile widziane.

Dzięki!

Edytuj 2010:

Uznałem „tee”; spośród wszystkich metod rejestrowania twojej sesji gdzie indziej, jest ona najszerzej stosowana (tj. jest częścią gnu coreutils i nie wymaga konkretnej powłoki lub narzędzia do działania). Tak naprawdę nie tego szukałem, ale zdaję sobie sprawę, że coś takiego tak naprawdę nie istnieje.

Najbliższe przybliżenie, jakie mogę wymyślić, to użyć czegoś takiego jak screen(byobu / tmux), który loguje się do pliku, i napisać (i przypisać klawiszem) niestandardowe polecenie, aby przeglądać / przeszukiwać ten plik dziennika (pomyśl lessstronicowanie za pomocą monitu zamiast ekranu). Dziękuję wszystkim.

Edytuj 2012:

Odpowiedź Dustina Kirklanda jest zdecydowanie najlepsza, przynajmniej ogólnie; bufor przewijania terminalu jest najmniej inwazyjnym sposobem nawigacji w historii wyników poleceń. Wygląda na to, że Byobu ma zapisaną dużą domyślną liczbę linii historii (10 KB; tmux ma 2 KB, ekran GNU 100) i pozwala na wyszukiwanie wyrażeń regularnych (pobieżny wygląd wskazuje, że ekran GNU nie ma wyszukiwania przewijanego, a tmux ma tylko wyszukiwanie w postaci zwykłego tekstu).

mikewaters
źródło

Odpowiedzi:

4

Wspomniałeś o użyciu byobu ...

To z pewnością jeden ze sposobów na zrobienie tego. Byobu przechowuje 10 000 wierszy historii przewijania na okno lub podział (panel).

Możesz łatwo przewijać wstecz, naciskając Alt- PageUp, Alt- PageDownlub F7. Po przejściu do trybu przewijania możesz wyszukiwać do przodu i do tyłu za pomocą poleceń podobnych do vi. Służy /regexdo wyszukiwania do przodu i ?regexdo tyłu.

Dustin Kirkland
źródło
Gdzie jest przechowywana historia przewijania i czy istnieje sposób, aby zachować ją między sesjami? Tj .: Otwórz terminal za pomocą Byobu, uruchom kilka poleceń, zadzwoń exit, zamknij terminal, otwórz nowy terminal za pomocą Byobu i nadal miej poprzednią sesję.
Darrel Holt
11

Możesz użyć, teeaby wysłać dane wyjściowe polecenia jednocześnie do pliku i terminala.

Carl Norum
źródło
8

Możesz użyć scriptdo zalogowania sesji terminala do pliku. Jeśli zawsze chcesz, aby tak się stało, dodaj odpowiednie scriptpolecenie do swojego .login.

$ man script

Paul R.
źródło
5

posługiwać się screen -L

po wyjściu z sesji powłoki ( exitpolecenia) otrzymujesz plik dziennika w tym samym katalogu, który uruchomiłeśscreen

następnie możesz wyświetlić dane wyjściowe za pomocą morelubless -R

wieczorek1990
źródło
5

screen można ustawić na rejestrowanie danych wyjściowych.

Jednym ze sposobów jej uruchomienia w ramach uruchomionej screensesji jest naciśnięcie Ctrl- a, a :następnie wprowadzenie log.

Od man screen:

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n" in the 
window's default directory, where n is the number  of  the  current  window.
This filename can be changed with the `logfile' command. If no parameter is
given, the state of logging is toggled. The session log is appended to the
previous contents of the file if it already  exists.  The current contents and
the contents of the scrollback history are not included in the session log.
Default is `off'.

logfile filename
logfile flush secs

Defines  the  name  the  log files will get. The default is "screenlog.%n". The 
second form changes the number of seconds screen will wait before flushing the
logfile buffer to the file-system. The default value is 10 seconds.
Wstrzymano do odwołania.
źródło
@SQB: Rozszerzyłem swoją odpowiedź.
Wstrzymano do odwołania.
3

bash zachowuje historię tego, co zrobiłeś, ale nie dane wyjściowe z poleceń. Może to być ogromne i często nie jest przydatne.

Sójka
źródło