Cara menavigasi secara selektif melalui sejarah perintah Bash di terminal Linux [duplikat]

9

Semua orang tahu (atau harus tahu!) Bahwa pada terminal tombol panah atas dan bawah digunakan untuk menavigasi melalui sejarah perintah yang digunakan.

Ketika Anda menggunakan terminal setiap hari, riwayat perintah Anda kemungkinan akan menjadi daftar panjang dari banyak perintah yang berbeda, sehingga navigasi menjadi kurang mudah. Sama seperti contoh, katakanlah sebulan yang lalu saya menggunakan iwconfigparameter yang ditentukan (seperti yang saya katakan, itu hanya contoh, saya tidak perlu mengacaukannya sekarang), bagaimana saya bisa mengingat perintah tertentu dengan semua argumen dan parameternya tanpa harus menavigasi kembali melalui ratusan perintah sejarah?

Saya tahu bahwa saya dapat menggunakannya historyuntuk memiliki daftar perintah yang sebelumnya digunakan dan !nuntuk mengeksekusi ulang perintah n pada daftar tersebut, tetapi ketika sejarah tumbuh besar, itu tidak terlalu praktis juga.

Hal yang ideal adalah memiliki sesuatu yang memungkinkan saya menggunakan beberapa hotkey untuk menavigasi sejarah, tetapi hanya di antara instance yang berisi apa yang telah saya ketikkan pada baris perintah; jadi dalam contoh saya, setelah mengetik iwconfig, gunakan beberapa tombol (mungkin PgUp dan PgDown?) untuk menavigasi hanya melalui entri yang dimulai dengan iwconfig .

Jika tidak memungkinkan, akan lebih baik untuk mencetak daftar seperti historydo tetapi itu hanya akan berisi apa yang sudah saya ketikkan (saya curiga bahwa historydan grepperintah terlibat tetapi saya tidak yakin tentang sintaks yang benar); tetapi solusi hotkey sebelumnya akan menjadi pilihan terbaik.

Sekhemty
sumber

Jawaban:

12

Anda dapat mencari riwayat menggunakan Ctrl+ Rdan kemudian ketik string pencarian (misalnya iwuntuk menemukan iwconfig). Kemudian Anda masih dapat menavigasi sejarah pada saat itu dengan tombol panah atas dan bawah, atau tekan Ctrl+ Rlagi untuk menemukan kejadian sebelumnya.

Stefan Seidel
sumber
Saya tidak yakin sudah mengerti bahwa panas berhasil. Jika saya menekan Ctrl + R dan ketik iwconfig, itu menunjukkan kepada saya contoh yang berisi itu (belum tentu yang terbaru), tetapi jika saya menggunakan tombol panah, itu menavigasi semua item, bukan hanya yang berisi string. Sepertinya saya memilih titik tertentu dalam riwayat untuk memulai navigasi di (bukan mulai dari bawah seperti tombol atas lakukan), tetapi selain itu, navigasinya sama seperti biasa. Apakah saya melewatkan sesuatu?
Sekhemty
Saya pikir itu tidak masalah sama sekali, tetapi untuk berjaga-jaga, saya menggunakan konsoleterminal emulator.
Sekhemty
Maaf, saya telah memperbarui jawaban saya tentang cara menemukan kecocokan sebelumnya.
Stefan Seidel
5

Setelah sedikit latihan, saya menemukan cara menggunakan solusi penyelesaiannya.

Saya mencocokkan sintaks yang benar untuk mencetak daftar yang difilter, saya melakukannya dengan history | grep iwconfig(ternyata tidak begitu sulit); dengan output yang dapat saya gunakan !ndengan daftar yang difilter yang sekarang mudah dibaca.

Sekhemty
sumber
3
Trik tambahan: Gunakan !n:p. Ini mencetak perintah lama tanpa menjalankannya dan mengembalikannya ke riwayat Anda. Lalu pergi ke sana dengan satu stroke panah ke atas dan sekarang Anda dapat mengeditnya. Ada banyak trik konyol lainnya seperti ini: ss64.com/bash/history.html
Wandering Logic
3

Saya tidak dapat mengomentari jawaban Stefan, tetapi Anda biasanya harus terus menekan Ctrl + R. Lihat halaman ini untuk informasi lebih lanjut.

pengguna2313067
sumber
2

Tekan "ctrl + r" lalu masukkan string pencarian.

Jika bukan yang Anda cari Kemudian lagi "ctrl + r"

Jika ditemukan, tekan Enter untuk menjalankannya Atau tekan panah kanan -> untuk mengeditnya sebelum menggunakannya.

Santosh
sumber