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?
command-line
gnome-terminal
Projjol
sumber
sumber
history
perintah tetapi bagaimana seluruh sistem ini mengingat perintah lama bekerja.Jawaban:
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/^HISTORY
dan 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/inputrc
ke~/.inputrc
dan batalkan komentar pada baris denganhistory-search-forward
danhistory-search-backward
di 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).sumber
unset HISTFILE
~ / .bashrc Anda. Maka itu hanya akan menyimpan sejarah dalam memori, membersihkannya untuk setiap permintaan shell baru.Riwayat perintah umumnya disimpan berdasarkan per pengguna dalam
.bash_history
file 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_history
file umum .sumber