파일 이름을 입력받는 별칭을 작성하고 파일이 규칙적이고 읽을 수 있는지 확인한 후 파일을 cp -i
백업 폴더에 복사합니다.$HOME/Backup
저는 UNIX를 처음 접했기 때문에 이 작업을 완료하는 데 약간의 어려움이 있습니다. 이것은 내 코드입니다.
alias getname='read filename'
alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $file ]; then echo "Not readable"; (exit 2); fi;'
alias backup='vfile; if [ vfile ]; then cp -i $filename $home/Backup; fi;'
별칭을 테스트한 vfile
결과 제대로 작동합니다. 발생한 오류는 다음과 같습니다.
-bash: syntax error near unexpected token ';'
첫 번째 작업으로 이 작업을 수행했을 때 이 오류가 발생하기 시작했습니다 . if 문 이전에 실행 vfile
하지 않으면 마지막 실행의 파일 이름이 사용됩니다. 복사하기 전에 오류가 발생하지 않는지 vfile
확인해야 합니다 .vfile
첫 번째 명령을 추가하기 전에 vfile
다음 오류가 발생합니다.
cp: cannot create regular file '/Backup/*': No such file or directory
하지만 내 홈 폴더에 Backup이라는 디렉터리가 있어서 그 원인이 무엇인지 모르겠습니다.
답변1
별칭은 vfile
으로 끝나고 ;
별칭은 backup
으로 시작됩니다 vfile;
. 따라서 ;
두 개의 연속된 s 사이에는 명령문이 없으며 이는 허용되지 않습니다.
$ echo ; ;
bash: syntax error near unexpected token `;'
;
마지막 것을 제거하십시오 vfile
.
답변2
두 개의 별칭을 사용하는 대신 이전 질문의 별칭을 사용하세요.
vfile 별칭이 잘못되면 오류 코드가 발생하므로 다음과 같이 할 수 있습니다.
alias filebackup='vfile && cp -i "$filename" "$HOME/Backup/"'
종료 시 에만 &&
명령을 실행 하도록 지시합니다.cp
vfile
0
편집하다 미안 피곤해
$home
은 유효한 환경 변수가 아니므로 어딘가에 수동으로 설정하지 않는 한 "해당 파일 또는 디렉터리 없음" 오류가 발생하는 이유를 설명하려면 ''
항상 변수를 참조하는 .