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

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

2
ตัวแปรโลคัลใน zsh: อะไรคือสิ่งที่เทียบเท่ากับ bash ของ“ export -n” ใน zsh
ฉันพยายามที่จะ จำกัด ขอบเขตของตัวแปรให้กับเชลล์และไม่มีลูกให้ดูใน zsh ตัวอย่างเช่นฉันพิมพ์สิ่งนี้ใน. zshrc: GREP_OPTIONS=--color=always แต่ถ้าฉันรันเชลล์สคริปต์ด้วยสิ่งต่อไปนี้: #!/bin/bash echo $GREP_OPTIONS ผลลัพธ์คือ: --color=always ในขณะที่ฉันต้องการให้เป็นโมฆะ (เชลล์สคริปต์ด้านบนไม่ควรเห็นตัวแปร GREP_OPTIONS เลย) ในทุบตีใครจะพูดว่า: export -n GREP_OPTIONS=--color=alwaysซึ่งจะป้องกันไม่ให้เกิดเหตุการณ์ ฉันจะทำสิ่งนี้ให้สำเร็จใน zsh ได้อย่างไร?


4
รหัสไฮบริดในเชลล์สคริปต์ การแชร์ตัวแปร
คำตอบนี้กล่าวถึงวิธีการเรียกใช้ข้อมูลโค้ด Python หลายบรรทัดจากบรรทัดคำสั่งในเทอร์มินัล ฉันสังเกตว่าคำตอบนั้นใช้งานได้ดีในเชลล์สคริปแม้จะมีการเยื้องซ้อนกันซึ่งดีมากเช่น #!/bin/bash some_text="Hello world" echo $some_text cat <<EOF | python - import sys; for r in range(3): print r for a in range(2): print "hello" EOF พิมพ์: 0 hello hello 1 hello hello 2 hello hello อย่างไรก็ตามฉันมีช่วงเวลาที่ยากลำบากในการแชร์ตัวแปรระหว่างเชลล์สคริปต์และข้อมูลโค้ดของ Python ฉันจะรวบรวมเอาต์พุตของตัวห้อย python ในสคริปต์ทุบตีได้อย่างไร (เช่นในตัวแปรเช่น$output) ฉันจะส่งตัวแปร bash (เช่น$some_text) ไปยังสคริปต์ Python …
10 bash  scripting  zsh  python 

1
zsh เสร็จสมบูรณ์: รับชื่อไฟล์จากไดเรกทอรีเฉพาะ
ตกลงพื้นหลังเล็กน้อย: ฉันใช้ Mac และทำเท่าที่จะทำได้ใน CLI โดยเฉพาะอย่างยิ่งฉันมักจะปรากฏในแท่ง USB cpหรือmvไฟล์บนแล้วต้องการออกทันที (ยกเลิกการต่อเชื่อมและยกเลิกการเชื่อมต่อ) โดยทั่วไปสามารถทำได้ด้วยการกดแป้นจำนวนหนึ่งยกเว้นการยกเลิกการต่อเชื่อมซึ่งต้องการ (ใน 10.7) ไปที่พื้นที่เดสก์ท็อปที่ว่างเปล่า ตรงไปตรงมาขั้นตอนการยกเลิกการเมานต์นี้เป็นไปตามคำสั่งหลายขนาดซึ่งเป็นส่วนที่ใช้เวลามากที่สุดและน่าเบื่อที่สุดของกระบวนการ มันจะเป็นธรรมชาติและมีประสิทธิภาพมากขึ้นที่จะพิมพ์พูด: ej<tab> J<tab> พูดว่าอุปกรณ์ USB ของฉันติดตั้งที่ / Volumes / Jefferson สิ่งที่ฉันคาดหวังที่จะได้รับจากการกดปุ่ม 6 ครั้งของฉันคือ: eject /Volumes/Jefferson สิ่งนี้ควรรันคำสั่ง: diskutil unmount /Volumes/Jefferson ดังนั้นฉันจึงเขียนฟังก์ชันเล็ก ๆ ที่ดี: eject() { diskutil unmount /Volumes/$1 } และฟังก์ชั่นเสร็จสมบูรณ์ที่จะไปกับมัน: compdef '_files -g "/Volumes/*"' eject อย่างไรก็ตามมีปัญหากับสิ่งนี้ _filesฟังก์ชั่นสร้างเส้นทางที่สมบูรณ์ …
10 zsh  osx  autocomplete 

3
zsh คัดลอกและวางเช่น emacs
ฉันสังเกตว่า zsh มีหลายสิ่งที่ฉันเห็นใน emacs ฉันสามารถทำการเลือกด้วย ctrl + space และเลือกภูมิภาค ฉันสามารถทำสำเนาได้เหมือนใน emacs ขณะที่ฉันยังอยู่ใน zsh ใน emacs ฉันสามารถใช้คลิปบอร์ดระบบของฉัน (ก่อนหน้านี้มีการกำหนดค่าเพิ่มเติมบางอย่างที่จำเป็น แต่ตอนนี้ใช้งานได้ใน emacs) ใน zsh ฉันไม่สามารถวางจากคลิปบอร์ดโดยใช้ Cy และคัดลอกจาก zsh ไปยัง cliipboard ระบบของฉันมีปัญหาเดียวกัน มีวิธีแก้ไขไหม?
10 zsh  clipboard 

2
ยกเลิกการเติมแท็บ zsh
มีวิธียกเลิกการเสร็จสิ้นหรือไม่เมื่อเริ่มต้นแล้ว? บางครั้งฉันก็กดแท็บเพื่อเติมข้อความอัตโนมัติให้เป้าหมาย (จากความเกียจคร้านที่แท้จริง) และจบลงด้วยการต้องรออีกนานกว่าถ้าฉันเพิ่งพิมพ์ "ติดตั้ง" หรือ "ตรวจสอบ" ด้วยตัวเอง ฉันไม่เห็นข้อความใด ๆ ในหน้า man zshzle แต่ฉันอาจพลาดบางสิ่ง กระสุนอื่น ๆ มีความสามารถนี้หรือไม่? แก้ไข : คำตอบเล็กน้อย ดังนั้นแทน: มีวิธีให้ zsh ประเมินว่าการใช้แท็บเสร็จสมบูรณ์จะใช้เวลาค่อนข้างนานในการดำเนินการหรือไม่และถามว่าผู้ใช้ต้องการทำเช่นนี้หรือไม่
10 zsh  autocomplete 

2
รายการองค์ประกอบที่มีช่องว่างใน zsh
ฉันได้ศึกษา zsh scripting เป็นเวลา 2 ชั่วโมงแล้วและฉันก็ตีกำแพง ฉันต้องการดูรายการไฟล์ที่อาจมีช่องว่างอยู่ ฉันเปิดให้วิธีที่แตกต่างอย่างสิ้นเชิงกว่าตัวอย่างต่อไปนี้ตราบใดที่พวกเขากำลัง zsh เนื่องจาก zsh คือสิ่งที่ฉันกำลังศึกษาไม่ใช่งานที่ฉันพยายามเขียน files=(`ls`) for f in $files; do print $f done เห็นได้ชัดว่าฉันไม่เพียงแค่สร้างlsใหม่ฉันแค่ต้องการ$fจับชื่อไฟล์ทั้งหมดในแต่ละการวนซ้ำของลูป
10 shell  scripting  zsh 

1
FPATH ใน zsh: ฟังก์ชั่นและฟังก์ชั่นเว็บไซต์
ฉันสังเกตว่าฉันมีบรรทัดต่อไปนี้ใกล้จุดเริ่มต้นของ.zshrcไฟล์ของฉัน: export FPATH=/usr/share/zsh/site-functions:/usr/share/zsh/4.2.6/functions:$FPATH zsh-newuser-installผมจำไม่ได้ถ้าฉันพิมพ์ตัวเองนี้หรือถ้าสายนี้ถูกสร้างขึ้นโดยอัตโนมัติ มันถือว่าผู้ใช้พิมพ์เส้นทางเหล่านั้นFPATHในไฟล์เริ่มต้นหรือไม่? ความแตกต่างระหว่างfunctionsและsite-functionsคืออะไร?
10 zsh 

2
การทดสอบ LS_COLORS ใน zsh
LS_COLORSไม่กี่ปีที่ผ่านมาผมพบว่าข้อมูลโค้ดที่น่าสนใจที่พิมพ์แต่ละประเภทของไฟล์สีที่สอดคล้องกันตามสีที่กำหนดขึ้นมาใน น่าเสียดายที่ฉันจำลิงค์ไม่ได้อีกต่อไป นี่คือตัวอย่างที่เป็นtest_colors.shปัญหา eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other w\ ritable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g') { IFS=: for i in $LS_COLORS do echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" done } ตัวอย่างทำงานได้ดีbashแต่ไม่ได้อยู่ในzshและฉันไม่สามารถบอกได้ว่าทำไม เมื่อฉันเรียกใช้ในzshฉันได้รับข้อผิดพลาดต่อไปนี้: > sh …
10 zsh  ls  colors 

1
ตัวเลือกรายการ zsh apt เสร็จสิ้น
ฉันใช้ในการใช้แท็บเสร็จในทุบตีที่จะได้รับapt list --upgradableจากการพิมพ์apt ltab--utabแต่ผมไม่สามารถทำสิ่งเดียวกันกับ zsh: --uไม่ได้ขยายตัวออกไปเมื่อกด--upgradabletab ฉันค้นหาโซลูชันที่แนะนำให้ติดตั้ง zsh-completions และเพิ่มsetopt completealiasesเข้าไป./zshrcแต่ไม่ได้ช่วยอะไรทั้งนั้น มีวิธีใดที่จะทำให้มันทำงานเหมือนที่ทำในทุบตี?
10 zsh  autocomplete 

1
ใช้ `/ etc / path` หรือ` / etc / path.d` เพื่อเพิ่มรายการใน PATH ใน macOS Sierra?
จากสิ่งที่ฉันได้รวบรวมในสถานที่ต่าง ๆ ด้วยการอภิปรายเกี่ยวกับ/usr/libexec/path_helperและทั้งหมดเห็นได้ชัดว่าวิธีการที่ทันสมัยในการเพิ่มรายการให้กับตัวแปรสภาพแวดล้อมPATHใน macOS Sierra 10.12 คือ: แก้ไข/etc/pathsไฟล์ เพิ่มไฟล์ที่จะอ่านจาก/etc/paths.dไดเรกทอรี คำถามของฉัน: kosher ใดที่ทันสมัยกว่าบน macOS รุ่นใหม่? หากวิธีที่ดีกว่าหรือมากกว่าทั่วไปคือการวางไฟล์ลงในpaths.dไดเรกทอรีชื่อและเนื้อหาของไฟล์เหล่านั้นคืออะไร? ตัวอย่างใด ๆ ? ฉันใช้มากกว่าzsh bashนั่นสร้างความแตกต่างหรือไม่? สองตัวเลือกเหล่านี้เป็นเอกลักษณ์ของ macOS หรือไม่ หรือพวกเขาจะปรากฏใน BSD หรือระบบที่คล้าย Unix อื่น ๆ ?
10 osx  zsh  path  etc 

1
ดำเนินการคำสั่งในโหมด zsh vim
ในzshในvim modeผมเขียนบางสิ่งบางอย่าง foo foo bar bar จากนั้นฉันก็กดEscเพื่อไปในโหมดปกติและพิมพ์ : foo foo bar bar execute: _ จากนั้นฉันคิดว่าฉันสามารถทำได้ฉันต้องการค้นหาและแทนที่barด้วยbaz foo foo bar bar execute: s/bar/baz/g_ จากนั้นฉันพยายามกด Enter แต่ก็ไม่ได้ผล ฉันสามารถย้อนกลับจากการexecuteใช้Ctrl+ cเท่านั้น ฉันจะรันคำสั่งได้อย่างไร ฉันลองสิ่งนี้ด้วยวิธีปกติ.zshrcและไม่ทำอะไร.zshrcเลย
10 vim  zsh 

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

2
การรวมความสมบูรณ์ของแท็บของ zsh เข้ากับการไม่คำนึงถึงขนาดตัวพิมพ์
ฉันกำหนดค่า zsh 5.0.7 ให้ใช้งานแท็บที่ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' ปัญหาที่ฉันมีคือกรณีนี้ความรู้สึกไวมักจะทำให้ฉันต้องกดTabเวลาเพิ่มเติม ตัวอย่างเช่นไดเรกทอรีหลักของฉันมีโฟลเดอร์“ เดสก์ท็อป”“ เอกสาร” และ“ ดาวน์โหลด” ถ้าฉันอยู่ในโฟลเดอร์บ้านของฉันและฉันพิมพ์ cd D จากนั้นกดTabฉันเห็นความเป็นไปได้สามอย่างที่ระบุไว้สำหรับฉัน ในทางกลับกันถ้าฉันพิมพ์ cd d จากนั้นกดปุ่มTab“ d” จะเปลี่ยนเป็น“ D” แต่ฉันไม่เห็นเมนูเสร็จสิ้น ฉันต้องกดTabอีกครั้งเพื่อที่จะเกิดขึ้น มีวิธีการรับเมนูเสร็จในเวลาเดียวกันกับที่ "d" ถูกเปลี่ยนเป็น "D" หรือไม่?
10 zsh  autocomplete 

3
เสร็จสิ้นคำบนหน้าจอเช่นเดียวกับใน VIM (Bash หรือ Tmux)
ฉันจะกำหนดค่า Bash, Zsh หรือ Tmux เพื่อทำให้ตัวระบุที่ตรงกันล่าสุดบนหน้าจอสมบูรณ์ได้อย่างไร พิจารณาสถานการณ์สมมติทั่วไปนี้: $ git fetch remote: Counting objects: 16, done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From /opt/git/thunder * [new branch] issue540 -> origin/issue547314 e9204cf..4d42c3f v2.1 -> origin/v2.1 ฉันจะทำให้ Bash / …

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