이것은 매우 간단한 질문임에 틀림없지만 저는 막혔습니다(UNIX 전문가는 아닙니다). gz를 대상 디렉토리로 이동해야 하는데 No such file or directory
.
NOW=$(date +"%Y-%m-%d-%T")
DEST="~/scripts/backup"
SQL_DUMP="db_dump_$NOW.sql.gz"
echo "$SQL_DUMP"
drush sql-dump | gzip -9 > $SQL_DUMP
mv -t $DEST $SQL_DUMP
올바르게 생성 되면 sql.gz
마지막 명령만 작동하지 않습니다. 어떻게 사용해야 하나요? 감사해요.
답변1
문제는아니요당신의 명령을 따르십시오 mv
.
물결표 확장~
문자를 사용자의 홈 디렉토리로 바꿀 때 쉘이 수행하는 작업의 이름입니다 /home/username
. 물결표 문자를 인용하여 이를 수행하지 않도록 쉘에 지시할 수 있습니다. 그게 바로 네가 한 일이야
DEST="~/scripts/backup"
DEST
string 에 할당했습니다 ~/scripts/backup
. 디렉토리가 실제로 존재하지 않습니다. 두 가지 솔루션:
다음 문자를 인용하지 마세요
~
.DEST=~/scripts/backup
대신 사용하십시오
$HOME
:DEST="$HOME/scripts/backup"
최종 디버깅 팁
옵션 set -x
을 켜려면 스크립트 상단 에서 xtrace
이렇게 하면 명령이 대신 mv
잘못된 디렉토리를 사용한다는 것을 알게 될 것입니다 . ~/scripts/backup
/home/yourname/scripts/backup
답변2
읽다MV수동
SYNOPSIS
mv [SOURCE] [DEST]
$DEST가 이미 존재하는지 확인하고 싶을 수도 있습니다.
if [ -d ${DEST} ]; then
do something
fi
그렇지 않은 경우목차그리고-피상위 디렉토리를 생성하기 위한 매개변수로.
...
else
mkdir -p ${DEST}
fi