Jak udostępniasz historię między terminalami w Zsh?


29

Jak można to zrobić, aby każde wprowadzone polecenie było widoczne w historii każdego otwartego terminalu?

Gdy otwartych jest wiele terminali, historia nie jest współdzielona, ​​tzn. To, co wpisałeś w historii jednego terminala, nie pojawia się w innym. Pomyśl o alternatywie dla Basha PROMPT_COMMAND="history -a"(która zapisuje historię przed wyświetleniem monitu).


Zobacz także powiązane i zaawansowane pytania i odpowiedzi: superuser.com/questions/446594/…
lumbric

Odpowiedzi:


36

Miałyby zastosowanie następujące opcje:

  • Aby zapisać każde polecenie przed jego wykonaniem (różni się to od historii bash - rozwiązanie):

    setopt inc_append_history
    
  • Aby odczytać plik historii za każdym razem przywoływana jest historia, a także funkcjonalność inc_append_history:

    setopt share_history
    

Można je ustawić w .zshrcpliku.

Powiązane z bash:


4
„SHARE_HISTORY: Ta opcja zarówno importuje nowe polecenia z pliku historii, jak i powoduje, że wpisane polecenia są dołączane do pliku historii (to drugie jest jak określenie INC_APPEND_HISTORY, które należy wyłączyć, jeśli ta opcja jest aktywna ).” ( Dodane ręczne podkreślenie) tj. Tylko opcja INC_APPEND_HISTORY zrobi to, co chcesz.
artfulrobot

3
W rzeczywistości sama opcja SHARE_HISTORY zrobi to, co chcesz. Wyrażenie „które należy wyłączyć, jeśli ta opcja jest aktywna”, przekłada się na „[INC_APPEND_HISTORY] należy wyłączyć, jeśli włączona jest opcja [SHARE_HISTORY]”. Przetestowałem to na Zsh 5.1.1 na Ubuntu Xenial.
Linus Arver

1
@opert jest poprawny: setopt share_historyjest tym, co osiągnie pożądany rezultat. @MJB czy zechciałbyś edytować swoją odpowiedź, aby usunąć wzmiankę o setopt inc_append_history? Ukrywa rzeczywistą odpowiedź.
bonh

W nazwach nie jest rozróżniana wielkość liter, a podkreślenia są ignorowane, więc jeślisetopt | grep histdostanieszincappendhistoryisharehistory.
Pablo A,

4

Jeśli użyjesz niesamowitego OhMyZSH Robby'ego Russella, zajmie się tym i jeszcze więcej.

Zobacz https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

To obejmuje setopt inc_append_history.


To jego / jej / jego. Ważne przy pracy z powłoką.
Cees Timmerman,

@CeesTimmerman naprawiono, dziękuję. Uważam, że jest to ważne dla komunikacji. Co miałeś na myśli przez „Ważne dla pracy powłoki”?
james_womack

1
Literówka w powłoce może uszkodzić cały system.
Cees Timmerman
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.