Perintah dan Pengembangan Sejarah Bash

Perintah Dan Pengembangan Sejarah Bash



Dalam panduan ini, kami akan menunjukkan cara bekerja dengan arahan sejarah Bash.

Prasyarat:

Untuk melaksanakan langkah-langkah yang ditunjukkan dalam tutorial ini, anda memerlukan komponen berikut:

  • Sistem Linux yang dikonfigurasikan dengan betul. Semak keluar bagaimana untuk menyediakan VM Ubuntu dalam VirtualBox .
  • Kebiasaan asas dengan antara muka baris arahan.

Sejarah Bash

Bash ialah shell lalai dalam kebanyakan sistem Linux moden. Sebagai pengganti 'sh', cangkerang UNIX asal, ia dilengkapi dengan pelbagai ciri dan penambahbaikan seperti manipulasi direktori, kawalan kerja, alias, sejarah arahan dan banyak lagi.







Bash menjejaki semua arahan yang sebelum ini dilaksanakan dari terminal. Ini boleh menjadi sangat berguna dalam pelbagai situasi seperti nyahpepijat. Ia juga boleh mengurangkan keperluan menaip arahan yang sama/serupa berulang kali.



Untuk pengurusan sejarah, Bash dilengkapi dengan dua arahan terbina dalam:



$ taip sejarah





$ taip fc

Untuk menyimpan sejarah, Bash menggunakan dua teknik berbeza:



  • Setiap kali bekerja dengan sesi shell, sejarahnya disimpan dalam ingatan.
  • Apabila ditutup, sejarah yang disimpan dalam memori dibuang ke dalam fail sejarah.

Fail sejarah lalai yang Bash gunakan terletak di:

$ kucing ~ / .bash_history

Terdapat juga segelintir pembolehubah persekitaran dan pintasan papan kekunci yang mengubah cara Bash mengendalikan sejarah.

Bekerja dengan Sejarah Bash

Penggunaan Asas

Untuk mendapatkan senarai arahan yang dijalankan baru-baru ini, gunakan arahan berikut:

$ sejarah

Di sini, semua arahan yang disimpan dalam penimbal disenaraikan. Setiap arahan telah menetapkan nilai berangka. Perintah tertua diberikan dengan 1.

Kita boleh mengehadkan bilangan arahan untuk dicetak menggunakan arahan berikut:

$ sejarah N

Di sini, N ialah integer dengan N >= 0. Output mengandungi arahan N terakhir daripada sejarah.

Kami juga boleh menggunakan output seiring dengan grep untuk penapisan:

$ sejarah | cengkaman < tali >

Untuk menyemak imbas sejarah yang panjang, kita boleh menggunakan arahan 'kurang':

$ sejarah | kurang

Memadam Perintah daripada Sejarah

Jika anda perlu mengalih keluar arahan tertentu daripada sejarah, gunakan arahan berikut:

$ sejarah

$ sejarah -d < nombor_perintah >

$ sejarah

Begitu juga, untuk mengalih keluar arahan dari M ke N daripada sejarah, kita boleh menggunakan arahan berikut:

$ sejarah

$ sejarah -d M-N

$ sejarah

Untuk mengosongkan sejarah daripada penimbal RAM untuk sesi terminal semasa, gunakan arahan berikut:

$ sejarah -c

$ sejarah

Untuk mengosongkan sejarah daripada fail sejarah yang disimpan pada cakera, kami boleh menulis ganti sepenuhnya dengan NULL:

$ kucing / dev / null > $HISTFILE

Tetapan Sejarah Bash

Terdapat pelbagai cara untuk mengubah cara Bash mengendalikan sejarah. Banyak daripada pilihan ini diuruskan oleh pembolehubah persekitaran.

Untuk menukar nilainya, kami mengedit fail 'bashrc':

$ nano ~ / .bashrc

Selepas mengedit, simpan fail dan muatkan semula dalam Bash.

$ sumber ~ / .bashrc

Untuk membuat perubahan seluruh sistem, edit 'bashrc' yang terletak di lokasi berikut:

$ nano / dan lain-lain / bash.bashrc

$ nano / dan lain-lain / bashrc

Saiz Penampan

Seperti yang dinyatakan sebelum ini, Bash menggunakan dua penimbal untuk menyimpan sejarah arahan dalam RAM (untuk sesi semasa) dan dalam fail cakera (untuk semua sesi sebelumnya).

Saiz penimbal ini dikawal oleh dua pembolehubah persekitaran:

  • HISTSIZE : Ia mentakrifkan bilangan entri untuk disimpan dalam penimbal RAM.
  • HISTFILESSIZE : Ia mentakrifkan bilangan entri untuk disimpan dalam fail cakera.

Kita boleh menukar nilai mereka dalam 'bashrc' untuk memenuhi keperluan kita:

$ nano ~ / .bashrc

Sebagai contoh, untuk menyimpan 5000 entri dalam kedua-dua penimbal, kemas kini 'bashrc' dengan kod berikut:

$ HISTSIZE = 5000

$ HISTFILESSIZE = 5000

Pengecualian Perintah

Secara lalai, Bash menyimpan setiap arahan yang dijalankan dalam penimbal sejarah. Walau bagaimanapun, kita boleh mengkonfigurasinya supaya Bash mengabaikan arahan tertentu. Ia boleh berguna dalam situasi di mana anda perlu menjalankan arahan yang sama berkali-kali, mengisi penimbal dengan spam.

  • HISTCONTROL

Mari kita mulakan dengan contoh arahan berikut:

$ bergema 'sami' && sejarah 5

$ bergema 'bonk' && sejarah 5

Seperti yang ditunjukkan oleh output perintah sejarah, hanya perintah gema pertama didaftarkan tetapi bukan perintah kedua.

Ini ialah kerja pembolehubah persekitaran HISTIGNORE. Ia memberitahu Bash untuk tidak log arahan dalam penimbal sejarah berdasarkan corak tertentu. Nilai berikut tersedia:

  • abaikan : Ia tidak dilog jika arahan sepadan dengan entri sejarah sebelumnya.
  • abaikan ruang : Ia tidak akan dilog jika arahan bermula dengan ruang pada permulaan.
  • abaikan kedua-duanya : Ia menggunakan peraturan kedua-dua ignoredups dan ignorespace.
  • terpadam : Semua baris sebelumnya yang sepadan dengan arahan semasa akan dipadamkan daripada sejarah.

Dalam contoh pertama, kami menunjukkan penggunaan ruang abaikan. Walau bagaimanapun, tidak semua distro boleh menghantar Bash dengan konfigurasi ini. Seperti biasa, kita boleh menambahkannya pada 'bashrc':

$ HISTCONTROL =abaikan kedua-duanya

Ia juga mungkin untuk mendayakan berbilang pilihan menggunakan arahan berikut:

$ HISTCONTROL =ignoredups:ignorespace

Di sini, ignoredups:ignorespace adalah setara dengan ignoreboth.

  • HISTIGNORE

Pembolehubah persekitaran ini boleh mengandungi satu atau lebih corak. Sebarang arahan yang sepadan dengan mana-mana corak yang diterangkan oleh HISTIGNORE tidak akan didaftarkan kepada penimbal sejarah. Corak ditakrifkan menggunakan ungkapan biasa.

Strukturnya adalah seperti berikut:

$ HISTIGNORE = '' : '' : ''

Contohnya, untuk mengecualikan sejarah dan perintah gema daripada sejarah Bash, kemas kini HISTIGNORE seperti berikut:

$ HISTIGNORE = 'sejarah' : 'gema *'

Kita boleh menggunakan rantaian arahan berikut untuk mengujinya:

$ ls -l / adalah / lob &> / dev / null

$ sejarah

$ bergema Hai dunia

$ sejarah

Cap masa

Bash juga boleh dikonfigurasikan untuk log masa arahan dijalankan. Ia boleh berguna dalam pelbagai situasi seperti nyahpepijat.

Untuk mendayakan cap masa dalam sejarah Bash, kemas kini nilai HISTTIMEFORMAT:

$ FORMAT MASA SEJARAH = ''

Semua aksara kawalan format masa yang tersedia tersedia dalam halaman manual arahan tarikh.

$ lelaki Tarikh

Senarai berikut termasuk beberapa yang mudah:

  • %T: Masa
  • %d: Hari
  • %m: Bulan
  • %y:Tahun
$ FORMAT MASA SEJARAH = '%T %d: '

Kegigihan Sejarah

Apabila bekerja dengan CLI, dalam banyak kes, anda akan mendapati diri anda bekerja dengan berbilang terminal. Di sinilah pengurusan sejarah Bash boleh menjadi punca kesakitan.

Secara lalai, fail sejarah dikemas kini sebaik sahaja sesi ditutup. Walaupun ia baik untuk satu sesi, ia tidak mencukupi untuk berbilang sesi serentak. Kami boleh menyelesaikan masalah ini dengan memaksa Bash mengemas kini fail sejarah setiap kali arahan dijalankan.

Untuk berbuat demikian, kemas kini nilai PROMPT_COMMAND:

$ PROMPT_COMMAND = 'sejarah -a'

Di sini, pembolehubah PROMPT_COMMAND boleh mengandungi arahan yang sah. Kandungan PROMPT_COMMAND dijalankan sebelum Bash mula mengambil input pengguna. Perintah 'history -a' memaksa sejarah untuk menambahkan kandungan pada fail sejarah.

Peluasan Sejarah dan Penama

Bash dilengkapi dengan beberapa pintasan terbina dalam untuk memanfaatkan ciri sejarahnya. Berikut adalah senarai penentu:

  • !! : Menjalankan arahan terakhir daripada sejarah.
  • !N : Menjalankan arahan Nth daripada sejarah.
  • !-N : Menjalankan arahan Nth sebelum arahan terkini daripada sejarah.
  • ! : Menjalankan perintah terbaharu.

Rangkaian arahan berikut menunjukkan penggunaannya:

$ bergema 1

$ bergema 2

$ bergema 3

$ sejarah

$ ! bergema

$ ! - 3

$ ! 1

$ !!

Sesetengah penunjuk juga berfungsi dengan hujah arahan dari sejarah:

  • !:* : Gunakan semua hujah bagi arahan terkini.
  • !:^ : Gunakan hujah pertama bagi arahan terkini.
  • !:N : Gunakan hujah ke-N bagi arahan terkini.
  • !:M-N : Gunakan hujah dari M hingga N bagi arahan terkini.
  • !:$ : Gunakan hujah terakhir bagi arahan terkini.

Rangkaian arahan berikut menunjukkan penggunaannya:

$ bergema 1 2 3 4 5 6 7

$ bergema ! : *

$ bergema 1 2 3 4 5 6 7

$ bergema ! :^

$ bergema 1 2 3 4 5 6 7

$ bergema ! : 5

$ bergema 1 2 3 4 5 6 7

$ bergema ! : 1 - 5

$ bergema 1 2 3 4 5 6 7

$ bergema ! :$

Jika anda perlu bekerja dengan parameter perintah yang berbeza, penunjuk akan kelihatan seperti ini:

  • ! ^ : Menggunakan hujah pertama perintah .
  • ! $ : Menggunakan hujah terakhir perintah .

Rantaian arahan berikut menunjukkan penggunaannya:

$ ls -lh / adalah / log &> / dev / null

$ sentuh 1 .txt 2 .txt 3 .txt 4 .txt 5 .txt

$ bergema ! sentuh ^

$ bergema ! sentuh $

Pintasan Papan Kekunci Sejarah

Selain semua arahan dan pembolehubah persekitaran, Bash juga menyokong segelintir pintasan papan kekunci untuk navigasi sejarah yang lebih mudah:

  • Naik kekunci anak panah: Tatal ke belakang
  • Bawah kekunci anak panah: Tatal ke hadapan

Terdapat juga pintasan papan kekunci yang tersedia untuk carian sejarah interaktif:

  • Ctrl + R : Cari arahan dalam sejarah.
  • Ctrl + O : Jalankan arahan yang dipilih.
  • Ctrl + G : Keluar daripada carian interaktif.

Kesimpulan

Kami membincangkan tentang sejarah Bash secara terperinci. Kami mempelajari cara Bash menyimpan sejarah arahan dan cara memanfaatkannya dengan cara yang berbeza. Kami menunjukkan cara bekerja dengan sejarah Bash menggunakan pelbagai contoh.

Berminat untuk mengetahui lebih lanjut tentang Bash? The Subkategori pengaturcaraan Bash mengandungi beratus-ratus panduan tentang ciri-ciri berbeza Bash.

Selamat berkomputer!