Chcę rzeczywistego wiersz poleceń być zalogowani razem z jego wydajność .
Rutynowo wykonuję ważne polecenia w ten sposób:
PERL5LIB=${PERL5LIB}:/something/extra my-command.pl many arguments which I want to save 2>&1 | tee -a my-command.log
Teraz my-command.log
zawiera oba stdout
i stderr
z my-command.pl
.
Jednak tak jest nie zawierają rzeczywiste wiersz poleceń powyżej.
Wiem o bash
plik historii; więc, jak sądzę, mógłbym skopiować z tego miejsca (lub z terminala) ręcznie, ale to oczywiście nie jest dobre rozwiązanie.
Myślę, że mógłbym napisać funkcję powłoki, która zaakceptowałaby wiersz poleceń, powtórzyłaby go, a następnie wykonałaby, ale wtedy musiałbym poradzić sobie z cytowaniem piekła.
próbowałem set -v
ale wydaje się, że ignoruje przekierowanie.
script
nie zapisuje wiersza poleceń (ale tylko wtedy, gdy rozpocznę nową powłokę, a nie za pomocą -c
) ale tak jest nie działa w buforze interakcji powłoki emacs i zapisuje również monit powłoki - w tym sekwencje specjalne! - do swojego pliku dziennika, więc jest nieoptymalny.
script
nie zapisuje wiersza poleceń; dla moich celów nie jest lepszy niżtee -a
.Odpowiedzi:
Spróbuj
-x
opcja basha:Mój test:
źródło