Menggunakan panah atas untuk menjalankan perintah sebelumnya

11

Setup apa yang saya perlukan untuk menggunakan panah atas untuk menjalankan perintah sebelumnya? Dengan Mac, saya bisa menggunakan panah atas untuk menjalankan kembali perintah yang baru saja saya jalankan, tetapi sepertinya tidak berfungsi dengan bash shell saya.

Saya menggunakan 8.04 (saya tidak bisa menggunakan distribusi terbaru karena beberapa masalah versi kompiler).

TAMBAH

Saya tidak mengubah apa pun karena ini adalah instalasi baru dengan VMWare Fusion di Mac.

prosseek
sumber
3
Dalam konfigurasi default, panah atas berfungsi dengan baik: sudahkah Anda mengubah sesuatu?
enzotib
sebagai @enzotib mengatakan bash akan melakukan ini secara default, tetapi beberapa yang lain, misalnya dia tidak akan!
Rory Alsop

Jawaban:

10

Pastikan riwayat Anda diaktifkan. Anda dapat memeriksa status saat ini dengan menjalankan:

set -o

Outputnya harus berisi (perhatikan history onbaris):

histexpand      on
history         on
ignoreeof       off

Jika ini tidak diaktifkan, Anda harus menjalankan set -o history. Untuk membuat perubahan ini terus-menerus, Anda harus menambahkannya ke ~/.bashrc:

set -o history

Jika Anda ingin menjalankan perintah sebelumnya, Anda dapat menjalankan perintah selanjutnya juga:

!!

Dari halaman manual Bash :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Jika Anda menggunakan Bash, Anda juga dapat menggunakan pintasan default untuk menavigasi sejarah:

  • Ctrl+ P: Perintah sebelumnya
  • Ctrl+ N: Perintah selanjutnya

    Perintah untuk Memanipulasi Sejarah riwayat sebelumnya (Cp). Ambil perintah sebelumnya dari daftar riwayat, bergerak kembali dalam daftar. next-history (Cn) Ambil perintah berikutnya dari daftar histori, bergerak maju dalam daftar.

Lekensteyn
sumber
1
Saya memeriksa pengaturannya sudah benar, tetapi tombol panah atas tidak berfungsi. Namun, saya dapat menggunakan Ctrl-P / N untuk mendapatkan hasil yang sama. Terima kasih.
prosseek
@prosseek Dalam hal ini, apakah Anda sudah berubah /etc/inputrcatau ~/.inputrc? Juga, urutan melarikan diri apa yang dihasilkan panah atas dan bawah di terminal yang Anda gunakan? Untuk memeriksa, menjalankan cat, lalu pada baris kosong, tekan ke atas dan ke bawah, lalu Ctrl + C untuk keluar dari cat. Di sini ia menghasilkan ^[[A^[[B.
geirha
@geirha: Saya tidak punya file ~ / .inputrc, dan saya tidak mengubah apapun / etc / inputrc. Dan untuk urutan pelarian, saya tidak melihat apa pun di layar.
prosseek
@prosseek Kemudian kedengarannya seperti tombol panah tidak pernah mencapai terminal sama sekali. Mungkin antarmuka VMWare memfilternya atau semacamnya.
geirha
14

Pastikan Anda menggunakan bash. Gotcha yang umum adalah membuat pengguna baru dengan atau useraddbukan adduseraplikasi Users and groups (GUI). Dengan yang pertama, set shell default adalah /bin/sh. Jalankan chsh( ch ange sh ell) untuk memastikan itu diatur ke /bin/bash.

geirha
sumber
1

Masuk terminal:

gedit  ~/.inputrc

Kemudian salin tempel dan simpan:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

Mulai sekarang di terminal Anda dapat melakukan pencarian tambahan, Yang perlu Anda lakukan untuk menemukan perintah sebelumnya adalah memasukkan katakan dua atau tiga huruf pertama dan panah ke atas akan membawa Anda ke sana dengan cepat.

Shailesh Singh
sumber