স্ট্যাডার পুনঃনির্দেশ csh এ কাজ করছে না


11

আমি নিম্নলিখিত কমান্ড চালাচ্ছি:

pkg_add emacs-23.4,2.tbz 2> output.log

টার্মিনালে আউটপুট এখনও প্রদর্শিত হয়। আমি যখন টিপুন , আমি পেতে

pkg_add emacs-23.4,2.tbz 2 > output.log

আগে একটি স্থান সঙ্গে2

আমি মূলত এটি রাখিনি। আমি চেষ্টা করি

pkg_add emacs-23.4,2.tbz > output.log 2>&1

আবার, যখন আমি চাপুন , স্পেস যোগ করা হয়েছে

কেন আমার সাথে এমনটি ঘটছে?

আমি ফ্রিবিএসডি তে সিএসএস চালাচ্ছি।

উত্তর:


12

2> পুনর্নির্দেশ csh বা tcsh এর সাথে কাজ করে না।

ব্যবহার করুন chshঅর্ডার ব্যবহার করতে আপনাকে অবশ্যই থেকে / বিন / SH অথবা / usr / local / bin / ব্যাশ আপনার শেল পরিবর্তন করতে কমান্ড 2>শৈলী পুনর্নির্দেশ। দ্রষ্টব্য: রুটের শেলটি / usr / স্থানীয় / বিন / ব্যাশে পরিবর্তন করবেন না

csh এবং tcsh স্ট্যান্ডার্ড আউট এবং ত্রুটি আলাদাভাবে পুনর্নির্দেশ করতে পারে না, তবে >&সংযুক্ত আউটপুট কোনও ফাইলে পুনর্নির্দেশ করবে।


+1 এবং ✔। আমি শেল ব্যবহার করে পরিবর্তন করেছি sh
গ্যাজেটমো

1
@ ক্রেইগ তিনি pkg_addফ্রিবিএসডি-তে চলছে , সুতরাং আমি ধরে নিচ্ছি যে এটি মূল ব্যবহারকারীর জন্য (/ বিন / সিএসএস ফ্রিবিএসডি-র মূলের জন্য ডিফল্ট)। এই ক্ষেত্রে আপনার শেলটি / usr / লোকাল / বিন / ব্যাশে পরিবর্তন করা উচিত নয় । / বিন / শ গ্রহণযোগ্য। রুট হিসাবে লগ ইন করার পরে আপনি কেবল অন্য শেলটিতে স্যুইচ করতে পারেন।
জেমস ও'গর্মন

@ জেমস ও গর্মন ভাল ক্যাচ আমি আমার উত্তর আপডেট করেছি।
ক্রেগ 1

20

আপনি STDERR লুকানোর চেষ্টা করছেন বা এটি STDOUT এ পুনর্নির্দেশের চেষ্টা করছেন কিনা তা আমি নিশ্চিত নই।

কোনও ফাইলে STDOUT পুনর্নির্দেশ করতে:

pkg_add emacs-23.4,2.tbz > stdout.log

STDOUT এবং STDERR একটি ফাইলে পুনর্নির্দেশ করতে:

pkg_add emacs-23.4,2.tbz > & stdxxx.log

STDOUT কে একটি ফাইলে পুনর্নির্দেশ করতে এবং STDERR গোপন করতে:

( pkg_add emacs-23.4,2.tbz > stdout.log ) > & /dev/null

কনসোল এবং STDERR লুকানোর জন্য STDOUT পুনর্নির্দেশ করতে:

( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & /dev/null

কনসোল এবং STDERR এ STDOUT কে একটি ফাইলে পুনর্নির্দেশ করতে:

( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & stderr.log

STDOUT কে একটি ফাইলে এবং STDERR কে একটি ফাইলে পুনর্নির্দেশ করতে:

( pkg_add emacs-23.4,2.tbz > stdout.log ) > & stderr.log

সম্পাদনা: এটি কাজ করার কারণটি হ'ল () এর ক্রিয়াটি আগে ঘটে; তবুও, আমরা যদি স্টডআউট পুনঃনির্দেশিত করি, তবে এটি আর () এর বাইরে আর উপলভ্য হবে না। এটি আমাদেরকে কেবল এসটিডিআরআর দিয়ে ফেলেছে এবং তারপরে আমরা এটি পছন্দসইভাবে পুনর্নির্দেশ করতে পারি।


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

1

Csh এ এটি কীভাবে করা যায় তা আমি জানি তবে 2 টি শেল ব্যবহার করে:

csh -c 'SOME_COMMAND 1>/dev/null' |& tee file.txt

এই জাতীয় উপায়ে stdout ছাড়াই কেবল stderr কে file.txt এ পুনঃনির্দেশ করতে দেয় - যথা আপনি যা চেয়েছিলেন।

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