Bagaimana saya bisa menambahkan perintah ke riwayat Bash tanpa menjalankannya?


32

Sesekali akan berguna untuk menambahkan perintah langsung ke histori di Bash tanpa benar-benar mengeksekusinya. Sejauh ini hal tertutup yang saya temukan adalah menambahkan #di depannya dan memukul balik. Apakah ada cara yang lebih baik?

Jawaban:


39

history -s perintah


Tidak pernah tahu tentang fitur itu. Saya tidak bisa memikirkan penggunaan langsung untuk itu, tapi itu baik untuk diketahui.
Doug Harris

7
Apakah Anda tahu apakah mungkin untuk menjalankan perintah serupa dengan ini dari skrip? Saya memiliki skrip ./resize-images.shyang baris terakhirnya menunjukkan perintah yang harus Anda jalankan untuk membatalkan perubahan, akan sangat berguna jika sebaliknya skrip dapat menambahkan perintah ke riwayat saya jadi saya tekan saja up-enterjika saya perlu membatalkan
Ben Page

1
@BenPage: Lihatlah kedua jawaban di sini: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot

9

history -s perintah

Anda bahkan dapat mengikat keystroke untuk melakukan ini untuk Anda. Anda bisa memasukkan ini di Bash prompt:

bind '"\C-q": "\C-a history -s \C-j"'

atau tambahkan ini ke ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

maka Anda dapat mengetik sesuatu dan tekan Ctrl- qdan itu akan ditambahkan ke riwayat tanpa dieksekusi. Ruang sebelum "histori" menyebabkan historyperintah itu sendiri tidak ditambahkan ke histori jika HISTCONTROLvariabel Anda berisi ignorespaceatau ignoreboth. Keystroke lain dapat dipilih alih-alih "\ Cq".


3

Sulit untuk menghasilkan sesuatu yang lebih pendek dari "perintah" satu karakter, jadi kita benar-benar perlu pergi ke tingkat penekanan tombol. Dengan pengaturan bash saya dan keyboard AS apa yang Anda lakukan sekarang menjadi:

  1. Pergi ke awal baris CTRLA:: +1 instruksi, +2 penekanan tombol
  2. Tambahkan #(kebutuhan SHIFT): +1 instruksi, +2 penekanan tombol
  3. Menambahkannya ke riwayat dengan ENTER: +1 instruksi, +1 menekan tombol

jadi dalam total 3 instruksi, 5 penekanan tombol.

Menggunakan ALT#melakukan hal yang sama dalam 1 instruksi, 2 penekanan tombol.

YMMV tergantung pada tata letak keyboard Anda dan konfigurasi bash.


3
Masalahnya bukan jumlah tombol yang ditekan, tetapi "perintah" itu akan disimpan dalam riwayat, alih-alih "perintah" yang dimaksud.
Grumbel

1
Sangat menyenangkan bahwa "perintah" akan disimpan dalam file riwayat karena memungkinkan Anda tahu bahwa perintah itu tidak benar-benar dieksekusi. Ini mungkin bagus jika nanti Anda ingin meninjau perintah apa yang Anda masukkan untuk mencari tahu masalah.
Marnix A. van Ammers

2
@ Grumbel, @Marnix: Setuju, saya tidak menjawab pertanyaan untuk surat itu tetapi menunjukkan bagaimana membuat apa yang dia lakukan sekarang bahkan lebih cepat. Secara pribadi saya pikir menggunakan #commandjauh lebih cepat daripada history -s command, dan juga sangat mudah digunakan jika Anda memetakan history-search-backward/-forwarddengan benar. Tapi ini masalah selera.
Benjamin Bannier
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.