내 이미지에는 다음 줄을 사용합니다 mailcap
.
image/*; eog %s &;
그러나 mutt는 즉시 임시 파일을 삭제하고 eog는 이를 로드하지 못합니다. mutt를
제거하면 &
명령줄에서 벗어날 때까지 eog가 닫힐 때까지 기다립니다.
답변1
이것이 내가 사용하는 것입니다:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt/muttrc:
folder-hook . `rm -f /tmp/mutt/*`
첨부 파일을 열려고 시도할 때마다 개인 임시 디렉터리에 복사되고 복사본이 열립니다. 나머지 복사본은
시작할 때마다 mutt
지워집니다 .
&
사용하는 명령에 따라 결국 이것이 필요할 수도 있고 필요하지 않을 수도 있습니다. (일부 버전은 xdg-open
차단되고 다른 버전은 차단되지 않습니다.)
말할 필요도 없이 어떤 명령에도 사용할 수 있습니다. xdg-open
그냥 편리한 원스톱 매장입니다.
답변2
래퍼 명령을 사용할 수 있습니다.
- 파일명 변경
- 백그라운드에서 뷰어 실행
- 관객이 돌아오면 그냥 놔두지 말고 치우세요
mutt
.
그것은 다음과 같습니다:
#! /bin/sh -
TMPDIR=$(
mutt -D 2> /dev/null |
awk -F\" '
$1 == "tmpdir=" {
gsub("~", ENVIRON["HOME"], $2)
print $2
exit
}'
)
[ -n "$TMPDIR" ] || exit
export TMPDIR
nargs=$#
nfiles=0
for i do
case $i in
("$TMPDIR"/?*)
new_file=$(mktemp -ut "XXXXX${i##*/}") &&
mv -- "$i" "$new_file" &&
nfiles=$(($nfiles + 1)) &&
set -- "$new_file" "$@" "$new_file" &&
continue
esac
set -- "$@" "$i"
done
run_command() (
shift "$(($nargs + $nfiles))"
exec "$@"
)
(
run_command "$@"
while [ "$nfiles" -gt 0 ]; do
set -- "$@" "$1"
shift
nfiles=$(($nfiles - 1))
done
shift "$((2*$nargs))"
rm -f -- "$@"
) &
다음과 유사한 내용을 입력합니다.
image/*; muttv eog %s;
muttv
위 스크립트는 어디에 있나요?
위의 내용은 매개변수 목록에서 파일 이름이 나타나는 위치나 포함된 문자에 대해 가정하지 않습니다. 이것이 바로 우리가 먼저 파일 이름이 mutt
무엇 tmpdir
인지 묻는 이유입니다. 따라서 이를 사용하여 파일이 무엇인지 확인합니다.보다).
이는 대부분의 경우 과잉일 수 있으며 Gilles가 지적한 것처럼 메일함 폴더와 관련하여 tmpdir을 지정하면 작동하지 않을 수 있습니다.
더 간단한 것은 다음과 같습니다:
#! /bin/sh -
nargs=$#
eval "file=\${$nargs}"
newfile=$(dirname -- "$file")/new-$(basename -- "$file")
while [ "$nargs" -gt 1 ]; do
set -- "$@" "$1"
shift
nargs=$(($nargs - 1))
done
shift
mv -- "$file" "$newfile" || exit
(
"$@" "$newfile"
rm -f -- "$newfile"
) &
제공된 원본 파일을 건드리지 않으려면 mv
.cp
mutt