Linuxでは、あるディレクトリから別のディレクトリにファイルを移動しようとしましたが、予期せず追加>文字が発生しました。
mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/>test2.dbf /u01/shared_data/oradata/TEST/test.dbf
これでフォルダdbs
全体が失われました。ただし、dbs
フォルダを見つけると/u01/app/oracle/product/12.1.0.2/db_1/dbs
そこにいるように見えますが、見つからないか見つかりませll
んcd
。
-bash: cd: /u01/app/oracle/product/12.1.0.2/db_1/dbs: No such file or directory
元を元の場所に復元するにはどうすればよいですか?
答え1
これは>
通常のユースケースと同様にstdoutをファイルにリダイレクトします。
printf "%s\n" "hello world" > filename
周囲のスペースは>
オプションであり、最後に配置する必要はありません。これも同じことをします:
printf "%s\n">filename "hello world"
したがって、あなたのmv
行はより伝統的に書かれています。
mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/ /u01/shared_data/oradata/TEST/test.dbf > test2.dbf
test.dbf
別のディレクトリにあるフォルダの名前を変更し、現在のディレクトリにmv
stdout(何もない)を記録します。test2.dbf
誤ってOracleデータファイルを上書きすることがないことを願っています。
PS:追加の>
問題が一般的な問題である場合、bashのset -o noclobber
/set -C
オプションは少なくともファイルの上書きを防ぐのに役立ちます。 Bashのマニュアルページでは、これを次のように説明します。設定されている場合、bashはリダイレクト演算子を使用して>
既存の>&
ファイルを上書きしません<>
。 。>|
代わりに、リダイレクト演算子を使用して>
出力ファイルを作成するときは、オーバーライドできます。