私の画像にこの行を使用しますmailcap
:
image/*; eog %s &;
しかし、muttはすぐに一時ファイルを削除し、eogはそれをロードできません。mutt
を削除&
すると、コマンドラインから脱出するまでeogが閉じるのを待ちます。
私の画像にこの行を使用しますmailcap
:
image/*; eog %s &;
しかし、muttはすぐに一時ファイルを削除し、eogはそれをロードできません。mutt
を削除&
すると、コマンドラインから脱出するまでeogが閉じるのを待ちます。
回答:
これが私が使うものです:
.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
便利なワンストップハンドラです。
&
後のxdg-openが必要でした。とにかくそこに置いても害はありませんよね?
mailcap
とのxdg-open
?その答えをコピーします。その質問をしている人もいると思います。
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
代わりにNeomuttを使用することでした。これは、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
上記のスクリプトはどこにありますか。
上記の我々が最初に尋ねる理由は、引数のリストまたは彼らが含まれている文字...中の(S)ファイル名(s)が表示される場所には何の仮定行いません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
!)解決策:ハードリンクを作成します。