Linux,リダイレクトでの上書きを禁止・解除する

スポンサーリンク

鍛錬 121

Linux,リダイレクトでの上書きを禁止・解除する

リダイレクトでの上書きについて、禁止または解除を設定するには、set を使用します。
 
使用方法は、以下に示す通りです。

上書きを禁止する

set -C

 
上書き禁止を解除する

set +C
スポンサーリンク

実行結果

以下は、次の順序で文字列をファイル sample.txt にリダイレクトしています。

リダイレクトの実行順序 上書き許可の状態
1回目 上書き可能
2回目 上書き禁止
3回目 上書き可能
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ echo "1回目" > sample.txt
***@ubuntu:~/***/test/tmp$ cat sample.txt
1回目
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ set -C
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ echo "2回目" > sample.txt
bash: sample.txt: 存在するファイルを上書きできません
***@ubuntu:~/***/test/tmp$ cat sample.txt
1回目
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ set +C
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ 
***@ubuntu:~/***/test/tmp$ echo "3回目" > sample.txt
***@ubuntu:~/***/test/tmp$ cat sample.txt
3回目

 
上記に示した通り、2回目にリダイレクトを行う前に上書きを禁止しているため、上書きをしようとしてもエラーとなり、3回目にリダイレクトを行う前に上書き禁止を解除しているため、上書きが可能となっています。

タイトルとURLをコピーしました