zsh: วิธีตรวจสอบว่ามีการเปิดใช้งานตัวเลือกหรือไม่


39

setoptต้องการเปิดใช้งานตัวเลือกที่เราสามารถใช้ เช่น:

setopt extended_glob

เราจะตรวจสอบได้อย่างไรว่าตัวเลือกนั้นเปิดใช้งานอยู่หรือไม่?

คำตอบ:


41

ในzshคุณสามารถใช้setoptเพื่อแสดงตัวเลือกที่เปิดใช้งานและunsetoptเพื่อแสดงว่าไม่ได้เปิดใช้งาน:

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....

ในคุณสามารถใช้bashshopt -p


ควรสังเกตว่าsetoptพิมพ์เฉพาะตัวเลือกที่ไม่ได้เปิดใช้งานตามค่าเริ่มต้นสำหรับโหมดการจำลองนั้น
llua

6
คุณควรใช้set -oสำหรับรายการทั้งหมด
Kutsan Kaplan

16

เพียงใช้:

[[ -o extended_glob ]]

ที่ยังทำงานในbashแต่สำหรับตัวเลือกที่กำหนดโดยไม่ได้ตั้งค่าเหล่านั้นด้วยset -o มีเพียงหนึ่งชุดของตัวเลือกซึ่งสามารถตั้งค่าด้วยหรือshoptzshsetoptset -o

เช่นเดียวกับbash(หรือ POSIX เชลล์) คุณสามารถทำset -oหรือset +oดูการตั้งค่าตัวเลือกปัจจุบัน


11

zsh/parameterโมดูลซึ่งเป็นส่วนหนึ่งของการกระจายเริ่มต้นให้อาเรย์optionsที่บ่งชี้ว่าตัวเลือกที่อยู่ใน

if [[ $options[extended_glob] = on ]]; then 

สำหรับตัวเลือกที่มีนามแฝงตัวอักษรเดียว (ซึ่งไม่ใช่กรณีextended_glob) คุณสามารถตรวจสอบ$-ได้

โปรดทราบว่ามันไม่ค่อยมีประโยชน์ในการทดสอบตัวเลือกที่เปิดใช้งาน หากคุณต้องการเปิดใช้งานหรือปิดการใช้งานตัวเลือกในชิ้นส่วนของรหัสใส่รหัสนั้นในฟังก์ชั่นและตั้งค่าlocal_optionsตัวเลือก คุณสามารถเรียกemulatebuiltin เพื่อรีเซ็ตตัวเลือกให้เป็นสถานะเริ่มต้น

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