我尝试将 Linux 中的文件从一个目录移动到另一个目录,但不小心多了一个 > 字符。
mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/>test2.dbf /u01/shared_data/oradata/TEST/test.dbf
Run Code Online (Sandbox Code Playgroud)
现在,我的整个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
Run Code Online (Sandbox Code Playgroud)
怎样才能把原来的东西放回原处?
在>这里将stdout重定向到一个文件中,就像它会在一个比较正常的使用案例:
printf "%s\n" "hello world" > filename
Run Code Online (Sandbox Code Playgroud)
周围的空格>是可选的,它不必放在最后。这也是一样的:
printf "%s\n">filename "hello world"
Run Code Online (Sandbox Code Playgroud)
所以你的mv行会更传统地写成:
mv /u01/app/oracle/product/12.1.0.2/db_1/dbs/ /u01/shared_data/oradata/TEST/test.dbf > test2.dbf
Run Code Online (Sandbox Code Playgroud)
它已将您的文件夹重命名为test.dbf(在不同的目录中)并将mv的标准输出(可能什么都没有)写入test2.dbf您的当前目录。希望这不会意外覆盖 Oracle 数据文件。
PS:如果 extra>是一个常见问题,bash 的set -o noclobber/set -C选项至少可以帮助防止覆盖文件。bash的手册页描述为:如果设置,bash将不覆盖与现有的文件>,>&和<>重定向操作符。在使用重定向运算符>|而不是>.
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |