Làm thế nào tôi có thể thêm một lệnh vào lịch sử Bash mà không thực hiện nó?


32

Thỉnh thoảng sẽ rất hữu ích khi thêm một lệnh trực tiếp vào lịch sử trong Bash mà không thực sự thực thi nó. Cho đến nay, điều khép kín mà tôi đã tìm thấy là thêm một cái #ở phía trước của nó và nhấn trở lại. Có cách nào tốt hơn không?

Câu trả lời:


39

history -s chỉ huy


Không bao giờ biết về tính năng đó. Tôi không thể nghĩ đến việc sử dụng ngay lập tức cho nó, nhưng thật tốt khi biết điều đó.
Doug Harris

7
Bạn có biết nếu có thể chạy một lệnh tương tự như thế này từ một tập lệnh không? Tôi có một tập lệnh ./resize-images.shcó dòng cuối cùng chỉ ra một lệnh bạn nên chạy để hoàn tác các thay đổi, nó sẽ thực sự hữu ích nếu thay vào đó tập lệnh có thể thêm lệnh vào lịch sử của tôi vì vậy tôi chỉ cần nhấn up-enternếu tôi cần hoàn tác
Ben Trang

1
@BenPage: Xem cả hai câu trả lời ở đây: unix.stackexchange.com/questions/112354/ .
RustyTheBoyRobot

9

history -s chỉ huy

Bạn thậm chí có thể ràng buộc một tổ hợp phím để làm điều này cho bạn. Bạn có thể nhập cái này tại dấu nhắc Bash:

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

hoặc thêm phần này vào ~/.inputrc:

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

sau đó bạn có thể nhập một cái gì đó và nhấn Ctrl- qvà nó sẽ được thêm vào lịch sử mà không được thực thi. Khoảng trắng trước "history" làm cho historychính lệnh không được thêm vào lịch sử nếu HISTCONTROLbiến của bạn chứa ignorespacehoặc ignoreboth. Một tổ hợp phím khác có thể được chọn thay vì "\ Cq".


3

Thật khó để đưa ra bất cứ điều gì ngắn hơn một "lệnh" một ký tự, vì vậy chúng tôi thực sự cần phải đi đến cấp độ tổ hợp phím. Với thiết lập bash của tôi và bàn phím Hoa Kỳ, những gì bạn làm bây giờ sẽ có:

  1. Đi đến đầu dòng CTRLA:: hướng dẫn +1, nhấn phím +2
  2. Thêm #(nhu cầu SHIFT): hướng dẫn +1, nhấn phím +2
  3. Đưa nó vào lịch sử với ENTER: +1 lệnh, nhấn phím +1

Vì vậy, trong tổng số 3 hướng dẫn, 5 phím nhấn.

Sử dụng ALT#làm tương tự trong 1 hướng dẫn, 2 lần nhấn.

YMMV tùy thuộc vào bố cục bàn phím và cấu hình bash của bạn.


3
Vấn đề không phải là số lần nhấn phím, nhưng "#command" được lưu trong lịch sử, thay vì "lệnh" dự định.
Grumbel

1
Thật tuyệt khi "#command" được lưu trữ trong tệp lịch sử vì nó cho bạn biết rằng lệnh không thực sự được thực thi. Điều này có thể tốt nếu sau này bạn muốn xem lại những lệnh bạn đã nhập để tìm ra vấn đề.
Marnix A. van Ammer

2
@Grumbel, @Marnix: Đồng ý, tôi đã không trả lời câu hỏi cho bức thư nhưng chỉ ra cách làm những gì anh ấy làm bây giờ thậm chí còn nhanh hơn. Cá nhân tôi nghĩ rằng việc sử dụng #commandlà cách nhanh hơn history -s commandvà cũng rất dễ sử dụng nếu bạn lập bản đồ history-search-backward/-forwardđúng cách. Nhưng đó là vấn đề của hương vị.
Benjamin Bannier
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.