কমান্ড কার্যকর করার সময় টার্মিনাল আউটপুট কীভাবে আড়াল করা যায়?


62

যখন আমি ১১.১০-তে গ্রহন এবং ডকুমেন্ট দর্শকের মতো কমান্ড লাইন থেকে কিছু প্রোগ্রাম চালু করি তখন এটি প্রচুর পরিমাণে তথ্যের সংজ্ঞা দেয় যা অসম্পূর্ণ বলে মনে হয়।

এছাড়াও যখন তারা ব্যাকগ্রাউন্ডে চালিত হয় তারা কখনও কখনও টার্মিনালে আউটপুট উত্পাদন চালিয়ে যায় যা আমি বর্তমানে কাজ করছি যা বিরক্তিকর।

আমি তাদের কেবল প্রবর্তন এবং পটভূমির জিনিসগুলি পটভূমিতে রাখতে চাই। আমার যুক্তিটি হ'ল আপনি যদি জিইআইআইয়ের মাধ্যমে এই প্রোগ্রামগুলি চালু করেন (উদাঃ কোনও আইকনে ডাবল ক্লিক করে) এই বার্তাগুলি আমাকে কখনই প্রদর্শিত হয় না, সুতরাং কমান্ড লাইনে আমার সেগুলির দরকার নেই।


উত্তর:


81

আপনি যদি কনসোলে স্টাফ লেখার বিষয়টি এড়াতে পারেন তবে প্রোগ্রাম থেকে আউটপুট কীভাবে তৈরি হবে তা নির্ভর করে। যদি এটি স্ট্যান্ডার্ড আউটপুট এ প্রবাহিত হয়, তবে এটি করার জন্য যথেষ্ট

$ eclipse >/dev/null

এবং কোনও আউটপুট তৈরি করা উচিত নয়।

ত্রুটি বার্তাগুলি দমন করতে:

$ eclipse >/dev/null 2>&1

বা ব্যাশে, সহজভাবে:

$ eclipse &>/dev/null

তবে যদি তারা এটি কোনওভাবে আলাদাভাবে করেন তবে এটি কনসোলে লেখা থেকে বিরত রাখতে সমস্যা হতে পারে।

যদি সম্ভব হয় তবে মফিনস্টেটওয়াইড দ্বারা প্রদত্ত সমাধানটি ব্যবহার করুন


2
eclipse 2&>1 >/dev/nullপরিত্রাণ পেতে চাই stderr। ডিফল্ট কেবল পুনর্নির্দেশ করে stdout। এটি করার কোনও "আলাদা" উপায় নেই, আপনি যদি স্ট্ডআউট এবং স্টার্ডার উভয়কেই নীচে রেখে দেন তবে কোনও আউটপুট থাকবে না।
টিসি 1

@ টিসি 1 নীতিগতভাবে, একটি প্রোগ্রাম আবার / ডিভ / টিটি খুলতে পারে এবং সেখানে আউটপুট প্রিন্ট করতে পারে। অনুশীলনে, জিইউআই প্রোগ্রামগুলি এটি করবে না।
র্যান্ডম 832

@ র্যান্ডম 832 নীতিগতভাবে, আমি স্টারডারকে / ডিভ / ডিএসপি বা অতিরিক্ত লুলজের জন্য অ্যাপলে পাইপ দেওয়ার পরামর্শ দেব ... :) তবে আপনি ঠিক বলেছেন, তাত্ত্বিকভাবে এটি করা যেতে পারে, বাস্তবে - আমি সম্ভবত এ যে লোকটি করেছে তার পক্ষে কমপক্ষে বরং অশান্ত ইমেল লিখুন।
টিসি 1

5
@ টিসি 1 "2> & 1> / dev / নাল" স্টডআউট বিট বালতিতে পুনর্নির্দেশ করবে, তবে স্ট্ডার পুনঃনির্দেশিত হবে না। আপনাকে অর্ডারটি বিপরীত করতে হবে এবং করতে হবে: "> / ডিভেল / নাল 2> & 1"
উইলিয়াম পার্সেল

9
আপনার কাছে শুধু করতে পারেন: eclipse &> /dev/null। এটি স্টিন এবং স্টাডার উভয়কে পুনর্নির্দেশ পয়েন্টে (ব্যাশে) ধরে
ওয়ারেন

12

আপনি একটি বাশ ফাংশন তৈরি করতে পারেন যা কমান্ডের নামটি উপনাম করবে এবং আপনি যা চান তা অর্জন করতে কিছু অতিরিক্ত কার্যকারিতা যুক্ত করতে পারেন।

উদাহরণস্বরূপ: ধরা যাক আপনি gvimকমান্ড লাইন থেকে (একটি গিও পাঠ্য সম্পাদক) চালু করতে চান ।

আপনি এইভাবে একটি ফাংশন লিখতে পারে:

function gvim () {
    nohup gvim "$@" > /dev/null 2>&1 & disown
}

(এই ফাংশনটি আপনার .bashrcবা .bash_aliasesফাইলে যুক্ত করুন যাতে এটি সর্বদা লোড থাকে)

ব্যাখ্যা:

  • এই উপনাম হবে gvimএছাড়াও নামে একজন ব্যাশ ফাংশন কমান্ড gvim(তাই যখন আপনি টাইপ gvimএকটি ব্যাশ প্রম্পটে, এটি আপনার ডাকব gvimফাংশন, বরং বাস্তব নির্বাহ চেয়ে gvimকমান্ড। আপনার ফাংশন তারপর বাস্তব আহ্বান gvimকমান্ড (এবং তার নিয়মিত args গ্রহণ), কিছু যুক্ত বৈশিষ্ট্য:

    • stdout এবং stderr এ পুনঃনির্দেশ /dev/null(টার্মিনালে আউটপুট দমন করে)
    • &পটভূমিতে কমান্ড চালাতে ব্যবহার করে (যাতে আপনার শেলটি অবরুদ্ধ থাকে না)
    • disownশেল থেকে পটভূমি কাজ সরাতে ব্যবহার করে (যাতে এটি সক্রিয় কাজের তালিকায় প্রদর্শিত হবে না)
    • nohupটার্মিনাল থেকে প্রক্রিয়াটি বিচ্ছিন্ন করতে ব্যবহার করে (যাতে আপনি শেল সেশনটি শেষ করতে পারেন বা প্রক্রিয়াটি না মেরে আপনার টার্মিনালটি বন্ধ করতে পারেন)

বিটিডব্লু, আমি মনে করি এটি @ মিশ্রির গৃহীত উত্তরের চেয়ে আরও ব্যাপক সমাধান
কোরি গোল্ডবার্গ

6

কমান্ড স্যুইচ হিসাবে --help যুক্ত করার চেষ্টা করুন এবং "শান্ত" সন্ধান করুন এটির আউটপুট দমন করা উচিত, বা কেবল জিইউআই থেকে চালু করা উচিত launch এবং স্যুইচ দিয়ে লঞ্চ করুন বা স্ক্রিপ্টের মাধ্যমে এটিকে দমন করার উপায় খুঁজে পান

ব্যক্তিগতভাবে আমি সেই আউটপুট পেতে ক্লাইম থেকে চালু করি যাতে সমস্ত জিইউআই অ্যাপ্লিকেশনের পক্ষে এটি সম্ভব না তা নিশ্চিত না।

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