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

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

4
$ {! FOO} และ zsh
${!FOO}ทำการทดแทนสองครั้งในbashความหมายมันใช้ค่า (สตริง) ของ FOO และใช้มันเป็นชื่อตัวแปร zshไม่รองรับคุณสมบัตินี้ มีวิธีที่จะทำให้งานนี้ในเดียวกันbashและzsh? พื้นหลัง: ฉันมีรายการตัวแปรสภาพแวดล้อมเช่น PATH MAIL EDITOR และต้องการพิมพ์ชื่อตัวแปรก่อนหลังจากนั้นค่าของมัน ใช้งานbashได้ แต่ไม่ใช่zsh: for VAR in LIST do echo $VAR echo ${!VAR} done ควรเป็นไปได้ด้วย "วิธีเก่า" ด้วยevalแต่ฉันไม่สามารถทำงาน: for VAR in LIST do echo $VAR echo `eval \$$VAR` done ฉันไม่เคยจะเข้าใจว่าทำไมฉันถึงไม่สามารถทำการทดแทนอย่างลึกซึ้งโดยพลการอย่างเช่น${${VAR}}หรือแม้ว่า${${${VAR}}}จำเป็นต้องมีดังนั้นคำอธิบายสำหรับสิ่งนั้นก็จะดีเช่นกัน

1
อัพเดตรายการเสร็จสมบูรณ์แบบไดนามิกใน zsh
ฉันพบว่ารายการผลการ zsh ของการTabเสร็จสมบูรณ์มีประโยชน์มาก แต่ฉันต้องการปรับพฤติกรรมของพวกเขาเล็กน้อย: ควรปรากฏขึ้นเมื่อฉันTabเป็นครั้งแรกและหลังจากนั้นอัปเดตแบบไดนามิกโดยมีการเพิ่มตัวอักษรใหม่ทุกตัว พฤติกรรมเริ่มต้นคือคำแนะนำจะถูกประเมินTabอีกครั้งเมื่อคุณอีกครั้งฉันต้องการบันทึกการกดปุ่มซ้ำหลายครั้ง ( อัปเดต:แต่แสดงรายการความสำเร็จที่เป็นไปได้เท่านั้นไม่ควรแก้ไขบรรทัดพรอมต์ที่แท้จริงของฉันโดยอัตโนมัติแม้ว่าจะเหลือเพียงตัวเลือกเดียวเท่านั้น) มีวิธีใดบ้างที่จะบรรลุพฤติกรรมดังกล่าว
13 zsh  autocomplete 

5
รหัสบ้านไม่ทำงานในเทอร์มินัล
ฉันใช้ GNOME Terminal 2.7.3 และ zsh 4.3.9 (x86_64-unknown-linux-gnu) HomeและEndไม่ทำงาน ไม่มีอะไรเกิดขึ้นและไม่มีอะไรปรากฏขึ้นเมื่อฉันกด แต่มันจะทำงานเมื่อฉันกดshift + Home(เลื่อนไปที่จุดเริ่มต้นของเอาต์พุตเชลล์) และทำงานในโปรแกรม GUI อื่น ๆ ฉัน googled และลองต่อไปนี้ ไม่มีการเปลี่ยนแปลง :( 885 bindkey "\e[1~" beginning-of-line 886 bindkey "\e[H" beginning-of-line 887 bindkey "\e1~" beginning-of-line 888 bindkey "\eH" beginning-of-line 889 bindkey "\e[0H" beginning-of-line PS: เมื่อฉันอยู่ในแท็บสุดท้ายและกดCtrl + pagedownฉันได้รับการ;5~พิมพ์บนหน้าจอ นั่นให้เบาะแสหรือไม่?

1
ความแตกต่างระหว่าง $ path กับ $ PATH (ตัวพิมพ์เล็กกับตัวพิมพ์ใหญ่) กับ zsh คืออะไร
ในFreeBSD 12 การใช้zshเชลล์ฉันสังเกตเห็นความแตกต่างนี้เมื่อดู$path(ตัวพิมพ์เล็ก) กับ$PATH(ตัวพิมพ์ใหญ่) echo $path / sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin / usr / home / freebsd / bin echo $PATH sbin /: / bin: / usr / sbin: / usr …
13 zsh  variable  path  array 

3
[-t 1] ตรวจสอบอะไร
ฉันเพิ่งพบวิธีการเริ่มต้นzshเมื่อฉันเริ่มbashบน Windows จาก https://www.howtogeek.com/258518/how-to-use-zsh-or-another-shell-in-windows-10/ .bashrcมันแนะนำให้เพิ่มรหัสต่อไปนี้ที่สุดท้าย # Launch Zsh if [ -t 1 ]; then exec zsh fi อะไร[ -t 1 ]หมายถึง? มันเป็นความจริงเหรอ? จากนั้นฉันจะทำสิ่งนี้ได้ไหม? exec zsh
13 bash  shell  zsh  test 

2
ฉันสามารถนำทางเมนูการเติมแท็บของ zsh ด้วยปุ่ม hjkl ที่เหมือนกันได้หรือไม่
ฉันใช้ความสมบูรณ์ของแท็บเมนูของ zsh ฉันกดTabหนึ่งครั้งและรายการความสำเร็จที่เป็นไปได้จะปรากฏขึ้น ถ้าฉันกดTabอีกครั้งฉันสามารถนำทางรายการนี้ด้วยปุ่มลูกศร แต่ก็เป็นไปได้ที่จะนำทางพวกเขาด้วยviเหมือนH, J, K, Lกุญแจแทน? ผมใช้ emacs โหมดสำหรับการป้อนข้อมูลบรรทัดคำสั่งที่มีในbindkey -e ~/.zshrcฉันยังใช้zimกับ zsh ด้วย ถ้าเกี่ยวข้องคำสั่งที่ระบุระบบแท็บเสร็จสิ้นเป็นที่นี่

2
อักขระชื่อฟังก์ชันที่ถูกต้องของเชลล์
การใช้อักขระ Unicode แบบขยาย (ไม่มีข้อสงสัย) มีประโยชน์สำหรับผู้ใช้หลายคน เชลล์ที่ง่ายกว่า (ash (busybox), dash) และ ksh ล้มเหลวด้วย: tést() { echo 34; } tést แต่bash , mksh , lkshและzshดูเหมือนจะอนุญาต ฉันทราบว่าชื่อฟังก์ชันที่ถูกต้อง POSIX ใช้นิยามของชื่อนี้ นั่นหมายถึง regex นี้: [a-zA-Z_][a-zA-Z0-9_]* อย่างไรก็ตามในลิงค์แรกมันยังกล่าวว่า: การใช้งานอาจอนุญาตให้ตัวละครอื่น ๆ ในชื่อฟังก์ชั่นเป็นส่วนขยาย คำถามคือ: สิ่งนี้ได้รับการยอมรับและจัดทำเป็นเอกสารหรือไม่? ที่ไหน? เปลือกหอยไหน (ถ้ามี)? คำถามที่เกี่ยวข้อง: เป็นไปได้ใช้อักขระพิเศษในชื่อฟังก์ชันเปลือก? ฉันไม่สนใจที่จะใช้เมตาอักขระ (>) ในชื่อฟังก์ชัน ชื่อฟังก์ชันพุ่งพรวดและทุบตีที่มี“ -” ฉันไม่เชื่อว่าตัวดำเนินการ (การลบ "-") ควรเป็นส่วนหนึ่งของชื่อ
13 bash  shell  zsh  function 

2
เปลี่ยนสีของพรอมต์ขึ้นอยู่กับผู้ใช้หรือรูทใน zsh
ใน zsh คุณสามารถมี%#ในPS1(หรือPROMPTตัวแปรอะไรก็ได้) ซึ่งโดยทั่วไปหมายถึงแสดง%ว่าผู้ใช้หรือแสดง#ถ้ารูต ฉันสงสัยว่ามีวิธีใดที่จะส่งผลกระทบต่อสิ่งนี้%หรือไม่หรือ#เปลี่ยนสีขึ้นอยู่กับว่าเป็นผู้ใช้หรือรูท (สีแดงสำหรับรูต, สีฟ้าสำหรับผู้ใช้) วิธีที่ชัดเจนคือการเปลี่ยนPS1ในรูทของฉัน~/.zshrcแต่พิจารณา นี่เป็นสัญลักษณ์พิเศษแล้วฉันสงสัยว่าอาจจะไม่มีวิธีที่ฉันสามารถใช้แบบเดียวกันPS1สำหรับทั้งสองได้ ... สิ่งที่เฉพาะเจาะจงสำหรับ%#มันสำหรับ zsh (ฉันแน่ใจว่ามีแฮ็กอื่น ๆ ที่ฉันสามารถทำได้เช่นกัน ถ้างบแล้ว)
13 shell  zsh  colors  prompt 

1
ฉันจะรับข้อความช่วยเหลือสำหรับ zsh builtin ได้อย่างไร
หากฉันต้องการรับข้อความการใช้งานสั้น ๆ สำหรับ bash builtin ฉันสามารถใช้help <builtin>ที่พร้อมท์คำสั่งเช่น $ help export export: export [-fn] [name[=value] ...] or export -p Set export attribute for shell variables. Marks each NAME for automatic export to the environment of subsequently executed commands. If VALUE is supplied, assign VALUE before exporting. Options: -f refer to shell …

4
การแทนที่สตริง: เหตุการณ์ทั้งหมด
คำถามง่ายๆ แต่ฉันไม่สามารถหาคำตอบได้ เอกสาร zsh ครอบงำฉัน :-( function z () { echo ${1:s/the/THE} } $ z thethethe THEthethe ... ฉันจะให้ 'the' ทั้งหมดถูกแทนที่ด้วย 'THE' ได้อย่างไรไม่ใช่แค่สิ่งที่เกิดขึ้นครั้งแรก ด้วย zsh มันเป็นสิ่งที่ง่ายที่สุดที่ดูเหมือนจะหาได้ยากที่สุด
13 zsh  string 

1
ไฟล์อะไรที่มา zsh
ฉันใช้ oh-my-zsh กับ zpretzo และฉันลืมไฟล์ zsh ไปเรื่อย ๆ ว่าเป็นแหล่งที่ฉันต้องการแก้ไข ฉันจะถามเชลล์ว่าไฟล์ต้นฉบับใดที่มาจากนั้น?
12 shell  zsh 

2
ความแตกต่างของการเปลี่ยนเส้นทางระหว่าง &>> & กับ 2> & 1
ในเธรด SO นี้และเธรดอื่น ๆ ฉันเห็นคำสั่งต่อไปนี้สำหรับการเปลี่ยนเส้นทางstdoutและstderrไปยังไฟล์ พวกเขาทั้งหมดเทียบเท่าหรือไม่ มีความแตกต่างระหว่างพวกเขาหรือไม่? command1 >> logfile 2>&1 command &> logfile command >& logfile

3
ล้างหรือปิดใช้งานนามแฝงใน zsh
ฉันติดตั้ง oh-my-zsh เพื่อทำให้เทอร์มินัลใช้งานได้ง่ายขึ้นเล็กน้อย สิ่งหนึ่งที่ทำให้ฉันเป็นข้อผิดพลาดคือนามแฝงที่เพิ่มเข้ามาเช่น "ga", "gap", "gcmsg", "_" ซึ่งจำยากกว่าคำสั่งเดิมและทำให้ตารางแฮชคำสั่งสกปรก ดังนั้นมีวิธีการปิดใช้งานนามแฝงทั้งหมดหรือไม่ หรือวิธีล้างชื่อแทนทั้งหมดเพื่อให้ฉันสามารถใส่ไว้ในของฉันได้.zshrcอย่างไร
12 shell  zsh  alias  oh-my-zsh 

3
แก้ไขสมนามทั้งหมดในบรรทัดคำสั่ง zsh
ฉันมีนามแฝงซ้อนกันและฉันต้องการแก้ไขทั้งหมดก่อนที่จะดำเนินการคำสั่ง ฉันจะทำอย่างไร หากมีฟังก์ชั่นที่ไม่ได้ผูกไว้กับปุ่มใด ๆ ก็M-x foobarเป็นสิ่งที่ดีสำหรับฉันเช่นกัน ฉันยังสามารถใช้คำสั่งภายนอก ( type, command, which, อะไรก็ตาม) ฉันลองทุกอย่างจากเธรดทำไมไม่ใช้ "อัน" จะใช้อะไรดี? แต่ไม่มีอะไรทำงาน
12 zsh  alias 

7
ซีเรียลไลซ์ตัวแปรเชลล์ใน bash หรือ zsh
มีวิธีใดในการทำให้เชลล์เชลล์เป็นอนุกรม? สมมติว่าฉันมีตัวแปร$VARและฉันต้องการที่จะสามารถบันทึกลงในไฟล์หรืออะไรก็ตามแล้วอ่านมันอีกครั้งในภายหลังเพื่อรับค่าเดียวกันกลับมา? มีวิธีพกพาในการทำเช่นนี้? (ฉันไม่คิดอย่างนั้น) มีวิธีทำใน bash หรือ zsh หรือไม่
12 bash  shell  zsh  variable 

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