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

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

1
zsh ตีความ / เพิกเฉยคำสั่งที่ขึ้นต้นด้วย '#' เป็นความคิดเห็น
ใน bash, ถ้าฉันพิมพ์คำสั่งที่ขึ้นต้นด้วย a '#', bash จะข้ามมันเป็นความคิดเห็น. นั่นคือสิ่งต่อไปนี้จะถูกละเว้นในพรอมต์ bash: > # Hi there! ในขณะที่ zsh: > # Hi there ! zsh: bad pattern: # ฉันจะขอให้ zsh ทำเช่นเดียวกันได้อย่างไร สิ่งนี้มีประโยชน์อย่างมากในการ "เก็บ" คำสั่งที่คุณต้องการเรียกใช้ในภายหลังหรือเพื่อแชทเมื่อใช้เซสชัน tmux / หน้าจอที่ใช้ร่วมกัน ฉันกำลังใช้ ' oh zsh ของฉัน '
28 command-line  zsh 

2
มีเหตุผลที่องค์ประกอบแรกของอาร์เรย์ Zsh ถูกจัดทำดัชนีโดย 1 แทน 0 หรือไม่?
จากประสบการณ์ของฉันกับการเขียนโปรแกรมที่ทันสมัยและภาษาสคริปต์ฉันเชื่อว่าโปรแกรมเมอร์ส่วนใหญ่คุ้นเคยกับการอ้างอิงถึงองค์ประกอบแรกของอาร์เรย์โดย0เป็นดัชนี มีข้อดีอย่างมากในการใช้1หรือไม่? ฉันแน่ใจว่าฉันได้ยินภาษาอื่นมากกว่า Zsh ที่มีพฤติกรรมคล้ายกันกับอาร์เรย์ ฉันสบายดีเพราะมันสะดวกสบายไม่แพ้กัน อย่างไรก็ตามเมื่อก่อนหน้านี้มีการเปิดตัวและใช้กันอย่างแพร่หลายในภาษาสคริปต์เชลล์เช่น ksh และ bash ทั้งหมดใช้ 0 เหตุใดจึงมีคนเลือกที่จะเปลี่ยน "มาตรฐาน" ทั่วไปนี้ คำตอบสำหรับคำถามของฉันจะเป็น "ไม่แน่นอน"; จากนั้นคำอธิบายเดียวที่ฉันนึกได้เกี่ยวกับเรื่องนี้คือ "คุณสมบัติพิเศษ" สำหรับหอยคือ " พวกเขาทำสิ่งนี้เพื่ออวดเปลือกหอยที่สวยงามกว่านี้อีกเล็กน้อย" ฉันไม่รู้มากทั้ง Zsh หรือประวัติของมันและมีโอกาสสูงที่ฉันจะรู้ทฤษฎีเกี่ยวกับเรื่องนี้ไม่สมเหตุสมผล มีคำอธิบายสำหรับเรื่องนี้? หรือมันเป็นแค่รสนิยมส่วนตัว?
27 zsh  history  array 

3
zsh: ปิดใช้งานคำเตือน "ไฟล์ที่มีอยู่:" พร้อมการเปลี่ยนเส้นทาง
ฉันจะเขียนทับfile exists:คำเตือนจาก zsh ได้อย่างไร > echo > newfile.txt > echo > newfile.txt zsh: file exists: newfile.txt ในกรณีเหล่านี้ฉันต้องการให้เชลล์ไม่บ่นและเขียนทับไฟล์เช่นทุบตี ในทำนองเดียวกันวิธีการแทนที่ต่อไปนี้: $ ls >> /tmp/testfile.txt zsh: no such file or directory: /tmp/testfile.txt


2
ใน zsh ฉันจะแสดงรายการตัวแปรสภาพแวดล้อมทั้งหมดได้อย่างไร?
ฉันต้องการรับรายการตัวแปรสภาพแวดล้อมทั้งหมด (ตัวแปร shell? ตัวแปรที่ส่งออก?) และค่าของมันตามเวลาที่กำหนดในหน่วย zsh วิธีที่เหมาะสมในการทำเช่นนี้คืออะไร?

2
มีปัญหากับเครื่องหมายขีดคั่นในฟังก์ชันนามแฝงและไฟล์เรียกทำงานหรือไม่?
ในการทดสอบของฉัน (ใน Bash และ Z Shell) ฉันไม่เห็นปัญหาเกี่ยวกับการกำหนดฟังก์ชั่นหรือชื่อแทนหรือสคริปต์เชลล์ปฏิบัติการที่มียัติภังค์ในชื่อ แต่ฉันไม่มั่นใจว่าสิ่งนี้จะใช้ได้ในทุกเชลล์และทุกกรณี . เหตุผลที่ฉันต้องการทำเช่นนี้ก็คือยัติภังค์พิมพ์ได้ง่ายกว่าขีดล่างและเร็วกว่าและราบรื่นกว่า เหตุผลหนึ่งที่ฉันลังเลที่จะเชื่อว่ามันไม่ใช่ปัญหาคือในบางภาษา (ตัวอย่างเช่นทับทิม) ยัติภังค์จะถูกตีความว่าเป็นเครื่องหมายลบแม้ไม่มีที่ว่างรอบ ๆ มันจะไม่แปลกใจเลยถ้าบางสิ่งเช่นนี้อาจเกิดขึ้นในหอยบางตัวซึ่งยัติภังค์ถูกตีความว่าเป็นการส่งสัญญาณตัวเลือกแม้ไม่มีพื้นที่ อีกเหตุผลที่ฉันสงสัยอยู่เล็กน้อยว่าตัวแก้ไขข้อความของฉันทำให้ไวยากรณ์ที่เน้นสำหรับฟังก์ชันกับยัติภังค์เพิ่มขึ้น (แต่แน่นอนว่าเป็นไปได้ทั้งหมดที่เป็นเพียงข้อบกพร่องในการเน้นการกำหนดค่าไวยากรณ์สำหรับเชลล์สคริปต์) มีเหตุผลใดที่จะหลีกเลี่ยงยัติภังค์หรือไม่?
25 bash  shell  zsh  ksh  csh 

5
แนะนำให้ใช้ zsh แทนที่จะเป็นสคริปต์ทุบตีหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิด4 วันที่ผ่านมา ฉันสามารถสันนิษฐานได้ว่ามีคนจำนวนมากพอที่จะzshติดตั้งเพื่อรันสคริปต์ด้วย #!/usr/bin/env zsh ในฐานะ shebang? หรือสิ่งนี้จะทำให้สคริปต์ของฉันไม่สามารถทำงานได้บนระบบมากเกินไปหรือไม่ ชี้แจง: ฉันสนใจโปรแกรม / สคริปต์ที่ผู้ใช้อาจต้องการเรียกใช้ (เช่นบน Ubuntu, Debian, SUSE, Arch & c.)

2
จะรีเซ็ตสภาพแวดล้อมของเชลล์ได้อย่างไร?
ปัญหานี้บักฉันมาระยะหนึ่งแล้วและถึงแม้ว่าฉันคิดว่าฉันพบคำตอบของฉันผ่านEnvWatcherแต่น่าเสียดายที่มันใช้ได้กับ Bash เท่านั้น และฉันใช้ zsh ฉันต้องการจำลองสิ่งที่ env-watcher ทำในระดับที่น้อยกว่านี้ แต่ฉันต้องรู้ว่ามีคำสั่งที่ฉันสามารถรีเซ็ตเชลล์ให้อยู่ในระดับเริ่มต้นที่สะอาดหรือไม่ ตัวอย่างเช่นฉันต้องการมีเวิร์กโฟลว์ต่อไปนี้ source some-functions alias another-thing export SVN_EDITOR=vim RESET-ZSH # none of the above are valid any more มีความเป็นไปได้ในตัวเช่นนี้หรือฉันกำลังไล่ล่าผีเสื้อ?

4
Ctrl + ปัญหาปุ่มลูกศรซ้าย / ขวา
หลังจากอัปเดตระบบล่าสุดคำสั่งctrl + left / right arrowบนzsh terminal จะไม่ทำอะไรเลย ctrl + u ยังมีบางอย่างผิดปกติเพราะคำสั่งนั้นลบจากเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดขณะนี้ลบทั้งบรรทัด .. บางคนรู้วิธีแก้ปัญหาเหล่านี้หรือไม่ ขอบคุณทุกคน.

2
วิธีทำให้ฟังก์ชัน zsh“ ถูกต้อง” จดจำการตัดสินใจสะกดคำของฉัน
ผมได้เปิดใช้งานการแก้ไข (ฉันจะไม่เรียกว่าการแก้ไขอัตโนมัติเฉพาะเพราะปัญหานี้) ใน zsh โดยการเปิดใช้ในของฉันsetopt correct.zshrc ตอนนี้เมื่อฉันพิมพ์dtaeเทอร์มินัลฉันจะได้รับ: dtae zsh: correct 'dtae' to 'date' [nyae]? y Tue Mar 31 11:39:31 CEST 2015 ณ จุดนี้ฉันต้องการให้ zsh จดจำการตัดสินใจของฉัน ดังนั้นในครั้งต่อไปที่ฉันพิมพ์dtaeควรแก้ไขให้เป็นdate[1] โดยอัตโนมัติ อย่างไรก็ตามสิ่งนี้ไม่ได้เกิดขึ้นและ zsh ถามฉันอีกครั้งว่าจะทำอย่างไร: dtae zsh: correct 'dtae' to 'date' [nyae]? [1] เว้นแต่แน่นอนถ้าในเวลานั้นมีdtaeคำสั่งหรือนามแฝงอยู่จริง ปรับปรุง: ฉันจัดการเพื่อแก้ไขซอร์สโค้ด zsh (ไฟล์utils.c, ฟังก์ชั่นspckword) เพื่อสร้างไฟล์ที่กำหนดเองที่มีชื่อแทนที่สร้างขึ้นโดยอัตโนมัติด้วยการเรียกใช้ฟังก์ชัน "แก้ไข" ของ zsh: เดิม: if …

2
อะไรคือสิ่งที่เทียบเท่ากับ zsh ของ bash's export -f
zshดังนั้นผมจึงเริ่มใช้ ฉันชอบมันทั้งหมด ดูเหมือนดีมากและลื่นไหลและความจริงที่ว่าไดเรกทอรีการทำงานปัจจุบันและบรรทัดคำสั่งจริงนั้นอยู่ในบรรทัดที่ต่างกันเป็นสิ่งที่ดี แต่ในเวลาเดียวกันฉันสังเกตเห็นว่าzshอาจช้ากว่าเล็กน้อยbashโดยเฉพาะเมื่อพิมพ์ข้อความไปที่ จอภาพ สิ่งที่ผมชอบมากที่สุดคือข้อเท็จจริงที่ว่าzshคือ .bashrc'เข้ากันได้กับทุกฟังก์ชั่นที่ผมกำหนดไว้ในของฉัน หนึ่งจับแม้ว่า ฟังก์ชั่นทำงานได้อย่างสมบูรณ์แบบ แต่ฉันไม่สามารถเข้าใจได้ว่าระบบส่งออกทำงานอย่างไร ฉันได้บางส่วนของผู้ฟังก์ชั่นการส่งออกเพื่อที่ฉันจะใช้พวกเขาที่อื่นเช่นในสคริปต์และโปรแกรมภายนอกด้วย.bashrcexport -f ใน zsh การส่งออกดูเหมือนจะไม่ได้พูดคุยด้วยซ้ำ การโหลดอัตโนมัติหรือไม่ สองสิ่งนั้นเหมือนกันหรือไม่ ฉันมีเวลายากที่จะหามัน

2
ช่วงหลายช่วงของไฟล์ตามลำดับคำใน zsh
ฉันต้องการระบุช่วงของไฟล์ (ตามลำดับพจนานุกรม) ด้วยจำนวนเต็มสองจำนวน (เช่น 2 ถึง 57) ใน zsh โดยการวนรอบ ตัวอย่างเช่น: "เลือกไฟล์ 2 ถึง 57 ตามลำดับคำศัพท์ภายใต้พา ธ ที่ตรงกับรูปแบบการวนลูป ฉันคิดว่าการใช้วงเล็บเหลี่ยมจะทำได้ for x in /foo/bar/*[2-57]; do print $x; done แต่เห็นได้ชัดว่า zsh คิดว่าฉันขอไฟล์2ไป5(หรือสิ่งที่ต้องการ) แทนไฟล์ไป2 57ความคิดใด ๆ ฉันจะทำสิ่งนี้ได้อย่างไร
24 zsh  wildcards 

4
แบ่งปันชื่อแทนและการตั้งค่าเส้นทางระหว่าง zsh และ bash
zshเปลือกที่ผมปกติใช้เป็น ฉันมีนามแฝงหลายสีเพื่อเปิดใช้งานในโปรแกรมบางอย่างเช่นและls grepฉันได้กำหนดเส้นทางที่กำหนดเองเพื่อให้ฉันสามารถเรียกใช้งานโปรแกรมในสถานที่ที่ไม่ได้มาตรฐาน (เช่นใน~/bin/) ฉันจะไม่เปลี่ยนเปลือกรากไปzshแต่ฉันต้องการที่จะแบ่งปันการตั้งค่าเหล่านี้เพื่อให้รากที่สามารถมีได้เช่นกัน ผมพบว่าไม่ได้มีการจัดหาzsh /etc/profileฉันสามารถหามาได้/etc/zsh/zprofileแต่ฉันต้องการวิธีที่เหมาะสมกว่า
24 shell  bash  zsh  path  alias 

4
วิธีรับสตริงว่างจากรูปแบบ glob แบบไม่มีการโต้ตอบ
ว่าฉันมีโฟลเดอร์ที่มีสามไฟล์: foo1 foo2 bar 1. ถ้าฉันวิ่ง list_of_files=$(print foo*) echo $list_of_files ฉันเข้าใจ: foo1 foo2 2.ถ้าฉันวิ่ง list_of_files=$(print bar*) echo $list_of_files ฉันเข้าใจ: bar 3.อย่างไรก็ตามถ้าฉันวิ่ง list_of_files=$(print other*) echo $list_of_files ฉันได้รับ: zsh: no matches found: other*(ตัวแปร$list_of_filesว่างเปล่าแม้ว่า) มีวิธีที่จะขอให้ zsh ไม่บ่นถ้ามันไม่ตรงกับการขยายตัวของ glob? เป้าหมายของฉันคือการใช้กลไกดังกล่าวข้างต้นไปอย่างเงียบ ๆเก็บรวบรวมรายชื่อของไฟล์ที่ตรงกับรูปแบบ glob ที่กำหนด
24 zsh  wildcards 

6
การมีโหลด tmux ตามค่าดีฟอลต์เมื่อเปิดใช้งานเทอร์มินัล zsh
เวิร์กโฟลว์ปัจจุบันของฉันคือ: CTRL+ SHIFT+ Tเพื่อเปิดหน้าต่างเทอร์มินัลใหม่ ที่เริ่มต้นสถานี zsh ใหม่ พิมพ์tmuxเพื่อเริ่ม tmux ฉันจะโหลด tmux เป็นค่าเริ่มต้นด้วยหน้าต่างเทอร์มินัลใหม่ได้อย่างไร
23 terminal  zsh  tmux 

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