শেল পাইপ সহ tmux 'ক্লিপবোর্ড' থেকে / কীভাবে অনুলিপি করবেন?


17

শেল পরিবেশে কাজ করার সময় আমি প্রায়শই 'ইন্টারমিডিয়েট পাইপ আউটপুট' অনুলিপি করার প্রয়োজনে প্রায়শই চালিত করি (যেমন: ইতিমধ্যে চলমান সম্পাদক থেকে / অন্যান্য শেল, অন্যান্য মেশিনে ইত্যাদি) copy

উইন্ডোটিংয়ের পরিবেশে যখন এটি সমাধানের জন্য একটি সহজ (এবং জেনেরিক) পদ্ধতিটি প্রায়শই সিস্টেম ক্লিপবোর্ডের মাধ্যমে হয়, যেমন:

  • এক্স 11: ... | xsel -i/xsel -o | ...
  • ওএস এক্স: ... | pbcopy/pbpaste | ...

Tmux অনুলিপি / পেস্ট সুবিধা ব্যবহার করে আমি কীভাবে অনুরূপ সুবিধাজনক আচরণ পেতে পারি?

উত্তর:


20

TL; ড

  • ... | tmux loadb -
  • tmux saveb - | ...

ব্যাখ্যা এবং পটভূমি

Tmux এ, সমস্ত অনুলিপি / পেস্ট ক্রিয়াকলাপ বাফার স্ট্যাকের মধ্য দিয়ে যায় যেখানে শীর্ষ (সূচক 0) সর্বাধিক সম্প্রতি অনুলিপি করা পাঠ্য হয় এবং যখন কোনও বাফার সূচক স্পষ্টভাবে সরবরাহ না করা হয় তখন তা আটকানোর জন্য ব্যবহৃত হবে -b। আপনি বর্তমান বাফারগুলি tmux list-buffersডিফল্ট শর্টকাট tmux-prefix+ সহ পরিদর্শন করতে পারেন #

স্ট্যাকের শীর্ষে একটি নতুন tmux বাফারে পাইপিংয়ের জন্য দুটি উপায় রয়েছে, set-bufferএকটি স্ট্রিং আর্গুমেন্ট load-bufferনেওয়া এবং একটি ফাইল আর্গুমেন্ট নেওয়া taking একটি বাফারে পাইপ দেওয়ার জন্য আপনি সাধারণত load-bufferস্টিডিন দিয়ে ব্যবহার করতে চান , যেমন:

print -l **/* | tmux loadb -

এটিকে সম্পাদকগুলিতে পেস্ট করা এবং এটি সুস্পষ্টভাবে স্পষ্ট ( tmux-prefix+ ]বা আপনি যা আবদ্ধ paste-bufferহন) তবে শেলের ভিতর থেকে পেস্ট অ্যাক্সেস করা তা নয়, কারণ প্রার্থনা paste-bufferকরলে পেস্টটি স্টিডিনে লেখা হবে যা আপনার টার্মিনালের সম্পাদনায় শেষ হবে paste বাফার, এবং পেস্টের যে কোনও নতুন লাইন শেলটি এখনও পর্যন্ত যা কিছু আটকানো হয়েছে তা কার্যকর করতে সক্ষম করবে (সম্ভবত আপনার দিন নষ্ট করার দুর্দান্ত উপায়)।

এটির কাছে যাওয়ার কয়েকটি উপায় রয়েছে:

  1. tmux pasteb -s ' ': -sআপনি যে যা বিভাজক সরবরাহ করেন তার সাথে সমস্ত লাইন শেষ (বিভাজনকারী) প্রতিস্থাপন করে। তবে আপনি এখনও এর আচরণটি পান paste-bufferযার অর্থ আপনার টার্মিনাল সম্পাদনা বাফারে পেস্টটি শেষ হয় যা আপনি যা চান তা হতে পারে তবে সাধারণত হয় না।
  2. tmux showb | ...: show-bufferবাফারকে স্টডআউটে প্রিন্ট করে এবং প্রায় যা প্রয়োজন তা হয় তবে ক্রিস জনসন মন্তব্যগুলিতে যেমন উল্লেখ করেছেন , show-bufferপ্রিন্টযোগ্য এএসসিআইআই অক্ষর এবং নন-এএসসিআইআই অক্ষরের অষ্টাল এনকোডিং সম্পাদন করেছেন । এই দুর্ভাগ্যবশত প্রায়ই যথেষ্ট বিরতি নাল সমাপ্ত স্ট্রিং বা প্রস্বরিত ল্যাটিন অক্ষর (যেমন। (Zsh মধ্যে) মত এমনকি সহজ জিনিস সঙ্গে, বিরক্তিকর হতে print -N á | tmux loadb - ; tmux showbকপি করে প্রিন্ট \303\241\000)।
  3. tmux saveb - | ...: স্ট্রিনে অশোধিত কাঁচা বাইটগুলি save-bufferকেবল বিপরীত করে load-bufferএবং লেখায় যা বেশিরভাগ ক্ষেত্রেই পছন্দসই। এরপরে আপনি অন্য পাইপ একত্র করা চালিয়ে যেতে পারেন, এবং যেমন। | xargs -n1 -I{} ...প্রক্রিয়া লাইন অনুযায়ী পাস , ইত্যাদি।

1
tmux show-bufferসি0 নিয়ন্ত্রণের অক্ষর এবং অ-এসসিআইআই বাইটস (যেমন উচ্চারণযুক্ত লাতিন অক্ষর ইত্যাদি) এর অক্টাল এনকোডিং করবে। আপনি tmux save-buffer -যদি কাঁচা বাইট চান তবে আপনি এটি ব্যবহার করতে পারেন (এটি সাধারণত যা আপনি চান))
ক্রিস জনসেন

@ ক্রিস জোনসেন এটি ধরার জন্য অনেক ধন্যবাদ, আমি সেই অনুযায়ী উত্তর আপডেট করেছি updated
কল্পনা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.