একটি ফাইলটিতে সমস্ত tmux স্ক্রোলব্যাক লিখুন


194

আমি কীভাবে কোনও ফাইলটিতে টিএমউক্স সেশনে সমস্ত স্ক্রোলব্যাক লিখতে পারি?

capture-panel বর্তমান স্ক্রিনটি দখল করতে পারে তবে পুরো স্ক্রোলব্যাকটি নয়।

উত্তর:


52

এটি history-limitআপনার যে মান নির্ধারণ করেছে তার উপর নির্ভর করে .tmux.conf- ডিফল্ট 2000; আপনি যদি আরও ক্যাপচার করতে চান তবে আপনার স্পষ্টভাবে লাইনের সংখ্যা নির্ধারণ করতে হবে।

পুরো স্ক্রোলব্যাক ক্যাপচার করতে, অনুলিপি মোড লিখুন, পুরো স্ক্রোলব্যাকটি নির্বাচন করুন এবং এটি বাফারে ইঙ্ক করুন, তারপরে এটি আপনার ফাইলে আটকে দিন।

আপনি এটি কীভাবে সম্পাদন করবেন তা mode-keysআপনার পছন্দ, vi বা ইম্যাক্সের উপর নির্ভর করবে । man tmuxসম্পর্কিত কী বর্ণনা করার জন্য একটি সহায়ক সারণী রয়েছে।

.tmux.confএটিকে সরল করার জন্য আমার নিম্নলিখিতগুলিতে রয়েছে :

unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

সম্পূর্ণ স্ক্রোলব্যাক ক্যাপচার করার প্রক্রিয়াটি হ'ল:

PrefixEsc : অনুলিপি মোড প্রবেশ করতে

v : ভিজ্যুয়াল নির্বাচন শুরু করার জন্য (ধরে নিচ্ছেন আপনি ইতিমধ্যে পর্দার নীচে রয়েছেন)

gg : স্ক্রোলব্যাকের সমস্ত কিছু ক্যাপচার করতে

y : এটি বাফারে ইঙ্ক করে

Prefixc : অন্য একটি টিএমউक्स উইন্ডো খুলুন

vim scrollback.txt

i : ভিমে inোকান মোড প্রবেশ করুন

Prefixp : ফাইল এ পেস্ট করুন

এখানে একটি উত্তরও রয়েছে যা কীভাবে কার্যকর হতে পারে তা ব্যবহার করে অস্থায়ী ফাইলে বাফারটি অনুলিপিxsel করতে হবে।


2
এটি সর্বোত্তমভাবে সমস্যাযুক্ত ... ভিমে সন্নিবেশ মোডে আটকানোতে সমস্ত ধরণের সমস্যা রয়েছে, যেমন আপনি যখন স্বয়ংক্রিয়ভাবে ইনডেন্টেশন সক্ষম করে থাকেন। আমার সন্তুষ্টি অর্জনের জন্য এটি কখনই পাইনি।
কনরাড রুডলফ

13
আপনি যদি :set pasteভিমে ব্যবহার করেন, ভিম স্বয়ংক্রিয় ইনডেন্টেশন বা কোনও সন্নিবেশ-ভিত্তিক কীবাইন্ডিংগুলি যুক্ত করা উপেক্ষা করবে।
tlunter

@ টিউনটার সুন্দর টিপ!
জেসনওয়ারিয়ান

এটি কি ডিফল্ট কী বাইন্ডিং দিয়ে করা যায়?
ডেভেলওয়াল

@ ডেভালোল অবশ্যই, আমি আমার থেকে যে কী.tmux.conf
বাইন্ড

223

একটি সহজ উত্তর খুঁজছেন যারা, শুধু ব্যবহার করার জন্য prefix+ + :, তারপর টাইপ capture-pane -S -3000+ + return(প্রতিস্থাপন 3000এই কপি একটি বাফার মধ্যে যারা লাইন যদিও বহু লাইন তোমাকে রক্ষা করতে চাই সঙ্গে।)।

তারপরে, কোনও ফাইলটিতে বাফারটি সংরক্ষণ করতে, কেবলমাত্র prefix+ :আবার ব্যবহার করুন এবং আপনার যা যা চান তার পরিবর্তে save-buffer filename.txt+ টাইপ করুন ।returnfilename

(ডিফল্টরূপে prefixহয় ctrl + b।)


14
save-buffer filename.txtফাইলটি (বর্তমান ডিরেক্টরি) /নয়, এতে সংরক্ষণ করার মতো মনে হচ্ছে pwd। পরিবর্তে, আমি একটি নিখুঁত ফাইলের পথ সরবরাহ করেছি এবং এটি একটি
কবজির

14
এবং ভুলে যাবেন না যে মাইনাস
<<< মাউন্ট- বুফার- লাইনের- আপনি- সচেতন- থেকে-

9
এটি এখানে সেরা উত্তর। তোমাকে অনেক ধন্যবাদ.
জেসি অ্যাটকিনসন

7
হ্যাঁ, আপনি জিতেন এটি শীর্ষ উত্তর হওয়া উচিত।
শব্দসুবিহীন

1
+ n> 1 আপগোটে লগ ইন করার পরে, এটি প্রদর্শিত হবে কমপক্ষে দ্বিতীয় বার এই উত্তরটি আমার পক্ষে সহায়ক হয়েছে। এক্সডি
L0j1k

159

সঙ্গে tmux 1.5, capture-paneকমান্ড গ্রহণ -Sএবং -Eক্যাপচার শুরু এবং শেষ লাইন উল্লেখ করতে; নেতিবাচক মানগুলি ইতিহাস থেকে লাইন নির্দিষ্ট করতে ব্যবহার করা যেতে পারে। আপনার কাছে একবার বাফারে ডেটা হয়ে গেলে আপনি এটি দিয়ে সংরক্ষণ করতে পারেন save-buffer

এখানে বাইন্ডিংয়ের (উপযুক্ত হিসাবে উপযুক্ত .tmux.conf) উদাহরণ রয়েছে যা ফাইলের নামের জন্য একটি প্রম্পট দিয়ে এটি সমস্তকে আবৃত করে:

bind-key P command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

এটি ইতিহাসের 32768 লাইন এবং বর্তমানে প্রদর্শিত লাইনগুলিকে ক্যাপচার করে (অবধি)। থেকে শুরু করে tmux 1.6, আপনি INT_MIN নিচে সংখ্যার ব্যবহার করতে পারেন যদি আপনার পেন একটি ইতিহাস যে 32Ki লাইন (সাধারণত 2Gi লাইন পর্যন্ত) চেয়ে গভীর আছে। Tmux 2.0 থেকে শুরু করে , আপনি capture-pane -S -"ইতিহাসের শুরুতে শুরু" (অর্থাত্ কোনও বৃহত্তর, হার্ড-কোডেড নেতিবাচক সংখ্যা) এর অর্থ ব্যবহার করতে পারেন ।


দ্রষ্টব্য: সংরক্ষিত ফাইলে লাইনের সংখ্যা সর্বদা ফলকের ইতিহাসের সীমা এবং এর উচ্চতার সমান হবে না।

যখন কোনও ফলকের ইতিহাসের বাফারটি পূর্ণ থাকে, tmux কেবলমাত্র একটি লাইন ছাড়ার পরিবর্তে প্রাচীনতম 10% রেখাগুলি বাদ দেয়। এর অর্থ একটি ফলকের কার্যকর ইতিহাস গভীরতা কখনও কখনও এটির কনফিগার করা সীমাতে 90% এর চেয়ে কম হয়।


1
আপনি সম্ভবত tmux 1.3 চালাচ্ছেন ; আপনি সম্ভবত tmux server-info | head -1আপনার সংস্করণটি দেখতে ব্যবহার করতে পারেন। tmux -Vtmux * 1.4 এবং তার পরে কাজ করে।
ক্রিস জনসেন

1
এটি আমার কাছে পাওয়া একটি সবচেয়ে দরকারী tmux কমান্ড।
কেনি

1
এবং যদি আপনি ইতিমধ্যে আপনার টিএমউक्स উইন্ডোতে রয়েছেন এবং পুনরায় আরম্ভ করতে না চান [PrefixKey] : তবে tmux কমান্ড লাইনে পৌঁছানোর জন্য কিছু করুন, এবং তারপরে পুরো লাইনটি পেস্ট করুন, তবে আপনি কেবল [Prefix] P এটি করুন মূলধন পি এবং আপনি যেতে ভাল।
আলী

1
@ ব্র্যাডেনবেস্ট একটি এসআই উপসর্গ একটি ইউনিটের সাথে সংযুক্ত করা প্রয়োজন। "32Ki" বা "32K" বৈধ নয়। আপত্তি নেই যে বড় কে কোনও এসআই উপসর্গ নয়। চমৎকার কাজটি বিভ্রান্তি-বপনকারী পেডেন্টদের পক্ষে এবং এটির ভুল হচ্ছে।
আলেকসান্দ্র ডাবিনস্কি 21

1
@ ব্র্যাডেনবেস্ট বাইনারি উপসর্গগুলি বিভ্রান্তি বপন করে কারণ 1 এমবি ব্যবহারের সঠিক অর্থ ছিল তবে এখন এর দুটি অর্থ রয়েছে। সবচেয়ে খারাপ, দশমিক অর্থ আইটি শিল্পের পক্ষে অকেজো, স্টোরেজ উত্পাদনকারীরা যারা এটি মিথ্যা বিপণনের জন্য ব্যবহার করে। এই বিভ্রান্তিটি ব্যবহারিক হতে অস্বীকৃত শিশুদের দ্বারা শুরু হয়েছিল। আপনি যদি নিজে এ জাতীয় প্যাডেন্ট না হন তবে আমি আমার স্বরের জন্য ক্ষমাপ্রার্থী এবং আপনাকে বাইনারি উপসর্গের জন্য আপনার উত্সাহটি পুনর্বিবেচনা করার জন্য অনুরোধ করছি।
আলেকসান্দ্র ডাবিনস্কি

19

আমার কাছে স্ট্যান্ডার্ড কী বাইন্ডিং ছিল যা @ জেসনওয়ারিয়ানর উত্তরের চেয়ে কিছুটা আলাদা বলে মনে হয়েছিল এবং কনফিগারেশনে কোনও পরিবর্তন হয়নি।

নীচে আমার জন্য কাজ করা রেসিপি দেওয়া আছে। আপনি যদি টিএমএক্স কনফিগারেশনে কোনও পরিবর্তন করতে না চান এবং দ্রুত কিছু স্ক্রোলব্যাক অনুলিপি করতে চান তবে আপনি এটি দরকারী বলে মনে করতে পারেন।

Prefix== Ctrl+bআমার tmux এ (tmux 1.6, ডেবিয়ান 7)।

  1. নির্বাচন মোড লিখুন: Prefix+ [
  2. শুরু নির্বাচন: Space
  3. ভিআইএম নেভিগেশন ব্যবহার করে প্রয়োজনীয় পাঠ্য হাইলাইট করুন (উদাহরণস্বরূপ, তীরচিহ্নগুলি ব্যবহার করুন বা ggআউটপুট ইতিহাসের শুরুতে পৌঁছাতে টিপুন )।
  4. প্রকৃতপক্ষে অভ্যন্তরীণ ক্লিপবোর্ড ব্যবহার করে অনুলিপি করুন Enter। আপনি অনুলিপি মোড থেকে প্রস্থান করা হবে।
  5. ভিএম ব্যবহার করে যে কোনও ফাইল খুলুন (সম্ভবত নতুন tmux ট্যাবে) এবং Prefix+ ব্যবহার করার আগে আপনার অনুলিপি করা সামগ্রীটি আটকান ]
  6. তারপরে আপনি সেই ফাইলটির বিড়াল করতে পারেন বা আপনার কীভাবে প্রয়োজন আউটপুট ব্যবহার করতে পারেন।

man tmux আমার tmux ইমাস মোডে রয়েছে তা বাছাই করতে আমাকে সহায়তা করেছিল, তাই উপরের কী-বাইন্ডিংগুলির কোনওটিই কাজ করে না। man tmux আবার আমাকে কী ব্যবহার করবেন তা বাছাই করতে সহায়তা করেছে। তবে আমি যে সবচেয়ে বড় ভুলটি করেছি তা হ'ল আমি যে হোস্টটি থেকে বিষয়বস্তুগুলি সংরক্ষণ করেছি সে যে হোস্টটি থেকে আমি
টিএমউक्स চালাচ্ছিলাম

16

আপনি যদি কমান্ড লাইন থেকে চালাতে পারেন এমন কিছু চান (আপনার tmux উপসর্গ কীগুলি ব্যবহার না করে), চালানোর চেষ্টা করুন:

tmux capture-pane -pS -1000000

যদি আপনি এটি চালান এবং মনে হয় এটি কিছু না করে, কারণ এটি ঠিক আপনার পর্দায় যা ছিল ঠিক তাই আউটপুট করছে, সুতরাং এটি একই দেখাচ্ছে।

অবশ্যই, আপনি এটি একটি ফাইলের মধ্যে পাইপ করতে পারেন:

tmux capture-pane -pS -1000000 > file.out

দেখুন tmuxমানুষ পৃষ্ঠা এবং অনুসন্ধান capture-paneটি জিনিস আপনি কি করতে পারেন জন্য (ক্যাপচার মত পালাবার ক্রম যদি আপনি রঙ সংরক্ষণ, বা আপনার চাই কিনা একাধিক চাক্ষুষ লাইন যোগদান করা যখন তারা নতুন লাইন থাকে না উল্লেখ করতে চান)


1
এটি খুব সহায়ক, বিশেষত যেহেতু গৃহীত উত্তর আর কাজ করে না।
piojo

13

এখানে একটি টিএমউক্স প্লাগইন রয়েছে যা এটি সক্ষম করে:

https://github.com/tmux-plugins/tmux-logging

আপনি এটি ইনস্টল করার পরে পুরো স্ক্রোলব্যাকটি দিয়ে সংরক্ষণ করুন prefix + alt-shift-p


4

এটি আসলে খুব সহজ। কমান্ড মোডটি টিপুন prefix keyতারপরে :। তারপরে capture-pane -S -<line number you want to dump> তারপরে করুনsave-buffer <filepath>

এই ফাইলটিতে সমস্ত স্ক্রোলব্যাক আউটপুট রয়েছে। সুরক্ষার কারণে আপনার পরে বাফারটি মুছে ফেলা উচিত।


1

আমি কীভাবে কোনও ফাইলটিতে টিএমউক্স সেশনে সমস্ত স্ক্রোলব্যাক লিখতে পারি?

আমি এটি আমার ~ / .tmux.conf এ ব্যবহার করি এবং এখন যখন আমি আমার চলমান শেলটি প্রস্থান করি তখন পেন আউটপুটটি অনন্য লগ ফাইলে সংরক্ষণ করা হয়:

set -g remain-on-exit
set-hook pane-died 'capture-pane -S - -E - ; save-buffer "$HOME/logs/tmux/tmux-saved.#{host_short}-#{session_id}:#{window_id}:#{pane_id}-#{pane_pid}-#{client_activity}.log"; delete-buffer; kill-pane'                        
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.