ZSH утверждает, что «неверный аргумент» при перенаправлении scanimage в файл с меткой времени в SMB

405
Stephen Smith

Я слишком долго царапал голову об этом, так что, возможно, кто-то здесь сможет увидеть, что происходит не так. Я пытаюсь создать команду для сканирования из моего сканера в файл с меткой времени в моих документах.

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.

Чтобы еще больше усложнить ситуацию, все это прекрасно работает, когда не в общей папке samba, но те же команды в общей папке samba приводят к ошибке. Тестирование с помощью echo вместо scanimage не выявило ничего интересного, поскольку использование echo приводит к тому, что оно ведет себя так, как ожидалось.

0
Что происходит, когда вы используете двойные кавычки? `…>" $ (Дата +% Y.% m.% D-% H:% M:% S) .tiff "` Kamil Maciorowski 7 лет назад 1
Это прекрасно работает для меня с bash и zsh: `echo foo> $ (дата +% Y.% m.% D-% H:% M:% S) .tiff` Cyrus 7 лет назад 0
@KamilMaciorowski Котировки, похоже, ничего не меняют. Stephen Smith 7 лет назад 0
@ Cyrus Похоже, что работает в эхо, но не с scanimage. Кроме того, я обнаружил еще одну причуду, которая, кажется, действительно еще больше усложняет ситуацию: эта проблема возникает только тогда, когда я сканирую на общий ресурс samba и перенаправляю вывод scanimage, а не echo. Stephen Smith 7 лет назад 0

1 ответ на вопрос

1
Stephen Smith

Проблема оказывается в двоеточиях - поскольку моя папка samba не допускает имен файлов с двоеточиями, она выдаст эту ошибку. Удаление двоеточий из моего имени файла приводит к тому, что оно работает отлично:

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 

Я просто захожу в любую папку (квитанции, медицинские и т. Д.) И запускаю scanfile. Результат - это pdf с отметкой времени всех страниц, отсканированных в текущем каталоге.

Похожие вопросы