Linux / Perintah / history / Perintah untuk menampilkan daftar perintah yang sebelumnya dijalankan
Di Linux, perintah history di Bash menampilkan riwayat perintah yang dikelola oleh shell saat ini beserta nomor-nomornya. Anda dapat memeriksa riwayat untuk menemukan perintah sebelumnya atau mengeksekusinya kembali, dan jangkauan serta penyimpanan riwayat tergantung pada pengaturan shell.
Memeriksa riwayat perintah
Masukkan perintah berikut di terminal Bash interaktif. history adalah perintah bawaan Bash yang menampilkan daftar riwayat shell saat ini.
history
Output menunjukkan nomor dan perintah setiap item. Sebagai contoh, sebuah baris yang menampilkan 42 pwd berarti bahwa item nomor 42 di riwayat shell adalah pwd. Nomor dan isinya bervariasi tergantung pada akun, sesi, dan pengaturan riwayat, jadi jangan gunakan nomor contoh secara langsung. Perintah yang Anda masukkan yang dicatat, bukan hasil eksekusinya.
Untuk melihat hanya item terbaru, tentukan sebuah angka. Perintah berikut menampilkan 10 entri terakhir dalam riwayat.
history 10
Perintah history 10 ini sendiri dapat dimasukkan dalam daftar. Jika perintah yang diinginkan tidak muncul, periksa fitur riwayat, ukuran penyimpanan, dan pengaturan pengecualian.
Mencari dan menjalankan kembali perintah
Dalam input interaktif default Bash, menekan tombol panah atas memungkinkan Anda untuk mengingat dan mengedit entri sebelumnya. Tekan Ctrl+R dan masukkan istilah pencarian untuk mencari riwayat ke belakang. Anda dapat memeriksa konten perintah yang ditemukan dan kemudian mengeksekusi atau mengubahnya.
Dalam Bash interaktif dengan perluasan riwayat diaktifkan, !! berkembang menjadi entri riwayat sebelumnya. !n merujuk pada item dengan nomor n dalam daftar. Sebagai contoh, perintah berikut menjalankan item jika nomor 42 ada dalam daftar saat ini.
!42
Pastikan nomor tersebut cocok dengan riwayat sebenarnya terlebih dahulu. Perluasan riwayat biasanya dijalankan segera setelah input, jadi berhati-hatilah terutama dengan perintah seperti penghapusan file atau perubahan konfigurasi. Dalam shell non-interaktif, perluasan riwayat biasanya dinonaktifkan secara default, dan perilakunya mungkin berbeda di shell lain.
Untuk hanya melihat hasil perluasan dari entri sebelumnya tanpa mengeksekusinya, bungkus dalam tanda kutip tunggal dan masukkan seperti berikut. Perintah yang ditampilkan di layar tidak akan dijalankan.
history -p '!!'
Jika Anda mengatur shopt -s histverify, perintah yang diperluas akan ditampilkan di baris pengeditan dalam Bash interaktif menggunakan Readline, memungkinkan Anda memeriksanya sebelum dijalankan. Untuk mengembalikan pengaturan di shell saat ini, gunakan shopt -u histverify. Untuk informasi lebih lanjut, lihat dokumentasi ekspansi riwayat Bash.
Di mana dan kapan riwayat disimpan
Bash mengelola riwayat sebagai daftar dalam memori dan membaca riwayat dari file yang ditentukan oleh HISTFILE saat startup. File default yang umum adalah ~/.bash_history, tetapi ini dapat berbeda tergantung pada lingkungan atau mode POSIX. Anda dapat memeriksa pengaturan saat ini dengan perintah berikut.
printf '%s\n' "$HISTFILE"
Ketika sebuah shell dengan riwayat aktif keluar, riwayat tersebut disimpan ke sebuah berkas, tetapi jika berkas tersebut tidak dapat ditulis, HISTFILE tidak disetel, atau kosong, riwayat tersebut tidak akan disimpan. Beberapa terminal masing-masing memiliki riwayat memori terpisah, sehingga perintah yang dieksekusi di satu terminal mungkin tidak langsung muncul di terminal lain. Menurut opsi histappend, riwayat akan ditambahkan ke berkas atau berkas akan ditimpa saat keluar, dan hasilnya bervariasi tergantung pada pengaturan dan sesi bersamaan.
history -a menambahkan entri baru yang belum ditambahkan dalam sesi saat ini ke file riwayat. Di sisi lain, history -w menimpa file riwayat dengan daftar saat ini, yang mungkin mengakibatkan hilangnya riwayat dari sesi lain. Jika Anda menggunakan beberapa terminal, periksa perbedaan ini sebelum menggunakannya. Perilaku penyimpanan dapat ditemukan dalam dokumentasi fitur riwayat Bash.
Periksa ukuran riwayat dan pengaturan pengecualian
HISTSIZE mengontrol jumlah entri riwayat dalam memori, sementara HISTFILESIZE mengontrol jumlah maksimum baris dalam file riwayat. Entri multi-baris merupakan pengecualian untuk jumlah baris dalam file. Nilai saat ini dapat diperiksa sebagai berikut.
printf 'HISTSIZE=%s\nHISTFILESIZE=%s\nHISTCONTROL=%s\nHISTIGNORE=%s\n' "$HISTSIZE" "$HISTFILESIZE" "$HISTCONTROL" "$HISTIGNORE"
HISTCONTROL dan HISTIGNORE dapat menentukan input mana yang harus dikecualikan dari riwayat. Misalnya, jika HISTCONTROL menyertakan ignorespace, input yang dimulai dengan spasi mungkin dikecualikan dari daftar riwayat. Ini hanya pengaturan terkait riwayat shell dan tidak menghapus riwayat yang tersimpan di log atau program lain.
Menghapus riwayat dan informasi sensitif
history -d n menghapus item nomor n dari daftar riwayat shell saat ini. Pertama, periksa nomor sebenarnya dengan history. history -c menghapus seluruh daftar saat ini, jadi harus digunakan dengan hati-hati. Dua perintah ini tidak secara otomatis menghapus file riwayat yang sudah tersimpan atau daftar riwayat shell lain.
Hindari memasukkan kata sandi atau token secara langsung di baris perintah, karena dapat tetap tersimpan di riwayat atau tempat lain. Jika informasi rahasia sudah terungkap, jangan menganggap bahwa hanya dengan menghapus riwayat masalahnya terselesaikan; sebaliknya, ganti kredensial dan periksa cakupan dari pengungkapan terkait.




