Sử dụng mũi tên lên để chạy lệnh trước


11

Tôi cần cài đặt gì để sử dụng mũi tên lên để chạy lệnh trước đó? Với Mac, tôi có thể sử dụng mũi tên lên để chạy lại lệnh mà tôi vừa chạy, nhưng dường như nó không hoạt động với shell bash của tôi.

Tôi sử dụng 8.04 (Tôi không thể sử dụng bản phân phối mới nhất do một số vấn đề về phiên bản trình biên dịch).

THÊM

Tôi đã không thay đổi bất cứ điều gì vì đây là bản cài đặt mới với VMWare Fusion trên Mac.


3
Trong cấu hình mặc định, mũi tên lên hoạt động hoàn hảo: bạn đã sửa đổi điều gì chưa?
enzotib

như @enzotib nói bash sẽ làm điều này theo mặc định, nhưng một số người khác, ví dụ như sh sẽ không!
Rory Alsop

Câu trả lời:


10

Hãy chắc chắn rằng lịch sử của bạn được kích hoạt. Bạn có thể kiểm tra trạng thái hiện tại bằng cách chạy:

set -o

Đầu ra phải chứa (lưu ý history ondòng):

histexpand      on
history         on
ignoreeof       off

Nếu điều này không được kích hoạt, bạn cần phải chạy set -o history. Để thay đổi này liên tục, bạn cần thêm nó vào ~/.bashrc:

set -o history

Nếu bạn muốn chạy lệnh trước, bạn cũng có thể chạy lệnh tiếp theo:

!!

Từ trang hướng dẫn 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.

Nếu bạn đang sử dụng Bash, bạn cũng có thể sử dụng các phím tắt mặc định để điều hướng trong lịch sử:

  • Ctrl+ P: Lệnh trước
  • Ctrl+ N: Lệnh tiếp theo

    Các lệnh để Thao tác lịch sử trước đó (Cp) Lấy lệnh trước đó từ danh sách lịch sử, di chuyển trở lại trong danh sách. next-history (Cn) Lấy lệnh tiếp theo từ danh sách lịch sử, di chuyển về phía trước trong danh sách.


1
Tôi đã kiểm tra thiết lập là chính xác, nhưng phím mũi tên lên không hoạt động. Tuy nhiên, tôi có thể sử dụng Ctrl-P / N để có kết quả tương tự. Cảm ơn.
prosseek

@prosseek Trong trường hợp đó, bạn đã thay đổi /etc/inputrchay ~/.inputrcchưa? Ngoài ra, chuỗi thoát nào mà mũi tên lên và xuống tạo ra trong thiết bị đầu cuối mà bạn đang sử dụng? Để kiểm tra, chạy cat, sau đó trên dòng trống, nhấn uparrow và downarrow, sau đó Ctrl + C để thoát cat. Ở đây nó sản xuất ^[[A^[[B.
geirha

@geirha: Tôi không có tệp ~ / .inputrc và tôi không thay đổi bất cứ điều gì / etc / inputrc. Và trong chuỗi thoát, tôi không thấy gì trên màn hình.
prosseek

@prosseek Sau đó, có vẻ như các phím mũi tên không bao giờ đến được thiết bị đầu cuối. Có lẽ giao diện VMWare đang lọc chúng ra hoặc một cái gì đó.
geirha

13

Hãy chắc chắn rằng bạn đang thực sự sử dụng bash. Một Gotcha phổ biến là tạo một người dùng mới useraddthay vì adduserhoặc ứng dụng Người dùng và nhóm (GUI). Với cái trước, bộ vỏ mặc định là /bin/sh. Chạy chsh( ch ange sh ell) để đảm bảo nó được đặt thành /bin/bash.


1

Trong thiết bị đầu cuối nhập:

gedit  ~/.inputrc

Sau đó sao chép dán và lưu:

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

Từ giờ trở đi trong thiết bị đầu cuối, bạn có thể thực hiện tìm kiếm gia tăng, Tất cả những gì bạn cần làm để tìm lệnh trước đó là nhập hai hoặc ba chữ cái đầu tiên và mũi tên hướng lên sẽ đưa bạn đến đó nhanh chóng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.