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

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


5
ฉันจะสร้างสมนามเชลล์ได้อย่างไร?
ในของฉัน.profile(ที่มาในshโหมดการจำลองจากของฉัน.zshrc) ฉันมีตัวอย่างต่อไปนี้: if [ -f /usr/bin/pacmatic ]; then alias pacman=pacmatic fi # Colorized Pacman output alias pacman="pacman --color auto" อย่างไรก็ตามนามแฝงที่สองจะแทนที่สิ่งแรกเสมอ: % type pacman pacman is an alias for pacman --color auto ฉันจะทำอย่างไรเพื่อให้การมอบหมายนามแฝงที่สอง "สืบทอด" การมอบหมายครั้งแรกดังนั้นถ้า/usr/bin/pacmaticมีอยู่นามแฝงจะกลายเป็นpacmatic --color auto? ฉันไม่รังเกียจที่จะใช้ฟังก์ชั่นแทนนามแฝง แต่ฉันต้องการมันถ้าตรรกะไม่ได้ถูกดำเนินการทุกครั้งที่pacmanถูกเรียกใช้ (ฉันต้องการpacmaticตรวจสอบหนึ่งครั้งเมื่อเริ่มต้นเชลล์ไม่ใช่ทุกครั้งที่pacmanทำงาน ฉันต้องการใช้shสคริปต์แบบพกพาด้วย แต่ถ้าไม่สามารถทำได้คุณสามารถใช้zshไวยากรณ์แบบเต็มได้ (ใช่ฉันรู้ว่าเรื่องนี้อาจจะได้รับการแก้ไขได้อย่างง่ายดายโดยการผนวก--color autoกับpacmaticนามแฝง. แต่ฉันต้องการที่จะทำทางขวา™.) ฉันลองใช้ Google และค้นหา manpages แต่ก็ไม่มีประโยชน์
12 zsh  alias 

2
zsh ต้องการแก้ไขเสียงเรียกเข้าเป็น. vim
ฉันใช้ zsh กับ Gentoo x64 และเมื่อฉันพิมพ์sudo vim /path/to/file จากโฟลเดอร์บ้านของฉัน zsh ถาม: zsh: correct 'vim' to '.vim' [nyae]? ฉันต้องการเรียกใช้vimไม่ใช่.vimโฟลเดอร์ของฉัน ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ฉันเดาว่าsetopt autocdเป็นสาเหตุของสิ่งนี้ สิ่งที่แปลกคือถ้าฉันไม่เพิ่มsudozsh ไม่ขอให้แก้ไขอะไรเลย
12 zsh  sudo  gentoo  line-editor 

1
กำลังออกจากเครื่องที่รัน“ nohup ./my_script &” =>“ คุณมีงานอยู่” ตกลงเพื่อออก
ว่าฉันทำงานต่อไปนี้ในกล่องระยะไกลกับความคิดในการป้องกันการฆ่างานเมื่อฉันยกเลิกการเชื่อมต่อสถานี nohup ./my_script.sh & เมื่อฉันพยายามออกจากเทอร์มินัลฉันได้รับคำเตือนดังต่อไปนี้: zsh: you have running jobs ฉันเข้าใจว่าไม่เป็นไร เป็นเพียงการบอกฉันว่าฉันมีงาน / กระบวนการทำงานในพื้นหลัง หากฉันยกเลิกการเชื่อมต่อเครื่องงาน / กระบวนการจะยังคงทำงานต่อไปถูกต้องหรือไม่

2
Gnome-terminal และ Zsh: เก็บไดเรกทอรีปัจจุบันไว้ที่แท็บ / หน้าต่างใหม่
ฉันใช้ gnome 3.10.1 ใน Arch กับ Zsh ฉันประสบปัญหานั้นเมื่อฉันสร้างแท็บหรือหน้าต่างใหม่จากหน้าต่างเทอร์มินัลมันจะรีเซ็ต dir ปัจจุบันไปยัง dir บ้านของฉัน ฉันได้ลองแล้ว: gnome-terminal: ติดตามไดเรกทอรีในแท็บใหม่แต่มันไม่ทำงาน ฉันคิดว่ามันอาจเป็นการกำหนดค่าบางอย่างใน.zshrcไฟล์ของฉันดังนั้นฉันจึงล้างมันและวางบรรทัดต่อไปนี้: . /etc/profile.d/vte.sh อย่างไรก็ตามมันใช้งานไม่ได้ตามที่คาดไว้ ใช่ไฟล์นี้มีอยู่และนี่คือเนื้อหา: # Copyright © 2006 Shaun McCance <shaunm@gnome.org> # Copyright © 2013 Peter De Wachter <pdewacht@gmail.com> # # This program is free software; you can redistribute it and/or modify # it …

6
เริ่มงานเงียบ ๆ ในเบื้องหลัง
ฉันรู้ว่าคุณสามารถใช้สิ่งนี้เพื่อเริ่มต้นกระบวนการในพื้นหลังโดยไม่ได้รับการแจ้งเตือนเมื่อกระบวนการถูกวางไว้ในพื้นหลังและเมื่อมันทำเช่นนั้น: (คำสั่ง &) &> / dev / null อย่างไรก็ตามสิ่งนี้จะลบตัวเลือกเพื่อดักจับเมื่อกระบวนการเสร็จสิ้น ( trap child_done CHLD) ฉันจะมีทั้งคู่ได้อย่างไร
12 process  zsh  trap 

1
การแก้ไขคำแยกเชลล์ zsh
ฉันกำลังใช้เชลล์สไตล์คำแยก (เชลล์คำเลือกสไตล์) ฉันชอบโดยทั่วไป แต่ต้องการแยกที่เครื่องหมายทับหน้าเพื่อให้เมื่อฉันไปข้างหน้า / ข้างหลังคำถ้าคำไม่ประกอบด้วย / s มันข้ามไปอย่างสมบูรณ์ แต่ถ้ามันมีหนึ่งหรือ ทับอีกมันจะหยุดที่ทับแรก ความคิดใด ๆ
12 zsh 

4
เติมแท็บ zsh ในบรรทัดว่าง
ฉันต้องการ tcsh'ism ที่ฉันไม่สามารถหาได้: ในบรรทัดว่างที่ไม่มีเนื้อหาฉันต้องการกดปุ่มแท็บและดูเทียบเท่ากับ ls กล่าวคือฉันต้องการ $ <tab> เพื่อทำสิ่งอื่นจากนั้นให้ฉัน \ t ฉันได้พบแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการทำคำสั่งให้เสร็จ แต่ไม่ใช่สำหรับกรณีพื้นฐานนี้ ความช่วยเหลือใด ๆ ในเรื่องนี้จะดีมาก! ขอบคุณ

1
ZSH: แทรกเสร็จในแท็บแรกแม้ว่าจะคลุมเครือ?
ปัจจุบัน ZSH แสดงเมนูเมื่อฉันกดแท็บครั้งแรกและความสมบูรณ์ไม่ชัดเจน ดังนั้นถ้าฉันมี 'cd' ใน command prompt และฉันกด tab มันจะแสดงความสมบูรณ์ที่แตกต่างกัน หากฉันกดแท็บอีกครั้งจะเป็นการเลือกสำเร็จครั้งแรก ฉันต้องการผสานสองขั้นตอนนี้เข้าด้วยกันด้วยการกดปุ่มแท็บครั้งเดียว ดังนั้นหากฉันอยู่ที่แท็บ 'cd' และฉันต้องการให้ ZSH แทรกการจับคู่ที่มีครั้งแรก (เมื่อคลุมเครือ) และแสดงเมนูซึ่งฉันสามารถแท็บผ่านหากการจับคู่ครั้งแรกไม่ใช่ไดเรกทอรีที่ฉันมี ในใจ. เครื่องมือตั้งค่า ZSH ใส่นี่ใน. zshrc ของฉันในกรณีใด ๆ สิ่งนี้มีผลต่อพฤติกรรมของเชลล์ของฉัน: zstyle ': เสร็จสิ้น: *' คอมไพเลอร์ _expand _complete _ignored zstyle ': เสร็จสิ้น: *' list-colours '' zstyle ': เสร็จสิ้น: *' list-prompt% SAt% p: กด …
12 zsh  autocomplete 

2
วิธีกำหนดค่า Ctrl + w เป็นลบคำใน zsh
ฉันต้องการลบคำด้วยCtrl+ Win zshlike vim /foo/bar^W vim /foo/ และพบทางออกสำหรับbashแต่bindไม่ได้อยู่ในฟังก์ชั่น zsh เป็นไปได้ไหมที่จะกำหนดค่า ctrl-w (ลบคำ)? ฉันจะกำหนดค่าCtrl+ Wเป็น a ได้delete-wordอย่างไร

3
การแชร์หรือซิงโครไนซ์ประวัติระหว่าง Zsh และ Bash
ฉันมักจะพบว่าตัวเองสลับระหว่าง Bash และ Zsh และใช้ฟังก์ชันการค้นหาประวัติเพื่อกู้คืนคำสั่ง อย่างไรก็ตามเนื่องจาก Bash และ Zsh มีไฟล์ประวัติที่แตกต่างกันฉันมักจะพบว่าคำสั่งที่ฉันค้นหาถูกเรียกใช้งานในเชลล์อื่น มีวิธีการแบ่งปันหรือซิงโครไนซ์ประวัติระหว่างทั้งสองหรือไม่

2
หนีคำพูดในนามแฝง zsh
จากคำถามนี้เกี่ยวกับการลอกบรรทัดใหม่ออกจากข้อความฉันต้องการเปลี่ยนให้เป็นนามแฝง zsh ดังนี้: alias striplines=' awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"' ฉันได้พยายามหลีกเลี่ยงคำพูดในสคริปต์ awk แต่ฉันได้รับข้อผิดพลาดนี้: awk: (FILENAME=bspsrobustness FNR=1) fatal: division by zero attempted (ไฟล์นี้เรียกว่าbspsrobustness) มีวิธีทำสิ่งที่ฉันต้องการหรือไม่? ฉันคิดว่าฉันสามารถเปลี่ยนให้เป็นสคริปต์ awk แทนที่จะเป็น zsh alias นั่นเป็นตัวเลือกที่ดีที่สุดของฉันหรือไม่
12 shell  zsh  quoting  alias 

9
หลังจากติดตั้ง oh-my-zsh: … /.zshrc:source:34: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว… /.oh-my-zsh/oh-my-zsh.sh
ฉันเพียงแค่พยายามที่จะติดตั้งOh-My-zsh ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเรียกใช้rvm: zsh: command not found: rvm ฉันยังได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเปิดแท็บใหม่: /Users/jack/.zshrc:source:34: no such file or directory: /Users/jack/.oh-my-zsh/oh-my-zsh.sh /Users/jack/.zshrc:source:38: no such file or directory: .bashrc นี่คือ.zshrcไฟล์ของฉัน: # Path to your oh-my-zsh configuration. ZSH=$HOME/.oh-my-zsh # Set name of the theme to load. # Look in ~/.oh-my-zsh/themes/ # Optionally, if you set this to "random", …
12 bash  zsh  oh-my-zsh 

3
กำหนดนามแฝงและใช้งานทันที
ในzshการทำงานนี้ได้ดี: alias foo=ls foo แต่นี่ไม่ได้: alias foo=ls; foo การกด Enter เป็นช่วงเวลาพิเศษไม่ใช่ปัญหาเมื่อทำงานแบบโต้ตอบ แต่เมื่อทำงานผ่านsshมันก็กลายเป็นปัญหา: % ssh zsh@server 'alias foo=ls; foo' zsh:1: command not found: foo แม้จะมีการขึ้นบรรทัดใหม่มันก็ไม่ทำงาน: % ssh zsh@server 'alias foo=ls; foo' zsh:2: command not found: foo สิ่งที่แปลกคือzshรู้ว่ามันเป็นนามแฝง: % ssh zsh@server 'alias foo=ls; alias' foo=ls run-help=man which-command=whence จะบอกได้อย่างไรzshว่าชื่อแทนควรใช้งานอยู่?
11 zsh  alias 

2
ทำไมการทดแทนกระบวนการ <() ไม่ทำงานกับ ssh -F
ฉันมีบางเครื่องเสมือนจรจัด เพื่อเข้าสู่พวกเขาฉันออกvagrant sshคำสั่ง ฉันต้องการเข้าสู่ระบบโดยใช้sshคำสั่งปกติ vagrant ssh-configออกผลลัพธ์เป็นไฟล์ config ที่เหมาะสม $ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2201 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/cbliard/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL เมื่อส่งออกการกำหนดค่านี้ในไฟล์และใช้กับssh -Fทุกอย่างทำงานได้ดี: $ vagrant ssh-config &gt; /tmp/config $ ssh -F /tmp/config default =&gt; logged successfully เมื่อใช้ตัวดำเนินการทดแทนกระบวนการ&lt;(cmd)เพื่อป้องกันการสร้างไฟล์กำหนดค่าชั่วคราวมันจะล้มเหลว: $ ssh -F …

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