我将此行用于我的图像mailcap
:
image/*; eog %s &;
但是mutt立即删除了临时文件,而eog无法加载它。
当我删除&
mutt时,它会等待eog关闭,直到它从命令行中退出。
我将此行用于我的图像mailcap
:
image/*; eog %s &;
但是mutt立即删除了临时文件,而eog无法加载它。
当我删除&
mutt时,它会等待eog关闭,直到它从命令行中退出。
Answers:
这是我使用的:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt / muttrc:
folder-hook . `rm -f /tmp/mutt/*`
每次尝试打开附件时,都会将其复制到专用的temp目录中,并打开该副本。
每次启动时mutt
,所有残留的副本都会被清除。
最后,您可能需要也可能不需要&
,这取决于您使用的命令。(某些版本的软件xdg-open
被阻止,而其他版本则没有。)
不用说,您可以在任何命令中使用它。xdg-open
只是方便的一站式处理程序。
&
xdg-open之后。在任何情况下都可以忍受,对吗?
mailcap
为xdg-open
?并复制该答案。我敢肯定有人问这个问题。
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
。mutt关闭时,这只会清空tmp目录。
您可以使用以下包装器命令:
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
。
.muttrc
而失败tmpdir="=tmp"
。为什么不从文件名中获取目录?
new-$original
see
在命令行上调用,即使它在/tmp
!中,我也不希望它删除文件。)解决方案:进行硬链接。