mutt
내 파일 관리자를 사용하여 첨부 파일을 저장하는 작은 매크로가 있습니다 ranger
. 다음과 같습니다.
macro attach S "<pipe-message>muttsaveattach"<enter>
mutttsaveattach
다음 스크립트는 어디에 있습니까?
#!/bin/sh
urxvt -e ranger --choosefile=/tmp/muttattach
cat > $"`cat /tmp/muttattach`"
투박하지만 효과적입니다. 첨부 파일을 덤프한 /tmp/muttattach
다음 해당 파일의 내용을 ranger
.
유일하게 아쉬운 점은 첨부 파일의 원래 이름을 어떻게든 복원하여 내 스크립트에서 사용할 수 있다는 것입니다. mutt
매크로에 사용하기 위해 이 값을 보유하도록 제공할 수 있는 변수가 있습니까 ? 그렇지 않은 경우 이름을 복구하고 사용할 수 있는 다른 방법이 있습니까?
답변1
현재로서는 이 접근 방식이 가능하지 않다고 생각합니다. Mutt와 Neomutt에는 사용자가 파일 이름을 제공할 수 있는 변수가 없습니다. 하지만 나는 그것을 달성하기 위해 mailcap을 사용하는 방법을 알고 있습니다.
다음을 수행하는 매크로가 있다고 가정해 보겠습니다.
- 현재 값을
mailcap_path
변수에 저장하고, - 새 항목을 설정합니다
mailcap_path
(아래의 mailcap 파일 예시 참조). - 첨부 파일을 보려면 mailcap을 강제로 사용하십시오.
mailcap_path
이전 경로로 되돌립니다 .
macro attach S\
<enter-command>set my_mailcap_path=$mailcap_path<enter>\
<enter-command>set mailcap_path=~/.mailcap2<enter>\
<view-mailcap>\
<enter-command>set mailcap_path=$my_mailcap_path<enter>\
가능한 각 mailcap 유형에 대해 mailcap 항목을 생성해야 합니다(하위 유형 제외, 와일드카드 사용 가능).
예 ~/.mailcap2
application/*; /your/script %s
audio/*; /your/script %s
font/*; /your/script %s
image/*; /your/script %s
message/*; /your/script %s
model/*; /your/script %s
text/*; /your/script %s
video/*; /your/script %s
스크립트를 조금 변경해야 합니다. 첨부 파일이 더 이상 파이프로 연결되지 않기 때문입니다. 파일 이름을 매개변수로 가져옵니다. 아니면 mailcap2 파일을 직접 변경하여 포함해 보세요.filetype/*; urxvt -e ranger --choosefile=%s
#!/bin/sh
urxvt -e ranger --choosefile=$1
또한 100% 확실하지는 않지만 매크로의 첫 번째 명령을 제거 <enter-command>set my_mailcap_path=$mailcap_path<enter>\
하고 그 전에 변수를 할당해야 할 수도 있습니다. 내 생각엔 전에도 이런 일을 겪은 적이 있는 것 같아. 단일 매크로에서 변수를 설정하거나 설정 해제하는 것이 제대로 작동하지 않습니다.
면책 조항: 테스트하지는 않았지만 이것이 작동할 것이라고 확신합니다.