Przeczytaj całą historię poleceń terminala w OS X

10

Byłoby wspaniale uzyskać dostęp do wszystkich moich poleceń uruchamianych w terminalu w systemie OS X, dzięki czemu mogę przeglądać i używać jako działającego arkusza przypomnień.

Korzystam z monitu wyszukiwania wstecznego i zaktualizowałem mój .bash_profile, aby przechowywać całą moją historię, jak wspomniano tutaj na Mactoids: Jak przeszukiwać historię poleceń terminalu .

  1. Uruchom terminal.

  2. Przejdź do folderu domowego, wprowadzając:

    cd ~/
    
  3. Utwórz plik .bash_profile, wprowadzając:

    touch .bash_profile
    
  4. Teraz edytuj plik .bash_profile w swoim ulubionym edytorze tekstu lub wpisz ten tekst w oknie Terminal, aby automatycznie otworzyć plik w domyślnym edytorze TextEdit:

    open -e .bash_profile
    
  5. Na koniec dodaj to do pliku .bash_profile:

    HISTFILESIZE=1000000000 HISTSIZE=1000000
    
  6. Zapisz i wyjdź.

Czy masz jakieś pomysły, w jaki sposób mógłbym uzyskać dostęp do wyświetlania historii poleceń terminala w systemie OS X?

Cameron McGrane
źródło
4
Zakładam, że przeczytałeś man bash, więc powinieneś wiedzieć, że historia jest zapisana w pliku ~/.bash_history. Co jeszcze musisz wiedzieć, możesz to wyjaśnić?
Tak, ponieważ nowe polecenie istniało, po czym przeczytałem instrukcję, znalazłem odpowiedź i postanowiłem zadać powyższe pytanie tylko dla zabawy. Dzięki Fideli za szybką, jasną i bezpretensjonalną odpowiedź.
Cameron McGrane

Odpowiedzi:

6

Cała twoja historia jest przechowywana w ~/.bash_history, gdzie reverse-i-searchużywa się zarówno klawiszy góra / dół. Ten plik jest regularnie przycinany, ale jeśli postępujesz zgodnie z instrukcjami w linku, .bash_historyplik ten praktycznie nigdy nie zostanie przycięty.

fideli
źródło
Przycinanie FIFO czy LIFO?
Pacerier
@Pacerier, nie mogę być całkowicie pewien, ponieważ nie używam już macOS, ale gdybym musiał zgadywać, przycinanie FIFO.
fideli
2

Osobiście wolałbym to zrobić w prostszy sposób i wydrukować wszystko , zamiast sprawdzać najnowszą sesję, która nie obejmuje wszystkich okien terminala i wszystkich poleceń.

Uzyskaj pełną historię

cd ~/.bash_sessions
cat *.historynew *.history

Jeśli chcesz sortować według daty sesji

cd ~/.bash_sessions
cat `ls -tr *.historynew *.history`
laimison
źródło
1

Jeśli nadal potrzebujesz tego rozwiązania, oto jak to zrobiłem. Dzięki temu mogę ZAPISZ I UZYSKAĆ ​​DOSTĘP DO historii na wszystkich kartach (tj. Jeśli wpiszesz polecenie na jednej karcie, a następnie otworzysz nową kartę i naciśniesz w górę, zasugerujesz polecenie, które właśnie wprowadziłeś na poprzedniej karcie)

Będziesz potrzebował 2 rzeczy: 1. Wpisz to polecenie w swoim terminalu, aby upewnić się, że histappend jest włączony:

shopt -s histappend && shopt histappend

2. Musisz także wiedzieć, gdzie przechowywane są polecenia historii.

Moje pliki historii są przechowywane w ~ / .bash_sessions, więc to właśnie odzwierciedli mój kod. Jeśli twoje są przechowywane w ~ / .bash_history, lub w innym katalogu, po prostu zamień to na ~ / .bash_sessions, kiedy będziemy go źródłować do naszego bash_profile.

Gdy się zorientujesz, otwórz swój profil bash i dodaj następujący kod:

source ~/.bash_sessions/*.history        #<--sources prev sessions through your bash_profile. If you don't use ~/.bash_sessions to store your history, replace it with whatever you use (i.e. source ~/.bash_history/*.history

export HISTCONTROL=ignoredups:erasedups #<-- auto-erases duplicates in your history
export HISTSIZE=1000                    #<-- assigns # of results to return
export HISTFILESIZE=100000              #<-- assigns # of results to store in your .bash_history
shopt -s histappend                     #<-- appends & saves history throughout all tabs

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"  <--appends history from all tabs, clears & uses appended history file as current  
sharpharp
źródło
1
pamiętaj, że bieganie source ~/.bash_sessions/*.historywykonuje wszystkie polecenia
panchicore