컬의 출력을 파일에 복사

컬의 출력을 파일에 복사

저는 raspbian을 실행 중이며 이 bash 스크립트를 사용하여 매분 사진을 찍어 FTP 서버에 업로드합니다.

#!/bin/bash

while [ 1 ]; do
 DATE=$(date +"%Y-%m-%d_%H_%M_%S")
 raspistill -q 10 -th none -o /home/pi/fb/$DATE.jpg
 curl -T /home/pi/fb/$DATE.jpg  ftp://myftpserver --user myuser:mypass >> /home/pi/fb/log.txt
 sleep 60
 echo finished $DATE >> /home/pi/fb/log.txt
done

내가 원하는 출력이 파일 curl에 나타나지만 log.txt항상 콘솔에 인쇄됩니다. 왜 그런 겁니까? 나는 또한 사용해 보았지만 tee아무것도 바뀌지 않았습니다.

답변1

컬은 상태를 stdout 대신 stderr로 인쇄합니다. 동일한 파일에서 stderr을 캡처하려면 다음을 추가하여 stderr를 stdout으로 리디렉션해야 합니다.2>&1 뒤쪽에표준 출력 리디렉션:

curl -T /home/pi/fb/$DATE.jpg  ftp://myftpserver --user myuser:mypass >> /home/pi/fb/log.txt 2>&1

2>&1stdout과 stderr을 더 잘 이해하는 데 도움이 될 생각을 자극하는 질문에 대해... 왜 초기 >>가 아닌 초기 이후에 있어야 합니까 ?

답변2

표준 출력(stdout)과 다른 스트림인 표준 오류(stderr)로의 출력이 표시될 수 있습니다.

대상을 출력한 후 리디렉션을 위해 2>&1을 사용할 수 있습니다.

예를 들어:

$curl -T /home/pi/fb/$DATE.jpg ftp://myftp서버--사용자 myuser:mypass >> /home/pi/fb/log.txt 2>&1

관련 정보