zsh: Cara memeriksa apakah opsi diaktifkan


39

Untuk mengaktifkan opsi, kita bisa menggunakan setopt. misalnya:

setopt extended_glob

Bagaimana kita dapat memeriksa apakah opsi saat ini diaktifkan?

Jawaban:


42

Di zsh, Anda dapat menggunakan setoptuntuk menampilkan opsi yang diaktifkan dan unsetoptuntuk menunjukkan yang tidak diaktifkan:

$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle

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

Di bash, Anda bisa menggunakan shopt -p.


Perlu dicatat bahwa setopthanya mencetak opsi yang tidak diaktifkan secara default untuk mode emulasi itu.
llua

6
Anda harus menggunakan set -odaftar FULL.
Kutsan Kaplan

16

Cukup gunakan:

[[ -o extended_glob ]]

Itu juga berfungsi bash, tetapi hanya untuk opsi yang ditetapkan oleh set -o, bukan yang ditetapkan oleh shopt. zshhanya memiliki satu set opsi yang dapat diatur dengan salah satu setoptatau set -o.

Sama seperti dengan bash(atau shell POSIX), Anda juga dapat melakukan set -oatau set +omelihat pengaturan opsi saat ini.


11

The zsh/parametermodul, yang merupakan bagian dari distribusi default, menyediakan array asosiatif optionsyang menunjukkan opsi yang di.

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

Untuk opsi yang memiliki alias satu huruf (yang bukan merupakan kasus extended_glob), Anda juga dapat memeriksa $-.

Perhatikan bahwa jarang berguna untuk menguji opsi mana yang diaktifkan. Jika Anda perlu mengaktifkan atau menonaktifkan opsi dalam sepotong kode, masukkan kode itu ke dalam fungsi dan atur local_optionsopsi. Anda dapat memanggil emulatebuiltin untuk mengatur ulang opsi ke kondisi default.

my_function () {
  setopt extended_glob local_options
}
another_function () {
  emulate -L zsh
  setopt extended_glob
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.