ファイル名を入力するエイリアスを作成し、ファイルが規則的で読み取り可能であることを確認したら、ファイルをバックアップ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;
。したがって、;
2つの連続したsの間にステートメントはなく、これは許可されません。
$ echo ; ;
bash: syntax error near unexpected token `;'
;
最後のものを削除してくださいvfile
。
答え2
2つのエイリアスを使用する代わりに、以前の質問のエイリアスを使用してください。
vfileエイリアスが間違っているとエラーコードが発生するため、次のようにできます。
alias filebackup='vfile && cp -i "$filename" "$HOME/Backup/"'
終了時にのみ&&
コマンドを実行するように指示します。cp
vfile
0
編集する すみません。
$home
は有効な環境変数ではないため、どこかに手動で設定しない限り、「該当するファイルまたはディレクトリなし」エラーが発生する理由を説明するには、''
常に変数を参照してください。