첨부 프로그램이 돌아 오기를 기다리지 않도록 mutt에 지시하는 방법은 무엇입니까? 사용합니다 mailcap. image/*; eog

이 줄을 내 이미지에 사용합니다 mailcap.

image/*; eog %s &;

mutt는 임시 파일을 즉시 삭제하고 eog는 그것을로드 할 수 없습니다.
내가 &음소거를 제거 하면 명령 줄에서 벗어날 때까지 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/*`

첨부 파일을 열려고 시도 할 때마다 전용 temp 디렉토리에 복사되고 사본이 열립니다.
시작할 때마다 mutt남아있는 사본이 정리됩니다.

&사용한 명령에 따라 끝 부분이 필요할 수도 있고 필요하지 않을 수도 있습니다 . (일부 버전 xdg-open은 차단하고 있지만 다른 버전 은 차단하지 않습니다.)

말할 것도없이, 어떤 명령으로도 이것을 사용할 수 있습니다. xdg-open편리한 원 스톱 핸들러입니다.


답변

다음과 같은 랩퍼 명령을 사용할 수 있습니다.

  1. 파일 이름을 바꿉니다
  2. 백그라운드에서 뷰어를 실행합니다
  3. 시청자가 시청자에게 반환하지 않고 돌아 왔을 때 정리 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우리가 파일이 무엇을 결정하기 위해 그것을 사용할 수 있도록 (이다 보기 ).

그러나 대부분의 경우 과도하게 사용되며 사서함 폴더를 기준으로 tmpdir을 지정하면 Gilles가 작동하지 않을 수 있습니다.

더 간단한 방법은 다음과 같습니다.

#! /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"
) &

교체 mvcp당신이 제공 한 원본 파일을 터치하지 않으려면 mutt.


답변