저는 Bash 스크립트를 사용하여 git pull을 자동화하려고 했습니다. 스크립트의 실행 결과를 놓치지 않고 이러한 결과가 어딘가에 기록되어 문제가 있는지 확인할 수 있도록 스크립트에 다음 줄을 추가했습니다.
# Does git pull
`notify-send "Git pull log message" |tee -a "$mylogfile"
# Other stuff
스크립트의 나머지 부분은 잘 작동하며 git pull 자동화와 같이 예상되는 작업을 수행합니다. 주어진 알림은 notify-send
내 컴퓨터에도 잘 표시되며 알림 목록에서 액세스할 수 있습니다.
내 문제는 알림을 ( )로 가져오는 것입니다 |tee -a $mylogfile
. 알림 메시지를 파일로 전혀 리디렉션하지 않습니다 $mylogfile
. 나는 또한 다음을 시도했습니다.
notify-send "Git pull log message" |tee "$mylogfile"
notify-send "Git pull log message" > "$mylogfile"
notify-send "Git pull log message" >> "$mylogfile"
아무것도 쓰여 있지 않은 것 같습니다. 또한 스크립트와 터미널에서 이러한 명령을 실행했는데 동작은 동일합니다. 매뉴얼 페이지 notify-send
도 매우 짧으며 파일 I/O 명령을 사용하는 방법에 대해 언급하지 않습니다. Stack Exchange에서도 관련 질문을 찾지 못했습니다. [this][1]이 가장 가깝지만 파일을 입력으로 제공하는 대신 알림 출력을 파일로 보내려고 합니다. 터미널에 출력이 표시되지 않기 때문에 아무것도 리디렉션되지 않는 것 같습니다. 이는 표준 출력에 아무 것도 기록되지 않음을 의미합니다.
내 생각엔 다음과 같은 것으로 만족할 수 있을 것 같아
msg="Git pull log message"
notify-send "$msg" && echo "$msg" > "$mylogfile"
이는 명령을 두 줄로 나누고 변수를 사용하여 작동하지만 스크립트에 알림 및 로깅과 관련된 줄만 있고 다른 것은 없도록 명시적 변수 없이 한 줄로 유지하고 싶습니다.
나는 분명한 것을 놓치고 있음에 틀림 없다고 확신합니다. 도와주세요? [1]:https://askubuntu.com/questions/216326/can-i-redirect-file-as-input-to-notify-send
답변1
사실 질문을 작성하는 과정에서 알게 된 사실은이 명령이는 내가 해결책을 찾도록 동기를 부여하기에 충분했습니다. 같은 상황에 있는 다른 분들에게도 도움이 될 수 있고, 본 SE 사이트나 다른 사이트에서 중복된 질문을 찾을 수 없어서 아래와 같이 공유합니다.
echo "Git pull log message" |tee -a "$mylogfile" |xargs -I% notify-send "%"
아이디어는 명령의 순서를 바꾸는 것입니다. 로 시작하고 시작하는 notify-send
대신 로그 파일에 먼저 기록합니다. 그러면 stdout에도 메시지가 전송되기 때문입니다. 이렇게 하면 파이프할 내용이 있습니다 . "요약이 지정되지 않음" 오류를 방지하려면 사용하세요 .echo
tee
tee
notify-send
xargs
답변2
git pull
notify-send
로그 파일에 쓰지 않고 출력을 파이프로 연결합니다 .
git pull | xargs -I{} notify-send {}