既存のファイルがリダイレクトによって上書きされないようにするには >
noclobber
を使用 bash
のオプション または任意の POSIX ライクなシェル ((t)csh
にもあります) set noclobber
としますが、機能が実際に発生した場所 set -o noclobber
の代わりに /set -C
そこの)。次に、ファイルを強制的に置き換える必要がある場合は、>|
を使用します リダイレクト演算子 (>!
(t)csh
で ).
例:
$ echo abc > file
$ set -o noclobber
$ echo xyz > file
bash: file: cannot overwrite existing file
$ echo xyz >| file
$ cat file
xyz
ところで、現在の設定は set -o
で確認できます :
$ set -o
...
monitor on
noclobber on
noexec off
...
残念ながら、書き直す必要があると思います。 (バックアップがある場合は、今がそれらを取り出すときです。そうでない場合は、将来のためにバックアップ体制を設定することを強くお勧めします。多くのオプションが利用可能ですが、この回答のトピックから外れています。)
実行可能ファイルを別のディレクトリに配置し、そのディレクトリを PATH
に追加することがわかりました 役に立ちます。この方法では、明示的なパスで実行可能ファイルを参照する必要はありません。個人用 (プライベート) スクリプトの優先プログラム ディレクトリは "$HOME"/bin
です。 PATH="$HOME/bin:$PATH"
でプログラム検索パスに追加できます .通常、これはシェル起動スクリプト .bash_profile
に追加されます および/または .bashrc
.
最後に、すべての実行可能プログラムで自分自身の書き込み許可を削除することを妨げるものは何もありません:
touch some_executable.py
chmod a+x,a-w some_executable.py # chmod 555, if you prefer
ls -l some_executable.py
-r-xr-xr-x+ 1 roaima roaima 0 Jun 25 18:33 some_executable.py
echo "The hunting of the Snark" > ./some_executable.py
-bash: ./some_executable.py: Permission denied
重要なスクリプトを用意することを強くお勧めします git リポジトリの下 @caseyのコメントが言うように、リモートで同期されます(派手な自己ホスト型プラットフォームで十分です)。
このようにして、ファイルを以前の作業状態に戻して再度実行するなど、人為的なミスから保護されます。