পাইপড এলএস কি এলএস -1 এর মতো?


19

lsবেশ কয়েকটি কলামে আউটপুট প্রদান করে, যেখানে আমি চেষ্টা করেছি এমন ডিরেক্টরিগুলির জন্য ls|catবাইট-অভিন্ন আউটপুট প্রদান করে ls -1। এখনও আমি ls -1উত্তর পাইপ দেখতে চাই, মত ls -1|wc -l। পছন্দ করার কোনও কারণ আছে কি ls -1? ...|catএর আউটপুট কেন পরিবর্তন হয় ls?


1
ফাইলের নামগুলিতে নিউলাইনগুলি থাকতে পারে, সুতরাং আপনি সেইগুলি বেশ কয়েকবার গণনা করতে পারেন ... আপনি পরিবর্তে এটি করতে পারেন: n=0; for i in .* *; do ((n++)) ; done ; echo $n(ড্রপ। * আপনি যদি এটি গণনা করতে না চান)। বা: ls -1d ./.* ./* | grep '^\./' | wc -l (ফাইলের
নামগুলিতে

3
lsএকটি টার্মিনাল আউটপুট সাধারণত ডিফল্ট রঙ কোড অন্তর্ভুক্ত। নন-টার্মিনালে আউটপুট দেওয়ার জন্য, রঙ সাধারণত ডিফল্টরূপে অক্ষম থাকে। --color={always,auto,never}জিএনইউতে , এটি আইআইআরসি। যদি রঙটি একটিতে অন্তর্ভুক্ত করা হয় তবে অন্যটি না হয় তবে আউটপুটগুলি স্ক্রিনে অভিন্ন প্রদর্শিত হতে পারে তবে সেগুলি বাইট-অভিন্ন নয় (রঙের কোডগুলি ls এর আউটপুটের অংশ গঠন করে)।
একটি সিভিএন

@ মাইকেলKjörling আমি মনে করি আপনার উত্তর হিসাবে এটি লেখা উচিত।
200_সাক্সেস

@ মাইকেলKjörling এটি আকর্ষণীয় কিছু আমি বিবেচনা করি নি। রঙ এবং কলাম আউটপুট ইত্যাদির জন্য টার্মিনাল বিকল্পগুলি মনে না রেখে টার্মিনালে আউটপুট আউট করার জন্য কি সর্বদা পাইপ দেওয়ার কোনও সাধারণ উপায় আছে?
রুবিস্ট্যালিয়ন

@ রবিস্ট্যালিয়ন এটি একটি ভাল পৃথক প্রশ্নের মতো মনে হচ্ছে।
একটি সিভিএন

উত্তর:


26

lsআউটপুট একটি টার্মিনালে যাচ্ছে কিনা তা পরীক্ষা করে। যদি আউটপুটটি টার্মিনালে চলে না যায়, তবে -1তা ডিফল্ট। (এই এক দ্বারা ওভাররাইড করা যেতে পারে -C, -mঅথবা -xঅপশন।)

সুতরাং, যখন lsপাইপলাইনে ব্যবহৃত হয় এবং আপনি এটি অন্য বিকল্প দিয়ে ওভাররাইড করেন নি, lsব্যবহার করবেন -1আপনি এটির উপর নির্ভর করতে পারেন কারণ এই আচরণটি পসিক্সের দ্বারা প্রয়োজনীয়

পজিক্স স্পেসিফিকেশন

POSIX -1এর ডিফল্ট হিসাবে প্রয়োজন হয় যখনই আউটপুট টার্মিনালে যায় না:

পসিক্স স্পেস :

ডিফল্ট ফর্ম্যাটটি স্ট্যান্ডার্ড আউটপুটে প্রতি লাইনটিতে একটি প্রবেশ তালিকা তালিকাভুক্ত করতে হবে; ব্যতিক্রমগুলি টার্মিনালগুলিতে বা যখন -C, -m, বা -x বিকল্পগুলির মধ্যে নির্দিষ্ট করা থাকে। যদি আউটপুটটি টার্মিনালে হয় তবে ফর্ম্যাটটি বাস্তবায়ন-সংজ্ঞায়িত।

ডিফল্ট একক-কলামের ফর্ম্যাটকে ওভাররাইড করে এমন তিনটি বিকল্প হ'ল:

-সি
কোটিং ক্রম অনুসারে, কলামগুলি নীচে বাছাই করা এন্ট্রিগুলি সহ বহু-পাঠ্য-কলাম আউটপুট লিখুন। পাঠ্য কলামগুলির সংখ্যা এবং কলাম বিভাজক অক্ষরগুলি নির্ধারিত নয়, তবে আউটপুট ডিভাইসের প্রকৃতির সাথে মানিয়ে নেওয়া উচিত। এই বিকল্পটি দীর্ঘ বিন্যাসের আউটপুট অক্ষম করে।

-এম
স্ট্রিম আউটপুট ফর্ম্যাট; পৃষ্ঠার জুড়ে পথের নাম তালিকাভুক্ত করুন, <কমা> অক্ষর দ্বারা পৃথক <স্পেস> অক্ষর দ্বারা পৃথক করুন। পরবর্তী তালিকাতে প্রবেশের জন্য যখন কোনও লাইনে জায়গা না থাকে তখন তালিকা টার্মিনেটর হিসাবে এবং বিভাজক ক্রমের পরে <নিউলাইন> অক্ষর ব্যবহার করুন। এই বিকল্পটি দীর্ঘ বিন্যাসের আউটপুট অক্ষম করে।

-x
হিসাবে একই, -সি ব্যতীত, বহু-পাঠ্য-কলাম আউটপুট কলামগুলি নীচে পরিবর্তে, বাছাই করা এন্ট্রি দিয়ে তৈরি করা হয়। এই বিকল্পটি দীর্ঘ বিন্যাসের আউটপুট অক্ষম করে।

জিএনইউ ডকুমেন্টেশন

থেকে গনুহ ম্যানুয়াল ম :

'-1'
'- ফর্ম্যাট = একক কলাম'
প্রতি লাইনে একটি ফাইল তালিকাবদ্ধ করুন। Ls এর ক্ষেত্রে এটি ডিফল্ট যখন স্ট্যান্ডার্ড আউটপুট টার্মিনাল নয় । ফাইলের নামের মধ্যে নতুন লাইন অক্ষরের সরাসরি আউটপুট দমন করতে -b এবং -q বিকল্পগুলিও দেখুন। [সামনে জোর দাও]

উদাহরণ

তিনটি ফাইল তৈরি করা যাক:

$ touch file{1..3}

আউটপুট যখন টার্মিনালে যায়, জিএনইউ lsমাল্টি-কলামের বিন্যাসটি বেছে নেয়:

$ ls
file1  file2  file3

আউটপুট যখন পাইপলাইনে যায়, তখন পসিক্স স্পেকের প্রয়োজন হয় যে একক-কলামটি ডিফল্ট:

$ ls | cat
file1
file2
file3

ডিফল্ট একক-কলাম আচরণের ওভাররাইড তিনটি ব্যতিক্রম হ'ল -mকমা-বিচ্ছিন্ন, -Cকলাম নীচে বাছাই করা এবং -xকলামগুলি জুড়ে সাজানো:

$ ls -m | cat
file1, file2, file3
$ ls -C | cat
file1  file2  file3
$ ls -x | cat
file1  file2  file3

"POSIX প্রয়োজন -1 ডিফল্ট হিসাবে যখন আউটপুট টার্মিনাল যায়:" ... কিন্তু উদ্ধৃতি ইঙ্গিত করে যে এটি প্রয়োজন -1ডিফল্ট হিসাবে ব্যতীত যখন আউটপুট টার্মিনাল (অথবা অন্যান্য শর্ত) যায়
muru

@ মুরু তা ধরার জন্য ধন্যবাদ! উত্তর আপডেট হয়েছে।
1024

ঠিক আছে, প্রতিটি মেঘের একটি রূপোর আস্তরণ থাকে। আমার পোস্ট হওয়ার আগে আপনার উত্তর গৃহীত হওয়ার কারণে, আমি একটি মজাদার পিজ্জার টুপি পেয়েছি!
জি-ম্যান 4

@ জি-ম্যান খুব ভাল এবং, এটি একটি হ্যান্ডসাম টুপি!
1024

9
  • স্ট্যান্ডার্ড আউটপুট পাইপিংয়ের আচরণের পরিবর্তন হয় কেন ls? কারণ এটি সেভাবে ডিজাইন করা হয়েছিল। POSIX স্পেসিফিকেশন বলেছেন:

    ডিফল্ট ফর্ম্যাটটি স্ট্যান্ডার্ড আউটপুটে প্রতি লাইনটিতে একটি প্রবেশ তালিকা তালিকাভুক্ত করতে হবে; ব্যতিক্রম টার্মিনাল হয় অথবা যখন এক -C, -mঅথবা -xঅপশন উল্লেখ করা হয়। যদি আউটপুটটি টার্মিনালে হয় তবে ফর্ম্যাটটি বাস্তবায়ন-সংজ্ঞায়িত।

    যা আসলে টার্মিনালে আউটপুট সহ ডিফল্ট আচরণের (যেমন কোনও বিকল্প দ্বারা নির্দিষ্ট করা হয় না ) -lবা সম্পর্কে অস্পষ্ট -1এবং জিএনইউ কোরিটিলস ডকুমেন্টেশন বলে

    যদি স্ট্যান্ডার্ড আউটপুটটি টার্মিনাল হয় তবে আউটপুট কলামগুলিতে থাকে (উল্লম্বভাবে সাজানো হয়) এবং নিয়ন্ত্রণের অক্ষরগুলি প্রশ্ন চিহ্ন হিসাবে আউটপুট হয়; অন্যথায়, আউটপুট প্রতি প্রতি লাইন তালিকাভুক্ত করা হয় এবং নিয়ন্ত্রণ অক্ষরগুলি হয় আউটপুট হিসাবে।

    সুতরাং আপনি দেখতে পাচ্ছেন যে কোনও ফাইলে আউটপুট পাইপের আউটপুট হিসাবে একই রকম কাজ করবে; এটি, প্রতি লাইনে একটি প্রবেশ, যেমন -1সুনির্দিষ্ট করা হয়েছে।

  • কেন এটি সেভাবে ডিজাইন করা হয়েছিল? এটি নিশ্চিতভাবে জানা সম্ভব নয় (যদি না কেউ কিছু ডিজাইনের নোট পান তবে) তবে আমার ধারণা:
    • যখন lsএকটি টার্মিনালে লিখতে হয়, এটি প্রত্যাশা করে যে কোনও মানুষ আউটপুটটির দিকে তাকিয়ে আছে। লোকেরা ন্যূনতম প্রয়োজনীয় সংখ্যক লাইনে তথ্য পেতে পছন্দ করবে, সুতরাং স্টাফ স্ক্রিনটি স্ক্রোল করে না।
    • যখন lsকোনও পাইপে লেখার সময় এটি অন্য একটি প্রোগ্রাম আউটপুট পড়ার প্রত্যাশা করে। কোনও প্রোগ্রামের পক্ষে ডেটা পড়ার পক্ষে কলামগুলি পার্স করার চেষ্টা করার চেয়ে লাইনে প্রতি এক মূল্য মূল্য পড়ার পক্ষে সহজ (যেহেতু ফাইলের নামগুলিতে স্পেস থাকতে পারে) read
  • আপনি ls -1 যখন কোনও ফাইল বা পাইপে লিখছেন তখন পছন্দ করার কোনও কারণ আছে কি ? না।

-4

Ls পাইপিং করার সময়, ls নির্ধারণ করতে পারে না যে কনসোলটি আসলে কতগুলি কলাম রয়েছে (ডানদিকের কমান্ডের স্বতন্ত্র)। সুতরাং ls কেবল এটি তার নিজের পছন্দ অনুসারে করে বা অন্য কথায়, এই আচরণটি অস্থিতিশীল এবং ভবিষ্যতের সংস্করণগুলিতে পরিবর্তিত হতে পারে।

বিপরীতে, ls -1সাধারণভাবে গণনা বা স্ক্রিপ্টিংয়ের উদ্দেশ্যে তৈরি করা হয়েছিল, সুতরাং এর আচরণটি স্থিতিশীল।


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