zshでunix set -Cの設定を解除する(元に戻す)にはどうすればいいですか?


1

これは期待通りに動作します

$ echo "foo" > foo
$ cat foo                # foo
$ echo "updated" > foo
$ cat foo                # updated

から man set

-C      If  set, bash does not overwrite an existing file with the
        >, >&, and <> redirection operators.  This may be overridden
        when creating output files by using the redirection operator
        >| instead of >.

わかりました、それではましょう set -C

$ set -C
$ echo "bar" > bar
$ cat bar                # bar
$ echo "updated" > bar
file exists: bar

これで問題ありませんが、今はオフにします。 set -C

無効にする方法 set -C それがオンになった後?


私はもう試した:

$ unset -C
zsh: bad option: -C

ところで、zshはbashではありません.....
mdpc

回答:


3

何とか。それはとても簡単です

$ set +C

もちろん、質問を投稿した直後に答えが見つかります。

マニュアルページには、その違いについては触れられていません。 + そして -


2

あなたが使っているようです Zシェル しかし、引用 バッシュ manページ

わかりやすくするために、 set -C そして set +C コマンドはzshでも動作しますが、覚えやすいのは私見です。 シェルオプション

setopt no_clobber

これは set -C。そして、このオプションを無効にするには、確かにあります unsetopt ビルトイン:

unsetopt no_clobber

すべてのオプションは man zshoptions。オプションは一種の対称的なので setopt no_clobber と同等です unsetopt clobber。そういうわけで、manページで CLOBBER オプションについて説明します。

CLOBBER(+ C、ksh:+ C)

許可する > 既存のファイルを切り捨てるためのリダイレクト >> ファイルを作成します。さもないと >! または >| でなければなりません                 ファイルを切り捨てるために使用され、 >>! または >>| ファイルを作成します。

関連オプション(私見は非常に便利)は

HIST_ALLOW_CLOBBER

追加する | 履歴にリダイレクトを出力します。これにより、CLOBBERが設定されていなくても、クローバーファイルへの履歴参照が可能になります。

デモ:

zsh$ setopt no_clobber hist_allowclobber
zsh$ echo foo > baz
zsh$ echo bar > baz
zsh: file exists: baz
zsh$  [上矢印]  zsh $ echo bar&gt; |バズ
zsh $ 

最後の発言として、オプションは大文字と小文字を区別せず、アンダースコアは無視されます。 NOCLOBBERNO_clobbernoclobber 同じように扱われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.