ภาษาอังกฤษอาหารฝรั่งเศสสเปน

ไอคอน Fav ของ OnWorks

zsh-lovers - ออนไลน์ในคลาวด์

เรียกใช้ zsh-lovers ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่งสำหรับผู้ชื่นชอบ zsh ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


zsh-lovers - เคล็ดลับ ลูกเล่น และตัวอย่างสำหรับ Z shell

เรื่องย่อ


แค่อ่านมัน ;-)

ภาพรวม


เมื่อใดก็ตามที่เราดูคู่มือ zsh เราสงสัยว่าเหตุใดจึงไม่มีตัวอย่างหรือสิ่งเหล่านั้นเพียง
สิ่งต่าง ๆ ใน (เปลือก) ชีวิต zsh มีคุณสมบัติมากมาย แต่ไม่มี manpage ที่มีบ้าง
ตัวอย่าง (เช่น พรอคเมลเล็กซ์(5)). นั่นเป็นเหตุผลที่เราเขียน manpage นี้

กลเม็ดและ oneliner ส่วนใหญ่มาจากรายชื่อผู้รับจดหมาย zsh-users, zsh-workers, google,
กลุ่มข่าวและจากตัวเราเอง ดูหัวข้อ ลิงค์ เพื่อดูรายละเอียด

หมายเหตุ: manpage นี้ (zsh-คนรัก(1)) คือ ไม่ ส่วนอย่างเป็นทางการของเปลือก Z! มันเป็นเพียงธรรม
เพื่อความสนุก - manpage ;) สำหรับความคิดเห็น รายงานข้อบกพร่องและข้อเสนอแนะ โปรดดูที่
ส่วน ข้อบกพร่อง.

เชลล์สคริปต์


ส่วนนี้แสดงตัวอย่างบางส่วนสำหรับสิ่งที่ต้องการเชลล์สคริปต์บ่อยครั้ง สังเกตว่าคุณ
ไม่ควรใช้มิฉะนั้นตัวอย่างส่วนใหญ่จะใช้ไม่ได้ แยกวิเคราะห์ตัวเลือกในเชลล์สคริปต์ ตัวอย่าง
นำมาจาก ZWS โดย Adam Chodorowski (http://www.chodorowski.com/projects/zws/):

parse_options()
{
o_port=(-p 9999)
o_root=(-r WWW)
o_log=(-d ZWS.log)

zparseopts -K -- p:=o_port r:=o_root l:=o_log h=o_help
ถ้า [[ $? != 0 || "$o_help" != "" ]]; แล้ว
echo การใช้งาน: $(basename "$0") "[-p PORT] [-r DIRECTORY]"
ทางออก 1
fi

พอร์ต=$o_port[2]
รูท=$o_root[2]
บันทึก=$o_log[2]

ถ้า [[ $root[1] != '/' ]]; จากนั้น root="$PWD/$root"; fi
}
# ตอนนี้ใช้ฟังก์ชั่น:
parse_options $*

ตัวอย่าง


ส่วนย่อยที่มีอยู่คือ นามแฝง, สร้างเสร็จ, ไม่ได้เรียงลำดับ/เบ็ดเตล็ด ตัวอย่าง, (เรียกซ้ำ)
กลม - ตัวอย่าง, ตัวปรับเปลี่ยน การใช้, การเปลี่ยนเส้นทาง-ตัวอย่าง, ZMV-ตัวอย่าง and
โมดูล-ตัวอย่าง.

นามแฝง
นามแฝงส่วนต่อท้ายได้รับการสนับสนุนใน zsh ตั้งแต่เวอร์ชัน 4.2.0 ตัวอย่างบางส่วน:

นามแฝง -s tex=vim
นามแฝง -s html=w3m
นามแฝง -s org=w3m

ตอนนี้กดปุ่ม return-key หลังจากป้อน foobar.tex เริ่มเป็นกลุ่มด้วย foobar.tex โทรหา
ไฟล์ html เรียกใช้เบราว์เซอร์ w3m www.zsh.org และการกด Enter จะเริ่มต้น w3m พร้อมอาร์กิวเมนต์
www.zsh.org สามารถใช้นามแฝงส่วนกลางได้ทุกที่ในบรรทัดคำสั่ง ตัวอย่าง:

$ นามแฝง -g C='| wc -l'
$ grep นามแฝง ~/.zsh/* ค
443

นามแฝงส่วนกลางที่มีประโยชน์ไม่มากก็น้อย (เลือกว่าจะมีประโยชน์หรือไม่สำหรับคุณใน
ของคุณเอง):

นามแฝง -g ...='..-'
นามแฝง -g ....='..-'
นามแฝง -g .....='..-'
alias -g CA="2>&1 | cat -A"
นามแฝง -g C='| wc -l'
นามแฝง -g D="DISPLAY=:0.0"
นามแฝง -g DN=/dev/null
นามแฝง -g ED="ส่งออก DISPLAY=:0.0"
นามแฝง -g EG='|& egrep'
นามแฝง -g EH='|& หัว'
นามแฝง -g EL='|& น้อยกว่า'
นามแฝง -g ELS='|& น้อยกว่า -S'
นามแฝง -g ETL='|& หาง -20'
นามแฝง -g ET='|& หาง'
alias -g F=' | เอฟเอ็ม -'
นามแฝง -g G='| อีเกรป'
นามแฝง -g H='| ศีรษะ'
นามแฝง -g HL='|& หัว -20'
นามแฝง -g Sk="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
นามแฝง -g LL="2>&1 | น้อยกว่า"
นามแฝง -g L="| น้อยกว่า"
นามแฝง -g LS='| น้อยกว่า -S'
นามแฝง -g MM='| ที่สุด'
นามแฝง -g M='| มากกว่า'
นามแฝง -g NE="2> /dev/null"
นามแฝง -g NS='| เรียงลำดับ -n'
นามแฝง -g NUL="> /dev/null 2>&1"
นามแฝง -g PIPE='|'
นามแฝง -g R=' > /c/aaa/tee.txt '
นามแฝง -g RNS='| เรียงลำดับ -nr'
นามแฝง -g S='| เรียงลำดับ'
นามแฝง -g TL='| หาง -20'
นามแฝง -g T='| หาง'
alias -g US='| เรียงลำดับ -u'
นามแฝง -g VM=/var/log/messages
นามแฝง -g X0G='| xargs -0 egrep'
นามแฝง -g X0='| ซาร์ก -0'
นามแฝง -g XG='| xargs egrep'
นามแฝง -g X='| xargs'

เสร็จสิ้น
ดูเพิ่มเติมที่ man 1 zshcompctl zshcompsys zshcompwid zshcompctl เป็นรูปแบบเก่าของ zsh
โปรแกรมเสร็จสิ้น zshcompsys เป็นระบบเสร็จสิ้นใหม่ zshcompwid คือ zsh
วิดเจ็ตเสร็จสิ้น

ฟังก์ชันบางอย่าง เช่น _apt และ _dpkg ทำงานช้ามาก คุณสามารถใช้แคชเพื่อพร็อกซี
รายการผลลัพธ์ (เช่นรายการแพ็คเกจเดเบียนที่มีอยู่) ใช้แคช:

zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache

ป้องกันไม่ให้ไฟล์/ไดเร็กทอรี CVS เสร็จสมบูรณ์:

zstyle ':completion:*:(all-|)files' ละเว้นรูปแบบ '(|*/)CVS'
zstyle ':completion:*:cd:*' รูปแบบที่ถูกละเว้น '(*/)#CVS'

การจับคู่ความสมบูรณ์ที่คลุมเครือเมื่อคุณพิมพ์ผิด:

zstyle ':completion:*' สมบูรณ์ _complete _match _approximate
zstyle ':completion:*:match:*' ต้นฉบับเท่านั้น
zstyle ':completion:*:ประมาณ:*' ข้อผิดพลาดสูงสุด 1 ตัวเลข

และถ้าคุณต้องการให้จำนวนข้อผิดพลาดที่อนุญาตโดย _ประมาณ เพิ่มขึ้นตามความยาว
ของสิ่งที่คุณได้พิมพ์ไปแล้ว:

zstyle -e ':completion:*:ประมาณ:*' \
ข้อผิดพลาดสูงสุด 'ตอบกลับ=($((($#PREFIX+$#SUFFIX)/3))ตัวเลข)'

ละเว้นฟังก์ชันการทำให้สมบูรณ์สำหรับคำสั่งที่คุณไม่มี:

zstyle ':completion:*:functions' รูปแบบที่ถูกละเว้น '_*'

ด้วยฟังก์ชั่นตัวช่วยเช่น:

xdvi() { คำสั่ง xdvi ${*:-*.dvi(om[1])} }

คุณสามารถหลีกเลี่ยงไม่ต้องกรอกเลยในหลาย ๆ กรณี แต่ถ้าทำคุณอาจต้องการ
เข้าสู่การเลือกเมนูทันทีและให้เรียงคำตามเวลา:

zstyle ':completion:*:*:xdvi:*' เมนูใช่ เลือก
zstyle ':completion:*:*:xdvi:*' เวลาในการจัดเรียงไฟล์

กรอกรหัสกระบวนการด้วยการเลือกเมนู:

zstyle ':completion:*:*:kill:*' เมนูใช่ เลือก
zstyle ':completion:*:kill:*' บังคับรายการเสมอ

หากคุณใช้ไดเร็กทอรีเป็นอาร์กิวเมนต์ การดำเนินการนี้จะลบเครื่องหมายสแลชต่อท้าย (usefull
ในln)

zstyle ':completion:*' บีบทับจริง

cd จะไม่เลือกไดเร็กทอรีหลัก (เช่น: cd ../ ):

zstyle ':completion:*:cd:*' ละเว้น parent parent pwd

อีกวิธีหนึ่งสำหรับ รวดเร็ว เปลี่ยนแปลง ไดเรกทอรี. เพิ่มไปยัง .ของคุณ ~ / .zshrcจากนั้นเพียงแค่ป้อน
“ซีดี ..../dir”

จุดหาเหตุผล () {
ถ้า [[ $LBUFFER = *.. ]]; แล้ว
แอลบัฟเฟอร์+=-
อื่น
แอลบัฟเฟอร์+=.
fi
}
zle -N เหตุผล-dot
คีย์บอนด์ เหตุผล-จุด

ไม่ได้รับการคัดแยก/เบ็ดเตล็ด ตัวอย่าง
คำแนะนำ: สามารถดูรายชื่อ glob Qualifiers ที่ถูกต้องได้ใน zshexpn(1). ดู “ชาย 1 zshexn |
น้อยกว่า -p” รอบคัดเลือกสำหรับรายละเอียด

# รับชื่อไฟล์ทั้งหมดที่ * ไม่ * ตรงกับรูปแบบ * ทุกที่ * บน
# ไฟล์ (และไม่มี ``-L'' เพราะเป็น GNUish)
$ print -rl -- *(.^e{'grep -q รูปแบบ $REPLY'})
# หรือ
$ : *(.e{'grep -q pattern $REPLY || print -r -- $REPLY'})

#สุ่มเลข
$ echo $[${RANDOM}%1000] # สุ่มระหว่าง 0-999
$ echo $[${RANDOM}%11+10] # สุ่มระหว่าง 10-20
$ echo ${(l:3::0:)${RANDOM}} # N หลักยาว (3 หลัก)

#ย้อนคำ
$ echo "${(j::)${(@Oa)${(s::):-hello}}}"

# แสดงไดเร็กทอรีใหม่ล่าสุด
$ ls -ld *(/om[1])

# องค์ประกอบอาร์เรย์สุ่ม
$ ไฟล์=( .../ไฟล์/* )
$ feh $FILES[$RANDOM%$#FILES+1]

# cat บรรทัดแรกในไฟล์ทั้งหมดใน dir นี้
$ สำหรับไฟล์ (*(ND-.)) IFS= read -re < $file

# ทดสอบว่าพารามิเตอร์เป็นตัวเลขหรือไม่
$ ถ้า [[ $1 == <-> ]] ; แล้ว
สะท้อนตัวเลข
อื่น
เสียงสะท้อนที่ไม่ใช่ตัวเลข
fi

# แสดงไฟล์ .c ทั้งหมดที่ไม่มีไฟล์ .o
$ พิมพ์ *.c(e_'[[ ! -e $REPLY:ro ]]'_)

# ไฟล์ทั้งหมดใน /เคยเป็น/ ที่ไม่ได้เป็นเจ้าของโดยรูท
$ ls -ld /เคยเป็น/*(^u:รูท)

# ไฟล์ทั้งหมดที่เจ้าของหมวกอ่านและดำเนินการอนุญาต
$ echo *(f:u+rx :)

# เหมือนกัน แต่คนอื่นไม่มีสิทธิ์ดำเนินการ
$ echo *(f:u+rx,ox:)

# การขยายรั้ง - ตัวอย่าง
$ X=(เอบีซี)
$ Y=(+ -)
$ พิมพ์ -r -- $^X.$^Y

ก.+ ก.- ข.+ ข.- ค.+ ค.-
# ดึงไฟล์ใหม่ล่าสุดที่มีสตริง 'fgractg*.log' ใน
# ชื่อไฟล์และมีสตริง 'ORA-' อยู่ในนั้น
$ ไฟล์=(fgractg*.log(Nm0om[1]))
$ (($#file)) && grep -l ORA- $file
# ไม่มี Zsh
$ files=$( find . -name . -o -prune -name 'fgractg*>log' -mtime 0 -print )
> ถ้า [ -n "$files" ]; แล้ว
> ไอเอฟเอส='
> '
> ตั้ง -f
> file=$(ls -td $files | head -1)
> grep -l ORA- "$file"
> fi

# ให้จำนวนกระบวนการย่อยที่ระบุทำงานจนกว่างานทั้งหมดจะเสร็จสิ้น
$ zsh -c 'sleep 1 & sleep 3 & sleep 2& print -rl -- $ jobtexts'

# ลบความยาวเป็นศูนย์และไฟล์ .bak ในไดเร็กทอรี
$ RM -i *(.L0) *.บัค(.)

# พิมพ์ไฟล์ที่ไม่มีนามสกุล
$ printf '%s\n' ^?*.*
$ printf '%s\n' ^?*.[^.]*(D)
$ ls -d -- ^?*.*(ด)

# ค้นหาไฟล์ที่ไม่มีสตริงเฉพาะ
$ พิมพ์ -rl ไฟล์* | comm -2 -3 - <(ไฟล์สตริง grep -l*)'
$ สำหรับ f (ไฟล์*(N)) grep -q string $f || พิมพ์ -r $f'

# แสดง / ตรวจสอบว่ามีการตั้งค่าตัวเลือกหรือไม่ ใช้งานได้ทั้งกับ $options เป็น
# ด้วย $builtins
$ echo $options[แก้ไข]
ปิด
$ $ตัวเลือก[zle]
on

# นับจำนวนไดเร็กทอรีใน stack
$ พิมพ์ $((${${(z)${(f)"$(dirs -v)"}[-1]}[1]} + 1)) # หรือ
$ dirs -v | awk '{n=$1}END{พิมพ์ n+1}'

# จับคู่ไฟล์ทั้งหมดที่ไม่มีจุดในชื่อไฟล์
$ ls *~*.*(.)

# แสดงเฉพาะที่อยู่ IP จาก ``อุปกรณ์ ifconfig''
# ifconfig จาก net-tools (Linux)
$ พิมพ์ ${${$(LC_ALL=C / sbin / ifconfig eth0)[7]}:gs/addr://}
# ifconfig จาก 4.2BSD {ฟรี, เน็ต, เปิด}BSD
$ พิมพ์ ${$(/ sbin / ifconfig ตูน0)[6]}

# Ping ที่อยู่ IP ทั้งหมดในคลาส C หรือโฮสต์ทั้งหมด
# เข้าไปข้างใน / etc / hosts
$ สำหรับฉันใน {1..254}; ทำ ping -c 1 192.168.13.$i; เสร็จแล้ว
or
$ ฉัน = 1
$ ในขณะที่ ( [[ $I -le 255 ]] ); ทำ ping -1 2 150.150.150.$I; ให้ฉัน++; เสร็จแล้ว
or
$ for i in $(sed 's/#.*//' > / etc / hosts | awk '{พิมพ์ $2}')
: ทำ
: echo "กำลังพยายาม $i ... "
: ปิง -c 1 $i ;
: echo '============================'
: เสร็จแล้ว

# โหลดโมดูลที่มีอยู่ทั้งหมดเมื่อเริ่มต้น
$ เรียงพิมพ์ -U m
$ ม=()
$ สำหรับ md ($module_path) m=($m $md/**/*(*e:'REPLY=${REPLY#$md/}'::r))
$zmodload -i $ม

# เปลี่ยนชื่อไฟล์ทั้งหมดภายในไดเร็กทอรีเพื่อให้ชื่อเป็นตัวเลข
# คำนำหน้าในลำดับการจัดเรียงเริ่มต้น
$ i=1; สำหรับ j ใน *; ทำ mv $j $i.$j; ((i++)); เสร็จแล้ว
$ i=1; สำหรับ f ใน *; ทำ mv $f $(echo $i | \
awk '{ printf("%03d", $0)}').$f; ((i++)); เสร็จแล้ว
$ จำนวนเต็ม i=0; สำหรับ f ใน *; ทำ mv $f $[i+=1].$f; เสร็จแล้ว

# ค้นหา (และพิมพ์) ลิงก์สัญลักษณ์ทั้งหมดโดยไม่มีเป้าหมายภายในปัจจุบัน
#สิ่งสกปรก
$ $ file **/*(D@) | fgrep เสีย
$ สำหรับฉันใน **/*(D@); [[ -f $i || -d $i ]] || เสียงสะท้อน $i
$ เสียงสะท้อน **/*(@-^./=%p)
$ พิมพ์ -l **/*(-@)

# แสดงรายการไฟล์ธรรมดาทั้งหมดที่ไม่มีนามสกุลอยู่ใน `fignore'
$ ls **/*~*(${~${(j/|/)fignore}})(.)
# ดูด้านบน แต่ตอนนี้ละเว้น executables
$ ls **/*~*(${~${(j/|/)fignore}})(.^*)

# พิมพ์ไฟล์ที่ไม่มีนามสกุล (ต้องใช้ *setopt extendedglob*
# และ *setopt dotglob*)
$ printf '%s\n' ^?*.*

# แสดงรายการไฟล์ในลำดับที่กลับกันเรียงตามชื่อ
$ print -rl -- *(เปิด)
or
$ พิมพ์ -rl -- *(^on)

# ตรงกันกับ ``ps ax | awk '{พิมพ์ $1}'''
$ พิมพ์ -l /โปรค/*/cwd(:h:t:s/ตัวเอง//)

# รับ PID ของกระบวนการ (ไม่มี ``ps'', ``sed'', ``pgrep'', ..
# (ภายใต้ลินุกซ์)
$ pid2 () {
> ท้องถิ่น i
> สำหรับฉันใน /โปรค/<->/stat
> ทำ
> [[ "$(< $i)" = *\((${(j:|:)~@})\)* ]] && echo $i:h:t
>เสร็จแล้ว
> }

# สำหรับ X ใน 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y'; ทำ ...
$ สำหรับ (( i = 36#n; i <= 36#y; i++ )); ทำ
> พิมพ์ ${$(([##36]i)):l}
>เสร็จแล้ว
# หรือใช้ร่วมกับ ``dc''
$ พิมพ์ {$((##n))..$((##y))}P\ 10P | กระแสตรง
# หรือด้วย ``eval''
$ eval พิมพ์ '${$(([##36]'{$((36#n))..$((36#y))}')):l}'

# foreach ในหนึ่งบรรทัดของเชลล์
$ สำหรับ f (*) พิมพ์ -r -- $f

# คัดลอกไดเร็กทอรีแบบเรียกซ้ำโดยไม่มี data/files
$ dirs=(**/*(/))
$ ซีดี -- $dest_root
$mkdir -p -- $dirs
# หรือไม่มี zsh
$ ค้นหา -type d -exec env d="$dest_root" \
sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;

# หาก `foo=23'' ให้พิมพ์ด้วยตัวเลข 10 หลัก โดยนำหน้า '0'
$foo=23
$ พิมพ์ ${(r:10::0:)foo}

# ค้นหาชื่อไฟล์ทั้งหมดในโฮมไดเร็กตอรี่ที่มี
# มากกว่า 20 ตัวอักษรในชื่อไฟล์
พิมพ์ -rl $HOME/${(l:20::?:)~:-}*

# บันทึกอาร์เรย์
$ print -r -- ${(qq)m} > $nameoffile # save it
$ eval "m=($(cat -- $nameoffile)" # หรือ use
$ m=("${(@Q)${(z)"$(cat -- $nameoffile)"}}") # เพื่อเรียกคืน

# รับ "ls -l" ในไฟล์ทั้งหมดในทรีที่อายุน้อยกว่า a
# อายุที่ระบุ (เช่น "ls -l" ไฟล์ทั้งหมดในทรีที่ซึ่ง
# แก้ไขใน 2 วันที่ผ่านมา)
$ ls -tld **/*(m-2)
# สิ่งนี้จะให้รายชื่อ 1 ไฟล์ perl บรรทัด (ไม่ใช่ à la ls -R)
# คิดวิธีง่ายๆ ในการมีเอาต์พุตสไตล์ "ls -R" ด้วย
# เฉพาะไฟล์ที่ใหม่กว่า 2 วัน
$ สำหรับ d (. ./**/*(/)) {
> พิมพ์ -r -- $'\n'${d}:
> cd $d && {
> l=(*(Nm-2))
> (($#l)) && ls -ltd -- $l
> ซีดี ~-
> }
> }
# หากคุณต้องการให้รวมไดเร็กทอรีแม้ว่า mtime
# มีอายุมากกว่า 2 วัน:
$ สำหรับ d (. ./**/*(/)) {
> พิมพ์ -r -- $'\n'${d}:
> cd $d && {
> l=(*(N/,m-2))
> (($#l)) && ls -ltd -- $l
> ซีดี ~-
> }
> }
# และถ้าคุณต้องการให้แสดงรายการเฉพาะไดเร็กทอรีที่มี mtime <2 วัน:
$ สำหรับ d (. ./**/*(N/m-2)) {
> พิมพ์ -r -- $'\n'${d}:
> cd $d && {
> l=(*(Nm-2))
> (($#l)) && ls -ltd -- $l
> ซีดี ~-
> }
> }

#พิมพ์42``-''
$ เสียงสะท้อน ${(l:42::-:)}
# หรือใช้ ``$COLUMS''
$ เสียงสะท้อน ${(l:$COLUMNS::-:)}
# และตอนนี้มีสี (ต้องการสีอัตโนมัติ; สี)
$ echo "$bg[red]$fg[black]${(l:42::-:)}"

# เปลี่ยนเส้นทาง STDERR ไปยังคำสั่งเช่น xless โดยไม่ต้องเปลี่ยนเส้นทาง STDOUT ด้วย
$ foo 2>>(xless)
# แต่สิ่งนี้รันคำสั่งแบบอะซิงโครนัส ในการทำแบบซิงโครนัส:
$ { { foo 1>&3 } 2>&1 | xless } 3>&1

# เปลี่ยนชื่อไฟล์ MP3 ทั้งหมดจากชื่อด้วย spaces.mp3 เป็น Name With Spaces.mp3
$ สำหรับฉันใน *.mp3; ทำ
> mv $i ${${(C)i}:s/Mp3/mp3/}
>เสร็จแล้ว

# จับคู่ชื่อไฟล์ที่มีเฉพาะตัวเลขและลงท้ายด้วย .xml (require
# *ตั้งค่า kshglob*)
$ ls -l [0-9]##.xml
$ ls -l <0->.xml

# ลบไฟล์ "ไม่ใช่ txt" ทั้งหมด
$ RM ./^*.txt

# ย้าย 200 ไฟล์จากไดเร็กทอรีไปที่อื่น
$ mv -- *([1,200]) /อื่น/ผบ

# แปลงภาพ (foo.gif => foo.png):
$ สำหรับฉันใน **/*.gif; แปลง $i $i:r.png

# แปลงคอลเลกชันของไฟล์ mp3 เป็น wave หรือ cdr
# เช่น file.wav -> file.mp3)
$ สำหรับฉัน (./*.mp3){mpg321 --w - $i > ${i:r}.wav}

# ดาวน์โหลดด้วยไฟล์ที่สร้าง LaTeX2HTML (เช่น ZSH-Guide):
$ สำหรับ f ใน http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; ทำ
> คม -source $f >${f:t}
>เสร็จแล้ว

# ย้ายไฟล์ทั้งหมดใน dir1 และ dir2 ที่มีจำนวนบรรทัดมากกว่า 10 ถึง
# ไดเรกทอรีอื่นพูดว่า "/more10"
$ mv dir[12]/**/*.cr(-.e{'((`wc -l < ​​$REPLY` > 10))'}) /more10

# สร้างรายการหลักของทุกไฟล์ที่ติดตั้งด้วย dpkg
$ diff <(find / | sort) <(cat /var/lib/dpkg/ข้อมูล/*.list | เรียงลำดับ)

# แทนที่ Escape-Sequences นี้:
$ สี autoload ; สี
$ print "$bg[cyan]$fg[blue]คุณมันงี่เง่า" >> /dev/pts/3

# รับค่า ASCII ของตัวละคร
$ ถ่าน=N ; พิมพ์ $((#char))

#ชื่อไฟล์"เอ๋อไวเทรุง"
# หมายเหตุ: (N) บอกว่าจะใช้ตัวเลือก nullglob สำหรับสิ่งนี้โดยเฉพาะ
#ลายลูกโลก.
$ สำหรับฉันใน *.o(N); ทำ
> rm $i
>เสร็จแล้ว

# เปลี่ยนชื่อไฟล์; เช่น FOO to foo และ bar to BAR
$ สำหรับฉันใน *(.); mv $i ${i:l} # `FOO' เป็น `foo'
$ สำหรับฉันใน *(.); mv $i ${i:u} # `bar เป็น `BAR'

# แสดงไฟล์ suid ทั้งหมดใน $PATH
$ ls -latg ${(s.:.)PATH} | grep '^...s'
# หรือซับซ้อนกว่านั้น ;)
$ พิมพ์ -l ${^path}/*(Ns,S)
# หรือแสดงเฉพาะไฟล์ปฏิบัติการที่มีรูปแบบที่ผู้ใช้กำหนด
$ พิมพ์ -l ${^path}/*vim*(*N)

# ไฟล์ gzip เมื่อมีสตริงบางตัว
$ gzip ${(ps:\0:)"$(grep -lZ foobar ./*.txt(.))"}

# ซับเดียวขนาดเล็กที่อ่านจาก stdin และพิมพ์เป็น stdout ตัวแรก
#เส้นไม่ซ้ำคือไม่พิมพ์เส้นที่เคยพิมพ์มา
# (สิ่งนี้คล้ายกับคำสั่งเฉพาะ แต่เฉพาะเท่านั้นที่สามารถจัดการได้
# เส้นที่อยู่ติดกัน)
$ IFS=$'\n\n'; พิมพ์ -rl -- ${(Oau)${(Oa)$(cat file;echo .)[1,-2]}}

# แสดงรายการปฏิบัติการทั้งหมดใน PATH
$ พิมพ์ -l ${^เส้นทาง}/*(-*N)

# จับคู่ไฟล์ .c ทั้งหมดในไดเร็กทอรีย่อย _except_ ไดเร็กทอรีย่อยของ SCCS หรือไม่
$ ls **/*.c~(*/)#SCCS/*

# แสดงรายการ 'README' ทั้งหมด - ไฟล์ไม่คำนึงถึงขนาดตัวพิมพ์สูงสุด พิมพ์ผิดหนึ่งครั้ง
$ ls **/*(#ia2)readme

# การตรวจสอบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับตัวแปร
$ if [[ $OSTYPE == (#i)LINUX*(#I) ]]; แล้ว
> echo "นกเพนกวินบนเรือ"
> อื่นๆ
> echo "ไม่ใช่ลินุกซ์"
> fi

(เรียกซ้ำ) กลม - ตัวอย่าง
รายชื่อ glob Qualifiers ที่ถูกต้องสามารถพบได้ใน zshexpn(1) หมายเหตุ **/ เทียบเท่ากับ
(*/)#! ตัวอย่างเช่น:

$ พิมพ์ (*/)#zsh_us.ps
zsh-4.2.3/Doc/zsh_us.ps
$ พิมพ์ **/zsh_us.ps
zsh-4.2.3/Doc/zsh_us.ps

# ค้นหา `README' ในไดเรกทอรีย่อยทั้งหมด
$ ls -l **/README

# ค้นหาไดเร็กทอรีที่มีทั้ง "index.php" และ "index.html" หรือใน
# ทั่วไป ไดเร็กทอรีที่มีมากกว่าหนึ่งไฟล์ที่ตรงกับ "index.*"
$ ls **/*(D/e:'[[ -e $REPLY/index.php && -e $REPLY/index.html ]]':)
# หรือ
$ ls **/*(D/e:'l=($REPLY/index.*(N)); (( $#l >= 2 ))':)

# ค้นหาคำสั่งเพื่อค้นหาชื่อไดเรกทอรีแทนชื่อฐาน
$ พิมพ์ -rl /**/*~^*/path(|/*)
# หรือ - ไม่มี Zsh
$ ค้นหา / | grep -e /path/ -e '/path$'

# พิมพ์เส้นทางของไดเรกทอรีที่ถือไฟล์ C ที่ใหญ่ที่สุดสิบไฟล์
# ในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อย
$ print -rl -- **/*.c(D.OL[1,10]:h) | เรียงลำดับ -u

# ค้นหาไฟล์ที่มีขนาด == 0 แล้วส่งเมล
$ ไฟล์=(**/*(ND.L0m+0m-2))
> (( $#files > 0 )) && print -rl -- $files | \
mailx -s "ไฟล์ว่าง" [ป้องกันอีเมล]

# chmod แบบเรียกซ้ำ
$ chmod 700 **/(.) # เฉพาะไฟล์
$ chmod 700 **/(/) # เฉพาะไดเรกทอรี

# พิมพ์ไฟล์ทั้งหมดในไดเร็กทอรีนั้นใน 2 คอลัมน์
$ พิมพ์ -rC2 -- ${1:[...]}/*(D:t)
# ^- หมายเลข ob คอลัมน์
# หรือ - หากคุณรู้สึกกังวลเกี่ยวกับอักขระพิเศษ - ใช้
$ รายการ=(${1:[...]}/*(ND:t))
$ (($#list)) && print -rC2 -- ${(V)list}

# ค้นหาไฟล์ทั้งหมดใน /บ้าน/*/*-mail/ ด้วยการตั้งค่า ``chmod -s'' flag
# (เรียกซ้ำ รวม dotfiles) ลบการตั้งค่าสถานะ setgid/setuid และพิมพ์
# ข้อความ
$ chmod -s /บ้าน/*/*-เมล(DN,S) /บ้าน/*/*-mail/**/*(DN,S))
#หรือด้วยสคริปเล็กๆ
$ สำหรับไฟล์ (/บ้าน/*/*-เมล(DN,S) /บ้าน/*/*-mail/**/*(DN,S)) {
> พิมพ์ -r -- $file
> chmod -s $file && print -r fixed $file
> }
# หรือใช้ ``zargs'' (ต้องการ autoload zargs) ป้องกันรายการ arg ด้วย
#ผิดพลาดนาน
$ zags /บ้าน/*/*-เมล(DN,S) /บ้าน/*/*-mail/**/*(DNs,S)) -- chmod -s

# รายการไฟล์ที่เริ่มต้นที่ `foo23' ขึ้นไป (foo23, foo24, foo25, ..)
$ ls -l foo<23->

# รับไฟล์ทั้งหมดที่ขึ้นต้นด้วยสตริงวันที่ตั้งแต่ 4 มิถุนายนถึง
# 9 มิถุนายน 2004
$ ls -l 200406{04..10}*(ไม่มี)
# หรือถ้าอยู่ในรูปแบบ 200406XX (ต้องมี ``setopt extended_glob''
$ ls -l 200306<4-10>.*

# ลบช่องว่างออกจากชื่อไฟล์
$ สำหรับ a ใน ./**/*\ *(Dod); ทำ mv $a ${a:h}/${a:t:gs/ /_}; เสร็จแล้ว

# แสดงเฉพาะทั้งหมด *.c และ *.h - ไฟล์
$ ls -l *.(ค|เอช)

# แสดงเฉพาะทั้งหมด *.c - ไฟล์และละเว้น `foo.c'
$ ls *.c~foo.c

# แสดงข้อมูลเป็น *จริงๆ* รูปแบบไบนารี
$ zsh -ec 'ในขณะที่ {} {printf %.8x $n;ทำซ้ำ 8 \
> {read -ku0 a printf \ %.8d $(([##2]#a))};print;((n+=8))}' < ไบนารี

# แสดงเฉพาะไฟล์ที่อ่านได้ทั่วโลก
$ ls -l *(R)

# รายการไฟล์ในไดเร็กทอรีปัจจุบันไม่สามารถเขียนได้โดยเจ้าของ
$ พิมพ์ -l ~/*(ND.^w)

# ค้นหาและลบไฟล์ที่เก่ากว่าพารามิเตอร์ที่กำหนด
# (วินาที/นาที/ชั่วโมง)
# ลบไฟล์ปกติทั้งหมดใน /Dir ที่เก่ากว่า 3 ชั่วโมง
$ rm -f /Dir/**/*(.mh+3)
# ลบ symlink ทั้งหมดใน /Dir ที่เก่ากว่า 3 นาที
$ rm -f /Dir/**/*(@mm+3)
# ลบ non dirs ทั้งหมดใน /Dir ที่เก่ากว่า 30 วินาที
$ rm -f /Dir/**/*(ms+30^/)
# ลบโฟลเดอร์ โฟลเดอร์ย่อย และไฟล์ที่เก่ากว่าหนึ่งชั่วโมง
$ ฿ ./**/*(.Dmh+1,.DL0)
# ลบไฟล์ทั้งหมดที่มีอายุมากกว่า 6 ชั่วโมง
$ RM -f **/*(MH+6)
# ลบไฟล์ทั้งหมดยกเว้นสิบไฟล์ที่ใหม่กว่า (ลบทั้งหมด แต่สุดท้าย10
# ไฟล์ในไดเร็กทอรี)
$ rm ./*(อ้อม[1,-11])
หมายเหตุ: หากคุณได้รับรายการหาเรื่องยาวเกินไป คุณใช้ builtin rm สำหรับ
ตัวอย่าง:
$ zmodload zsh/ไฟล์ ; rm -f **/*(mh+6)
หรือใช้ฟังก์ชัน zargs:
$ โหลดอัตโนมัติ zargs ; zargs **/*(mh+6) -- rm -f

# คู่มือผู้ใช้สำหรับ Z-Shell /5.9: การสร้างชื่อไฟล์และรูปแบบ
# การจับคู่ค้นหาไฟล์ทั้งหมดในไดเรกทอรีย่อยทั้งหมดค้นหาแบบเรียกซ้ำ
# ซึ่งมีชื่อที่กำหนด ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่อย่างน้อย 50 KB
# ไม่เกินหนึ่งสัปดาห์และเป็นเจ้าของโดยผู้ใช้รูทและอนุญาตให้ขึ้น
#ผิดพลาดประการเดียวในการสะกดชื่อ อันที่จริง จำเป็น
# นิพจน์มีลักษณะดังนี้:
$ ls **/(#ia1)ชื่อ(LK+50mw-1u0)

# เปลี่ยน UID จาก 102 เป็น 666
$ ชอว์น 666 **/*(u102)

# แสดงรายการไฟล์ทั้งหมดที่ไม่ได้รับการอัพเดตตั้งแต่ 10 ชั่วโมงที่แล้ว
$ พิมพ์ -rl -- *(Dmh+10^/)

# ลบเฉพาะไฟล์ที่เก่าที่สุดในไดเรกทอรี
$ rm ./*ชื่อไฟล์*(อ้อม[1])

# เรียงลำดับผลลัพธ์จาก `ls -l' ตามขนาดไฟล์
$ ls -fld *(OL)

# ค้นหาไฟล์ล่าสุดในไดเร็กทอรี
$ setopt dotglob ; พิมพ์ไดเร็กทอรี/**/*(om[1])

# แสดงเฉพาะไฟล์เปล่าที่ไม่มี `group' หรือ `world เขียนได้'
$ ls *(L0f.go-w.)

# ค้นหา - และแสดงรายการ - ไฟล์ใหม่ล่าสุดสิบไฟล์ในไดเร็กทอรีและย่อย
# (เรียกซ้ำ)
$ print -rl -- **/*(ดอม[1,10])

# พิมพ์เพียง 5 บรรทัดโดยใช้คำสั่ง "ls" (เช่น ``ls -laS | head -n 5'')
$ ls -fl *(ดอล[1,5])

# แสดงไฟล์ที่แก้ไขล่าสุด 5-10 ไฟล์
$ พิมพ์ -rl -- /path/to/dir/**/*(D.om[5,10])

# ค้นหาไฟล์ทั้งหมดโดยไม่มีเจ้าของที่ถูกต้อง
$ chmod someuser /**/*(D^u:${(j.:u:.)${(f)"$(/ etc / passwd)"}%%:*} :)"}%%:*} :)

# ค้นหาไดเร็กทอรีว่างทั้งหมดในทรี
$ สำหรับ f ใน ***/*(/l2); ทำ foo=($f/*(N)); [[ -z $foo ]] && พิมพ์ $f; เสร็จแล้ว
# หมายเหตุ:ตั้งแต่ Zsh 4.2.1 glob qualifier F ระบุว่าไดเร็กทอรีที่ไม่ว่างเปล่า
# ดังนั้น *(F) ระบุไดเรกทอรีย่อยทั้งหมดที่มีรายการ *(/^F) หมายถึง all
# ไดเรกทอรีย่อยที่ไม่มีรายการ
$ ls -ld *(/^F)

# ลบไดเร็กทอรีว่างหลังจากนั้น
$ rmdir ./**/*(/od) 2> /dev/null

# แสดงเฉพาะไฟล์ที่เป็นของกลุ่ม `ผู้ใช้'
$ ls -l *(G[ผู้ใช้])

ตัวปรับเปลี่ยน การใช้
ตัวดัดแปลงเป็นกลไกที่ทรงพลังที่ให้คุณแก้ไขผลลัพธ์ที่ส่งคืนโดยพารามิเตอร์
ชื่อไฟล์และการขยายประวัติ ดู zshexpn(1) สำหรับรายละเอียด

# หมายเหตุ: จำเป็นต้องใช้ Zsh 4.3.4!
$ autoload -U อายุ
# ไฟล์ที่แก้ไขวันนี้
$ พิมพ์ *(e:age today now :)
# ไฟล์ถูกแก้ไขตั้งแต่ 5 โมงเย็น
$ พิมพ์ *(e-age 17:00 ตอนนี้-)
# ... ตั้งแต่ 5 โมงเย็นเมื่อวาน
$ พิมพ์ *(e-age เมื่อวาน,17:00 ตอนนี้-)
# ... จากคริสต์มาสที่แล้วก่อนวันนี้
$ พิมพ์ *(e-age 2006/12/25 วันนี้-)
# ... ก่อนเมื่อวาน
$ พิมพ์ *(e-age 1970/01/01 เมื่อวาน-)
# ไฟล์ทั้งหมดที่แก้ไขระหว่างการเริ่มต้นของวันที่เหล่านั้น
$ พิมพ์ *(e:age 2006/10/04 2006/10/09:)
# ไฟล์ทั้งหมดที่แก้ไขในวันนั้น
$ พิมพ์ *(e:age 2006/10/04:)
# อุปทานครั้ง
$ print *(e-age 2006/10/04:10:15 2006/10/04:10:45-)

# ลบองค์ประกอบชื่อพา ธ ต่อท้ายออกจากส่วนหัว ทำงานเหมือน
# 'นามสกุล'
$ เสียงสะท้อน = ls (: ชั่วโมง)
/ bin

# ลบส่วนประกอบชื่อพา ธ ชั้นนำทั้งหมดออกจากส่วนท้าย งานนี้
#เหมือน'ชื่อฐาน'
$ เสียงสะท้อน = ls(:t)
ls

# ลบส่วนต่อท้ายออกจากแต่ละไฟล์ (*.sh ในตัวอย่างนี้)
$f:e คือ $f นามสกุลไฟล์
:h --> หัว (นามสกุล)
:t --> หาง (ชื่อฐาน)
:r --> ส่วนที่เหลือ (ลบส่วนขยายออก)
$ สำหรับ f (*.sh) mv $f $f:r

# ลบนามสกุลไฟล์ของแบบฟอร์ม `.xxx' ออกจากชื่อรูท
$echo $พวด
/usr/src/ลินุกซ์
$echo $PWD:t
ลินุกซ์

# ลบทั้งหมดยกเว้นส่วนขยาย
$foo=23.42
$ก้อง$foo
23.42
$echo $foo:e
42

# พิมพ์คำสั่งใหม่ แต่อย่าดำเนินการ ใช้ได้เฉพาะกับประวัติศาสตร์
# การขยาย.
$ เสียงสะท้อน = ls (: ชั่วโมง)
/ bin
$ !เอคโค:พี
$ เสียงสะท้อน = ls (: ชั่วโมง)

# อ้างคำที่ใช้แทนหลีกเลี่ยงการแทนที่เพิ่มเติม
$ bar="23'42"
$echo$บาร์
23'42
$echo $bar:q
23 \ '42

# แปลงคำเป็นตัวพิมพ์เล็กทั้งหมด
$bar=FOOBAR
$echo$บาร์
ฟูบาร์
$echo $bar:ล
ฟูบาร์

# แปลงคำเป็นตัวพิมพ์ใหญ่ทั้งหมด
$bar = ฟูบาร์
$echo$บาร์
ฟูบาร์
$echo $bar:u
ฟูบาร์

# แปลงอักษรตัวแรกของคำเป็นตัวพิมพ์ใหญ่
$ foo="หนึ่งสองสามสี่"
$ พิมพ์ -r -- "${(C)foo}"
หนึ่งสองสามสี่

การเปลี่ยนเส้นทาง-ตัวอย่าง
ดู zshmisc(1) สำหรับข้อมูลเพิ่มเติม (หรือน้อยกว่า ${^fpath}/zmv(N))

# ต่อท้าย `exit 1' ต่อท้าย *.sh - files
$ echo "exit 1" >> *.sh

# กำลังเพิ่มไฟล์ใน foobar.tar.gz
$ eval set =(gunzip < foobar.tar.gz) '
tar rf $1 เพิ่ม.txt &&gzip < $1 > foobar.tar.gz'

# เปลี่ยนเส้นทางไปยังไฟล์และแสดงผลบนหน้าจอ
$ foobar >&1 > file1 > file2 > ..

# ไปป์เอาต์พุตเดี่ยวไปยังอินพุตหลายตัว
$ zcat foobar.Z >> (gzip -9 > file1.gz) \
>> (bzip2 -9 > file1.bz2) \
>> (acb --best > file1.acb)

# ผนวก / etc / บริการ ที่ท้ายไฟล์ `foo' และ `bar'
$แมว / etc / บริการ >>ฟู >> บาร์

# ท่อ STDERR
$ echo ข้อผิดพลาด >&2 2>&1 | sed -e 's/A/I/'

# ส่งเอาต์พุตมาตรฐานของกระบวนการหนึ่งไปยังอินพุตมาตรฐานของหลายกระบวนการ
# ในท่อ
$ setopt มัลติออส
$ process1 > >(process1) > >(process2)

# การเริ่มต้นตัวแปรและการรักษาเอาต์พุตของเทอร์มินัลพร้อมกัน
$ setopt มัลติออส
$ { a=$(คำสั่ง >&1 >& 3 3 > &- 2>&1);} 3>&1

# เปลี่ยนเส้นทาง stderr สองครั้ง
$ setopt มัลติออส ; โปรแกรม 2> file2 > file1 2>&1

# ทำซ้ำ stdout และ stderr ไปยัง logfile
$ exec 3>&1 > ไฟล์บันทึก 2>&2 2>&1 >&3 3>&-

# เปลี่ยนเส้นทาง stderr (เท่านั้น) ไปยังไฟล์และไปที่ orig สเตอร์เดอร์:
$ command 2>&2 2>stderr
# เปลี่ยนเส้นทาง stderr และ stdout เพื่อแยกไฟล์และทั้งคู่ไปที่ orig มาตรฐาน:
$ command 2>&1 1>&1 2>stderr 1>stdout
# เปลี่ยนเส้นทาง stderr และ stdout เพื่อแยกไฟล์และ stdout ไปยัง orig stdout
# และ stderr ถึง orig สเตอร์เดอร์:
$ command 2>&2 1>&1 2>stderr 1>stdout

# สนุกมากขึ้นกับ STDERR ;)
$ ./my-script.sh 2> >(grep -v moron >error.log)|process-output >output.log
$ echo "Thats STDOUT" >>(sed 's/stdout/another example/' > foobar)

ZMV-ตัวอย่าง (จำเป็นต้อง โหลดอัตโนมัติ zmv)
หมายเหตุ -n หมายความว่าไม่มีการดำเนินการ (เพียงแค่พิมพ์สิ่งที่จะเกิดขึ้น) ที่

# ลบอักขระที่ผิดกฎหมายในระบบไฟล์ fat32 อักขระที่ไม่ถูกต้องคือ
# / : ; * ? " < > |
# หมายเหตุ: ``-Q'' และ (D) คือการรวมไฟล์ที่ซ่อนอยู่
$ ไม่ต้องการ='[:;*?\"<>|]'
$ zmv -Q "(**/)(*$~unwanted*)(D)" '$1${2//$~unwanted/}'

# การเปลี่ยนชื่อไฟล์บางส่วน (เช่น "file-hell.name" -> "file-heaven.name")
$ zmv '(*)hell(*)' '${1}สวรรค์${2}'
# หรือ
$ zmv '*' '$f:s/hell/heaven/'

# ลบวงเล็บเหลี่ยมภายในชื่อไฟล์
# เช่น foo-(bar).avi -> foo-bar.avi
$ zmv '*' '${f//[()]/}'

# ลำดับไฟล์ทั้งหมด (foo.foo > 1.foo, fnord.foo > 2.foo, ..)
$ โหลดอัตโนมัติ zmv
$ ล. *
1.ค asd.foo bla.foo fnord.foo foo.fnord foo.foo
$ c=1 zmv '*.foo' '$((c++)).foo'
$ ล. *
1.c 1.foo 2.foo 3.foo 4.foo foo.fnord

# เปลี่ยนชื่อ "file.with.many.dots.txt" โดยแทนที่จุด (ยกเว้นอันสุดท้าย
#หนึ่ง!) ด้วยช่องว่าง
$ สัมผัส {1..20}-file.with.many.dots.txt
$ zmv '(*.*)(.*)' '${1/- }$2'

# ลบ 4 ตัวอักษรแรกออกจากชื่อไฟล์
$ zmv -n '*' '$f[5,-1]' # หมายเหตุ: "5" ไม่ใช่ความผิดพลาดในการเขียน!

# เปลี่ยนชื่อไฟล์ทั้งหมดภายใต้ Dir ปัจจุบันเป็นตัวพิมพ์เล็ก แต่ให้
# dirnames ตามที่เป็น
$ zmv -Qv '(**/)(*)(.D)' '$1${(L)2}'

# แทนที่อักขระตัวที่ 4 ทั้งหมด ซึ่งก็คือ "1" ด้วย "2" เป็นต้น
$ โหลดอัตโนมัติ -U zmv
$ zmv '(???)1(???[1-4].txt)' '${1}2${2}'

# ลบอักขระ 15 ตัวแรกออกจากสตริง
$ แตะ 111111111111111{az}
$ โหลดอัตโนมัติ zmv
$ zmv '*' '$f[16,-1]'

# แทนที่ช่องว่าง (จำนวนเท่าใดก็ได้) ด้วยเครื่องหมายขีดเดียวในชื่อไฟล์
$ โหลด zmv
$ zmv -n '(**/)(* *)' '$1${2//( #-## #| ##)/-}'
# หรือ - กับ Bash
$ ค้นหา -deep -name '* *' -exec bash -c '
> shopt -s extglob
> file=$1
> dir=${ไฟล์%/*}
> ชื่อ=${ไฟล์##*/}
> newname=${name//*([ -]) *([ -])/-}
> mv -i -- "$file" "$Dir/$newname"' {} {} \;

# ล้างชื่อไฟล์และลบอักขระพิเศษ
$ โหลดอัตโนมัติ zmv
$ zmv -n '(**/)(*)' '$1${2//[^A-Za-z0-9._]/_}'

# เพิ่ม *.py ให้กับสคริปต์หลามจำนวนมากในไดเร็กทอรี (บางอันจบ
# ใน *.py และให้นามสกุลที่เหมาะสมทั้งหมด
$ โหลดอัตโนมัติ zmv
$ zmv -n '(**/)(con*)(#qe,file $REPLY | grep "python script",)' '$1$2.py'

# ตัวพิมพ์เล็ก นามสกุลทั้งหมด (เช่น *.JPG) รวม โฟลเดอร์ย่อย
$ โหลดอัตโนมัติ zmv
$ zmv '(**/)(*).(#i)jpg' '$1$2.jpg'
# หรือ - ไม่มี Zsh
$ ค้นหา Dir -name '*.[jJ][pP][gG]' -print | ขณะอ่าน f
> ทำ
> กรณี $f ใน
> *.jpg) ;
> *) mv "$f" "${f%.*}.jpg" loading="lazy" ;
> esac
>เสร็จแล้ว

# ลบเลขศูนย์นำหน้าออกจากนามสกุลไฟล์
$ โหลดอัตโนมัติ zmv
$ ล
ชื่อไฟล์.001 ชื่อไฟล์.003 ชื่อไฟล์.005 ชื่อไฟล์.007 ชื่อไฟล์.009
ชื่อไฟล์.002 ชื่อไฟล์.004 ชื่อไฟล์.006 ชื่อไฟล์.008 ชื่อไฟล์.010
$ zmv '(ชื่อไฟล์.)0##(?*)' '$1$2'
$ ล
filename.1 filename.10 filename.2 ชื่อไฟล์.3 filename.4 filename.5 ..

# ไฟล์หมายเลขใหม่
$ โหลดอัตโนมัติ zmv
$ ล. *
foo_10.jpg foo_2.jpg foo_3.jpg foo_4.jpg foo_5.jpg foo_6.jpg ..
$ zmv -fQ 'foo_(<0->).jpg(.nOn)' 'foo_$(($1 + 1)).jpg'
$ ล. *
foo_10.jpg foo_11.jpg foo_3.jpg foo_4.jpg foo_5.jpg ...

# เพิ่มเลขศูนย์นำหน้าชื่อไฟล์ (1.jpg -> 001.jpg, ..
$ โหลดอัตโนมัติ zmv
$ zmv '(<1->).jpg' '${(l:3::0:)1}.jpg'

# ดูด้านบนแต่ตอนนี้เฉพาะไฟล์ที่มีชื่อไฟล์ >= 30 ตัวอักษร
$ โหลดอัตโนมัติ zmv
$ c=1 zmv "${(l:30-4::?:)}*.foo" '$((c++)).foo'

# แทนที่ช่องว่างในชื่อไฟล์ด้วยการขีดเส้นใต้
$ โหลดอัตโนมัติ zmv
$ zmv '* *' '$f:gs/ /_'

# เปลี่ยนคำต่อท้ายจาก *.sh เป็น *.pl
$ โหลดอัตโนมัติ zmv
$ zmv -W '*.sh' '*.pl'

# เพิ่มนามสกุล "".txt" ให้กับไฟล์ทั้งหมดภายใน ${HOME}
# ``-.'' คือเปลี่ยนชื่อไฟล์ปกติหรือ symlink เป็นไฟล์ปกติเท่านั้น
# ``D'' คือการเปลี่ยนชื่อไฟล์ที่ซ่อนอยู่ด้วย (dotfiles))
$ โหลดอัตโนมัติ zmv
$ zmv -Q '/บ้าน/**/*(ด-.)' '$f.txt'
# หรือเปลี่ยนชื่อเฉพาะไฟล์ที่ไม่มีนามสกุล:
$ zmv -Q '/บ้าน/**/^?*.*(D-.)' '$f.txt'

# เปลี่ยนชื่อไฟล์ซ้ำ ๆ ด้วยตัวอักษร ? [ ] / = + < > ; : " , - *
$ โหลดอัตโนมัติ zmv
$ chars='[][?=+<>;",*-]'
$ zmv '(**/)(*)' '$1${2//$~chars/%}'

# การลบเครื่องหมายคำพูดเดียวออกจากชื่อไฟล์ (เรียกซ้ำ)
$ โหลดอัตโนมัติ zmv
$ zmv -Q "(**/)(*'*)(D)" "\$1\${2//'/}"

# เมื่อไฟล์ใหม่มาถึง (ชื่อ file.txt) ให้เปลี่ยนชื่อไฟล์ทั้งหมดเป็น
# รับ (เช่น file119.txt กลายเป็น file120.txt, file118.txt กลายเป็น
# file119.txt และอื่นๆ ที่ลงท้ายด้วย file.txt กลายเป็น file1.txt
$ โหลดอัตโนมัติ zmv
$ zmv -fQ 'file([0-9]##).txt(On)' 'file$(($1 + 1)).txt'

# ตัวพิมพ์เล็ก/ตัวพิมพ์ใหญ่ ไฟล์ทั้งหมด/ไดเรกทอรี
$ โหลดอัตโนมัติ zmv
$ zmv '(*)' '${(L)1}' # ตัวพิมพ์เล็ก
$ zmv '(*)' '${(U)1}' # ตัวพิมพ์ใหญ่

# ลบส่วนต่อท้าย *.c ออกจาก C-Files . ทั้งหมด
$ โหลดอัตโนมัติ zmv
$ zmv '(*).c' '$1'

# ตัวพิมพ์ใหญ่เฉพาะอักษรตัวแรกของทั้งหมด *.mp3 - files
$ โหลดอัตโนมัติ zmv
$ zmv '([az])(*).mp3' '${(C)1}$2.mp3'

# คัดลอกเป้าหมาย 'README' ในไดเรกทอรีเดียวกันกับแต่ละ 'Makefile'
$ โหลดอัตโนมัติ zmv
$ zmv -C '(**/)Makefile' '${1}README'

# การลบเครื่องหมายคำพูดเดียวออกจากชื่อไฟล์ (เรียกซ้ำ)
$ โหลดอัตโนมัติ zmv
$ zmv -Q "(**/)(*'*)(D)" "\$1\${2//'/}"

# เปลี่ยนชื่อ pic1.jpg, pic2.jpg, .. เป็น pic0001.jpg, pic0002.jpg, ..
$ โหลดอัตโนมัติ zmv
$ zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg'
$ zmv '(**/)pic(*).jpg' '$1/pic${(l:4::0:)2}.jpg' # แบบเรียกซ้ำ

โมดูล-ตัวอย่าง
กรุณาอ่าน zshโมดูล(1) ก่อน!

zsh/พีซีเร (จำเป็นต้อง zmodload zsh/พีซีเร)
# คัดลอกไฟล์ในช่วงเวลาหนึ่ง (วันที่ระบุในชื่อไฟล์)
$ zmodload zsh/พีซีเร
$ ls -d -- *(e:'[[ $REPLY -pcre-match pcre-regexp ]]':)
# หรือ
$ ม.() { [[ $1 -pcre-match pcre-regexp ]] }
$ ls -d -- *(+ม)

zsh/โคลน (จำเป็นต้อง zmodload zsh/โคลน)
# สร้างอินสแตนซ์ที่แยกจากเปลือกปัจจุบัน ($! ถูกตั้งค่าเป็นศูนย์) และ
# ดำเนินการ ``คำสั่ง'' บน /dev/tty8 (สำหรับตัวอย่างนี้)
$ zmodload zsh/โคลน
$ clone /dev/tty8 && (($! == 0)) && exec command

zsh/วันที่และเวลา (จำเป็นต้อง zmodload zsh/วันที่เวลา)
$ zmodload zsh/วันที่และเวลา
$ alias datereplacement='strftime "%Y-%m-%d" $EPOCHSECONDS'
$ ส่งออก DATE=`datereplacement`
$ เสียงสะท้อน $DATE

# ถอดวันที่จากชื่อไฟล์
$ $ zmodload zsh/วันที่และเวลา
$ setopt Extendedglob
$ แตะ aaa_bbb_20041212_c.dat eee_fff_20051019_g.dat
$ strftime -s รูปแบบ \
'???_???_<0-%Y%m%d>_?.dat' $((EPOCHSECONDS - 365 * 24 * 60 * 60 / 2))
$ พิมพ์ -rl -- $~รูปแบบ
aaa_bbb_20041212_c.dat
$ พิมพ์ -rl -- $pattern
???_???_<0-20050815>_?.dat

# ค้นหาขนาดไฟล์ == 0 ให้ยึดตามชื่อไฟล์ที่มีวันที่
# แทนที่จะเป็นวันที่ "แก้ไขล่าสุด" ของไฟล์
$ zmodload -i zsh/datetime
$ strftime -s ไฟล์ "abc_de_%m%d%Y.dat" $((EPOCHSECONDS - 24 * 60 * 60 ))
$ file=(**/$file(N.L0))
$ (( $#files > 0 )) && print -rl -- $files | \
mailx -s "ไฟล์ว่าง" [ป้องกันอีเมล]

zsh/สถิติ (จำเป็นต้อง zmodload zsh/สถิติ)
# ทดสอบว่าลิงก์สัญลักษณ์เชื่อมโยงไปยังไฟล์บางไฟล์หรือไม่
$ zmodload -i zsh/stat
$ ! stat -LH s foo.ln || [[ $s[link] != "foo.exe" ]] || ln -sf foo.exe foo.ln

# เปรียบเทียบวันที่ไฟล์
$ zmodload zsh/สถิติ
$file1=ฟู
$file2=บาร์
$ touch bar & sleep 5 & touch foo
$ echo $file1 คือ $(($(stat +mtime $file2) - \
$(stat +mtime $file1))) วินาทีที่เก่ากว่า $file2
bar แก่กว่า foo 5 วินาที

# แสดงรายการไฟล์ของดิสก์ที่เล็กกว่าไฟล์อื่น
$ zmodload zsh/สถิติ
$ stat -A สูงสุด +ขนาดไฟล์อื่น
$ print -rl ./**/*(DL-$max)

# แสดงรายการไฟล์ที่ใหญ่ที่สุด 100 อันดับแรกในดิสก์
$ zmodload zsh/สถิติ
$ ls -fld ./**/*(d`stat + อุปกรณ์ .`OL [1,100])

# รับเฉพาะชื่อผู้ใช้และชื่อไฟล์จาก (like
# ls -l * | awk '{พิมพ์ $3" " $8}')
$ zmodload zsh/สถิติ
$ สำหรับไฟล์; ทำ
> stat -sA ผู้ใช้ +uid -- "$file" &&
> print -r -- "$user" "$file"
>เสร็จแล้ว

# รับความแตกต่างระหว่างไบต์จริงของไฟล์และไบต์ที่จัดสรรของไฟล์
$ zmodload zsh/สถิติ
$ พิมพ์ $(($(สถิติ +บล็อก -- ไฟล์) * 512 - $(สถิติ +ขนาด -- ไฟล์)))

# ค้นหาไฟล์ที่ใหญ่ที่สุด
# ``D'' : เพื่อรวมไฟล์จุด (d ตัวพิมพ์เล็กสำหรับอุปกรณ์)
# ``O'' : เรียงลำดับแบบย้อนกลับ (o ตัวพิมพ์เล็กสำหรับลำดับที่ไม่ย้อนกลับ)
# ``L'' : ตามความยาวไฟล์ (l สำหรับจำนวนลิงก์)
# ``[1]'': ส่งคืนอันแรกเท่านั้น
$ zmodload zsh/สถิติ
$ สถิติ +ขนาด ./*(DOL[1])

# ขนาดไฟล์เป็นไบต์
$ zmodload zsh/สถิติ
$ สถิติ -L +ขนาด ~ / .zshrc
4707

# ลบไฟล์ในไดเร็กทอรีที่ไม่มีการเข้าถึงในช่วงสิบวันที่ผ่านมา
# และส่ง ONE Mail ถึงเจ้าของไฟล์เพื่อแจ้งให้เขา/เธอทราบถึงไฟล์'
#การลบ.
$ zmodload zsh/stat zsh/ไฟล์
$ เรียงพิมพ์ -A f; ฉ=()
$ rm -f /path/**/*(.a+10e{'stat -sA u +uidr $REPLY; f[$u]="$f[$u]$REPLY"'})
$ สำหรับผู้ใช้ (${(k)f}) {print -rn $f[$user]|mailx -s "..." $user}

# รับ "ls -l" ในไฟล์ทั้งหมดในทรีที่อายุน้อยกว่า a
#ระบุอายุ
$ zmodload zsh/สถิติ
$ สำหรับ d (. ./**/*(N/m-2))
> พิมพ์ -r -- $'\n'$d: && cd $d && {
> สำหรับ f (*(Nm-2om))
> stat -F '%b %d %H:%M' -LsAs -- $f &&
> พิมพ์ -r -- $s[3] ${(l:4:)s[4]} ${(l:8:)s[5]} \
> ${(l:8:)s[6]} ${(l:8:)s[8]} $s[10] $f ${s[14]:+-> $s[14]}
> ซีดี ~-
> }

# รับวันที่สร้างไฟล์
$ zmodload zsh/สถิติ
$ stat -F '%d %m %Y' +mtime ~ / .zshrc
30 06 2004
$ stat -F '%D' +mtime ~ / .zshrc
06/30/04

zsh/ไฟล์ (จำเป็นต้อง zmodload zsh/ไฟล์)
# ค้นหาไดเร็กทอรีสำหรับไฟล์ที่มีสตริงบางตัว จากนั้นคัดลอกไฟล์เหล่านั้น
# ไฟล์ไปยังไดเร็กทอรีอื่น
$ zmodload zsh/ไฟล์
$ ไอเอฟเอส=$'\0'
$ cp $(grep -lZr foobar .) ไดเรกทอรีอื่น

zsh/แผนที่ไฟล์ (จำเป็นต้อง zmodload zsh/แมปไฟล์)
#เกรปปิ้งสองลาย
$ zmodload zsh/ไฟล์แผนที่
$ pattern1="foo"
$ pattern2="bar foo"
$ พิมพ์ -l ./**/*(DN.e{'z=$mapfile[$REPLY] && [[ $z = *$pattern1* && \
$z = *$pattern2* ]]'})
# หรือวิธีแก้ปัญหาร่วมกับ zsh/pcre
$ zmodload -i zsh/mapfile zsh/pcre
$ pattern1="foo"
$ pattern2="bar foo"
$ pcre_compile "(?s)(?=.*?$pattern1).*?$pattern2"
$pcre_study
$ print -l ./**/*(DN.e{'pcre_match $mapfile[$REPLY]'})

# เทียบเท่ากับ ``less / etc / passwd | grep -v รูท''
$ zmodload zsh/ไฟล์แผนที่
$ IFS=$'\n\n'
$ พิมพ์ -rl -- ${${=mapfile[/ etc / passwd]}:#*ราก*}
# หรือ - สำหรับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
$ setopt Extendedglob
$ พิมพ์ -rl -- ${${=mapfile[/ etc / passwd]}:#*(#i)รูท*}

# หากไฟล์ XML มีเนื้อหาเช่น `` '' และ `` '', ตัวเลข
# แท็กว่างนี้ (ที่ลงท้ายด้วย '/>') ดังนั้นหากพบในแท็กเดียวกัน
# คำสั่ง แท็กที่อยู่ข้างหน้าจะกลายเป็น `` 1 '' และ
# `` 2 ''
$ zmodload zsh/ไฟล์แผนที่
$cnt=0
$ apfile[data.xml.new]=${(S)ไฟล์แผนที่[data.xml]//\
> (#อิม) *<\/TAGA>/ $((++cnt))<\/TAGA>}

# ลบไฟล์ทั้งหมดในผู้ใช้ Maildir/new ที่มี ``filename="gone.src''
$ zmodload zsh/{ไฟล์,mapfile}
$ rm -f /u1/??/*/Maildir/new/100*(.e{'[[ $mapfile[$REPLY] == \
*filename=\"gone.scr\"* ]]'})

# แยกชื่อจากไฟล์คำลงท้ายและต่อท้ายค่านั้นกับ
#ท้ายชื่อไฟล์
$ โหลดอัตโนมัติ -U zmv
$ zmodload zsh/ไฟล์แผนที่
$ zmv '(*).ps' '$1-${${${mapfile[$f]##*%%Title: }%% *}//[^a-zA-Z0-9_]/}. ปล.

zsh/mathfunc.zsh (จำเป็นต้อง zmodload zsh/คณิตศาสตร์)
$ zmodload zsh/mathfunc
$ echo $(( บาป (1/4.0)**2 + cos(1/4.0)**2 - 1 ))
-1.1102230246251565e-16
$ echo $(( pi = 4.0 * แทน (1.0) ))
3.1415926535897931
$ echo $(( f = บาป(0.3) ))
0.29552020666133955
$ พิมพ์ $((1e12 * rand48()))
847909677310.23413
$ พิมพ์ $(( rand48(เมล็ด) ))
0.01043488334700271

zsh/termcap.zsh (จำเป็นต้อง zmodload zsh/เทอมแคป)
$ zmodload -ab zsh/termcap echotc
$ GREEN=`สะท้อน AF 2`
$ สีเหลือง=`สะท้อน AF 3`
$ RED=`สะท้อน AF 1`
$ BRIGHTRED=`สะท้อน md ; echotc AF 1`
$ พิมพ์ -l ${GREEN}เขียว ${YELLOW}เหลือง ${RED}แดง ${BRIGHTRED}สว่าง

zsh/zpty.zsh (จำเป็นต้อง zmodload zsh/zpty)
$ zmodload zsh/zpty.dll
$ zpty PW รหัสผ่าน $1
$ zpty PW รหัสผ่าน $1
# ``-r'': อ่านผลลัพธ์ของชื่อคำสั่ง
# ``z'' : พารามิเตอร์
$ zpty -r PW z '*รหัสผ่าน:'
# ส่งชื่อคำสั่งไปยังสตริงที่กำหนดเป็นอินพุต
$zpty -w PW $2
$ zpty -r PW z '*รหัสผ่าน:'
$zpty -w PW $2
# รูปแบบที่สองพร้อมตัวเลือก -d ใช้เพื่อลบคำสั่ง
#เริ่มแล้วโดยแจ้งรายชื่อ ถ้าไม่มีชื่อ
# จะได้รับคำสั่งทั้งหมดจะถูกลบ การลบคำสั่งทำให้เกิด HUP
# สัญญาณที่จะถูกส่งไปยังกระบวนการที่เกี่ยวข้อง
$zpty -d พีดับบลิว

zsh/net/ซ็อกเก็ต (จำเป็นต้อง zmodload zsh/สุทธิ/ซ็อกเก็ต)
# ``-l'': เปิดซ็อกเก็ตที่ฟังชื่อไฟล์
# ``-d'': อาร์กิวเมนต์จะถูกนำไปใช้เป็นตัวอธิบายไฟล์เป้าหมายสำหรับ
# การเชื่อมต่อ
# ``3'' : file descriptor. ดู ``คู่มือผู้ใช้สำหรับ Z-Shell''
# (3.7.2: ตัวอธิบายไฟล์)
$ zmodload zsh/net/socket.php
$zsocket -l -d 3
# ``-a'': ยอมรับการเชื่อมต่อขาเข้ากับซ็อกเก็ต
$zsocket -a -d 4 3
$ zsocket -a -d 5 3 # ยอมรับการเชื่อมต่อ
$ echo foobar >&4
$ echo barfoo >&5
$ 4>&- 5>&- 3>&

zsh/zftp.zsh (จำเป็นต้อง zmodload zsh/zftp)
$ โหลดอัตโนมัติ -U zfinit
$zfinit
$ zfparams www.example.myuserid รหัสผ่านของฉันไม่ถูกต้อง
$zfopen
$ เคล็ดลับ zfcd
$zfls -l zshtips.html
$zfput zshtips.html
$zfls -l zshtips.html

# ถ่ายโอนไฟล์โดยอัตโนมัติโดยใช้ FTP พร้อมการตรวจสอบข้อผิดพลาด
$ โหลดอัตโนมัติ -U zfinit ; zfinit
$ zftp เปิด host.name.invalid user passwd || ทางออก
$ zftp รับ /remote/file > /local/file; ร=$?
$ zftp ปิด && ออก r

# บีบอัดและ ftp ได้ทันที
$ โหลดอัตโนมัติ -U zfinit ; zfinit
$ zftp เปิด host.name.รหัสผ่านผู้ใช้ไม่ถูกต้อง
$ zftp รับ $file | bzip2 > ${file}.bz2
$ zftp ปิด

# เรียกซ้ำ ``ได้รับ''
$ โหลดอัตโนมัติ -U zfinit ; zfinit
$zfanon cr.yp.to
$zfcd daemontools
$ สำหรับไฟล์ใน `zfls' ; ทำ
> zfget $file
$ เสร็จแล้ว
$zfปิด

# อัปโหลดไฟล์ปกติทั้งหมดใน $HOME/foobar (แบบเรียกซ้ำ) ที่ใหม่กว่า
# สองชั่วโมงเพื่อ ftp.foobar.invalid/path/to/upload
$ โหลดอัตโนมัติ -U zfinit ; zfinit
$zfopen ftp.foobar.invalid/path/to/upload
$ ซีดี $HOME/foobar
$ zfput -r **/*(.mh-2)
$zfปิด

# รายการไฟล์ยาวบน ftp
$ โหลดอัตโนมัติ -U zfinit ; zfinit
$ zfopen บางโฮสต์
$zfcd /some/remote/ผบ
$ cd /some/local/ผบ
# หาก list.txt อยู่บนรีโมตโฮสต์ ให้เปลี่ยนเป็น
# zfget ${(f)"$(zftp get /path/to/remote/list.txt)"}
$ zfget ${(f)"$(cat list.txt)"}
$zfปิด

zsh/zเลือก (จำเป็นต้อง zmodload zsh/zเลือก)
#มันคล้ายกับ
-
| $sg=$(stty -g)
| $ stty -icanon ขั้นต่ำ 0 เวลา 50
| $ อ่านใช่ไม่ใช่
| $ stty "$sg"
| $ case "$yesno" ใน
| > ใช่) command1;;
| > *) command2;;
| > esac
-
$ zmodload zsh/zเลือก
$ if zselect -t 500 -r 0 && อ่านว่า yesno && [ yes = "$yesno" ]; แล้ว
> command1
> อื่นๆ
> command1
> fi

OPTIONS


การเดินเรือ ตัวเลือก
ออโต้_ซีดี (อนุญาตให้เปลี่ยนเป็นไดเร็กทอรีโดยป้อนเป็นคำสั่ง) auto_push
(เพิ่ม dirs ต่อท้ายรายการพุช/ป๊อปโดยอัตโนมัติ) pushd_ignore_dups (และไม่ทำซ้ำ
พวกเขา)

อื่น ๆ
no_hup (อย่าส่งสัญญาณ HUP ไปยังงานพื้นหลังเมื่อออกจาก ZSH) print_exit_value (แสดง
ข้อความที่มีรหัสออกเมื่อคำสั่งส่งคืนด้วยรหัสออกที่ไม่ใช่ศูนย์)

ประวัติขององค์กร ตัวเลือก
hist_verify (ให้ผู้ใช้แก้ไขบรรทัดคำสั่งหลังการขยายประวัติ (เช่น !ls)
แทนที่จะเรียกใช้ทันที) ใช้ไฟล์ประวัติเดียวกันสำหรับทุกเซสชัน: การตั้งค่า
SHARE_ประวัติ

ความเป็นส่วนตัว / ความปลอดภัย
no_clobber (หรือตั้งค่า -C; ป้องกัน > การเปลี่ยนเส้นทางจากการตัดทอนไฟล์ที่กำหนดหากมัน
มีอยู่แล้ว)

การสะกดคำ การแก้ไข
แก้ไข (แก้ไขการสะกดของคำสั่งโดยอัตโนมัติ) ถูกต้อง_ทั้งหมด (โดยอัตโนมัติ
แก้ไขการสะกดคำแต่ละคำในบรรทัดคำสั่ง) Dvorak (เค้าโครง dvorak)

ไม่ได้รับการคัดแยก/เบ็ดเตล็ด


Mailpath: หลายเส้นทางแบบง่าย:

mailpath=($HOME/Mail/mbox'?จดหมายใหม่ใน mbox'
$HOME/Mail/tux.u-strasbg'?จดหมายใหม่ใน tux'
$HOME/Mail/lilo'?จดหมายใหม่ใน lilo'
$HOME/Mail/ldap-fr'?เมลใหม่ใน ldap-fr')

Mailpath: เส้นทางจดหมายแบบไดนามิก:

เรียงพิมพ์ -a mailpath
สำหรับฉันใน ~/เมล/รายการ/*(.); ทำ
mailpath[$#mailpath+1]="${i}?คุณมีจดหมายใหม่ใน ${i:t}"
ทำ

หลีกเลี่ยงการ globbing บนคำสั่งพิเศษ:

สำหรับ com ในนามแฝง expr ค้นหา mattrib mcopy mdir mdel ซึ่ง;
นามแฝง $com="noglob $com"

สำหรับการโยกย้าย bashprompt ของคุณไปที่ zsh ให้ใช้สคริปต์ bash2zshprompt ที่อยู่ใน zsh
แหล่งจำหน่ายภายใต้ อื่น ๆ.

สำหรับการโยกย้ายจาก (t)csh เป็น zsh ให้ใช้เครื่องมือ c2z ที่แปลงนามแฝง csh และ
ตัวแปรสภาพแวดล้อมและเชลล์เป็น zsh มันทำได้โดยการรัน csh และมีรายงาน csh
บนนามแฝงและตัวแปร สคริปต์จะแปลงไฟล์เหล่านี้เป็นไฟล์เริ่มต้น zsh มันมีบ้าง
ปัญหาและข้อมูลการใช้งานที่บันทึกไว้ที่ด้านบนของสคริปต์นี้

นี่คือฟังก์ชั่นในการตั้งชื่อและสถานะฮาร์ดของan เอ็กซ์เทอม หรือจาก GNU จอภาพ ไปยัง zsh and
ไดเร็กทอรีปัจจุบันตามลำดับเมื่อแสดงพร้อมต์และไปที่ชื่อคำสั่ง
และบรรทัดคำสั่งที่เหลือตามลำดับ เมื่อดำเนินการคำสั่ง:

ชื่อฟังก์ชัน {
ถ้า [[ $TERM == "หน้าจอ" ]]; แล้ว
# ใช้สองสิ่งนี้สำหรับหน้าจอ GNU:
พิมพ์ -nR $' 33k'$1$' 33'\
พิมพ์ -nR $' 33]0;'$2$''
เอลฟ์ [[ $TERM == "xterm" || $TERM == "rxvt" ]]; แล้ว
# ใช้อันนี้แทนสำหรับ XTerms:
พิมพ์ -nR $' 33]0;'$*$''
fi
}
ฟังก์ชั่น precmd { ชื่อ zsh "$PWD" }
ฟังก์ชั่น preexec {
เลียนแบบ -L zsh
ท้องถิ่น -a cmd; cmd=(${(z)1})
ชื่อ $cmd[1]:t "$cmd[2,-1]"
}

ใส่บรรทัดต่อไปนี้ลงใน your ~/.screenrc เพื่อดูสถานะฮาร์ดแฟนซีนี้:

คำบรรยายเสมอ "%3n %t%? (%u)%?%?: %h%?"

ตัวแปรพิเศษที่ได้รับมอบหมาย:

$LINENO $สุ่ม $วินาที $คอลัมน์ $HISTCHARS $UID
$EUID $GID $EGID $USERNAME $fignore $mailpath $cdpath

ลิงค์


ไซต์หลัก

http://www.zsh.org/

หน้าโครงการ

http://sourceforge.net/projects/zsh/

หน้าเปลือก Z ที่ sunsite.dk

http://zsh.sunsite.dk/

จาก Bash ถึง Z Shell: พิชิต Command Line - หนังสือ

http://www.bash2zsh.com/

"Zsh - die magische Shell" (หนังสือภาษาเยอรมันเกี่ยวกับ Zsh) โดย Sven Guckes และ Julius Plenz

http://zshbuch.org/

Mailinglistarchive

http://www.zsh.org/mla/

ZSH-คำถามที่พบบ่อย

http://zsh.dotsrc.org/FAQ/

คู่มือผู้ใช้

http://zsh.sunsite.dk/Guide/

ZSH-วิกิ

http://zshwiki.org/home/

คำแนะนำสั้น ๆ จาก BYU

http://docs.cs.byu.edu/linux/advanced/zsh.html

เมาส์สนับสนุน ;)

http://stchaz.free.fr/mouse.zsh

ปิดม่าน: แนะนำเปลือก Z

http://www-128.ibm.com/developerworks/linux/library/l-z.html?dwzone=ลินุกซ์

ZSH-Liebhaberseite (เยอรมัน)

http://michael-prokop.at/computer/tools_zsh_liebhaber.html

ZSH-Seite ฟอน Michael Prokop (เยอรมัน)

http://michael-prokop.at/computer/tools_zsh.html

ZSH Prompt บทนำ

http://aperiodic.net/phil/prompt/

เพจ ZSH ของอดัม

http://www.adamspiers.org/computing/zsh/

Zzappers สุดยอดเคล็ดลับ ZSH

http://www.rayninfo.co.uk/tips/zshtips.html

Zsh หน้าเว็บโดย Christian Schneider

http://www.strcat.de/zsh/

หน้าเว็บคนรัก zsh

http://grml.org/zsh/

ช่องไออาร์ซี

#zsh at irc.freenode.org

การ์ดอ้างอิงเปลือก Z (รวมอยู่ในแพ็คเกจเดเบียนคนรัก zsh)

http://www.bash2zsh.com/zsh_refcard/refcard.pdf

ผู้เขียน


manpage นี้เขียนโดย Michael Prokop, Christian สเตรทแคท Schneider และ Matthias
คอปเฟอร์มานน์ แต่มีความคิดมากมายที่นำมาจาก zsh-geeks เช่น จาก zsh-mailinglists
(ผู้ใช้ zsh และ zsh-workers), google, กลุ่มข่าวสาร และ zsh-Wiki ขอบคุณสำหรับความเย็นและ
เคล็ดลับที่เหลือเชื่อ เราเรียนรู้มากมายจากคุณ!

ตามลำดับตัวอักษร:

Andrew 'zefram' หลัก - http://www.fysh.org/~zefram/
บาร์ตัน อี. เชฟเฟอร์ - http://www.well.com/user/barts/
แมทเธียส คอปเฟอร์มานน์ - http://www.infodrom.north.de/~matthi/
โอลิเวอร์ คิดเดิ้ล - http://people.freenet.de/opk/
พอล ฟัลสตัด - http://www.falstad.com/
ปีเตอร์ สตีเฟนสัน - http://homepage.ntlworld.com/p.w.stephenson/
ริชาร์ด โคลแมน
สเตฟาน ชาเซลาส - http://stephane.chazelas.free.fr/
สเวน กุกส์ - http://www.guckes.net/
สเวน วิชโนว์สกี้ - http://w9y.de/zsh/zshrc

ใช้ zsh-lovers ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad