Điểm:1

Lệnh tiện dụng để chỉnh sửa lệnh nhập sai đã thực hiện trước đó và ghi đè mục nhập lịch sử bằng lệnh đã sửa

lá cờ za

cho đến gần đây tôi khá chắc chắn rằng fc lệnh mở lệnh đã thực hiện trước đó trong trình chỉnh sửa mặc định, thực hiện các thay đổi đã gửi ghi đè mục cuối cùng từ lịch sử bash. Tuy nhiên, có vẻ như lệnh mới được thực thi thực sự chỉ được thêm vào cuối lịch sử bash, do đó, lệnh bị nhập sai (muốn sửa) vẫn còn.

Vì tôi thấy các lệnh không phù hợp trong lịch sử bash rất khó chịu, vì thỉnh thoảng tôi tình cờ gặp chúng, tôi đã tự hỏi liệu bash shell có thể được thiết lập bằng cách nào đó để ghi đè lên mục chỉnh sửa hay không - chủ yếu là tôi quan tâm đến việc ghi đè lên mục trước đó, nhưng giải pháp ghi đè bất kỳ mục nhập nào từ lịch sử sẽ còn tốt hơn nữa! Tôi khá chắc chắn rằng đã có thứ gì đó giống như vậy (thậm chí có thể có sẵn dưới dạng thuộc tính trong một số tệp cấu hình hoặc khi thêm một số đối số khi gọi lệnh), nhưng tôi không nhận được bất kỳ kết quả hữu ích nào khi tìm kiếm nó trên web.

Tôi đã đưa ra một câu trả lời mà tôi đang cung cấp dưới dạng câu trả lời cho câu hỏi này, nhưng nếu bất kỳ ai khác có giải pháp tốt hơn nữa, đừng ngần ngại chia sẻ.

zeko868 avatar
lá cờ za
Xin lỗi, đó không thực sự là điều tôi đang tìm kiếm, mặc dù có một số phân đoạn hữu ích bên trong một số câu trả lời. Tôi đã đăng một câu trả lời như tôi dự định và thông báo ban đầu. Đây là toàn bộ lịch sử đang bị xóa và tôi chỉ muốn xóa mục cuối cùng khỏi lịch sử - tốt nhất là bằng cách chỉnh sửa nó trong trình soạn thảo văn bản giống như trường hợp của lệnh *fc*.
Điểm:1
lá cờ za

Giải pháp này có vẻ khá hứa hẹn với tôi sau khi tôi đã sử dụng nó được một thời gian.

Thêm phần sau vào của bạn ~/.bashrc tập tin:

shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
        nếu [ $# -eq 0 ]; sau đó
                fc
                lịch sử -d $(wc -l < ​​~/.bash_history)
                lịch sử -w
                lịch sử -c
                lịch sử -r
        khác
                fc $@
        fi
}
bí danh fc=fc_override_prev_command_if_no_args

Điều này làm là gì thay đổi hành vi của fc lệnh khi nó được gọi mà không có đối số. Khi nó được gọi với các đối số, tôi đã làm cho nó hoạt động như nó thường hoạt động, vì nếu không thì hành vi của nó sẽ bị sai lệch nếu không có nếu/khác/fi khối và không có khác một phần nó sẽ không làm gì cả.

Mặt khác, khi không có đối số nào được cung cấp, thì fc lệnh được thực thi, mục cuối cùng từ lịch sử bash bị hủy và lịch sử đã lưu trong bộ nhớ cache được tải lại từ tệp.

Phần gán lại biến PROMPT_COMMAND tôi đã mượn từ đây và tôi thấy nó hữu ích vì các lệnh đã gửi có sẵn ngay lập tức trong lịch sử bash của các thiết bị đầu cuối hiện đang mở khác với bash (OK, không thực sự ngay lập tức, nhưng ngay cả một hành động như gửi KÝ HIỆU tín hiệu bằng Ctrl+C là đủ để tải lại bộ đệm lịch sử).

Vui lòng chỉnh sửa câu trả lời này hoặc nhận xét nếu bạn thấy một số phần của giải pháp không cần thiết.

Liên kết đến ý chính với đoạn mã trên có sẵn đây

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.