GNU/Linux >> Belajar Linux >  >> Linux

Cara menonaktifkan pengeditan riwayat saya di bash

Saya entah bagaimana berhasil memengaruhi perintah asli, yaitu edit saya menggantikan perintah asli di sejarah.

Benar. Jika Anda kembali ke riwayat dan mengedit baris tanpa menekan kembali untuk menjalankan perintah tetapi alih-alih pindah ke entri riwayat lain, Anda baru saja mengedit entri sejarah. Jika Anda kemudian mencantumkan riwayat Anda, Anda akan melihat * pada baris yang menunjukkan bahwa Anda telah mengeditnya. Saya menemukan "fitur" ini sangat membuat frustrasi. Orang lain telah memberikan contoh yang baik tentang cara mereproduksi ini.

Tujuan saya adalah untuk menghindari hal ini, jadi setiap pengeditan pada perintah sebelumnya selalu ditambahkan ke riwayat dan tidak pernah menggantikan yang asli.

Saya juga ingin menonaktifkannya. Saya menemukan solusinya melalui jawaban ini di unix.stackexchange.

Untuk meringkas, Anda perlu mengaktifkan revert-all-at-newline pengaturan readline yang dinonaktifkan secara default. Jika pengaturan aktif maka bash akan mengembalikan setiap perubahan yang Anda buat pada riwayat saat Anda menjalankan perintah berikutnya.

Untuk mengaktifkan pengaturan ini di shell Anda, Anda harus menambahkan kode berikut ke ~/.inputrc Anda file dan kemudian restart shell Anda:

$include /etc/inputrc
set revert-all-at-newline on

Baris pertama diperlukan karena saya rasa jika Anda memberikan .inputrc Anda sendiri file /etc/inputrc default file tidak disertakan yang mungkin bukan yang Anda inginkan.


Jika Anda kembali ke beberapa perintah sebelumnya dan mengeditnya, tetapi kemudian JANGAN jalankan (alih-alih menggunakan perintah riwayat untuk membuka beberapa perintah lain dan menjalankannya), hasil edit akan tetap ada di daftar riwayat Anda.

Menekan Ctrl + C , setelah diedit, melawan perilaku ini. Itu meninggalkan perintah asli dalam kebijaksanaan yaitu membatalkan mengingat suntingan ke aslinya.


Inilah jawaban saya sendiri, harap perbaiki atau berikan detail lebih lanjut jika Anda bisa.

Saat opsi "vi" disetel di bash ("set -o vi" -- "Gunakan antarmuka pengeditan baris perintah bergaya vi"), ada dua mode pengeditan perintah dari histori.

Mode pertama (sebut saja "basic") adalah ketika Anda langsung mulai mengedit menggunakan tombol Backspace, Del, dan karakter.

Mode lainnya adalah "mode vi", yang dimasukkan saat Anda menekan Esc.

Jika Anda ingin menjaga agar riwayat Anda tetap utuh, JANGAN gunakan kedua mode dalam pengeditan yang sama. Saya tidak tahu persis bagaimana bash bekerja, tetapi Anda dapat memikirkannya seperti ini:

  1. Memasuki "mode vi" menerapkan setiap perubahan yang dilakukan dalam "mode dasar" ke perintah awal, dan membuat salinan perintah yang dapat Anda edit lebih lanjut menggunakan perintah bergaya vi.
  2. Perubahan diterapkan saat Anda menekan Enter (eksekusi), Atas, Bawah, atau j,k (pindah ke perintah lain dalam riwayat).
  3. Perubahan tidak diterapkan jika Anda menekan Ctrl-C.
  4. Menggunakan pengeditan dasar atau vi-style SAJA tidak memengaruhi perintah asli dalam riwayat.

Linux
  1. Cara menggunakan perintah history di Linux

  2. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  3. Bagaimana Cara Menonaktifkan Alias ​​​​Di Bash Untuk Satu Perintah??

  1. Cara menggunakan perintah riwayat Bash

  2. Bagaimana mengelola riwayat perintah Linux Anda

  3. Bagaimana caranya:Riwayat Bash/Shell yang tidak terbatas?

  1. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  2. Cara Menghapus Riwayat Bash di Linux

  3. Bagaimana Agar Type-ahead Terapkan Ke Bash History Search (ctrl-r)?