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 데이터 파일을 덮어쓰는 일이 없기를 바랍니다.
추신: 추가 >
문제가 일반적인 문제인 경우 bash의 set -o noclobber
/ set -C
옵션은 최소한 파일 덮어쓰기를 방지하는 데 도움이 될 수 있습니다. Bash 매뉴얼 페이지에서는 이를 다음과 같이 설명합니다.설정된 경우 bash는 및 리디렉션 연산자를 사용하여 >
기존 >&
파일을 덮어쓰지 않습니다 <>
. . >|
대신 리디렉션 연산자를 사용하여 >
출력 파일을 생성할 때 이는 재정의될 수 있습니다 .