Używam tej linii do obrazów w moim mailcap
:
image/*; eog %s &;
ale mutt natychmiast usuwa plik tymczasowy i eog nie może go załadować.
Kiedy &
usuwam kundel czeka, aż eog zostanie zamknięty, dopóki nie ucieknie z linii poleceń.
Używam tej linii do obrazów w moim mailcap
:
image/*; eog %s &;
ale mutt natychmiast usuwa plik tymczasowy i eog nie może go załadować.
Kiedy &
usuwam kundel czeka, aż eog zostanie zamknięty, dopóki nie ucieknie z linii poleceń.
Odpowiedzi:
Oto, czego używam:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt / muttrc:
folder-hook . `rm -f /tmp/mutt/*`
Za każdym razem, gdy podejmowana jest próba otwarcia załącznika, jest on kopiowany do dedykowanego katalogu tymczasowego i kopia jest otwierana.
Za każdym razem, gdy zaczynasz mutt
, wszelkie trwałe kopie są czyszczone.
Na &
końcu możesz, ale nie musisz , w zależności od użytej komendy. (Niektóre wersje xdg-open
blokują, a inne nie.)
Nie trzeba dodawać, że można tego użyć z dowolnym poleceniem. xdg-open
jest tylko wygodnym, kompleksowym programem obsługi.
&
po xdg-open. W każdym razie nie może zaszkodzić mieć go tam, prawda?
mailcap
z xdg-open
? i skopiuj tę odpowiedź. Jestem pewien, że są ludzie z tym pytaniem.
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
zamiast tego Neomutta ; to po prostu opróżnia katalog tmp, gdy mutt jest wyłączony.
Możesz użyć polecenia otoki, które:
mutt
na to.Coś jak:
#! /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 -- "$@"
) &
I umieść coś takiego:
image/*; muttv eog %s;
Gdzie muttv
jest powyższy skrypt?
Powyższe nie zakłada, gdzie nazwa (-y) pliku (-ów) występuje (-ą) na liście argumentów lub jaki znak zawiera. Właśnie dlatego najpierw pytamy, mutt
co to tmpdir
jest (dlatego używamy tego, aby określić, do których plików widok ).
W większości przypadków byłoby to jednak przesadą i, jak podkreśla Gilles, może nie działać, jeśli tmpdir jest określony w stosunku do folderu skrzynki pocztowej.
Prostszym byłoby:
#! /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"
) &
Wymień mv
się cp
, jeśli nie chce się dotknąć oryginalnego pliku dostarczonego przez mutt
.
.muttrc
ponieważ tmpdir="=tmp"
. Dlaczego nie pobrać katalogu z nazwy pliku?
new-$original
see
w wierszu poleceń, nie oczekuję, że usunie plik, nawet jeśli jest w /tmp
środku!) Rozwiązanie: zrób twardy link.