Maaf, judul ini bukan yang paling elegan yang pernah saya rancang.
Tetapi saya berasumsi banyak orang akan bertanya-tanya tentang hal ini, dan pertanyaan saya mungkin merupakan penipuan ... yang bisa saya katakan adalah saya belum menemukannya.
Ketika saya mengatakan "menggulir" ke atas, maksud saya menggunakan tombol "panah atas" pada keyboard, yang jelas menggulung Anda ke atas melalui sejarah, mulai dari perintah terbaru.
Jadi Anda menemukan perintah, mungkin 30 perintah kembali ... dan Anda menjalankannya. Dan kemudian Anda ingin menjalankan perintah yang awalnya datang setelah itu ... apakah ada cara cepat untuk melakukan ini? Atau bagaimana mereka yang lancar dalam BASH melakukan ini?
sumber
vi
pengeditan baris (diaktifkan denganset -o vi
) atauemacs
? KarenaCtrl-O
tidak akan bekerja dengan mantan sejauh yang saya tahu.bind "\C-o":operate-and-get-next
(atau menambahkan semuanya setelahbind
ke~/.inputrc
)Jawaban Jon Reinhold bagus, tetapi ada solusi yang jauh lebih kuat yang akan saya sarankan. Saya juga memiliki komentar tentang gotcha dalam jawaban Jon, tetapi saya tidak memiliki reputasi yang cukup untuk dapat berkomentar secara langsung, jadi @Jon Reinhold, jika Anda membaca ini, harap berikan komentar saya kepada Anda di bawah ini.
Bash termasuk perintah
fc
, yang mengambil nomor baris parameter dari daftar riwayat bash. Ini kemudian membuka editor default Anda dengan baris-baris itu sebagai teks. Pada titik itu, Anda dapat mengedit baris secara opsional. Lalu, ketika Anda keluar dari editor, bash mengeksekusi baris itu!Contoh pengeditan yang mungkin ingin Anda buat adalah menambahkan ke semua kecuali baris terakhir seperti "; baca -p" selanjutnya ... ". Itu akan menyebabkan bash untuk mengeksekusi setiap baris, dan meminta Anda sebelum melanjutkan.
Komentar untuk Jon Reinhold: Jawaban yang bagus, tetapi Anda harus membuatnya memenuhi syarat karena jika pengguna telah menetapkan variabel bash HISTCONTROL untuk dimasukkan
erasedups
, maka setelah melakukanC-o
pengguna akan bingung karena alih-alih perintah berikutnya yang diharapkan dalam sejarah ditampilkan, yang setelah itu akan ditampilkan. Ini karena bash telah menghapus instance asli dari perintah yang dieksekusi, dan dengan demikian semua perintah sesudahnya telah bergeser ke atas satu baris, yaitu. ke satu nomor indeks yang lebih rendah dalam daftar riwayat.sumber
fc
sebelum keduanyaCtl-o
danbash
itu sendiri. (Bertentangan dengan jawaban ini juga kurang bermanfaat.)erasedups
jelas adalah bug bash ( mungkin ada ketentuan untuk situasi ini). Bagus untuk tahu.Cara lain untuk mencapai perilaku yang Anda inginkan adalah dengan mengenal pintasan readline bash (yang CTRL- osaya percaya) dan mencari riwayat bash.
Pencarian riwayat
CTRL- rmembawa Anda ke pencarian sejarah perintah bash, di mana Anda dapat mulai mengetik perintah yang Anda cari dan bash akan melengkapi perintah secara otomatis untuk Anda. Fungsionalitas autocomplete sangat bagus. Ketika perintah yang ingin Anda jalankan adalah pada baris input, Anda dapat ENTERmenjalankan perintah, atau tekan CTRL- euntuk memindahkan kursor ke akhir baris perintah dan keluar dari mode pencarian riwayat.
Yang keren dengan CTRL- epada titik ini adalah bahwa buffer sejarah diatur secara kontekstual ke perintah ini. Perintah berikutnya dan sebelumnya sekarang adalah perintah yang dijalankan sebelum dan sesudah baris yang ditemukan oleh pencarian riwayat. Anda dapat menekan panah atas atau bawah dan ambil perintah berikutnya.
Pencarian riwayat sangat kuat dan cara yang bagus untuk menghindari menggunakan panah atas untuk mendapatkan jalan kembali ke perintah di tempat pertama. Pencarian riwayat cepat dapat menghemat banyak waktu pencarian secara manual melalui sejarah dan kemudian Anda dapat melanjutkan dengan CTRL- oseperti yang ditunjukkan Jon di atas.
Baca Potongan Singkat
Jika Anda ingin meningkatkan bash-fu Anda secara keseluruhan, saya akan merekomendasikan untuk memberikan pintasan readline untuk bidikan tombol panah. Anda mungkin menemukan bahwa mereka lebih nyaman dan memungkinkan Anda untuk meningkatkan kecepatan mengetik Anda, tetapi tentu saja YMMV. Berikut adalah beberapa lagi:
Pintasan readline ini (bersama dengan CTRL- aawal baris dan CTRL- eakhir baris) akan meningkatkan kecepatan dan efisiensi Anda pada imo baris perintah.
sumber