Android

Comanda istoric în linux (bash history)

Поиск файлов в Linux и Unix — find, grep, ack, ripgrep

Поиск файлов в Linux и Unix — find, grep, ack, ripgrep

Cuprins:

Anonim

, vom vorbi despre comanda history , care vă permite să vizualizați o listă de comenzi executate anterior, să căutați prin listă și să manipulați fișierul istoric.

Utilizarea history Comandă și extensii istoric

history este un shell integrat, iar comportamentul său poate diferi ușor de la coajă la coajă. Vom acoperi versiunea history Bash builtin.

În cea mai simplă formă, când este invocat fără nicio opțiune sau argument, comanda history afișează întreaga listă de istorie cu numere de linie.

history

… 467 git push 468 tail -f var/logs/error 469 nano +22, 5 functions.sh 470 source project-env/bin/activate 471 history

Typing !n execută comanda a n-a din lista istoricului, iar !-n comanda n liniile înapoi. În următorul exemplu, executăm comanda de pe linia 467 :

!467

Un alt mod de a executa o comandă este de a utiliza !word Expansiunea !word word se referă la cea mai recentă comandă începând cu „cuvânt”.

De obicei, history afișează multe linii de ieșire care nu se potrivesc pe ecran. Pentru a vizualiza o pagină de ieșire o dată, conectați-o la un program pager, ca more sau less comanda:

history | less

Pentru a afișa ultimele n linii, treceți numărul ca argument la comandă. De exemplu, pentru a vizualiza doar ultimele cinci rânduri din lista istoricului, trebuie să introduceți:

history -5

Utilizați tastele săgeată up și down pentru a naviga în intrările din listă. Când se afișează comanda căutată, apăsați Enter pentru a o executa.

Tipul !! pentru a executa comanda anterioară:

!!

Acest lucru este deosebit de util când uitați să perpendicați o comandă cu sudo , iar în loc să re-tastați comanda puteți introduce:

sudo !!

!-1 este la fel ca !! și execută ultima comandă din lista de istoric !-2 secunda până la ultima, etc.

^word1^word2^ expansion vă permite să rulați ultima comandă înlocuind „word1” cu „word2”. Dacă ați tastat din sduo command în loc de sudo command puteți repeta comanda folosind cuvântul corect cu:

^sduo^sudo^

Utilizați comanda grep pentru a filtra ieșirea. De exemplu, pentru a vizualiza toate comenzile, inclusiv „nano”, ați rula:

history | grep nano

302 sudo nano /etc/resolv.conf 356 nano setup.py 413 sudo nano /etc/hosts 469 nano +22, 5 functions.sh

Acum, dacă doriți să rulați din nano setup.py comanda nano setup.py introduceți pur și simplu:

!356

Un alt mod de a căuta în istoricul comenzilor este apăsând Ctrl-R . Promptul se va schimba la următorul și puteți începe să căutați o comandă executată anterior.

(reverse-i-search)`':

Învelișul va afișa o linie de potrivire. Pentru a trece la următoarea sugestie potrivită, apăsați din nou Ctrl-R .

Consultați manualul Bash pentru mai multe informații despre Extinderea istoricului, modificatorii și designatorii.

Salvarea listei istoric

În mod implicit, la începerea unei sesiuni noi, Bash citește lista de istoric din fișierul .bash_history . Lista comenzilor care sunt executate în sesiunea curentă sunt păstrate în memorie și salvate în fișier la închiderea sesiunii.

Opțiunea -a vă permite să salvați lista istoricului sesiunilor curente în fișierul .bash_history :

history -a

Opțiunea -w scrie lista completă de istoric în fișierul istoric.

history -w

Ștergerea istoriei

Comanda history vă permite să ștergeți lista completă de istoric sau să eliminați anumite părți.

Pentru a șterge lista de istoric, utilizați opțiunea -c :

history -c

Pentru a șterge o listă sau linii specifice între pozițiile de început și de final din lista istoricului, utilizați opțiunea -d .

De exemplu, pentru a elimina liniile între 365 și 375 (inclusiv liniile respective), ar trebui să tastați:

history -d 365 375

Când este utilizat un număr întreg negativ, liniile sunt numărate înapoi de la sfârșitul listei de istorie.

Comenzile de mai sus șterg lista de istorie, care este păstrată în memorie, dar nu elimină intrările din fișierul .bash_history pe disc. Pentru a șterge fișierul, trebuie să scrieți istoricul în fișier:

history -c history -w

Modificarea comportamentului istoric

Comportamentul istoricului Bash poate fi definit folosind mai multe variabile de mediu diferite. Când modificați comportamentul istoricului, setați variabilele în ~/.bashrc sau orice alt fișier de configurare care este încărcat atunci când utilizatorul se conectează.

În mod implicit, Bash păstrează 500 de linii în lista istoricului de comenzi. Variabila HISTSIZE vă permite să modificați această valoare. Pentru a o seta la 10000, adăugați următoarea linie la fișierul dvs. .bashrc :

HISTSIZE=10000

Variabila HISTCONTROL acceptă o listă de valori separată de colon care definește modul în care comenzile sunt salvate în lista de istoric:

  • ignorespace - comenzile care încep cu spațiul nu sunt salvate în lista istoricului. ignoredups - comenzile duplicate nu sunt salvate. ignoreboth - este un shorthand, care include atât ignorespace cât și ignoredups .

HISTCONTROL=ignoreboth

Când este setată variabila HISTTIMEFORMAT , Bash prepară o marcă de timp de execuție pentru comanda de pe fiecare linie.

De exemplu, dacă setați:

HISTTIMEFORMAT="%F %T: "

Istoricul va fi afișat în următorul format:

413 2019-10-27 21:13:07: sudo nano /etc/hosts

Concluzie

Comanda history afișează o listă de comenzi executate anterior. De exemplu, puteți utiliza istoricul pentru a vizualiza o comandă lungă pe care ați folosit-o înainte de a vă aminti.

terminal istoric