উত্তর:
@ এরিওয়োক ইতোমধ্যেই প্রশ্নের জবাব দিয়েছেন , কিন্তু আসলে কী ঘটছে তা ব্যাখ্যা করে এবং আপনি যে আচরণটি করছেন তা আপনি কেন দেখছেন তা নিয়ে আমি স্টাব করব।
সমস্যা আপনার পুনর্নির্দেশ সঙ্গে হয়। তুমি লিখছ:
cd - 2>&1 /dev/null
যেহেতু পুনঃনির্দেশগুলি কমান্ড লাইনের মধ্যে যে কোন জায়গায় প্রদর্শিত হতে পারে (আপনি নিজের মতো কিছু সহজ করে নিশ্চিত করতে পারেন echo a b 2>&1 c </etc/fstab d ), পুনঃনির্দেশিত করা হয় আসলে পরে stripped হয়:
cd - /dev/null
সমস্যা দেখুন? আপনি দুটি আর্গুমেন্ট পাস করা হয় cd, এক যুক্তি এবং দুটি পুনঃনির্দেশনা। যেহেতু আপনি শুধুমাত্র এক সময়ে এক বর্তমান ডিরেক্টরি হতে পারে, cd শুধুমাত্র তার প্রথম যুক্তি বিবেচনা করে, এই ক্ষেত্রে যা -।
সম্ভবত আপনি কি অভিপ্রেত লিখতে হয় একটি cd স্টਡਰ এবং স্টডাউটের উভয় পুনঃনির্দেশনার সাথে কমান্ড / dev / null। যে করতে দুটি উপায় আছে।
আপনার ক্ষেত্রে সহজতম কেবল একটি শেলটি অবহিত করতে হবে যা আপনি পুনঃনির্দেশকরণ চান > অক্ষর। @ এরিওয়াক এই পরামর্শ দিচ্ছে।
cd - 2>&1 >/dev/null
এটি প্রথমে স্ট্যডারর (ফাইল বর্ণনাকারী 2) ফাইল ডিস্ক্রিপ্টর 1 (স্টডাউট) তে পুনঃনির্দেশিত করে, তারপর stdout (অন্তর্নির্মিত 1) / dev / null তে পুনঃনির্দেশিত করে। উল্লেখ্য যে ক্রম গুরুত্বপূর্ণ; যদি আপনি পুনঃনির্দেশগুলি বিপরীত করেন তবে একই ফলাফল পাবেন না, তবে কিছু ক্ষেত্রে এটি প্রদর্শিত হতে পারে যে আপনি কীভাবে নির্দিষ্ট প্রোগ্রাম সম্পর্কিত আউটপুট স্ট্রীমগুলি ব্যবহার করেন।
বিকল্পভাবে, হিসাবে প্রস্তাব করা হয়েছে @demure , তুমি ব্যবহার করতে পার &> এই সিনট্যাক্সটি আপনার শেল দ্বারা সমর্থিত হলে উভয় প্রবাহ একবারে পুনঃনির্দেশিত করতে।
cd - &>/dev/null
নোট করুন যে এই বিকল্পের কোনো ত্রুটি এছাড়াও নীরব হবে $OLDPWD আর বিদ্যমান নেই, যেহেতু আপনি সিস্টেমের কালো গর্তে স্ট্যান্ডার্ড ত্রুটি আউটপুট পুনঃনির্দেশিত করছেন। যদি এটি একটি উদ্বেগ, আমি চেক করব $? পরে; এটি যদি সত্যিকারের উদ্বেগ হয় তবে আপনাকে অবশ্যই এটি নিশ্চিত করতে হবে, তবে অন্তত আমার পরীক্ষায় ব্যর্থ হওয়া উচিত cd (কিনা cd $someplace অথবা cd - ) সেট $? = 1 সাফল্যের পরে $? = 0।
হয়তো আপনি ব্যবহার করতে পারেন
cd $OLDPWD
কিন্তু এই ক্ষেত্রে আপনি আরো টাইপিং প্রয়োজন হবে :)
কিন্তু আপনার একটি সুবিধা থাকবে: যদি কোনও ত্রুটি থাকে তবে বার্তাটি / dev / null তে পুনঃনির্দেশিত হবে না।
cd /tmp bash cd - বলেছেন bash: cd: OLDPWD not set দ্বিতীয় সিডি এ; যখন ক্রম cd /tmp bash cd $OLDPWD আপনি ~ drops ~ (প্রায় অবশ্যই $ OLDPWD একটি খালি স্ট্রিং বিস্তৃত কারণ)। cd $OLDPWD আপনি অন্তত এক সম্পন্ন একবার জরিমানা কাজ করবে cd শেল মধ্যে প্রশ্ন, কিন্তু আগে না।
$OLDPWDঅনির্বাচিত, এই আপনি ড্রপ করা হবে~।cd -একটি ত্রুটি মুদ্রণ করা হবে (এবং সম্ভবত আপনি ইতিমধ্যে যেখানে আপনি ছেড়ে)।