ZSH fordert "ungültiges Argument" an, wenn das Scanimage in eine Datei mit Zeitstempel auf SMB umgeleitet wird

539
Stephen Smith

Ich habe den Kopf ein wenig zu lange am Kopf gekratzt, vielleicht kann hier jemand sehen, was schief läuft. Ich versuche, einen Befehl zu erstellen, der von meinem Scanner zu einer Datei mit Zeitstempel in meinen Dokumenten scannt.

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

Dies erzeugt den Fehler zsh: invalid argument: 2017.05.27-14:29:13.tiff

Das Entfernen der Sekunden in der Datumsformat-Zeichenfolge tritt seltsamerweise nicht auf, der Fehler tritt jedoch nicht auf, aber die Datei wird nicht ordnungsgemäß benannt:

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

Ich habe am Ende eine Datei mit dem Namen 2017.05.27-14, die Minuten und die Erweiterung .tiff fehlt.

Um es noch komplizierter zu machen, funktioniert das alles perfekt, wenn es nicht in einer Samba-Freigabe ist, aber die gleichen Befehle in einer Samba-Freigabe geben den Fehler aus. Beim Testen mit Echo anstelle von Scanimage ergibt sich nichts Interessantes, da die Verwendung von Echo das erwartete Verhalten bewirkt.

0
Was passiert, wenn Sie doppelte Anführungszeichen verwenden? `…>" $ (Datum +% Y.% m.% D-% H:% M:% S) .tiff "` Kamil Maciorowski vor 6 Jahren 1
Dies funktioniert gut für mich mit bash und zsh: `echo foo> $ (Datum +% Y.% m.% D-% H:% M:% S) .tiff` Cyrus vor 6 Jahren 0
@ KamilMaciorowski Zitate scheinen nichts zu ändern. Stephen Smith vor 6 Jahren 0
@ Cyrus Es scheint im Echo zu arbeiten, aber nicht mit dem Scanbild. Des Weiteren habe ich eine andere Masche entdeckt, die die Dinge wirklich komplizierter zu machen scheint: Dieses Problem tritt nur auf, wenn ich eine Samba-Freigabe scanne UND die Ausgabe von scanimage im Gegensatz zum Echo umleitet. Stephen Smith vor 6 Jahren 0

1 Antwort auf die Frage

1
Stephen Smith

The problem turns out to have been the colons - since my samba share doesn't allow filenames with colons, it would give this error. Removing the colons from my filename results in it working perfectly:

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

If anyone is curious about the completed script for scanning and organizing documents, here it is:

#!/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 

I just cd into whatever folder (receipts, medical, etc) and run scanfile. Result is a timestamped pdf of all pages scanned in the current directory.