আরেকটি সম্ভাবনা ব্যবহার করা command
চোখকে অবিশ্বাস করতে exec
A থেকে বিশেষ মত একটি প্লেইন পুরানো 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
। এটি (যেমন আমি সম্ভবত বেশি সম্ভবত বলে মনে করি) এর সাথে Xorg
v1.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
।