GNU/Linux >> Linux の 問題 >  >> Linux

誤って出力リダイレクト > をパイプ | の代わりに使用しました。

既存のファイルがリダイレクトによって上書きされないようにするには > 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のコメントが言うように、リモートで同期されます(派手な自己ホスト型プラットフォームで十分です)。

このようにして、ファイルを以前の作業状態に戻して再度実行するなど、人為的なミスから保護されます。


Linux
  1. Linuxターミナルでリダイレクトを使用して、どこからでもデータを読み書きできます

  2. Linux I / O(入力/出力)リダイレクトの仕組みの基本を学ぶ

  3. コマンドによって処理されたソースファイルと同じファイルにリダイレクトしますか?

  1. Php-fpmのユーザーをWww-dataではなくPhp-userに設定するにはどうすればよいですか?

  2. /etc/sysconfig ディレクトリについて

  3. オンザフライ出力リダイレクト、プログラムの実行中にファイルリダイレクト出力を確認

  1. Linux/Unixでの入力/出力リダイレクト

  2. Fifoと一時ファイルまたはパイプを使用する目的は?

  3. ファイルの 2 列目を出力する