ls -l | একটি নতুন ফাইল পুনঃনির্দেশিত যখন wc -l আউটপুট ভিন্ন


0

"ls -l | wc -l" আউটপুট "1 + নং ফাইল / ডিরেক্টরি" (প্রথম লাইনের জন্য অতিরিক্ত একটি)।

তবে যখন আমি কমান্ড ls -l | wc -l> temp (যখন আউটপুট একটি নতুন ফাইল temp থেকে পুনঃনির্দেশিত হয়)। টেম্প ফাইলে সংরক্ষিত মানটি পুনঃনির্দেশ ছাড়াই আউটপুট করা মানের চেয়ে 1 টি বেশি। আমি মনে করি এটি নতুন "temp" ফাইল তৈরির কারণ, কিন্তু ls -l কমান্ডটি চালানোর পরে টেম্প ফাইলটি তৈরি করা উচিত এবং এইভাবে আউটপুটটি পুনঃনির্দেশ ছাড়াই আউটপুটের মতো হওয়া উচিত।

কেউ সাহায্য করুন

উত্তর:


5

এই পুরোপুরি স্বাভাবিক আচরণ।

শেল (sh, bash, csh, ksh, যাই হোক না কেন) প্রথমটি সম্পূর্ণ কমান্ড লাইনটি পড়বে তা কী হয়।
তারপরে বাম ক্রমের ডানদিকে প্রসেস, পাইপ এবং পুনঃনির্দেশ ফাইল (গুলি) গঠন করে এবং তারপর শুধুমাত্র প্রকৃত কমান্ড চালায়।

তাই redsction ফাইল (temp) তৈরি করা হয় ls কমান্ড চালানোর আগে।
এটি হতে হবে, কারণ "temp" এর সাথে সংযুক্ত ফাইল-হ্যান্ডেলটি wc আউটপুট শুরু হওয়ার আগে, wc আউটপুটের জন্য গন্তব্য হিসাবে ব্যবহার করা প্রয়োজন।
Wc কমান্ডের পরিবর্তে সেটআপ করা দরকার, ls এর আউটপুট ফাইলহ্যান্ডে সংযুক্ত করা যেতে পারে যা wc এর জন্য ইনপুট হবে।

যদিও শেলগুলি তাদের কমান্ড ক্রম নির্মাণের উপায়টি বুঝতে পারলে এটি প্রথমে একেবারে অসামঞ্জস্যপূর্ণ বলে মনে হয়।


0

শেল আসলে tempকমান্ড চালানো শুরু করার আগে ফাইল তৈরি করে , তাই আপনি সর্বদা tempফাইল গণনা দেখতে পাবেন । যদি আপনি এটি গণনা করতে না চান তবে temp ফাইলটি অন্য কোথাও সন্নিবেশ করান /tmp। অথবা আপনি পেতে গণনা থেকে এক বাছাই করুন।

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