Lịch sử chỉ huy trong Zsh


61

Làm thế nào để Zsh theo dõi lịch sử lệnh?

Tôi thấy hai tập tin trong thư mục nhà của tôi: .zhistory.zsh_history. sự khác biệt giữa chúng là gì? Các tập tin dường như chứa tất cả lịch sử của tôi. Liệu Zsh giữ phụ thêm dòng để một trong số họ mãi mãi ? Điều đó có làm cho quá trình tìm kiếm lịch sử quá chậm không?

Tôi có thể an toàn làm cho các tệp này liên kết tượng trưng đến một vị trí khác không? (ví dụ: kho git để theo dõi các thay đổi trong lịch sử)


Kiểm tra ~/.zshrcvà / hoặc /etc/zshrccho các tùy chọn được mô tả ở đó zsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

Câu trả lời:


78

Zsh lưu các dòng đầu vào (có thể có thông tin về thời gian) trong tệp được chỉ định bởi biến HISTFILE. Đây phải là một tên tệp tuyệt đối (nếu không nó sẽ được giải thích liên quan đến bất kỳ thư mục nào hiện tại vào thời điểm đó).

Zsh không có giá trị mặc định tích hợp cho HISTFILE. Phân phối zsh đi kèm với trình hướng dẫn thiết lập cho người dùng mới có giá trị ~/.histfileđược tích hợp sẵn, vì vậy đây là những gì người dùng zsh nhận được theo mặc định. Oh-my-zsh đi kèm với HISTFILE=.zhistorycài đặt trước. Vì vậy, có vẻ như bạn đã thử zsh cả với thiết lập mặc định và với oh-my-zsh. Kiểm tra .zshrc(hoặc ngày của tệp) để xem cái nào bạn đang sử dụng.

Làm thế nào zsh mở tệp, và do đó những gì xảy ra nếu nó là một liên kết tượng trưng, ​​phụ thuộc vào một số tùy chọn.

  • Nếu một trong các tùy chọn append_history(được đặt theo mặc định) inc_append_historyhoặc share_historyđược đặt hoặc khi lịch sử được lưu rõ ràng với fc -AI, zsh sẽ nối thêm vào tệp hiện có.
    Lưu ý rằng ngay cả trong các cài đặt này, thỉnh thoảng zsh ghi đè lên tệp như được mô tả bên dưới để cắt giảm kích thước.
  • Mặt khác, nếu tùy chọn hist_save_by_copyđược đặt (mặc định được đặt từ zsh 5.0, nhưng không tồn tại trong 4.2), zsh ghi một tệp tạm thời sau đó di chuyển nó vào vị trí khi hoàn thành. Trong trường hợp này, nếu tệp lịch sử là một liên kết tượng trưng, ​​thì tệp mới sẽ thay thế liên kết tượng trưng.
  • Nếu không, zsh ghi đè lên tập tin hiện có.

Thay vì trỏ zsh đến một liên kết tượng trưng, ​​hãy đặt HISTFILEthành bất cứ nơi nào bạn muốn tệp lịch sử.

Có bao nhiêu dòng lịch sử được lưu giữ được cấu hình thông qua các biến HISTSIZESAVEHIST. HISTSIZElà số dòng tối đa được giữ trong một phiên và SAVEHISTlà số dòng tối đa được lưu trong tệp lịch sử.

Để có được một số lịch sử được lưu, bạn cần đặt cả hai HISTFILESAVEHIST, vì giá trị mặc định SAVEHISTlà 0. Bạn cũng có thể muốn tăng HISTSIZE(kể từ zsh 5.0, mặc định chỉ là 30).

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.