কম কমান্ডকে গতিশীলভাবে রিফ্রেশ করার কোনও উপায় আছে কি?


141

আমি watchআদেশটি পছন্দ করি তবে এর সীমাবদ্ধতা রয়েছে

আমি জানতে চাই কিনা আমি কার্যকারিতা অনুকরণ পারে কৌতুহলী watchসঙ্গে less। আমি মূলত আমার ডিরেক্টরিটি স্ক্রোল করার সক্ষমতাটি খুঁজছি কারণ এটি চলমান স্ক্রিপ্টের মাধ্যমে গতিশীলভাবে সংশোধন করা হয়েছে।


আমি সন্ধান করছি tail -f foo.log | grep bar, এবং পুচ্ছ / গ্রেপ পাইপলাইন পুনরায় চালু করার সাথে সাথে গ্রেপ কমান্ডটি গতিশীলভাবে পরিবর্তন করতে সক্ষম হব।
আলেকজান্ডার মিলস

উত্তর:


119

ইন less, আপনি Fকোনও ফাইলের শেষে পড়া চালিয়ে যেতে টাইপ করতে পারেন (যেমন tail -f); আপনি :eআলাদা ফাইল দেখতে টাইপ করতে পারেন এবং একটি ফাইলের নাম রাখতে পারেন, তবে দুর্ভাগ্যক্রমে আপনি যদি বর্তমান ফাইলটির নাম lessলিখেন তবে ফাইলটি পুনরায় লোড করবেন না। তবে সাবজ্যান্টন দ্বারা প্রস্তাবিত বর্তমান ফাইলটি পুনরায় পড়ার কৌশল রয়েছে : অস্তিত্বহীন ফাইলটির নাম টাইপ করুন :eএবং লিখুন ; যার ফলে ত্রুটি বার্তা প্রদর্শন করা কম হয় এবং তারপরে বর্তমান ফাইলটি পুনরায় লোড করা যায়।

আপনি যদি এর বিকল্প খুঁজছেন তবে watch lsএখানে কয়েকটি দেওয়া হল:

  • আধুনিক ফাইল ম্যানেজার (যেমন নটিলাস, থুনার, কনকরার, ডলফিন, ফাইন্ডার) রিয়েল টাইমে ভিউ রিফ্রেশ করে।
  • ইমাসের রিয়েল-টাইম রিফ্রেশ নেই, তবে auto-revert-modeএটি প্রতি 5 সেকেন্ডে ফাইল বা ডিরেক্টরিটি পুনরায় লোড করবে (বিলম্বটি কনফিগারযোগ্য))
  • যদিও ডাব্লু 3 এম প্রাথমিকভাবে একটি ওয়েব ব্রাউজার, এটি একটি পাসযোগ্য ডিরেক্টরি এবং পাঠ্য ফাইল দর্শক করে। R(স্থানীয়) ইউআরএল পুনরায় লোড করতে টিপুন ।

6
আমার জন্য: e এলোমেলো নাম jkdlfjldf অস্তিত্বযুক্ত ফাইলের নামটি লোড করতে ব্যর্থ হয় তারপরে বর্তমান ফাইলটিতে আবার লোড হয়: ডি
সাবজেন্টন

1
@ সাবজেন্টন ধন্যবাদ, আমি এটি জানতাম না। এটা দুর্দান্ত কৌশল আমি এটিকে আমার উত্তরে যুক্ত করেছি, তবে আপনি নিজের উত্তর হিসাবে এটি পোস্ট করতে পারেন (যা আশা করি যায়েদ গ্রহণ করবে)।
গিলস

1
@CMCDragonkai না, less +Fকেবল সংযুক্ত সামগ্রীর জন্য নজর রাখে । :e nonexistentfileসম্পূর্ণ পরিবর্তিত ইনপুট পুনরায় পড়তে ব্যবহার করুন।
গিলস

1
এর জন্য কি কোনও কমান্ড লাইনের পতাকা রয়েছে?
সিএমসিডিগ্রাগনকাই

3
@ পোলওয়াগল্যান্ড না, Rফাইলটি বিশ্বস্তভাবে রিফ্রেশ করে না। এটি স্ক্রিনটি রিফ্রেশ করে এবং কিছু ইনপুট বাফার মুছায়, তবে এটি আসলে সমস্ত পরিস্থিতিতে ফাইল থেকে ডেটা পুনরায় লোড করে না (কেবল ফাইলটি বড় হলে? আমি কোডের গভীরে খনন করি নি)।
গিলস

65

Shift+Fকরতে হবে lessঅনুরূপ tailf। এটি হ'ল, যদি আরও ডেটা ফাইলে সংযুক্ত করা হয় তবে তা রিফ্রেশ হয়।


7
মনে রাখবেন যে এটি কেবল সংযোজনগুলির জন্য কাজ করে। যদি লাইনগুলি সরিয়ে ফেলা হয় বা জায়গায় সম্পাদনা করা হয় তবে lessএই পরিবর্তনগুলি দেখাবে না।
নাথানিয়েল এম বিভার

কীভাবে আমি মোড অনুসরণ করা বন্ধ করব এবং স্ক্রোলযোগ্য মোডে পুনরায় প্রবেশ করব?
টম হেল

1
<kbd> Ctrl + C </kbd>
বালকি

1
বালকি আমার অভিজ্ঞতাটি হ'ল এটি ব্যবহার করা হয় যদি ডেটা পাইপিং কমান্ডটি হত্যা করে $COMMAND | less। আমি ভাবছি এর আশেপাশে কোনও সুন্দর উপায় আছে কিনা? আপনি মত স্টাফ করতে পারেন $COMMAND > /tmp/file & less /tmp/fileতবে এটি খুব সুন্দর নয়।
এট রিগ

@ অ্যাট্রি আমি কখনই আমার কমান্ডটি হত্যা করি নি (তবে আমি এইভাবে চলমান কমান্ডগুলির লগগুলি পড়ি, আমি কম প্রযুক্তিগতভাবে পাইপ করি না)
জেনা

41

কেবল টাইপ করুন:

less +F filename

এটি সম্পাদকের মধ্যে "F" টিপুন অনুকরণ করে।


1
ধন্যবাদ; alias check="less +F"আমার সাথে ওরফে যুক্ত করলাম .bashrc
লুক ডেভিস

22

manপৃষ্ঠাগুলি খুব তথ্যপূর্ণ হতে পারে। তাদের দ্বারা ভয় পাবেন না। অন্য কিছুর মধ্যে, man lessআপনি এই Rআদেশটি ব্যবহার করতে পারেন :

   R      Repaint the screen, discarding any buffered input.  Useful if the file is changing while it is being viewed.

(আমি বুঝতে পারি যে এই প্রশ্নটি 6 বছরেরও বেশি পুরানো, তবে এটি গুগল অনুসন্ধানে উঠে আসে, তাই আমি এখানে পৌঁছানোর জন্য লিঙ্কটি ক্লিক করেছি এমন একমাত্র আমি নই।)


7
এটি অন্য প্রোগ্রাম থেকে আউটপুট দ্বারা ব্যাহত হওয়ার ক্ষেত্রে এটি স্ক্রিনটিকে পুনরায় রঙ করে। এটি ধারাবাহিকভাবে ফাইলটি পুনরায় লোড করে না। কোডটি কী করে তা দেখার জন্য আমি গভীরভাবে খনন করি নি, পরীক্ষামূলকভাবে সংক্ষিপ্ত ফাইলগুলি আবার লোড হয় না। আমি অবশ্যই মানব পৃষ্ঠাগুলি দ্বারা ভয় পাই না এবং আমি বলি যে এই বিবরণটি খারাপভাবে বলা হয়েছে: "পুনরায় রঙ করা" বোঝায় না যে ইনপুটটি পুনরায় পড়বে, এবং প্রকৃত আচরণটি "ফাইলটি পরিবর্তিত হলে কার্যকর" কার্যকর হবে না (সম্ভবত এটি একটি বাগ? আমি জানি না যেহেতু আমি জানি না কমান্ডটি কী করার কথা রয়েছে) ..
গিলস

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

3 বাইট লম্বা ফাইল ব্যবহার করার পরেও আমার পক্ষে কাজ করে। এটি বড় ফাইলগুলির জন্য কেন কাজ করবে না তা আমি ভাবতে পারি না।
অ্যাডিসন

1
গ্রেট! আমার জন্য এটি ছোট এবং দীর্ঘ উভয় ফাইলের জন্য কাজ করে। আমি কেবল দুটি সম্ভাব্য সমস্যা লক্ষ্য করেছি: ১. lessফাইলটির নাম ব্যবহার করে ফাইলটি পুনরায় খোলা হয়নি - অর্থাত্ যখন ফাইলের ইনোড পরিবর্তিত হয়েছিল (যেমন ফাইলটি ব্যবহার করে ওভাররাইটিংয়ের মতো mv) তখন পুরানো ফাইলের বিষয়বস্তু থেকে যায় (সম্ভবত পুরানো ইনোডটি পুনরায় পড়া হয়েছিল) - - ২. প্রথম প্রদর্শিত লাইনটি সম্ভবত মূল ফাইলের সামগ্রী হিসাবে একই বাইট অফসেটে শুরু হবে। সুতরাং যখন লাইন দৈর্ঘ্য পরিবর্তন হয় প্রথম প্রদর্শিত লাইনটি অসম্পূর্ণ হতে পারে এবং প্রদর্শিত লাইনগুলি উপরের / নীচে সরতে পারে।
পাবউক

Rসবসময় কাজ করে না। দেখুন unix.stackexchange.com/questions/4351/...
wisbucky

5

"এফ" কী চলাকালীন lessঅনুরূপ "অনুসরণ" করবে tail -f, তবে আমি এখানে নিশ্চিত যা তা অর্জন করবে কিনা তা আমি নিশ্চিত নই।


5

আমি সাধারণত Gএককালীন ভিত্তিতে আউটপুটটি টাইপ করতে টাইপ করি । আমি এটি সিআইএফএস এর মতো এএএ নেটওয়ার্ক ফাইল সিস্টেমের জন্য বিশেষত সহায়ক বলে মনে করি।


এটি কম দিয়ে খোলা ফাইলটির অন-ডিমান্ড রিফ্রেশের আরও বেশি। ফাইলের শেষে জাম্পিংয়ের পাশাপাশি এটি পরিবর্তন করা থাকলে ফাইলটি পুনরায় লোড করে।
জর্ব

1
ধন্যবাদ। প্রথমবার এটি আমার জন্য রিফ্রেশ হয়নি, তবে এখন এটি সঠিকভাবে কাজ করছে বলে মনে হচ্ছে। লোকটিতে এটি লিখিত নয় যে এটি ফাইলটিকে সতেজ করে। man less: 'জি বা> বা ইসএসসি-> ফাইলটিতে লাইন এন এ যান, ফাইলটির শেষে ডিফল্ট হন' ' আমি আমার পুরানো ভুল মন্তব্যগুলি এখানে মুছে ফেলছি, তাদের জন্য দুঃখিত।
ইয়ারোস্লাভ নিকিতেনকো

1
বিটিডাব্লু, আপনি কী 'এককালীন ভিত্তি' বলতে পারেন? lessমার্ক নুডেলম্যান, এর রক্ষণাবেক্ষণকারী নিম্নলিখিত উত্তরগুলি দিয়েছিলেন: "জি কমান্ডটি সাধারণত আর কমান্ডের মতো ফাইলটি পুনরায় পড়ার জন্য জোর করে না। এটি মনে হতে পারে যদি জি এর সময় ফাইলটির সমাপ্তি এখনও পড়েনি if অনুরোধ করা হয়, যাতে ফাইলের শেষে লাফিয়ে তোলার জন্য অবশ্যই সেখানে প্রথমবারের মতো ডেটা পড়তে হবে উদাহরণস্বরূপ, আপনি যদি জি দিয়ে প্রান্তে ঝাঁপ দেন, তবে 1 জি দিয়ে শুরুতে ফিরে যান, তবে অন্য প্রোগ্রামে ডেটা সংশোধন করে ফাইলটির সমাপ্তি (দৈর্ঘ্য পরিবর্তন না করে), "(অবিরত)
ইয়ারোস্লাভ নিকিতেনকো

(বিরাম) "তারপরে আপনি জি দিয়ে আবারও প্রান্তে চলে যান, আপনি পরিবর্তিত ডেটা দেখতে পাবেন না But তবে আপনি যদি শেষের দিকে এবং প্রথম দিকে ফিরে না যান, তবে আপনি প্রথমবার জি কমান্ডটি কার্যকর করবেন এটি অবশ্যই পড়তে হবে সেখানে প্রথমবারের মতো ডেটা এবং অবশ্যই এটি যে কোনও পরিবর্তন হতে পারে যেহেতু কম ঘটেছে প্রথমে আহ্বান করা হয়েছিল। "
ইয়ারোস্লাভ নিকিতেনকো

এই ক্ষেত্রে আমি গতিশীল রিফ্রেশের বিপরীতে এটি এককালীন রিফ্রেশ হিসাবে উল্লেখ করেছি , যা মূল প্রশ্নটি জিজ্ঞাসা করছে তারই একটি অংশ।
জোর্ব

1

আপনি ফাইলটি পড়তে ভিএম ব্যবহার করতে পারেন তারপরে আপনার .vimrcফাইলে নিম্নলিখিত ম্যাপিংটি যুক্ত করতে পারেন এবং আপনি সহজেই এর সাথে একটি ফাইল পুনরায় লোড করতে পারেন ,r:

let mapleader = ","
nnoremap <leader>r :edit <CR>

নোট আপনি যদি ফাইলটি ইতিমধ্যে সম্পাদনা করেন তবে ভিম অভিযোগ করবে। শুধু পরিবর্তন

let mapleader = ","
nnoremap <leader>r :edit! <CR>

পরিবর্তন উপেক্ষা করার জন্য।


তাদের vimআপনার শীতল, মৃত হাত থেকে ক্রাই করতে হবে । প্রশ্নের প্রসঙ্গটি সম্পর্কে less, তবে মনোমোনাকাল প্রবণতার সাথে নিজেকে নিয়ে আমি সহানুভূতিশীল!
বেনিয়ামিন আর

1

Rপুনরায় রঙ করার জন্য ফাইলটি সবসময় পুনরায় লোড হয় না। [1]

সবসময় ফাইলটি পুনরায় লোড করে এমন একটি workaround টিপতে হয় hq, যা সহায়তা পৃষ্ঠাটি খুলবে, তারপরে প্রস্থান করুন। ফাইলটি পুনরায় লোড করতে বাধ্য করার একটি পার্শ্ব প্রতিক্রিয়া রয়েছে।


[1] পরিস্থিতিগুলির কয়েকটি উদাহরণ যা Rপুনরায় লোড করে না এবং করে না:

  • >এবং >>পরিবর্তনগুলি: পুনরায় লোড করুন
  • sed -i, gEdit, TextEdit: পুনরায় লোড করবেন না
  • লিনাক্সে, viপরিবর্তনগুলি: ডিও লোড হবে
  • ম্যাক-এ, viপরিবর্তনগুলি: পুনরায় লোড করবেন না

আমি বিশ্বাস করি যে পার্থক্যটি ইনোড পরিবর্তন হয় কিনা (আপনি এটি দিয়ে পরীক্ষা করতে পারেন ls -i foo.txt) to যদি ইনোড পরিবর্তন হয়, তবে Rকাজ করবে না।


0

tail -fপরিবর্তে আপনি এটি পাইপ করতে পারেন , এটি আপনাকে আউটপুট অনুসরণ করে following যদিও আপনি আপনার আউটপুটটির মাধ্যমে সরানোর (স্ক্রোল) ক্ষমতা হারাবেন।


0

আপনি যদি কোনও ব্রাউজার ব্যবহার করতে বিরত না হন তবে আপনি এই আদেশ দিয়ে অ্যালগারন ওয়েব সার্ভার চালু করতে পারেন :

algernon -a -t /directory/name

তারপরে ফাইলগুলির একটি তালিকা প্রদর্শিত হবে এবং http: // লোকালহোস্ট: 3000 / এ স্বতঃ-রিফ্রেশ হবে


ভুল থ্রেড? ..
টমাসজ

এটি ডিরেক্টরি দেখার একটি উপায় বলে মনে হচ্ছে, যদিও এটি থেকে অনেক দূরেless
জেফ শ্যাচলার

0

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

আমি আমার টার্মিনাল প্রোগ্রামে (সিকিউরসিআরটি) এর জন্য ম্যাক্রো বোতামটি তৈরি করে শেষ করেছি। ম্যাক্রোটি কেবল 'জিজি'।

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