파일을 편집(및 덮어쓰기)하기 전에 파일(대개 이미지)을 백업해야 합니다.
현재 나는 다음을 통해 이 작업을 수행합니다.
cp file.jpg ~/BACKUP/file.jpg
exiv2 BLABLABLA file.jpg
명령 하나로 이 작업을 어떻게 수행할 수 있나요?
예를 들어
AAalias file.jpg
별칭인지 함수 인지는 중요하지 않지만 AAalias
이것은모양내가 찾고 있는 것은: 명령+파일 이름
답변1
쉘 함수를 사용하십시오:
backup_and_edit () {
cp -i "$1" "$HOME/BACKUP" &&
exiv2 BLABLABLA "$1"
}
이것은 일반적으로 별칭과 셸 함수를 배치하는 위치(아마도 파일)에 배치되고 ~/.bashrc
함수를 인스턴스화한 후(새 셸 세션을 시작하여) 다음과 같이 사용합니다.
$ backup_and_edit ./some/file.jpg
이렇게 호출하면 함수가 실행됩니다.
cp -i ./some/file.jpg "$HOME/BACKUP" &&
exiv2 BLABLABLA ./some/file.jpg
이 -i
옵션을 사용 cp
하면 유틸리티가 백업 디렉터리에 있는 동일한 이름의 파일을 덮어쓰기 전에 확인을 요청하게 됩니다. 복사에 실패하면 exiv2
이 명령이 호출되지 않습니다.
답변2
함수를 사용하여 별칭을 만들 수 있습니다.
alias Aalias='_(){ local file=${@: -1};(($#<2))||[[ ! -e "${file}" ]]&&echo "Usage: Aalias <options> <file>"&&return 1;cp "${file}" ~/BACKUP/${file};exiv2 $@;}; _'
${@: -1} grabs the last argument for the file
[[ ! -e "${file}" ]] checks to make sure the file exists
2개 미만의 매개변수가 제공되거나 파일이 존재하지 않으면 사용법이 표시됩니다.
마지막 인수가 기존 파일의 이름인 경우 사용자 홈 디렉터리의 BACKUP 디렉터리에 백업되고 명령줄에 제공된 옵션을 사용하여 exiv2가 시작됩니다.