ประวัติคำสั่งใน Zsh


61

Zsh ติดตามประวัติคำสั่งอย่างไร

ผมเห็นสองไฟล์ในไดเรกทอรีบ้านของฉัน: และ.zhistory .zsh_historyความแตกต่างระหว่างพวกเขาคืออะไร? ไฟล์ดูเหมือนจะมีประวัติทั้งหมดของฉัน Zsh จะเพิ่มบรรทัดต่อท้ายให้กับหนึ่งในนั้นตลอดไปหรือไม่? นั่นจะทำให้การค้นหาประวัติช้าเกินไปหรือไม่

ฉันสามารถสร้างลิงก์สัญลักษณ์ไฟล์เหล่านี้ไปยังตำแหน่งอื่นได้อย่างปลอดภัยหรือไม่? (เช่นที่เก็บ git เพื่อติดตามการเปลี่ยนแปลงประวัติ)


ตรวจสอบตัวเลือกของคุณ~/.zshrcและ / หรือ/etc/zshrcสำหรับตัวเลือกที่อธิบายไว้ที่นั่นzsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

คำตอบ:


78

zsh สายการป้อนข้อมูลร้านค้า (อาจจะมีข้อมูลเวลา) HISTFILEในแฟ้มที่ระบุโดยตัวแปร นี่ควรเป็นชื่อไฟล์สัมบูรณ์ (มิฉะนั้นจะถูกตีความโดยสัมพันธ์กับไดเรกทอรีใด ๆ ที่เป็นปัจจุบันในเวลานั้น)

zsh HISTFILEมีในตัวไม่มีค่าเริ่มต้นสำหรับ การกระจาย zsh มาพร้อมกับตัวช่วยการตั้งค่าสำหรับผู้ใช้ใหม่ซึ่งมีค่า~/.histfileในตัวดังนั้นนี่คือสิ่งที่ผู้ใช้ zsh ได้รับตามค่าเริ่มต้น Oh-my-zsh มาพร้อมการHISTFILE=.zhistoryตั้งค่าล่วงหน้า ดังนั้นดูเหมือนว่าคุณจะลอง zsh ทั้งสองด้วยการตั้งค่าเริ่มต้นและด้วย oh-my-zsh ตรวจสอบ.zshrc(หรือวันที่ไฟล์) ของคุณเพื่อดูว่าคุณใช้ไฟล์ไหนอยู่

zsh เปิดไฟล์อย่างไรและจะเกิดอะไรขึ้นหากเป็นลิงก์สัญลักษณ์ขึ้นอยู่กับตัวเลือกหลายตัว

  • หากหนึ่งในตัวเลือกappend_history(ตั้งค่าเริ่มต้น) inc_append_historyหรือshare_historyตั้งค่าหรือเมื่อบันทึกประวัติไว้อย่างชัดเจนด้วยfc -AIzsh จะผนวกกับไฟล์ที่มีอยู่
    โปรดทราบว่าแม้ภายใต้การตั้งค่าเหล่านี้ zsh จะเขียนทับไฟล์เป็นครั้งคราวตามที่อธิบายไว้ด้านล่างเพื่อตัดขนาดให้เล็กลง
  • มิฉะนั้นถ้าตัวเลือกhist_save_by_copyมีการตั้งค่า (มันถูกกำหนดโดยค่าเริ่มต้นตั้งแต่ zsh 5.0 แต่ไม่มีอยู่ใน 4.2) zsh เขียนไฟล์ชั่วคราวแล้วย้ายมันไว้ในสถานที่เมื่อเสร็จสมบูรณ์ ในกรณีนี้หากไฟล์ประวัติเป็นลิงก์สัญลักษณ์ไฟล์ใหม่จะแทนที่ลิงก์สัญลักษณ์
  • มิฉะนั้น zsh จะเขียนทับไฟล์ที่มีอยู่เดิม

แทนที่จะชี้ zsh ไปที่ลิงก์สัญลักษณ์ตั้งค่าHISTFILEเป็นตำแหน่งที่คุณต้องการให้ไฟล์ประวัติเป็น

กี่บรรทัดของประวัติศาสตร์จะถูกเก็บไว้มีการกำหนดค่าผ่านตัวแปรและHISTSIZE คือจำนวนบรรทัดสูงสุดที่เก็บไว้ในเซสชันและเป็นจำนวนบรรทัดสูงสุดที่เก็บไว้ในไฟล์ประวัติSAVEHISTHISTSIZESAVEHIST

ในการบันทึกประวัติบางอย่างคุณต้องตั้งค่าทั้งสองHISTFILEและSAVEHISTเนื่องจากค่าเริ่มต้นSAVEHISTคือ 0 คุณอาจต้องการเพิ่มHISTSIZEเช่นกัน (เช่น zsh 5.0 ค่าเริ่มต้นคือ 30)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.