Bu satırı benim resimlerim için kullanıyorum mailcap
:
image/*; eog %s &;
ancak mutt geçici dosyayı hemen siler ve eog dosyayı yükleyemez.
Ben kaldırdığınızda &
EOG için ahmak bekler o komut satırından kaçar kadar kapalı olması.
Bu satırı benim resimlerim için kullanıyorum mailcap
:
image/*; eog %s &;
ancak mutt geçici dosyayı hemen siler ve eog dosyayı yükleyemez.
Ben kaldırdığınızda &
EOG için ahmak bekler o komut satırından kaçar kadar kapalı olması.
Yanıtlar:
İşte ne kullanıyorum:
.mailcap:
application/*; mkdir -p /tmp/mutt \; cp %s /tmp/mutt \; xdg-open /tmp/mutt/$(basename %s) &
.mutt / muttrc:
folder-hook . `rm -f /tmp/mutt/*`
Bir eki açma girişiminde bulunulduğu her seferinde, adanmış geçici bir dizine kopyalanır ve kopya açılır.
Her başlattığınızda mutt
, kalan kopyalar temizlenir.
&
Kullandığınız komuta bağlı olarak, sonda gerekebilir veya gerekmeyebilir . (Bazı sürümleri xdg-open
engellenirken, diğerleri değil.)
Söylemeye gerek yok, bunu herhangi bir komutla kullanabilirsiniz. xdg-open
sadece kullanışlı bir tek elden işleyicidir.
&
Sonra xdg-open gerekli . Her halükarda orada olmak acıtmaz, değil mi?
mailcap
ile xdg-open
? ve bu yanıtı kopyalayın. Eminim bu soruya sahip bazı insanlar var.
text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
shutdown-hook
kullanmaktı; bu mutt kapatıldığında tmp yönünü boşaltır.
Aşağıdaki gibi bir sarmalayıcı komutu kullanabilirsiniz:
mutt
.Gibi bir şey:
#! /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 -- "$@"
) &
Ve şöyle bir şey koy:
image/*; muttv eog %s;
muttv
Yukarıdaki senaryo nerede ?
Yukarıdakiler, argüman listesinde dosya adlarının nerede bulunduğuna veya hangi karakteri içerdiklerine dair herhangi bir varsayımda bulunmaz ... Bu yüzden önce mutt
ne tmpdir
olduğunu soruyoruz (bu yüzden dosyaların ne olduğunu belirlemek için kullanıyoruz görünüm ).
Çoğu durumda, aşırıya kaçabilir ve Gilles'in işaret ettiği gibi, tmpdir posta kutusu klasörünüzle göreceli olarak belirtilirse çalışmayabilir.
Daha basit olanı:
#! /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"
) &
Değiştir mv
ile cp
size sağladığı orijinal dosyayı dokunmak istemiyorsanız mutt
.
.muttrc
çünkü tmpdir="=tmp"
. Dizini neden dosya adından almıyorsunuz?
new-$original
see
komut satırını ararım , dosyayı olsa bile kaldırmasını beklemiyorum /tmp
!) Çözüm: sabit bir bağlantı yapın.