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

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

3
สิ่งที่ควร / ไม่ควรเข้าไปใน. zshenv, .zshrc, .zlogin, .zprofile, .zlogout
zshฉันกำลังมองหาแนวทางในการสิ่งหนึ่งที่ควรและไม่ควรรวมอยู่ในแฟ้มเริ่มต้นต่างๆสำหรับ ฉันเข้าใจลำดับของการจัดหาไฟล์เหล่านี้และเงื่อนไขที่พวกเขามีแหล่งที่มา แต่ก็ยังไม่ชัดเจนสำหรับฉันว่าควรจะไปที่ไหนในแต่ละไฟล์
132 zsh  startup 

1
การอ้างอิงสองครั้งจำเป็นเมื่อใด
คำแนะนำเก่าที่ใช้ในการอ้างอิงสองครั้งนิพจน์ใด ๆ ที่เกี่ยวข้องกับ a $VARIABLE, อย่างน้อยถ้าใครอยากให้มันถูกตีความโดยเชลล์เป็นหนึ่งรายการเดียวมิฉะนั้นช่องว่างใด ๆ ในเนื้อหาของ$VARIABLEจะทิ้งเปลือก อย่างไรก็ตามฉันเข้าใจว่าใน shells รุ่นที่ใหม่กว่านั้นการอ้างสองครั้งไม่จำเป็นอีกต่อไป (อย่างน้อยก็เพื่อจุดประสงค์ที่อธิบายไว้ข้างต้น) ตัวอย่างเช่นในbash: % FOO='bar baz' % [ $FOO = 'bar baz' ] && echo OK bash: [: too many arguments % [[ $FOO = 'bar baz' ]] && echo OK OK % touch 'bar baz' % ls $FOO ls: …

2
backticks (เช่น `cmd`) ในกระสุน sh ถูกเลิกใช้แล้วหรือยัง?
ฉันเคยเห็นความคิดเห็นนี้หลายครั้งใน Unix & Linux เช่นเดียวกับเว็บไซต์อื่น ๆ ที่ใช้วลี "backticks ได้รับการคัดค้าน" ด้วยความเคารพต่อเชลล์เช่น Bash & Zsh คำสั่งนี้เป็นจริงหรือเท็จ?

8
การส่งอาร์กิวเมนต์ที่กำหนดชื่อไปยังสคริปต์ของเชลล์
มีวิธีง่ายๆในการส่งผ่าน (รับ) พารามิเตอร์ชื่อไปยังสคริปต์เชลล์หรือไม่? ตัวอย่างเช่น, my_script -p_out '/some/path' -arg_1 '5' และภายในmy_script.shรับพวกเขาเป็น: # I believe this notation does not work, but is there anything close to it? p_out=$ARGUMENTS['p_out'] arg1=$ARGUMENTS['arg_1'] printf "The Argument p_out is %s" "$p_out" printf "The Argument arg_1 is %s" "$arg1" เป็นไปได้ใน Bash หรือ Zsh?

10
จำคำสั่งแบบครึ่งหนึ่งขณะที่ฉันตรวจสอบบางอย่าง
ฉันมักจะพบว่าตัวเองอยู่ในตำแหน่งต่อไปนี้: ฉันเริ่มพิมพ์คำสั่งยาวที่พรอมต์ bash แต่ครึ่งทางฉันพบว่าฉันต้องตรวจสอบบางสิ่งด้วยคำสั่งอื่น ปัญหานี้เกิดขึ้นเมื่อฉันอยู่ที่คอนโซล (ไม่ใช่ X) ซึ่งมักเป็นเช่นนี้เพราะฉันมีวิธีที่ไม่น่าพอใจดังต่อไปนี้เท่านั้นที่ฉันรู้: Hit ctrl+ alt+ F2และเข้าสู่ระบบอีกคอนโซลเสมือนจริงและหาสิ่งที่ฉันต้องการจากนั้นกลับไปและดำเนินการต่อ ctrl+ a, พิมพ์ echo + space+ enter, ค้นหาสิ่งที่ฉันต้องการ, กด↑จนกว่าฉันจะพบคำสั่ง, ctrl+ a, delx 5, ctrl+ e, และทำต่อไป ไฮไลต์สิ่งที่ฉันพิมพ์จนถึงตอนนี้ด้วยเมาส์ของฉัน (ถ้า gpm ทำงานซึ่งปกติแล้ว) กดctrl+ cเพื่อขัดจังหวะค้นหาสิ่งที่ฉันต้องการในขณะที่ระมัดระวังไม่ใช้เมาส์เพื่อไฮไลต์สิ่งต่าง ๆ จากนั้นกดปุ่มกลางของเมาส์ บนพรอมต์ใหม่และดำเนินการต่อ อธิษฐานต่อพระเจ้าบรรทัดคำสั่งว่าคำสั่งแบบครึ่งคำสั่งจะไม่มีผลกระทบใด ๆ แต่ล้มเหลวและกดปุ่มป้อนอย่างละเอียดจากนั้นค้นหาสิ่งที่ฉันต้องการกดให้แคบลงจนกว่าจะได้รับคำสั่งกลับมาและดำเนินการต่อ กระโดดเข้าสู่ไทม์แมชชีนย้อนเวลากลับไปและเตือนตัวเองให้เริ่มหน้าจอก่อนที่จะเริ่มพิมพ์คำสั่งเดินทางกลับสู่ปัจจุบันกดctrl+ a cค้นหาสิ่งที่ฉันต้องการกดctrl+ a ctrl+aและดำเนินการต่อ ดังนั้นสิ่งที่ฉันอยากรู้คือมีวิธีที่สง่างามกว่านี้บ้างไหม? ประเภทของคำสั่ง subshell หรือคล้ายกัน? ฉันสนใจวิธีการที่ไม่ต้องการการเตรียมการหรือการตั้งค่าใด …
97 bash  command-line  zsh 


7
วิธีการใช้ `ซึ่ง` กับคำสั่ง aliased?
เช่นเดียวกับผู้ใช้ส่วนใหญ่ฉันมีการตั้งค่านามแฝงมากมายเพื่อให้ชุดธงเริ่มต้นสำหรับโปรแกรมที่ใช้บ่อย ตัวอย่างเช่น alias vim='vim -X' alias grep='grep -E' alias ls='ls -G' ปัญหาคือถ้าฉันต้องการใช้whichเพื่อดูว่าvim/ grep/ ls/ / etc ของฉันมาจากไหนนามแฝงที่ได้รับในทาง: $ which vim vim: aliased to vim -X นี่เป็นผลลัพธ์ที่มีประโยชน์ แต่ไม่ใช่สิ่งที่ฉันกำลังมองหาในกรณีนี้ ฉันรู้ว่าvimเป็นนามแฝงvim -Xแต่ฉันต้องการที่จะรู้ว่า vimมาจากไหน ขาดการกำหนดนามแฝงชั่วคราวเพียงเพื่อให้ฉันสามารถใช้whichกับมันได้หรือไม่มีวิธีง่าย ๆ ที่จะwhich'แกะ' นามแฝงและเรียกใช้ตัวมันเองหรือไม่? แก้ไข:ดูเหมือนว่าwhichเป็นตัวเชลล์ที่มีพฤติกรรมที่แตกต่างกันในแต่ละเชลล์ ใน Bash คำแนะนำของ SiegeX เกี่ยวกับการ--skip-aliasทำงานของธง; อย่างไรก็ตามฉันอยู่ใน Zsh มีสิ่งที่คล้ายกันอยู่ที่นั่นไหม?
76 shell  zsh  alias  which 

2
สร้างดัชนีการทำให้สมบูรณ์อัตโนมัติ (หรือสิ่งที่เรียกว่า) และไบนารีในแคช $ PATH ใน zsh
หลังจากติดตั้งซอฟต์แวร์ใหม่เทอร์มินัลที่เปิดแล้วพร้อม zsh จะไม่ทราบเกี่ยวกับคำสั่งใหม่และไม่สามารถสร้างการเติมข้อมูลอัตโนมัติให้กับสิ่งเหล่านั้นได้ เห็นได้ชัดว่าการเปิดเทอร์มินัลใหม่ช่วยแก้ไขปัญหาได้ แต่สามารถสร้างดัชนี (หรืออะไรก็ตามที่คุณเรียกว่า) เพื่อให้การเติมข้อความอัตโนมัติทำงานบนเทอร์มินัลเก่าได้หรือไม่ ฉันลองด้วยcompinitแต่ก็ไม่ได้ช่วย นอกจากนี้ยังมีวิธีที่ไม่ขึ้นกับเชลล์หรือไม่? ยินดีที่มีวิธีตรวจสอบคำตอบด้วย (ยกเว้นสำหรับการถอนการติดตั้งบางสิ่งและติดตั้งใหม่) สิ่งที่ฉันหมายถึงคือหลังจากพิมพ์อักขระสองสามตัวของชื่อคำสั่งฉันสามารถกดTabและzshควรใช้ส่วนที่เหลือเพื่อดึงชื่อเต็ม
75 zsh  autocomplete 

7
ฉันมีกระสุนจำนวนเท่าไร
ปัญหา : ค้นหาว่าฉันมีกระสุนจำนวนเท่าไร รายละเอียด : ฉันเปิดเปลือกจากกลุ่มมาก สร้างและเรียกใช้และออกจาก บางครั้งฉันลืมและเปิดเสียงเรียกเข้าภายในจากนั้นก็อีกเปลือก :( ฉันอยากรู้ว่าฉันอยู่ลึกเท่าไรในเปลือกหอยฉันอาจจะมีมันบนหน้าจอเชลล์ของฉันตลอดเวลา (ฉันสามารถจัดการส่วนนั้น) โซลูชันของฉัน : แยกแผนผังกระบวนการและมองหา vim และ bash / zsh และค้นหาความลึกของกระบวนการปัจจุบันที่อยู่ภายใน มีบางอย่างเช่นนั้นที่มีอยู่แล้วหรือไม่? ฉันหาอะไรไม่เจอ
73 bash  shell-script  shell  vim  zsh 

6
ฉันจะตรวจสอบได้อย่างไรว่าเชลล์ควบคุมจาก SSH
ฉันต้องการตรวจจับจากเชลล์สคริปต์ (โดยเฉพาะอย่างยิ่ง. zshrc) หากมีการควบคุมผ่าน SSH ฉันลองตัวแปร HOST แต่มักจะเป็นชื่อของคอมพิวเตอร์ที่ใช้เชลล์อยู่เสมอ ฉันสามารถเข้าถึงชื่อโฮสต์ที่มาจากเซสชัน SSH ได้หรือไม่ การเปรียบเทียบทั้งสองจะช่วยแก้ปัญหาของฉัน ทุกครั้งที่ฉันเข้าสู่ระบบจะมีข้อความระบุเวลาเข้าสู่ระบบและโฮสต์ล่าสุด: Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1 Last login: Fri Mar 18 23:11:56 2011 from max นี่หมายความว่าเซิร์ฟเวอร์มีข้อมูลนี้
69 ssh  shell-script  zsh 

3
ปุ่ม ESC ทำให้เกิดความล่าช้าเล็กน้อยในเทอร์มินัลเนื่องจากการทำงานของ Alt +
การตั้งค่าเทอร์มินัลของฉันคือ gnome-terminal + tmux + zsh ที่มีการเชื่อม vi ในแอปพลิเคชันเช่นเสียงเรียกเข้าหรือแม้กระทั่งในโหมดแก้ไขบรรทัดคำสั่ง vi ของ zsh ฉันต้องกดปุ่มบ่อยครั้งESCแต่มีความล่าช้าเล็กน้อยก่อนที่ลักษณะพิเศษของคีย์นี้จะเกิดขึ้น ดูที่หน้าจอ GNU ทำให้ปุ่ม Vim ESC ทำงานช้า หลังจากการทดลองบางอย่างผมพบว่าการกดปุ่มESCที่สำคัญและทันทีที่สำคัญอีก (พูดb) Alt+bมีผลเช่นเดียวกับการกดปุ่ม ฉันไม่รู้ว่าทำไมในกรณีนี้ (อาจเป็นเพราะเหตุผลดั้งเดิมเมื่อไม่มีAltหรือไม่ฉันไม่รู้) ไม่ว่าจะด้วยวิธีใดฉันมีสองAltปุ่มและฉันไม่ต้องการพฤติกรรมนี้ด้วยESCรหัสของฉัน ฉันได้ลองด้วยC+[และมันก็เป็นปัญหาเดียวกันกับที่เกินไป ฉันไม่แน่ใจว่าใครเป็นผู้รับผิดชอบในเรื่องนี้ gnome-terminal หรือ tmux หรือระบบปฏิบัติการของฉันเอง (Ubuntu Natty) ความคิดใด ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้จะดีมาก อัปเดต : ฉันตรวจสอบโดยไม่มี tmux บนเทอร์มินัลอื่น (LXTerminal) และมีการหน่วงเวลาที่นั่นด้วย

4
มีวิธีใดที่จะป้องกันไม่ให้มีการเพิ่มคำสั่งในประวัติของคุณหรือไม่?
มีวิธีใดที่จะป้องกันไม่ให้มีการเพิ่มคำสั่งในประวัติของคุณหรือไม่? ฉันมีคำสั่งที่ฉันต้องการให้ออกจากไฟล์ประวัติของฉันและฉันไม่สนใจที่จะมีมันเมื่อฉันค้นหาประวัติที่เก็บไว้ในหน่วยความจำแม้ว่ามันจะน้อยกว่าความกังวล มีวิธีการป้องกันหรือไม่ฉันต้องย้อนกลับและแก้ไขไฟล์ประวัติของฉัน ปรับปรุง:ฉันไม่ได้ตระหนักว่านี่อาจเป็นแบบเฉพาะเชลล์ zshเปลือกของฉันคือ คุณยินดีที่จะตอบสำหรับเชลล์อื่น ๆ เพื่อให้ผู้คนรู้วิธีทำสิ่งนี้ในเชลล์ของพวกเขา

3
สคริปต์ทุบตีทั้งหมดเข้ากันได้กับ `zsh 'หรือไม่
ฉันต้องการเปลี่ยนจาก bash เป็น zsh แต่กังวลเกี่ยวกับความเข้ากันได้ของสคริปต์ทุบตี bash สคริปต์ / ฟังก์ชั่นทั้งหมดเข้ากันได้กับ zsh หรือไม่ ดังนั้นถ้าเป็นจริงก็คือ zsh เพียงการเพิ่มประสิทธิภาพในการทุบตี?
63 bash  zsh 

6
คุณลักษณะใดบ้างที่อยู่ใน zsh และหายไปจาก bash หรือในทางกลับกัน
ในฐานะผู้ใช้ Linux ฉันมักจะใช้ bash เสมอเพราะเป็นค่าเริ่มต้นสำหรับทุก distro ที่ฉันใช้ คนที่ใช้ระบบ Unix อื่น ๆ เช่น BSD ดูเหมือนจะใช้เชลล์ตัวอื่นบ่อยกว่า เพื่อความสนใจในการเรียนรู้มากขึ้นฉันตัดสินใจลอง zsh ในฐานะผู้ใช้ทุบตี: ฉันจะพลาดฟีเจอร์อะไร และฉันควรระวังสิ่งใด
62 bash  zsh 

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

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