সংযুক্তি প্রোগ্রামটি ফিরে আসার অপেক্ষা না করা মুত্তকে কীভাবে বলা যায়?


9

আমি এই লাইনটি আমার চিত্রগুলির জন্য ব্যবহার করি mailcap:

image/*; eog %s &;

কিন্তু মুট সঙ্গে সঙ্গে টেম্প ফাইলটি মুছে ফেলে এবং ইওগ এটি লোড করতে পারে না।
আমি যখন &মুট সরিয়ে ফেলি তখন কমান্ড লাইন থেকে পলায়ন না হওয়া অবধি ইগো বন্ধ হওয়ার জন্য অপেক্ষা করে।

উত্তর:


9

আমি যা ব্যবহার করি তা এখানে:

.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, কোনও বিলম্বিত অনুলিপিগুলি পরিষ্কার করা হবে।

&আপনার ব্যবহৃত কমান্ডের উপর নির্ভর করে আপনার শেষের প্রয়োজন হতে পারে বা নাও পারে not (কয়েকটি সংস্করণ xdg-openব্লক করছে, অন্যগুলি হ'ল না))

বলা বাহুল্য, আপনি এটি কোনও কমান্ড দিয়ে ব্যবহার করতে পারেন। xdg-openকেবল একটি সুবিধাজনক ওয়ান স্টপ হ্যান্ডলার।


এটি মেলক্যাপটি প্রতিস্থাপনের একটি দুর্দান্ত সাধারণ উপায়! ধন্যবাদ!
প্রোফ্যাপট্যাশ

আমার &পরে এক্সডিজি-ওপেন দরকার ছিল । কোনও অবস্থাতেই এটির জন্য আঘাত করা যাবে না, তাই না?
প্রোফ্যাপট্যাশ

হতে পারে আপনি একটি প্রশ্ন করতে পারেন: এর সাথে কীভাবে প্রতিস্থাপন mailcapকরবেন xdg-open? এবং উত্তরটি অনুলিপি করুন। আমি নিশ্চিত যে এই প্রশ্নটি নিয়ে কিছু লোক রয়েছে।
প্রোফ্যাপাটস

2
যদি আপনার একাধিক অ্যাপ্লিকেশনগুলি মুট পরিবর্তন করে ফোল্ডারগুলি আপনার / টিএমপি / মিট / ফোল্ডারে মুছতে পারে তবে এটি সমস্যাযুক্ত হবে না। যেহেতু এক্সডিজি-ওপেন আমি কেবল অ্যাপ্লিকেশন (ফায়ারফক্স) ব্যবহার করছি বা ব্লক করতে পারে না text/html; t=$(mktemp /tmp/XXXXXXXXXX) \; cp %s "$t" \; /bin/sh -c "firefox $t \; rm $t \;" &
ডেরেক শ্রোক

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি এখনই এটি পেয়েছি কারণ আমি মুট সেট আপ করার জন্য পরীক্ষা নিরীক্ষা করছি। আমার সমাধানটি ছিল নেওমুটের shutdown-hookপরিবর্তে ব্যবহার করা; মুট বন্ধ হয়ে গেলে এটি কেবল টিএমপি দিরকে খালি করে দেয়।
সাফল্য

3

আপনি একটি র‌্যাপার কমান্ড ব্যবহার করতে পারেন যা:

  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 আপনার মেলবক্স ফোল্ডারের সাথে সম্পর্কিত হিসাবে নির্দিষ্ট করা থাকে।

আরও সহজ একটি হ'ল:

#! /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


গোশ, আপনি কি শুধু এটি স্ক্র্যাচ থেকে লিখেছেন? আপনি কী করছেন তা বুঝতে 15 মিনিট সময় নিয়েছে এবং এখনও কিছু অংশ ঠিক কীভাবে কাজ করবে সে সম্পর্কে আমি এখনও নিশ্চিত নই।
প্রোফ্যাপাটস

আমার সঙ্গে ব্যর্থ .muttrcকারণ tmpdir="=tmp"। ফাইল নাম থেকে ডিরেক্টরি দখল করবেন না কেন?
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

@ গিলিস, "+", "=" সম্পর্কে ভাল পয়েন্ট ... পুরো পয়েন্টটি ছিল মুট থেকে ট্যাম্পডির পেতে তাই আমরা জানতে পারি কোনটি যুক্তি ফাইলটির নাম the পুরো জিনিসটি কিছুটা ওভারকিল যদিও যাইহোক যাইহোক 99% ক্ষেত্রে ফাইলের নামটি একবারে ঘটতে চলেছে এবং শেষ যুক্তি হতে পারে, এবং আমরা কেবল নামকরণ করতে পারিnew-$original
স্টাফেন চেজেলাস

আরেকটি বিষয় হ'ল এই এন্ট্রি স্ক্রিপ্টটি সর্বদা মুটের পক্ষে বলা হয় না, এটি এমন পরিস্থিতিতে বলা যেতে পারে যেখানে ফাইলটি অস্থায়ী ফাইল নয় এবং অবশ্যই মুছে ফেলা হবে না। (আমি প্রায়শই seeকমান্ড লাইনে ফোন করি, ফাইলটি সরিয়ে ফেলা হবে বলে আমি আশা করি না /tmp!) সমাধান: একটি হার্ড লিঙ্ক তৈরি করুন।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলিস, আমি হার্ডলিঙ্কের কথা ভেবেছিলাম, তবে মুটের পক্ষে এটি কার্যকর হয় না, কারণ কমান্ডটি চালানোর পরে, মিট ফাইলটি লিঙ্কমুক্ত করার আগে এটি কেটে দেয়। (O_TRUNC দিয়ে খোলা এবং বন্ধ করুন, আমি এটি যাচাই করেছি)।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.