আরেকটি সম্ভাবনা ব্যবহার করা commandচোখকে অবিশ্বাস করতে execA থেকে বিশেষ মত একটি প্লেইন পুরানো builtin করার builtin:
alias shh='command exec >/dev/null 2>&1'
সুতরাং এখন আপনি এটি করতে পারেন:
(shh; call some process &)
আমি সবেমাত্র লক্ষ্য করেছি যে এটি commandকাজ করে না zsh (যেমন এটি অন্যান্য বেশিরভাগ শেলগুলিতে করা হয় বলে মনে হয়) তবে যেখানে এটি কাজ করে না আপনি পরিবর্তে এটি করতে পারেন:
alias shh='eval "exec >/dev/null 2>&1"'
... যা সর্বত্র কাজ করা উচিত।
আসলে, আপনি এমনকি করতে পারেন:
alias shh='command exec >"${O:-/dev/null}" 2>&1'
সুতরাং আপনি করতে পারেন:
O=./logfile; (shh;echo can anyone hear &)
O=; (shh; echo this\? &)
cat ./logfile
আউটপুট
can anyone hear
@ ভিনক 17 এর সাথে একটি মন্তব্য আলোচনার অনুসরণ করে, এটি লক্ষণীয় যে জিইউআই অ্যাপ্লিকেশনটির প্রায় সমস্ত কনসোল আউটপুট সাধারণত Xএর টিটি - এর কনসোলের জন্য তৈরি। আপনি যখন Xকোনও X .desktopফাইল থেকে কোনও অ্যাপ চালনা করেন তবে এটি আউটপুট উত্পন্ন করে তা Xভার্চুয়াল টার্মিনালে চলে যায় - যা আপনি Xপ্রথমে চালু করেছিলেন সেখান থেকে এটিই ছিল । আমি এই tty নম্বর দিয়ে সম্বোধন করতে পারেন $XDG_VTNR।
আশ্চর্যজনকভাবে যদিও - এবং সম্ভবত যে আমি সবেমাত্র ব্যবহার শুরু startxকরেছি - আমি আর লিখতে পারি না বলে মনে হয় /dev/tty$XDG_VTNR। এটি (যেমন আমি সম্ভবত বেশি সম্ভবত বলে মনে করি) এর সাথে Xorgv1.16 প্রয়োগ করা খুব সাম্প্রতিক ও কঠোর পরিবর্তনের সাথে কিছু করতে পারে যা এটি রুট সুবিধার systemdপ্রয়োজনের পরিবর্তে ব্যবহারকারীর অধীনে চলতে দেয় ।
তবুও, আমি এটি করতে পারি:
alias gui='command exec >/dev/tty$((1+$XDG_VTNR)) 2>&1'
(gui; some x app &)
এখন এর সমস্ত some x appকনসোল আউটপুট /dev/tty$((1+$XDG_VTNR))আমার xtermপ্রেটির চেয়ে বরং পরিবর্তিত হবে । আমি এর শেষ পৃষ্ঠাটি যে কোনও সময়ে পেতে পারি:
fmt </dev/vcs$((1+$XDG_VTNR))
যাইহোক আউটপুট লগ করতে কিছু ভার্চুয়াল টার্মিনাল উত্সর্গ করা সম্ভবত সেরা অনুশীলন। /dev/consoleসাধারণত ইতিমধ্যে এটির জন্য সংরক্ষিত রয়েছে, যদিও আপনি chownসম্ভবত এটি blithely লিখতে প্রয়োজন হয় না করতে পছন্দ করতে পারেন । আপনার কাছে এমন কিছু ফাংশন থাকতে পারে printkযা আপনাকে একটি করতে সক্ষম করে - যা মূলত মুদ্রণযোগ্য /dev/console- এবং তাই আমি মনে করি যেভাবে এটি ব্যবহার করতে পারে।
এটি করার আরেকটি উপায় হ'ল এই জাতীয় উদ্দেশ্যগুলির প্রতি অনুগ্রহ উত্সর্গ করা। উদাহরণস্বরূপ, আপনি xtermউইন্ডোটি উন্মুক্ত রাখতে পারেন, ttyসেখান থেকে চালিত পরিবেশের পরিবর্তনশীল অবস্থায় আউটপুট সংরক্ষণ করতে এবং সেই মানটিকে গন্তব্য হিসাবে guiআউটপুট হিসাবে ব্যবহার করতে পারেন । এই ভাবে সমস্ত লগই আলাদা লগ উইন্ডোতে স্থানান্তরিত হবে, আপনি যদি পছন্দ করেন তবে আপনি স্ক্রোল করতে পারেন।
আপনি যদি আগ্রহী হন তবে ইতিহাসের সাথে কীভাবে একই রকম কাজ করা যেতে পারে সে সম্পর্কে আমি একবার উত্তর লিখেছিলাম bash।