Linux Commands for Beginners 15 - Bash History
Spisu treści:
- Korzystanie z
history
Polecenia i rozszerzenia historii - Zapisywanie listy historii
- Czyszczenie historii
- Modyfikacja zachowania historii
- Wniosek
, porozmawiamy o poleceniu
history
, które pozwala wyświetlić listę wcześniej wykonanych poleceń, przeszukać listę i manipulować plikiem historii.
Korzystanie z
history
Polecenia i rozszerzenia historii
history
jest wbudowaną powłoką, a jej zachowanie może nieznacznie różnić się w zależności od powłoki. Omówimy wbudowaną wersję
history
Bash.
W najprostszej formie, przy wywołaniu bez żadnej opcji lub argumentu, polecenie
history
wyświetla całą listę historii z numerami wierszy.
history
… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history
Wpisanie
!n
wykonuje n-te polecenie z listy historii, a
!-n
polecenie n wiersze wstecz. W poniższym przykładzie wykonujemy polecenie w linii
467
:
!467
Innym sposobem wykonania polecenia jest użycie rozwijania
!word
.
word
odnosi się do najnowszego polecenia rozpoczynającego się od „słowa”.
Zazwyczaj
history
wyświetla wiele wierszy wyników, które nie mieszczą się na ekranie. Aby wyświetlić dane wyjściowe pojedynczo, potokuj je do programu pagera, tak jak
less
more
polecenie:
history | less
Aby wyświetlić ostatnie
n
wierszy, przekaż liczbę jako argument do polecenia. Na przykład, aby wyświetlić tylko ostatnie pięć wierszy z listy historii, wpisz:
history -5
Użyj klawiszy strzałek w
up
i w
down
, aby poruszać się po pozycjach na liście. Po wyświetleniu szukanego polecenia naciśnij klawisz
Enter
aby je wykonać.
Wpisz
!!
aby wykonać poprzednie polecenie:
!!
Jest to szczególnie przydatne, gdy zapomnisz wykonać polecenie w
sudo
, a zamiast ponownie wpisywać polecenie, możesz wpisać:
sudo !!
!-1
to to samo co
!!
i wykonuje ostatnie polecenie z listy historii, od
!-2
do ostatniego i tak dalej.
Rozszerzenie
^word1^word2^
pozwala ponownie uruchomić ostatnie polecenie, zastępując słowo „słowo 1” słowem „słowo 2”. Jeśli przypadkowo wpisałeś
sduo command
zamiast
sduo command
sudo command
, możesz powtórzyć polecenie, używając poprawnego słowa z:
^sduo^sudo^
Użyj polecenia
grep
aby przefiltrować dane wyjściowe. Na przykład, aby wyświetlić wszystkie polecenia, w tym „nano”, uruchom:
history | grep nano
302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh
Teraz, jeśli chcesz ponownie uruchomić polecenie
nano setup.py
po prostu wpisz:
!356
Innym sposobem przeszukiwania historii poleceń jest naciśnięcie
Ctrl-R
. Monit zmieni się na następujący i możesz rozpocząć wyszukiwanie wcześniej wykonanego polecenia.
(reverse-i-search)`':
Powłoka wyświetli pasującą linię. Aby przejść do następnej pasującej sugestii, naciśnij ponownie
Ctrl-R
.
Sprawdź podręcznik Bash, aby uzyskać więcej informacji o rozszerzaniu historii, modyfikatorach i desygnatorach.
Zapisywanie listy historii
Domyślnie podczas rozpoczynania nowej sesji Bash czyta listę historii z pliku
.bash_history
. Lista poleceń wykonywanych w bieżącej sesji jest przechowywana w pamięci i zapisywana w pliku po zamknięciu sesji.
Opcja
-a
umożliwia zapisanie bieżącej listy historii sesji w pliku
.bash_history
:
history -a
Opcja
-w
zapisuje pełną listę historii do pliku historii.
Czyszczenie historii
Polecenie
history
pozwala wyczyścić pełną listę historii lub usunąć niektóre części.
Aby wyczyścić listę historii, użyj opcji
-c
:
history -c
Aby usunąć określoną linię lub linie między pozycjami początkową i końcową z listy historii, użyj opcji
-d
.
Na przykład, aby usunąć linie między 365 a 375 (w tym te linie), wpisz:
history -d 365 375
Gdy używana jest ujemna liczba całkowita, wiersze są odliczane od końca listy historii.
Powyższe polecenia usuwają listę historii, która jest przechowywana w pamięci, ale nie usuwa wpisów z pliku
.bash_history
na dysku. Aby wyczyścić plik, musisz zapisać listę historii do pliku:
Modyfikacja zachowania historii
Zachowanie historii Bash można zdefiniować za pomocą kilku różnych zmiennych środowiskowych. Podczas modyfikowania zachowania historii ustaw zmienne w
~/.bashrc
lub innym pliku konfiguracyjnym, który jest ładowany, gdy użytkownik się loguje.
Domyślnie Bash zachowuje 500 linii na liście historii poleceń. Zmienna
HISTSIZE
pozwala zmienić tę wartość. Aby ustawić go na 10000, dodaj następujący wiersz do pliku
.bashrc
:
HISTSIZE=10000
Zmienna
HISTCONTROL
przyjmuje listę wartości oddzielonych dwukropkami, które definiują sposób zapisywania poleceń na liście historii:
-
ignorespace
- polecenia rozpoczynające się spacją nie są zapisywane na liście historii.ignoredups
- zduplikowane polecenia nie są zapisywane.ignoreboth
- jest skrótem, obejmującym zarównoignorespace
jak iignorespace
.
HISTCONTROL=ignoreboth
Gdy ustawiona jest zmienna
HISTTIMEFORMAT
, Bash przygotowuje znacznik czasu wykonania dla polecenia w każdym wierszu.
Na przykład, jeśli ustawisz:
HISTTIMEFORMAT="%F %T: "
Historia zostanie wyświetlona w następującym formacie:
413 2019-10-27 21:13:07: sudo nano /etc/hosts
Wniosek
Polecenie
history
wyświetla listę wcześniej wykonanych poleceń. Na przykład możesz użyć historii, aby wyświetlić długie polecenie, którego użyłeś wcześniej, którego nie pamiętasz.
Polecenie CP w systemie Linux (kopiowanie plików)
cp to narzędzie wiersza polecenia do kopiowania plików i katalogów w systemach Unix i Linux.
Polecenie różnicowe w systemie Linux
diff to narzędzie wiersza polecenia, które pozwala porównać dwa pliki linia po linii. Może także porównywać zawartość katalogów.
Polecenie Pwd w systemie Linux (bieżący katalog roboczy)
Bieżący katalog roboczy to katalog, w którym aktualnie pracuje użytkownik. W tym artykule pokażemy, jak określić bieżący katalog roboczy za pomocą polecenia pwd