Il terminale memorizza i dati?


9

Questo è qualcosa che volevo sapere da molto tempo, ma non ho mai pensato di porre una domanda.

So che nel terminale fornito nelle distribuzioni Linux, l'intera cronologia dei comandi può essere vista usando i tasti freccia (se esiste un altro metodo, non ne sono consapevole), quindi come può accadere?

C'è un posto in cui il terminale registra tutte le sequenze di tasti? È una specie di buffer? Ma, di nuovo, se fosse un buffer, sarebbe cancellato dopo un po ', no?

Come funziona questo sistema?


scrivere la cronologia per ottenere tutti i comandi precedentemente utilizzati ..
Sukupa91

L'OP non chiede il historycomando ma come funziona l'intero sistema di ricordare i vecchi comandi.
Tarun,

scusa ho sbagliato ...
Sukupa91,

2
Ricorda questa eccezione: se il comando inizia con uno spazio, il comando non finirà nella storia.
Rinzwind,

@Rinzwind, viene aggiunto alla cronologia, se avviato con uno spazio.
CG 13

Risposte:


10

Questa è la cronologia dei comandi ed è una caratteristica della shell piuttosto che del terminale.

Su Ubuntu (e molto se non la maggior parte delle altre distribuzioni Linux) la shell predefinita per l'uso interattivo è Bash ( /bin/bash). Bash mantiene la tua cronologia, ovvero un elenco degli ultimi comandi su ~/.bash_history. Quando si apre una shell (di solito aprendo un terminale) questo file viene letto e caricato nella cronologia interna di questa shell. Una volta chiusa la shell, le modifiche vengono riscritte nel file. Per impostazione predefinita, questo è limitato agli ultimi 500 comandi.

Ci sono alcune variabili e opzioni di shell che possono cambiare il comportamento di come funziona esattamente. Dai un'occhiata alla manpage di bash ( man bash) se vuoi saperne di più. Cerca STORIA (digita /^HISTORYe conferma con Enter, passa alla prossima ricerca con n)

Inoltre ci sono molti più metodi per fare il giro della storia oltre al semplice Upe Down:

  • Ad esempio, premi Ctrl+ Re parte di un comando precedente, bash cercherà all'indietro nella cronologia un comando corrispondente, ripeti premendo Ctrl+ Rse la prima corrispondenza non è quella che stai cercando. (Vedi 'Comandi per manipolare la storia' nella manpage di bash)

  • Copia /etc/inputrcper ~/.inputrce rimuovere il commento le linee con history-search-forwarde history-search-backwardin loro. Se si digitano le prime lettere di un comando e si preme PgUp, bash mostrerà solo i comandi della cronologia che iniziano con le stesse lettere. (Funziona solo nelle shell aperte dopo aver apportato questa modifica)

  • Digita !!invece di un comando sulla shell, questo ripeterà l'ultimo comando (vedi 'ESPANSIONE STORIA' nella manpage di bash per maggiori informazioni a riguardo).


1
E se non vuoi che mantenga una cronologia, inserisci unset HISTFILEnel tuo ~ / .bashrc. Quindi manterrà solo la cronologia in memoria, cancellandola per ogni nuova chiamata della shell.
un CVn

10

La cronologia dei comandi viene generalmente memorizzata per utente nel .bash_historyfile nella directory principale. Significa che ogni utente ha il proprio set di comandi che ha eseguito.

Quando sono aperte più sessioni del terminale, possono mostrare comandi diversi quando si preme il tasto freccia, ma quando si chiudono tutte le finestre del terminale, la cronologia di una diversa sessione del terminale verrà unita in un ~/.bash_historyfile comune .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.