Apakah terminal menyimpan data?

9

Ini adalah sesuatu yang saya ingin tahu untuk waktu yang sangat lama, tetapi tidak pernah benar-benar mengajukan pertanyaan.

Saya tahu bahwa di terminal yang disediakan di distro Linux, seluruh sejarah perintah dapat dilihat dengan menggunakan tombol panah (jika ada metode lain, saya tidak menyadarinya), jadi bagaimana ini terjadi?

Apakah ada tempat di mana terminal mencatat semua penekanan tombol? Apakah itu semacam penyangga? Tetapi, sekali lagi, jika itu adalah penyangga, itu akan dihapus setelah beberapa saat, bukan?

Bagaimana cara kerja sistem ini?

Projjol
sumber
tulis sejarah untuk mendapatkan semua perintah yang sebelumnya digunakan ..
Sukupa91
OP tidak bertanya tentang historyperintah tetapi bagaimana seluruh sistem ini mengingat perintah lama bekerja.
Tarun
maaf saya salah ..
Sukupa91
2
Pikirkan pengecualian ini: jika perintah dimulai dengan spasi, perintah tidak akan berakhir dalam sejarah.
Rinzwind
@Rinzwind, Itu akan ditambahkan ke riwayat, jika dimulai dengan spasi.
GC 13

Jawaban:

10

Ini adalah sejarah perintah dan ini adalah fitur dari shell daripada terminal.

Di Ubuntu (dan banyak jika tidak sebagian besar distribusi Linux lainnya) shell default untuk penggunaan interaktif adalah Bash ( /bin/bash). Bash menyimpan histori Anda, yaitu daftar perintah terakhir di ~/.bash_history. Ketika Anda membuka shell (biasanya dengan membuka terminal) file ini dibaca dan dimuat ke dalam riwayat internal shell ini. Setelah Anda menutup shell, perubahan ditulis kembali ke file. Secara default ini terbatas pada 500 perintah terakhir.

Ada beberapa variabel dan opsi shell yang dapat mengubah perilaku cara kerjanya persis. Lihatlah bash manpage ( man bash) jika Anda ingin tahu lebih banyak. Cukup cari SEJARAH (ketik /^HISTORYdan konfirmasi dengan Enter, lompat ke temuan berikutnya n)

Juga ada cukup banyak metode untuk berkeliling sejarah daripada hanya Updan Down:

  • Misalnya, tekan Ctrl+ Rdan bagian dari perintah sebelumnya, bash akan mencari di belakang dalam sejarah untuk perintah yang cocok, ulangi menekan Ctrl+ Rjika pencocokan pertama bukan yang Anda cari. (Lihat 'Perintah untuk Memanipulasi Sejarah' di halaman bash)

  • Salin /etc/inputrcke ~/.inputrcdan batalkan komentar pada baris dengan history-search-forwarddan history-search-backwarddi dalamnya. Jika Anda mengetikkan huruf pertama dari sebuah perintah dan menekan PgUp, bash hanya akan menampilkan perintah dari sejarah yang dimulai dengan huruf yang sama. (Bekerja hanya di shell dibuka setelah perubahan ini dibuat)

  • Ketik !!alih-alih perintah pada shell, ini akan mengulangi perintah terakhir (lihat 'HISTORY EXPANSION' di bash manpage untuk informasi lebih lanjut tentang itu).

Adaephon
sumber
1
Dan jika Anda tidak ingin menyimpan sejarah, masukkan unset HISTFILE~ / .bashrc Anda. Maka itu hanya akan menyimpan sejarah dalam memori, membersihkannya untuk setiap permintaan shell baru.
CVn
10

Riwayat perintah umumnya disimpan berdasarkan per pengguna dalam .bash_historyfile di direktori home Anda. Berarti, setiap pengguna memiliki seperangkat perintah yang telah dieksekusi.

Ketika beberapa sesi terminal terbuka, mereka mungkin menunjukkan perintah yang berbeda saat menekan tombol panah, tetapi ketika Anda akan menutup semua jendela terminal, sejarah dari sesi terminal yang berbeda akan digabungkan ke ~/.bash_historyfile umum .

Tarun
sumber