উত্তর:
&
মধ্যে 2>&1
সহজভাবে বলছেন যে সংখ্যা 1
একটি ফাইল বর্ণনাকারী এবং একটি ফাইল নাম। এই ক্ষেত্রে standard output file descriptor
।
আপনি যদি ব্যবহার করেন , তবে এটির 2>1
নামক কোনও ফাইলে ত্রুটিগুলি পুনর্নির্দেশ করবে 1
তবে আপনি যদি ব্যবহার করেন 2>&1
তবে এটি এটিতে প্রেরণ করবে standard output stream
।
এটি &>
উভয় standard output
এবং standard error
কোথাও পাঠান বলে । উদাহরণস্বরূপ ls <non-existent_file> &> out.file
,। এটি একটি উদাহরণ দিয়ে বর্ণনা করি।
সেটআপ:
koko
নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :
#!bin/bash
ls j1
echo "koko2"
এটি সম্পাদনযোগ্য করুন: chmod u+x koko
এখন নোট করুন যে j1
অস্তিত্ব নেই
এখন চালান ./koko &> output
চালাও cat output
এবং আপনি দেখতে পাবেন
ls: cannot access 'j1': No such file or directory
koko2
, standard error
( ls: cannot access 'j1': No such file or directory
) এবং standard output
( koko2
) উভয়ই ফাইলে প্রেরণ করা হয়েছিল output
।
এখন আবার এটি চালান তবে এবার ভালো লেগেছে:
./koko > output
করুন cat output
এবং আপনি কেবল এর koko2
মত দেখতে পাবেন । ls j1
কমান্ড থেকে ত্রুটি আউটপুট না । এটি আপনাকে পাঠানো হবে standard error
যা আপনি আপনার টার্মিনালে দেখবেন।
গুরুত্বপূর্ণ নোটটি @ বাইট কমান্ডারকে ধন্যবাদ:
নোট করুন যে command >file 2>&1
পুনর্নির্দেশের ক্রমটি গুরুত্বপূর্ণ। আপনি যদি command 2>&1 >file
পরিবর্তে লিখেন (যা সাধারণত আপনি যা চান তা নয়), এটি প্রথমে কমান্ডের stdout
ফাইলটি পুনর্নির্দেশ করবে এবং তারপরে কমান্ডটিকে stderr
তার এখন অব্যবহৃত অবস্থায় পুনঃনির্দেশিত করবে stdout
, সুতরাং এটি টার্মিনালে প্রদর্শিত হবে এবং আপনি এটিটি পাইপ করতে বা পুনঃনির্দেশ করতে পারবেন আবার, তবে এটি ফাইলটিতে লেখা হবে না।
command >file 2>&1
পুনর্নির্দেশগুলির ক্রমে গুরুত্বপূর্ণ। আপনি যদি command 2>&1 >file
পরিবর্তে লিখেন (যা সাধারণত যা চান তা নয়) তবে এটি প্রথমে কমান্ডের স্টডআউটটি ফাইলে পুনর্নির্দেশ করবে এবং এরপরে কমান্ডের স্ট্ডারকে তার এখন অব্যবহৃত স্টাডাউটে পুনর্নির্দেশ করবে, সুতরাং এটি টার্মিনালে প্রদর্শিত হবে এবং আপনি এটি পাইপ করতে পারেন বা এটি পুনর্নির্দেশ করুন, তবে এটি ফাইলটিতে লেখা হবে না।
standard output
যা আপনি আপনার টার্মিনালে দেখবেন" " এই "যাও" করা উচিত নয় standard error
?
> FILE 2>&1
এবং &> FILE
সমতুল্য। 8.2.3.2 দেখুন । ত্রুটি পুনঃ দিকনির্দেশ এর শিক্ষানবিশদের অধ্যায় 8 ব্যাশ গাইড
&> FILE
কেবল বাশের জন্য নির্দিষ্ট যেখানে >FILE 2>&1
আরও বেশি সংখ্যক শেল বোঝা যায়।
[n]>&word
বলা হয় অনুরূপ আউটপুট ফাইল বর্ণনাকারী (দেখুন অধ্যায় 2.7.6 POSIX শেল ভাষা স্ট্যান্ডার্ড)। এই বিশেষ আচরণ সহ শেল, বোর্ন মত এর বৈশিষ্ট্য ksh
, dash
এবং bash
; আসলে, স্ট্যান্ডার্ডটি বোর্ন শেল এবং ksh
। মধ্যে খুঁজছেন tcsh শেল এবং csh এর মূল ম্যানুয়াল, তারা দৃশ্যত যেকোনো ফাইল বর্ণনাকারী অনুরূপ ক্ষমতা প্রদান করবেন না, বিবরণ থেকে অবশ্য >&
, এই আচরণ করবে &>
মধ্যে bash
(যে, পুনঃনির্দেশ ত্রুটি এবং ফাইলে স্বাভাবিক আউটপুট)।
উবুন্টু সহ সিস্টেমগুলির মতো * নিক্সে, আপনি প্রায়শই শুনতে পান যে সবকিছু ফাইল, বা একটি ফাইল বিবরণকারী । স্ট্যান্ডার্ড আউটপুটটি ধ্রুব ফাইল ডেস্ক্রিপ্টর 1 এবং স্ট্যান্ডার্ড ত্রুটি ফাইল ডেস্ক্রিপ্টর 2 হয়। সুতরাং, > FILE 2>&1
প্রযুক্তিগতভাবে ফাইল ডেস্ক্রিপ্টারে 2 ডুপ্লিকেট ফাইল বর্ণনাকারী 2 বোঝানো হয়। এই উত্তরের অন্য কথায় :
2> & 1 শেলটিকে একটি ফাইল বর্ণনাকারী 2 দেওয়ার জন্য শেলকে বলে যা ডেস্ক্রিপ্ট 1 এর সদৃশ। (যেমন স্ট্যাডার এবং স্টাডআউট পয়েন্ট একই এফডি)।
এখানে মূল কীটি হ'ল ডেস্ক্রিপ্ট 1 টি প্রথমে সেট করতে হবে। শেল প্রসেস পুনঃনির্দেশগুলি সঠিক অনুক্রমে বামে কারণ, command >FILE 2>&1
বৈদ্যুতিক তার লাগানো stdout- এ শেল বলে জন্য command
ঢোকা FILE
প্রথম, এবং শুধুমাত্র তারপর বর্ণনাকারী 2 1 কপি, যে হয় 1 এবং 2 একই অবস্থানে বিন্দু হতে পারে - FILE
।
এটি অবশ্যই স্ট্যান্ডার্ড ত্রুটি এবং স্ট্যান্ডার্ড আউটপুট ছাড়িয়ে যায়। হিসাবে এই উত্তরে প্রদর্শন করুন , করে3&>2
... আপনি ফাইললিপি 3 তে নকল করুন (ডুপ 2) ফাইলড্রিপিটার 3-তে, সম্ভবত ইতিমধ্যে ফাইলডেস্কিটার 3 বন্ধ থাকলে
অনেকের মধ্যে ফাইল বর্ণনাকারীদের হেরফেরের উদাহরণ হ'ল dialog
কমান্ডের আউটপুটটি ভেরিয়েবলের মধ্যে ক্যাপচার করা হবে
এটি &>
নির্দিষ্ট করার জন্যও লক্ষণীয় bash
। এতে zsh
একই আচরণ করে তবে ডকুমেন্টেশন অনুসারে, "... মাল্টোসের উপস্থিতিতে '> শব্দ 2> & 1' এর মতো প্রভাব থাকে না"। পসিক্স অনুবর্তীতে /bin/sh
, এটি ব্যাকগ্রাউন্ডে কমান্ড স্থাপনের সাথে নিয়মিত পুনঃনির্দেশ হিসাবে বিবেচিত হবে। এটি আরও দেখুন, এমন কোনও শ কোড আছে যা সিনট্যাক্টিক্যালি বৈধ বাশ কোড নয়? ।
আরো দেখুন:
&>
মানে?