2016-03-04 14 views
21

Trường hợp sử dụng là:Làm cách nào để thêm lệnh để bash lịch sử mà không thực thi?

Tôi nhập lệnh dài và sau đó tôi nhận ra rằng tôi cần phải chạy một thứ khác trước.

Tôi thường chạy nó ngay sau đó CTRL C ngay lập tức.

Tôi đoán tôi cũng có thể làm echo "command" >> $HISTFILE, nhưng điều đó sẽ không hoạt động với dấu ngoặc kép.

+1

Thói quen thông thường của tôi là Ctrl + A, Ctrl + K để di chuyển đường vào bộ đệm cắt và Ctrl + Y để dán nó sau - nhưng Matti vari kiến là tốt hơn. –

+0

Tôi thường chỉ cần nhấn Ctrl-C khi tôi đã hoàn thành việc gõ toàn bộ lệnh. Lệnh này vẫn hiển thị trên màn hình, nhưng không thực thi. Tôi chạy lệnh khác, sau đó chọn lệnh vẫn hiển thị (để sao chép nó) và dán nó. – thedayturns

+0

hack đơn giản. nói rằng bạn muốn ** git commit -am "done" **. sau đó bạn nhận ra rằng bạn chưa hoàn thành. ctrl-a trở lại phần đầu của lệnh, thêm 'x' (ví dụ), cho ** xgit commit -am "done" **. mà lỗi ra nhưng đi trong lịch sử. sau này, chỉ cần quay trở lại lịch sử, ctrl-a và xóa 'x'. đảm bảo lệnh 'x' + thực sự không phải là lệnh hợp lệ. –

Trả lời

18

Là một thay thế để chỉnh sửa lịch sử bạn có thể sử dụng Ctrl-U để cắt dòng (lưu ý rằng đây cắt ngược từ con trỏ, vì vậy nó phải ở cuối), và Ctrl-Y để dán lại sau. Meta-Y được sử dụng sau Ctrl-Y sẽ chuyển qua các giá trị cắt khác nhau để bạn có thể quay lại các giá trị trước đó.

+2

Điều này hoạt động * chính xác * như OP muốn. Tôi biết vì tôi muốn điều tương tự và một linh hồn tử tế đã nói với tôi điều này. Bây giờ tôi sử dụng nó * tất cả thời gian * khi tôi gõ một lệnh dài và nghĩ "oh, muốn điều đầu tiên này". –

5

Bạn có thể chỉnh sửa tệp ~/.bash_history.

+0

Điều này không hữu ích cho kịch bản trong câu hỏi của OP. – chepner

16

Chỉ cần sử dụng history -s arg.

-s Các arg được thêm vào cuối danh sách lịch sử dưới dạng một mục nhập duy nhất.

http://ss64.com/bash/history.html

11

lựa chọn khác là đặt một băm ở phía trước của dòng:

# echo this command will not execute, but it will be in the history. 
+0

Nếu bạn có điều chỉnh sửa nhanh, hãy sử dụng Ctrl + A để chuyển đến đầu dòng, vì Kết thúc thường cách xa hơn. – galva

+2

Vẫn còn nhanh hơn, có một ràng buộc mặc định thực hiện chính xác điều này: Meta- # là 'insert-comment', về cơ bản giống như di chuyển đến đầu dòng, chèn #, thực thi lệnh – RJHunter

3

Điều này có thể làm việc cho bạn:

Alt-# or insert-comment will change the command into a comment and store it in command history. 

Nếu lệnh được lấy từ lịch sử thì:

Alt-1 Alt-# will remove the comment and execute the command. 
+2

++, nhưng bạn nên gọi phím bổ trợ 'Meta', không phải' Alt', vì nó sẽ không là 'Alt' trên tất cả các nền tảng (ít nhất là theo mặc định). – mklement0

Các vấn đề liên quan