คำถามติดแท็ก zsh

Zsh เป็นเชลล์ที่มีคุณสมบัติบรรทัดคำสั่งและสคริปต์ขั้นสูงมากมาย

1
วิธีรวมการเติมข้อความอัตโนมัติ zsh สำหรับอาร์กิวเมนต์ของฟังก์ชันตัวตัดคำและคำสั่งที่มีอยู่
ฉันทำงานเป็นส่วนใหญ่ใน gvim และเทอร์มินัลจำนวนมาก เดิมทีฉันต้องการเปิดไฟล์ทั้งหมดในอินสแตนซ์กลุ่มเดียว ด้วยเหตุนี้ฉันจึงใช้นามแฝงเพื่อเปิดไฟล์จากเทอร์มินัลของฉันใน 'เซิร์ฟเวอร์ vim' ปัจจุบัน alias rv="gvim --remote-silent" แต่การเปิดไฟล์จำนวนมากจากหลายโครงการเปิดในอินสแตนซ์ vim เดียวส่งผลกระทบต่อผลผลิตของฉันดังนั้นฉันจึงอัพเกรด alias เป็นฟังก์ชัน # main function rv() { local args options server options=$(getopt -o hils:t: -l "help,info,list,set:,target:" -- "$@") if [[ $? -ne 0 ]]; then echo "Failed to parse options." return 1 fi # a little …
40 zsh  autocomplete 


3
วิธีทำให้ zsh เสร็จแล้วแสดงการคาดเดาครั้งแรกในบรรทัดเดียวกัน (เหมือนของปลา)?
ใน Fish เมื่อคุณเริ่มพิมพ์การเติมข้อความอัตโนมัติจะแสดงการเติมข้อความอัตโนมัติครั้งแรกในบรรทัดนั้นโดยอัตโนมัติ ใน zsh คุณต้องกดที่แท็บและมันจะแสดงการเติมข้อความอัตโนมัติด้านล่าง อย่างไรก็ตามมีการทำให้ zsh ทำตัวเหมือนปลามากขึ้นในเรื่องนี้หรือไม่? (ฉันใช้Oh My Zsh ... )
38 zsh  autocomplete  fish 

2
กรอก avfs directory ปลอมใน zsh
ฉันจะปรับแต่งระบบความสมบูรณ์ของ zsh เพื่อให้ไฟล์ "ปลอม" สมบูรณ์ในบางสถานการณ์ได้อย่างไร แม่นยำยิ่งขึ้นระบบไฟล์AVFSทำให้ไฟล์เก็บถาวรเป็นไดเรกทอรีโดยการสร้าง "ไดเรกทอรีปลอม" ถัดจากไฟล์เก็บถาวร โดยค่าเริ่มต้นมันทำซ้ำลำดับชั้นของไดเรกทอรีทั้งหมดภายใต้จุดเชื่อมต่อของ~/.avfsมัน นอกจากนี้ภายใต้~/.avfsสำหรับทุกไฟล์เก็บถาวรเช่น/tmp/foo.zipนอกเหนือจากไฟล์เก็บถาวรตัวเอง~/.avfs/tmp/foo.zipมีไดเรกทอรีที่เรียกว่า~/.avfs/tmp/foo.zip#ซึ่งแสดงเนื้อหาของไฟล์เก็บถาวร อย่างไรก็ตามไดเรกทอรีพิเศษนี้ไม่ปรากฏในรายชื่อของ~/.avfs/tmp: มันมีอยู่เฉพาะเมื่อมีการร้องขออย่างชัดเจน (สิ่งนี้คล้ายกับการทำงานของเคาน์เตอร์อัตโนมัติ) mountavfs cd ~/.avfs/tmp/foo.zip\# เมื่อฉันพิมพ์คำสั่งเหมือนคำสั่งด้านบนfoo.zip#จะไม่ปรากฏเป็นความสำเร็จที่สมบูรณ์~/.avfs/tmp/เนื่องจากไม่มีไดเรกทอรีดังกล่าว วิธีที่ฉันสามารถบอก zsh ว่าเมื่อใดก็ตามที่มีไฟล์ที่มีเส้นทางแบบเต็ม$arcแมตช์~/.avfs/**/*.(tgz|zip)¹ก็ควรทำเป็นว่ามีไดเรกทอรีที่เรียกว่า${arc}#? (โปรดทราบว่าฉันต้องการความสมบูรณ์ในการทำงานกับการเรียกทุกครั้ง_filesหรือ_dirsไม่ใช่เฉพาะสำหรับcdคำสั่งฉันไม่ต้องการให้ทำซ้ำรหัสของ_filesฟังก์ชันหากเป็นไปได้) ¹ และส่วนที่เหลือทั้งหมดของส่วนขยาย

1
หลีกเลี่ยง“ BASH-isms” ในเชลล์สคริปต์
มีเครื่องมือที่คล้ายกับPerl :: Critic หรือไม่ที่จะตรวจสอบเชลล์สคริปต์ของคุณและชี้ให้เห็นข้อบกพร่องปัญหาเกี่ยวกับการพกพาการใช้งานโปรแกรมที่ไม่ได้มาตรฐานโดยไม่มีข้อผิดพลาด ฉันรู้ว่าset -o posixจะปิดใช้งานการใช้งานที่ไม่ใช่ POSIX แต่จะไม่บอกสิ่งที่ฉันต้องการทราบเช่นอาร์เรย์เชลล์ดัชนี zsh เริ่มต้นที่ 1 และทุบตีจาก 0 และเถ้าไม่สนับสนุนอาร์เรย์เลย
37 bash  shell  zsh  ash 

3
เหตุใดการเปิดไฟล์จึงเร็วกว่าการอ่านเนื้อหาตัวแปร
ในbashสคริปต์ฉันต้องการค่าต่าง ๆ จาก/proc/ไฟล์ จนถึงตอนนี้ฉันมีหลายสิบบรรทัด grepping ไฟล์โดยตรงเช่นนั้น: grep -oP '^MemFree: *\K[0-9]+' /proc/meminfo ในความพยายามที่จะทำให้มีประสิทธิภาพมากขึ้นฉันบันทึกเนื้อหาของไฟล์ไว้ในตัวแปรแล้วทำสิ่งต่อไปนี้: a=$(</proc/meminfo) echo "$a" | grep -oP '^MemFree: *\K[0-9]+' แทนที่จะเปิดไฟล์หลายครั้งควรเปิดเพียงครั้งเดียวและ grep เนื้อหาตัวแปรซึ่งฉันคิดว่าน่าจะเร็วกว่า - แต่อันที่จริงมันช้ากว่า: bash 4.4.19 $ time for i in {1..1000};do grep ^MemFree /proc/meminfo;done >/dev/null real 0m0.803s user 0m0.619s sys 0m0.232s bash 4.4.19 $ a=$(</proc/meminfo) bash 4.4.19 $ …

3
วิธีเปลี่ยนเชลล์เริ่มต้นเป็น ZSH - chsh บอกว่า“ เชลล์ไม่ถูกต้อง”
ฉันติดตั้ง ZSH บน VM ของฉันซึ่งฉันรวบรวมจากแหล่งที่มา สถานที่ตั้งของ ZSH คือ/usr/local/bin/zshเมื่อฉันเรียกมันเอาท์พุทchsh -s /usr/local/bin/zsh chsh: /usr/local/bin/zsh is an invalid shellฉันยังลองกับ sudo เช่นกัน ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร
36 shell  zsh  users  login 

1
วิธีเปิดใช้งานการค้นหาแบบย้อนกลับใน zsh?
ฉันเพิ่งเปลี่ยนมาเป็น zsh (ในที่สุด) และฉันก็รักมัน! จนถึงตอนนี้สิ่งหนึ่งที่ฉันขาดหายไปคือCtrl+ Rเพื่อทำการค้นหาประวัติที่เพิ่มขึ้น ฉันมีการตั้งค่าประวัติอย่างถูกต้อง HISTSIZE=10000 SAVEHIST=10000 HISTFILE=~/.zsh_history และฉันใช้viการเชื่อมโยงคีย์ bindkey -v แต่Ctrl+ Rไม่ทำงาน มันลบบรรทัดเหนือบรรทัดปัจจุบันซึ่งไม่ใช่พฤติกรรมที่ควรมีในกลุ่มเช่นกัน ข้อเสนอแนะใด ๆ

8
วิธี cd โดยอัตโนมัติหลังจาก git clone?
ฉันต้องการcdไดเรกทอรีที่สร้างขึ้นโดยcloneคำสั่งโดยอัตโนมัติหลังจากที่ฉันทำgit cloneบางสิ่งบางอย่าง สำคัญ:ฉันไม่ต้องการแก้ไขไวยากรณ์สำหรับคำสั่ง (เช่นใช้นามแฝง / ฟังก์ชั่น) เพราะมันจะทำลาย zsh-completions ที่ฉันได้รับโดยอัตโนมัติจากPretzoโครงการ แก้ไข : เหตุผลที่ฉันไม่ได้เลือกคำตอบที่ถูกต้องเป็นเพราะไม่มีคำตอบที่ได้ปฏิบัติตามเงื่อนไขข้างต้น ฉันใช้ ZSH แต่คำตอบในเชลล์อื่น ๆ ก็เป็นที่ยอมรับเช่นกัน
35 shell  zsh 

3
วิธีดูการประทับวันที่และเวลาสำหรับคำสั่งประวัติในเปลือก Zsh
เมื่อฉันรันคำสั่ง history บนเซิร์ฟเวอร์ ubuntu ของฉันฉันจะได้ผลลัพธ์ดังนี้: history ... 25 cd ~ 26 ls -a 27 vim /etc/gitconfig 28 vim ~/.gitconfig ฉันต้องการดูวันที่และเวลาของผู้ใช้เฉพาะ อย่างไรก็ตามเมื่อฉันถือว่าพวกเขา: su otheruser export HISTTIMEFORMAT='%F %T ' history ... 25 cd ~ 26 ls -a 27 vim /etc/gitconfig 28 vim ~/.gitconfig มันยังไม่แสดง datetime ฉันกำลังใช้เปลือก zsh

3
อะไร: $ {param: = value} หมายถึงอะไร
ฉันอ่านต่อไปนี้ค่ะ คู่มือผู้ใช้ของ Z-Shell : คำพ้องความหมายสำหรับ 'ความจริง' คือ ':'; มันมักจะใช้ในรูปแบบนี้เพื่อให้ข้อโต้แย้งที่มีผลข้างเคียง แต่ไม่ควรใช้ - เช่น : ${param:=value} ซึ่งเป็นสำนวนสามัญในอนุพันธ์บอร์นเชลล์ทั้งหมด ในการขยายพารามิเตอร์$paramจะได้รับค่าค่าหากว่างก่อนและปล่อยให้อยู่คนเดียว เนื่องจากเป็นเหตุผลเดียวสำหรับการขยายพารามิเตอร์คุณจึงใช้:เพื่อละเว้นอาร์กิวเมนต์ ที่จริงแล้วเปลือกสร้าง blithely บรรทัดคำสั่ง - ลำไส้ใหญ่ตามด้วยสิ่งที่มีค่า$paramไม่ว่าจะได้รับมอบหมายหรือไม่ - จากนั้นดำเนินการคำสั่ง; มันแค่เกิดขึ้นที่ ':' จะไม่แจ้งให้ทราบถึงข้อโต้แย้งที่ได้รับ แต่ฉันไม่เข้าใจ ฉันได้รับ:หมายถึงtrueแต่มีสอง colons ในการแสดงออก ในฐานะที่เป็นคำถามเล็กน้อยทำไมสำนวนนี้จึงใช้มากในอนุพันธ์เชลล์บอร์นทั้งหมด มันมีจุดประสงค์อะไร หมายเหตุ: ฉันสนใจในสิ่งที่สำนวนนี้ทำในทั้งทุบตีและในzsh zsh ขอบคุณ
34 bash  shell  zsh 


2
นามแฝงเทียบกับการส่งออกสำหรับคำสั่งง่ายๆ
สำหรับคำสั่งง่ายๆเช่นlessจะดีกว่าไหมถ้าจะสร้าง alias หรือส่งออกตัวเลือก? มีประโยชน์อย่างใดอย่างหนึ่งมากกว่าอีก? ตัวอย่างเช่นหากฉันต้องการlessใช้-Rตัวเลือกเพื่อแสดงอักขระดิบเสมอโซลูชันทั้งสองนี้ทำงาน: export LESS='-R' alias less='less -R' สำหรับกรณีง่าย ๆ แบบนี้มีประโยชน์อย่างใดอย่างหนึ่งต่ออีกหรือไม่ สถานการณ์ใดที่หนึ่งจะทำให้เกิดปัญหาและอื่น ๆ จะไม่? ผมเคยอ่านผ่านหลายinfoและmanหน้าเช่นเดียวกับ Googling มัน แต่ฉันยังคงติดอยู่กับเรื่องนี้
33 bash  zsh  alias 

7
วิธีพกพาเพื่อรับเส้นทางที่สมบูรณ์ของสคริปต์
เป็นวิธีแบบพกพาสำหรับสคริปต์ (zsh) เพื่อกำหนดเส้นทางที่แน่นอนคืออะไร? บน Linux ฉันใช้สิ่งที่ชอบ mypath=$(readlink -f $0) ... แต่นี่ไม่ใช่แบบพกพา (เช่นreadlinkในดาร์วินไม่รู้จัก-fธงและไม่มีอะไรเทียบเท่า) (เช่นเดียวกับการใช้readlinkสิ่งนี้คือเป็นที่ยอมรับว่าเป็นแฮ็คที่ดูคลุมเครือ) อะไรคือวิธีพกพาที่มากขึ้น?

1
วิธีปิดใช้งาน“ auto cd” ใน zsh ด้วย oh-my-zsh
Googling สิ่งนี้ไม่แสดงผลลัพธ์ใด ๆ นี่คือสิ่งที่ผมหมายถึง: ฉันมีแฟ้มไบนารีชื่อxในเส้นทางของฉัน (ไม่โฟลเดอร์ปัจจุบัน แต่ก็เป็นในPATH) และยังโฟลเดอร์ที่มีชื่อเดียวกันในไดเรกทอรีที่ทำงานปัจจุบัน ถ้าฉันพิมพ์xฉันต้องการไบนารีที่จะดำเนินการ แต่แทนที่จะเป็นซีดีลงในโฟลเดอร์นั้น ฉันจะแก้ไขได้อย่างไร
29 shell  zsh  oh-my-zsh 

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