다음 명령은 다음 위치에 pdf 파일을 생성합니다 ~/PDF/
.
enscript -B -P PDF bloom.c
출력된 PDF 파일을 여기로 옮기고 싶습니다.
mv "`ls -dtr1 ~/PDF/* | tail -1`" .
하지만 입력 파일이 프린터 PDF로 전송되고 프린터가 pdf 파일 생성을 마치기 직전에 반환되기 때문에 mv
명령에 따라 명령을 즉시 실행할 수 없습니다 .enscript
enscript
매우 나쁜 해결책은 두 명령 사이에 다음 명령을 삽입하는 것입니다.
sleep 5
언제까지 기다려야 할지 모르기 때문에 짜증납니다.
mv
나중에 명령을 실행 하지 않고도 동일한 작업을 수행할 수 있는 더 좋은 방법이 있다는 것을 알고 있지만 프린터가 해당 작업을 수행하는 것을 enscript
중지할 수 있는 방법이 있는지 궁금합니다 . enscript
를 제외한 다른 명령에 대해서도 비슷한 아이디어가 기억납니다 enscript
. 나는 enscript
그러한 옵션이 제공되지 않는다고 가정하고 있으므로 bash나 다른 프로그램이 이를 달성할 수 있는지에 관심이 있을 것입니다. 신호 처리가 해결책일 수도 있지만 어떤 신호를 잡아야 할지 모르겠습니다.
답변1
댓글을 달기에는 너무 크므로 ~/PDF
디렉토리에 아직 열려 있는 파일이 있는지 확인해 보셨나요?그들이 꼬이기 시작할 때lsof
(열린 파일 나열)을 사용하여 ?
다음 코드 조각을 뒤에 추가하세요 enscript -B -P PDF bloom.c
.
# Go into endless loop and break when all files in */PDF/* are closed.
while :
do
if ! [[ `lsof | grep /PDF/` ]]
then
break
fi
sleep 1
done
그리고 전에
mv "`ls -dtr1 ~/PDF/* | tail -1`"
이렇게 하면 1초만 낭비됩니다...
자세한 내용은:
lsof
현재 열려 있는 모든 파일을 나열합니다.- 의무는
man lsof
더 자세한 내용을 제공할 것입니다.
;-)