bash - zapisz wynik po wykonaniu programu


1

Wiem, że mogę przekierować stdoutdo pliku przed uruchomieniem skryptu, ale czy istnieje sposób na uzyskanie dostępu do całego wyjścia programu, który już działał? Gdy wydruk jest zbyt długi, zostaje odcięty przez okno terminala i nie widzę początkowych wydruków.

Odpowiedzi:


1

Istnieje kilka sugestii:

  1. zwiększ liczbę zachowanych linii w oknie terminala. We wszystkich systemach, które mogę, zwykle mam ustawiony na około 10 000 linii (lub maksymalna możliwa wartość jest mniejsza).
  2. (prawdopodobnie nieco bardziej praktyczne) Jeśli wiesz, że możesz chcieć przechwytywać dane wyjściowe, uruchom nową powłokę bash i potokuj dane wyjściowe do pliku za pomocą tee ( bash | tee record.txt). Wszelkie dane wyjściowe poleceń uruchomionych w tej powłoce zostaną umieszczone w pliku „record.txt”. Niestety nie przechwytuje danych wejściowych (w tym wpisywanych poleceń) i monitów powłoki.
  3. (lepiej) Przed wykonaniem czegokolwiek, co uważasz za bezpieczne, użyj script. Rozpocznie się przechwytywanie danych wejściowych i wyjściowych programu. Kiedy skończysz z rzeczami, wyjdź z powłoki lub wpisz Ctrl-D. Uwaga: dane wyjściowe wygenerowane przez skrypt nie mogą zostać zapisane, dopóki „skrypt” nie zostanie zakończony.

3
Możesz użyć scriptpolecenia, aby przechwycić wszystko, w tym monity i dane wprowadzone przez użytkownika. Jednak dodanie go do pliku .profile może być o krok za daleko.
RedGrittyBrick

@RedGrittyBrick Cool, nauczyłem się dziś czegoś nowego!
jwernerny

Dziękuję za sugestie. Jeśli więc uruchomię skrypt bez żadnej z tych opcji, wszystko, co zniknie z ekranu, zostanie utracone na zawsze. Czy to jest poprawne? Myślałem, że dane wyjściowe można gdzieś zapisać (na przykład bash_historyautomatycznie zapisuje to, co piszę).
nmat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.