스캔 이미지를 SMB의 타임스탬프 파일로 리디렉션할 때 ZSH가 "잘못된 인수"를 주장합니다.

스캔 이미지를 SMB의 타임스탬프 파일로 리디렉션할 때 ZSH가 "잘못된 인수"를 주장합니다.

나는 이 문제에 대해 너무 오랫동안 머리를 긁적이어서 여기 누군가가 무엇이 잘못되고 있는지 볼 수 있을 것입니다. 스캐너에서 문서의 타임스탬프가 있는 파일로 스캔하는 명령을 작성하려고 합니다.

scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M:%S).tiff

이로 인해 오류가 발생합니다.zsh: invalid argument: 2017.05.27-14:29:13.tiff

이상하게도 날짜 형식 문자열에서 초를 제거하면 오류가 발생하지 않지만 파일 이름도 제대로 지정되지 않습니다.

scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H:%M).tiff

2017.05.27-14분과 .tiff 확장자가 누락된 이라는 파일이 생성됩니다 .

상황을 더욱 복잡하게 만드는 것은 삼바 공유가 아닐 때 이 모든 것이 완벽하게 작동하지만 삼바 공유에서 동일한 명령을 실행하면 오류가 발생한다는 것입니다. scanimage 대신 echo로 테스트하면 echo를 사용하면 예상대로 작동하므로 흥미로운 내용이 나타나지 않습니다.

답변1

문제는 콜론이었던 것으로 밝혀졌습니다. 내 삼바 공유는 콜론이 있는 파일 이름을 허용하지 않기 때문에 이 오류가 발생했습니다. 파일 이름에서 콜론을 제거하면 완벽하게 작동합니다.

scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $(date +%Y.%m.%d-%H.%M.%S).tiff

문서 스캔 및 정리를 위해 완성된 스크립트가 궁금하신 분은 여기를 참조하세요.

#!/bin/bash
finish="-1"
page=1
date=$(date +%Y.%m.%d-%H.%M.%S)
while [ "$finish" = '-1' ]; do
  echo -e "\e[1m\e[32m==>\e[0m Scanning page $page..."
  scanimage -d "pixma:04A91746_57E9C3" --resolution 300 --format tiff > $date-$page.tiff
  while true; do
    echo -en "  \e[1m\e[34m->\e[0m More pages? [y/n] "
    read answer
    case $answer in
      [Yy]* ) page=$((page+1)); break;;
      [Nn]* ) finish="1"; break;;
      * ) echo -e "  \e[1m\e[34m->\e[0m Please answer tes or no.";;
    esac
  done
done
echo -e "\e[1m\e[32m==>\e[0m Converting $page page(s) to PDF..."
convert $date-*.tiff $date.pdf
echo -e "\e[1m\e[32m==>\e[0m Cleaning up..."
rm $date-*.tiff

난 그냥 아무 폴더(영수증, 의료 등)에 CD를 넣고 스캔 파일을 실행합니다. 결과는 현재 디렉터리에서 스캔된 모든 페이지의 타임스탬프가 포함된 PDF입니다.

관련 정보