Chciałem wiedzieć, czy istnieje jakieś polecenie lub w inny sposób mogę sprawdzić historię poleceń tylko w bieżącej sesji.
źródło
Chciałem wiedzieć, czy istnieje jakieś polecenie lub w inny sposób mogę sprawdzić historię poleceń tylko w bieżącej sesji.
history
Wbudowany bash
umożliwia określenie nazw w przypadku korzystania z -anrw
flagami i -a
opisem flagę z help history
pań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 ksh
nie ma -a
flagi tak jak bash
ma, ale to, co ma ksh
i mksh
co ma, jest HISTFILE
zmienną środowiskową (i bash
ma to również, ponieważ bash
zawiera wiele ksh
funkcji); nawiasem mówiąc, ta zmienna domyślnie nie jest ustawiona (przynajmniej mksh
na Ubuntu jej nie ustawiła). Tak więc, w celu wyprowadzenia bieżącej sesji do innego pliku, wywołujemy HISTFILE
polecenie 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 ksh
powiązane z nim powłoki generują historię za pomocą znaków specjalnych zamiast zwykłego tekstu, jak to bash
robi. Możesz więc otworzyć ten plik za pomocą ksh
.
Jeśli chodzi o powłokę POSIX /bin/sh
na Ubuntu , którą jest Debian Almquist Shell lub Dash, istnieje fc
wbudowana . 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 fc
i inne tryby, które wymagają edycję wiersza nie działa po wyjęciu z pudełka (chyba przebudować dash
siebie 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.