এই আদেশটি কীভাবে আইনী? "> File1 <file2 বিড়াল"


61

ধরে নিচ্ছি file2ইতিমধ্যে কমান্ড রয়েছে

> file1 < file2 cat

বিষয়বস্তুর অনুলিপি করছে বলে মনে হচ্ছে file2থেকে file1

তবে আমি এই কাঠামো বুঝতে পারি না।

আমি বুঝতে পারি যে "কিছুই না" এর দিকে পরিচালিত হচ্ছে file1, (এর সামগ্রী তৈরি বা মোছা)। তারপরে বিষয়বস্তুটি file2পরিচালনা করা হচ্ছে file1

কেন catপরে file2? cat file2অপারেশনগুলি সঠিক ক্রমে না থাকলে এটি কীভাবে জানতে পারে ?


11
কোন "সঠিক অর্ডার"? আপনি কি এমন কিছু সংস্থান / শেখার সামগ্রীর লিঙ্ক সরবরাহ করতে পারেন যেখানে "সঠিক ক্রম" বর্ণিত হয়েছে?
অরবিট

7
এই জাতীয় প্রশ্ন জিজ্ঞাসা করার সময়, আপনি শেল নির্দিষ্ট করা উচিত; বিভিন্ন ক্ষেত্রে বিভিন্ন প্রান্তের কেস থাকে, বিশেষত পুনর্নির্দেশের আশেপাশে।
ক্রাইলিস-হরতাল-

উত্তর:


117

শেল catকমান্ড লাইনে কমান্ড কার্যকর করার আগে , এটি পুনর্নির্দেশগুলির সন্ধান করে।

দুটি পুনঃনির্দেশ রয়েছে:

  1. >file1 এটি কমান্ডের স্ট্যান্ডার্ড আউটপুটটিতে যাবে file1
  2. <file2 এটি কমান্ডের স্ট্যান্ডার্ড ইনপুটটি আসবে file2

এই পুনর্নির্দেশগুলি কমান্ড লাইনে একটি জঞ্জাল স্থানে স্থাপন করা হয়েছে তাতে কিছু আসে যায় না।

$ cat <file2 >file1

এটার মতই

$ <file2 cat >file1

যা হিসাবে একই

$ <file2 >file1 cat

etc.¹

মনে রাখবেন যে, catএই ক্ষেত্রে সব ইউটিলিটি কার্যকর কোন কমান্ড লাইন আর্গুমেন্ট ছাড়া । পুনর্নির্দেশগুলি catকমান্ডের অপারেশন নয় , কমান্ডের বাইরে এবং বাইরে পুনর্নির্দেশগুলি সেট করার জন্য তারা শেলকে নির্দেশ দেয় (এর স্ট্যান্ডার্ড ইনপুট এবং আউটপুটটিকে ফাইলে সংযুক্ত করে)। শেলটি কমান্ডটি চাওয়ার আগে পুনর্নির্দেশগুলি সেট আপ করে ।

cat fileএবং cat <file(বা, যদি আপনি চান <file cat) এর মধ্যে পার্থক্য হ'ল প্রথম ক্ষেত্রে, catইউটিলিটি নিজেই ফাইলটি খোলার জন্য যা কমান্ড লাইনে অপারেন্ড হিসাবে দেওয়া হয়, পড়ার জন্য, যখন দ্বিতীয় ক্ষেত্রে শেলটি হবে ফাইলটি খুলুন এবং এর সাথে catইনপুট স্ট্রিমটি সংযুক্ত করুন ² দ্বিতীয় ক্ষেত্রে, catখেয়াল করবেন এটি কোনও ফাইল অপরেন্ড দেওয়া হয়নি এবং স্বয়ংক্রিয়ভাবে এর স্ট্যান্ডার্ড ইনপুট থেকে পড়াতে স্যুইচ করবে। এটি catসমস্ত ইউটিলিটিগুলি এমন কিছু নয় যা কিছু অন্যান্য ইউটিলিটির বৈশিষ্ট্য।

catঅপারেন্ড দেওয়া থাকলে এর মানক ইনপুট থেকেও পড়বে -। আবার এটি কেবল catএবং অন্যান্য কিছু ইউটিলিটিগুলির জন্য বিশেষ (যেমন শেলটি কিছুই করে না)। catবর্তমান ডিরেক্টরিতে যার নাম সেই ফাইলটিতে ব্যবহার করতে , ফাইলের নামের সাথে - একটি পাথ যুক্ত করুন ./-

Some পুনর্নির্দেশগুলির ক্রমটি কিছু পরিস্থিতিতে এখনও গুরুত্বপূর্ণ; সঙ্গে cat <file2 >file1, উদাহরণস্বরূপ, file1যদি ছেঁটে ফেলা হবে না file2অ্যাক্সেসযোগ্য নয় (পুনঃনির্দেশগুলি বাঁ দিক থেকে ডানদিকে পার্স করা হয়)। শব্দের আপেক্ষিক স্থান নির্ধারণ catযদিও এখনও স্বেচ্ছাচারী এবং এটি প্রভাবিত করবে না।

² এর আরও দেখুন প্রশ্ন " যখন অ বিদ্যমান ফাইল খোলার বিড়াল বিভিন্ন ত্রুটি দেয় "।


কমান্ড লাইনে কমান্ড কার্যকর করার আগেও শেলটি পুনর্নির্দেশগুলি সেট আপ করে দেয় এই কারণে যে এই জাতীয় জিনিসগুলি ব্যর্থ হয় এবং আপনি খালি আউটপুট ফাইলটি দিয়ে শেষ করেন:

$ sort file >file

এখানে, শেলটি ফাইলের স্ট্যান্ডার্ড আউটপুট fileনির্বাহ sort fileএবং সংযোগ করার আগে ফাইলটি কেটে যাবে (খালি) sortsortউপযোগ তারপর খুলবে fileএবং এটির সামগ্রীগুলি সাজাতে (যা কিছুই নয়)। ফলাফল (কিছুই) স্ট্যান্ডার্ড আউটপুট স্ট্রিমের মধ্য দিয়ে যায় file

এই নির্দিষ্ট ক্ষেত্রে প্রতিকারটি ("ফাইল-ইন-প্লেস" বাছাই করার জন্য)

$ sort -o file file

অথবা

$ sort file >file.sorted && mv file.sorted file

আউটপুট ফাইলের নাম নির্দিষ্ট করতে ফাইলটি sortব্যবহার করার সময় যা কমবেশি হয় -o


পুনঃনির্দেশগুলি কমান্ড লাইনে ইউটিলিটির প্রকৃত নামের আগে থাকতে পারে:

একটি "সিম্পল কমান্ড" হ'ল variচ্ছিক পরিবর্তনশীল অ্যাসাইনমেন্ট এবং পুনঃনির্দেশগুলির ক্রম, কোনও ক্রমে, বিকল্পভাবে শব্দ এবং পুনঃনির্দেশগুলি অনুসরণ করে, একটি নিয়ন্ত্রণ অপারেটর দ্বারা সমাপ্ত হয় ated [রেফ: পোসিক্স শেল কমান্ড ভাষা ২.৯.১ সরল কমান্ড]

এবং পুনঃনির্দেশটি ইউটিলিটির অপারেন্ডগুলির অংশ না হওয়ার বিষয়ে:

Utedচ্ছিক নম্বর, পুনর্নির্দেশ অপারেটর এবং শব্দটি কার্যকর করার জন্য আদেশটি সরবরাহ করা যুক্তিগুলিতে উপস্থিত হবে না (যদি থাকে)। [রেফ: পোসিক্স শেল কমান্ড ভাষা ২. 2. পুনঃনির্দেশ]


14
@ স্টিভ পুনঃনির্দেশগুলি সরানোর স্বাধীনতা কিছু কমান্ডকে আরও পরিষ্কার করার জন্য ব্যবহার করা যেতে পারে যেমন শুরুতে ইনপুট পুনঃনির্দেশের পাইপলাইনটিকে <in foo | bar >outসবকিছু যৌক্তিক ক্রমে রেখে দেয়। আমি echo >&2 Something bad happenedশেল স্ক্রিপ্ট থেকে ত্রুটি আউটপুট জন্য খুব পছন্দ করছি । তবে >out <in catএটি কেবল

2
কীভাবে sort file >fileসঠিকভাবে সম্পাদন করা যেতে পারে?
seth10

11
সঙ্গে @setht sort -o file file
কুসালানন্দ

6
দুর্দান্ত উত্তর। আদেশের বিষয়গুলি নোট করুন। এটির < file1 > file2 catচেয়ে ভাল হ'ল যদি না খোলা যায় তবে কেটে যাওয়া > file2 < file1 catএড়ানো হবে। file2file1
স্টাফেন চেজেলাস

3
সচেতন হওয়ার মতো কিছু: পজিক্সের সাথে এইচটিএমএল টুকরাগুলির সাথে সংযোগ স্থাপন করার সময় খণ্ডগুলি একই সংশোধনের সংস্করণগুলির মধ্যে পরিবর্তন হিসাবে পরিচিত বলে সঠিক সংস্করণ (যেমন pubs.opengroup.org/onlinepubs/9699919799.2016 এডিশন ) উল্লেখ করা ভাল better (২০১ edition সংস্করণ প্রকাশের পরে ভগ্নাংশগুলি ভুল স্থানে রাখার সাথে সাথে খনি সহ এই সাইটটিতে উত্তরের অনেকগুলি লিঙ্ক এখন ভুল are
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.