Jika Anda menghabiskan banyak waktu di baris perintah, melihat riwayat perintah yang sebelumnya Anda jalankan dapat menjadi fitur yang berguna yang dapat mempersingkat waktu dan meningkatkan produktivitas Anda.

Pada artikel ini, kita akan berbicara tentang perintah history, yang memungkinkan Anda untuk melihat daftar perintah yang dieksekusi sebelumnya, mencari di dalam daftar riwayat, dan memanipulasi file history.

Menggunakan Perintah history dan Ekspansi history

history adalah shell builtin, dan perilakunya mungkin sedikit berbeda dari shell ke shell. Dalam artikel ini, kita akan membahas perintah history bawaan dalam versi Bash.

Dalam bentuknya yang paling sederhana, ketika dipanggil tanpa opsi atau argumen apa pun, perintah history menampilkan seluruh daftar riwayat dengan nomor baris.

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

Mengetik !n mengeksekusi perintah ke-n dari daftar history, dan !-n pada perintah pada baris n ke belakang. Dalam contoh berikut ini, kami menjalankan perintah pada baris ke 467 dalam daftar history di atas:

!467

Biasanya, history menampilkan banyak baris output yang tidak sesuai di layar. Untuk melihat output satu halaman sekaligus, gabungkan ke perintah lain seperti more atau less :

history | less

Untuk menampilkan n baris terakhir, berikan angka sebagai argumen pada perintah. Misalnya, untuk melihat hanya lima baris terakhir dari daftar history, maka perintah yang Anda ketikkan:

history -5

Gunakan tombol panah atas dan bawah untuk menavigasi entri dalam daftar. Ketika perintah yang Anda cari ditampilkan, tekan Enter untuk menjalankannya.

ketik !! untuk menjalankan perintah sebelumnya:

!!

Ini sangat berguna ketika Anda lupa untuk mengawali perintah dengan sudo, dan alih-alih mengetik ulang perintah, Anda dapat mengetik:

sudo !!

!-1 sama dengan !! dan jalankan perintah terakhir dari daftar history,!-2 untuk baris kedua hingga terakhir, dan seterusnya.

ekspansi kata (^kata1^kata2^) memungkinkan Anda menjalankan kembali perintah terakhir menggantikan “kata1” dengan “kata2”. Jika Anda secara tidak sengaja mengetik perintah sduo alih-alih perintah sudo, Anda dapat mengulangi perintah menggunakan kata yang benar dengan:

^sduo^sudo^

Gunakan perintah grep untuk memfilter output. Misalnya, untuk melihat semua perintah yang ada kata “nano“, Anda akan menjalankan:

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

Sekarang, jika Anda ingin menjalankan kembali perintah nano setup.py cukup ketik:

!356

Cara lain untuk mencari melalui sejarah perintah adalah dengan menekan Ctrl-R. Prompt akan berubah menjadi yang berikut, dan Anda dapat mulai mencari perintah yang sebelumnya dieksekusi.

(reverse-i-search)`':

Shell akan menampilkan baris yang cocok. Untuk pindah ke saran yang cocok berikutnya, tekan Ctrl-R lagi.

Periksa manual Bash untuk informasi lebih lanjut tentang History Expansion, modifiers, dan designators.

Menyimpan Daftar Riwayat

Secara default, saat memulai sesi baru, Bash membaca daftar riwayat di file .bash_history. Daftar perintah yang dieksekusi dalam sesi saat ini disimpan dalam memori dan disimpan ke file ketika sesi ditutup.

Jika Anda membuka beberapa sesi shell, hanya riwayat sesi yang ditutup terakhir yang disimpan.

Opsi -a memungkinkan Anda untuk menyimpan daftar riwayat sesi saat ini ke file .bash_history:

history -a

Opsi -w menulis daftar riwayat lengkap ke file history.

history -w

Menghapus daftar History

Perintah history memungkinkan Anda untuk menghapus daftar riwayat lengkap atau menghapus bagian-bagian tertentu.

Untuk menghapus daftar riwayat, gunakan opsi -c:

history -c

Untuk menghapus baris atau beberapa baris tertentu antara posisi awal dan akhir dari daftar riwayat, gunakan opsi -d.

Misalnya, untuk menghapus baris antara 365 dan 375 (termasuk baris nomor tersebut), Anda dapat mengetik:

history -d 365 375

Jika Anda hanya menyediakan satu nomor untuk opsi -d, perintah tersebut menghapus baris yang diberikan. Ketika bilangan bulat negatif digunakan, baris dihitung mundur dari akhir daftar history.

Perintah di atas menghapus daftar histori, yang disimpan dalam memori, tetapi tidak menghapus entri dari file .bash_history pada disk. Untuk menghapus file, Anda perlu menulis daftar riwayat ke file:

history -c
history -w

Memodifikasi Perilaku Perintah history

Perilaku history Bash dapat didefinisikan menggunakan beberapa environment variables yang berbeda. Saat memodifikasi perilaku history, set variabel dalam ~/.bashrc atau file konfigurasi lainnya yang dimuat ketika user masuk.

Secara default, Bash menyimpan 500 baris dalam daftar history perintah. Variabel HISTSIZE memungkinkan Anda untuk mengubah nilai ini. Untuk mengaturnya menjadi 10.000, tambahkan baris berikut ke file .bashrc Anda:

HISTSIZE=10000

Variabel HISTCONTROL menerima daftar nilai yang dipisahkan oleh titik dua yang menentukan bagaimana perintah disimpan dalam daftar riwayat:

  • ignorespace – perintah yang dimulai dengan ruang spasi disimpan dalam daftar riwayat.
  • ignoredups – perintah duplikat tidak disimpan.
  • ignoreboth – adalah gabungan dari perintah ignorespace dan ignoredups,
HISTCONTROL=ignoreboth

Ketika variabel HISTTIMEFORMAT diatur, Bash menambahkan timestamp eksekusi untuk perintah pada setiap baris.

Misalnya, jika Anda mengatur:

HISTTIMEFORMAT="%F %T: "

Perintah history akan ditampilkan dalam format berikut:

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

Kesimpulan

Perintah history menampilkan daftar perintah yang dieksekusi sebelumnya. Misalnya, Anda dapat menggunakan perintah history untuk melihat perintah panjang yang telah Anda gunakan sebelumnya yang tidak dapat Anda ingat atau untuk menyingkat waktu.