Jak udostępnić historię między kartami terminala?

23

Zazwyczaj używam dwóch lub trzech kart w moim terminalu w systemie OS X.

Niewielką niedogodnością jest to, że domyślnie karty nie udostępniają historii poleceń. Tak więc wyszukiwanie poprzedniego polecenia, które uruchomiłem na innej karcie przez wpisanie history | grep thingIamlooking for, nie znajduje go.

Czy istnieje sposób na zmuszenie kart terminala do udostępniania historii, czy też jest jakieś inne polecenie „ history_of_all_tabs ”?

Joe
źródło

Odpowiedzi:

29

Nie sądzę, aby istniał sposób na dzielenie się historią tylko między kartami terminali, ale oto coś, co może ci pomóc.

Historia nie jest czymś, co obsługuje twój terminal, ale twoja powłoka (bash, tcsh, zsh itp.)

Oto kilka opcji, które pomogą ci skonfigurować wspólną historię dla wszystkich okien terminali (instancji powłoki).

To powinno być gdzieś w twoim .bashrcpliku.

export HISTCONTROL=ignoredups:erasedups  # no duplicate entries
export HISTSIZE=100000                   # big big history
export HISTFILESIZE=100000               # big big history
shopt -s histappend                      # append to history, don't overwrite it

# Save and reload the history after each command finishes
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Lifely
źródło
1
+.5 za dobrą odpowiedź, +.5 za dobrą gramatykę;)
Matt
@ Rozwiązanie Lifely nie działa dla mnie w El Capitan. W ogóle. Nawet maksymalna długość pliku historii. Czy istnieje nowe rozwiązanie od 2012 roku? (Skomentowałbym powyżej, ale nie mam przedstawiciela)
JP Duffy
1
Działa to dla mnie (dodane w .bash_profile) w El Capitan z dodatkiem eksportu SHELL_SESSION_HISTORY = 0 w moim .bash_profile i uruchomione: dotknij ~ / .bash_sessions_disable
Andy
działa świetnie na Ubuntu 18.04 dla bash
anon58192932