34
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

zshでオプション一覧の出力を分かりやすくする

前の記事でも紹介したけど、zshですべてのオプションの設定を一覧表示したいときは、set -oコマンドを使う。

set -o
noaliases             off
allexport             off
noalwayslastprompt    off
alwaystoend           off
noappendhistory       off
autocd                on
autocontinue          off
noautolist            off
... 以下省略 ...

でもこれにはちょっと罠があって、先頭にnoが付いているオプションはon/offが逆になる。

例えばさっきの例では、「noaliasesがoff」と出力されている。

noaliases             off

これは、実は「aliasesオプションがon」であることを表している。つまり、先頭にnoと付いている場合は、先頭のnoを取り除いてon/offを逆にすると本来の意味になる。

これを頭の中で考えると分かりにくいので、コマンドで自動的に変換するようにした。このコマンドでOK。

% set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/'

これを呼び出したときの出力はこんな感じ。うまく変換できてる。

% set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/'
aliases               on
allexport             off
alwayslastprompt      on
alwaystoend           off
appendhistory         on
autocd                on
autocontinue          off
autolist              on

関数にするとすぐに呼び出せる。

function showoptions() {
  set -o | sed -e 's/^no\(.*\)on$/\1  off/' -e 's/^no\(.*\)off$/\1  on/'
}

これで便利になるので、試してみてください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
34
Help us understand the problem. What are the problem?