Czy jest jakiś sposób na sprawdzenie historii tylko bieżącej sesji?

10

Chciałem wiedzieć, czy istnieje jakieś polecenie lub w inny sposób mogę sprawdzić historię poleceń tylko w bieżącej sesji.

Andrzej
źródło

Odpowiedzi:

12

historyWbudowany bashumożliwia określenie nazw w przypadku korzystania z -anrwflagami i -aopisem flagę z help historypaństw:

dołącz wiersze historii z tej sesji do pliku historii

Dlatego możemy zrobić:

~$ history -a this_session.history
~$ cat ./this_session.history 
history mysession.history 
cat mysession.history 
clear
history -a this_session.history

Dla przypomnienia -w(zapis historii do pliku) zapisuje całą historię do określonego pliku, więc -a(dołącz) tutaj jest preferowanym wyborem.


Istnieją inne ręczne sposoby. W szczególności kshnie ma -aflagi tak jak bashma, ale to, co ma ksh i mkshco ma, jest HISTFILEzmienną środowiskową (i bashma to również, ponieważ bashzawiera wiele kshfunkcji); nawiasem mówiąc, ta zmienna domyślnie nie jest ustawiona (przynajmniej mkshna Ubuntu jej nie ustawiła). Tak więc, w celu wyprowadzenia bieżącej sesji do innego pliku, wywołujemy HISTFILEpolecenie prepended do polecenia, co w składni powłoki oznacza uruchomienie polecenia z dodatkową zmienną środowiskową, którą określisz. Tak jak:

bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$ 
bash-4.4$ cat ./mykshfile.hist 
�echo 'Hello'
echo 'World'

Widać z tego również to, że kshpowiązane z nim powłoki generują historię za pomocą znaków specjalnych zamiast zwykłego tekstu, jak to bashrobi. Możesz więc otworzyć ten plik za pomocą ksh.

Jeśli chodzi o powłokę POSIX /bin/shna Ubuntu , którą jest Debian Almquist Shell lub Dash, istnieje fcwbudowana . Jednakże, na desce rozdzielczej Ubuntu jest kompilowany bez lib-edit , który jest świadomy wybór przez programistów Ubuntu ze względu na wydajność, tak fci inne tryby, które wymagają edycję wiersza nie działa po wyjęciu z pudełka (chyba przebudować dashsiebie i zainstalować lib-edit).


Shell neutralne sposobów byłoby nagrać sesję z istniejących narzędzi lub napisać własną funkcję nagrywania na podstawie na komendzie.

Sergiy Kolodyazhnyy
źródło