পাইপলাইন সহ মাল্টি-লাইন বাশ কমান্ডে পৃথক লাইনে পাঠযোগ্য মন্তব্য?


14

পাইপলাইন ব্যবহার করে শেল স্ক্রিপ্টগুলি তৈরি করার সময় এবং লাইনগুলি চালিয়ে যাওয়ার জন্য ব্যাকস্ল্যাশ ব্যবহার করার সময়, আমি একটি দৃ lines ়, পঠনযোগ্য এবং পোর্টেবল ফ্যাশনে পৃথক লাইনে মন্তব্য সন্নিবেশ করতে চাই ।

উদাহরণস্বরূপ, এই অনিয়ন্ত্রিত মাল্টি-লাইন কমান্ড দেওয়া হয়েছে (এর স্পষ্টতার জন্য @ ডিজিটালরোস থেকে চুরি হয়েছে):

echo abc |
     tr a-z A-Z |
     sort |
     uniq

... নীচে আমি যা অর্জন করতে চাই তার কাছে নান্দনিকভাবে নিকটতম, তবে স্পষ্ট কারণেই, কাজ করে না ... এবং হ্যাঁ, আমি ভাল করেই জানি যে এটি সাধারণত মন্তব্য করার মতো কিছু নয়:

# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
    # Convert lowercase to uppercase.
     tr a-z A-Z |

     # Sort the results.
     sort |

     # Only show unique lines.
     uniq

বিদ্যমান সম্পর্কিত উত্তরগুলি আমার জন্য অসন্তুষ্টিজনক বলে মনে হচ্ছে :

প্রথমে গ্লেন জ্যাকম্যানের উত্তর (একটি অ্যারেতে যুক্তি যুক্ত করা, এবং তারপরে অ্যারেটি চালানো) একক কমান্ডের জন্য কাজ করে তবে পাইপলাইনের জন্য কাজ করে না (এবং তা করলেও এটি জটিলতা যুক্ত করে যা আমি এড়াতে চাই)।

দ্বিতীয়ত, @ গিলসের উত্তর এখানে (যা ব্যবহার করে :) পাইপলাইনের সাথে কাজ করে বলে মনে হয় না, কারণ এটি পাইপলাইনের প্রবাহকে পরিবর্তিত করে:

$ echo "abc" | :
$

( দ্রষ্টব্য : যদি :আউটপুট অবিস্মরণিত পাসের সমতুল্য থাকে তবে এটি নান্দনিকভাবে গ্রহণযোগ্য হবে তবে আমি একটি খুঁজে পেতে সক্ষম হইনি I আমি একটি কাস্টম লিখতে পারলাম, তবে এটি বহনযোগ্যতা হ্রাস করবে))

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

echo abc |         # normal comment OK here`
     /usr/local/bin/really/long/path/ridiculously-long-filename.sh |  # another normal comment OK here
     sort |        # the pipelines are automatically continued
     uniq          # final comment

আমি এমন উত্তরগুলির সন্ধান করছি যা পাঠযোগ্যতা সংরক্ষণ করে এবং জটিলতা হ্রাস করে দেয়, বা অন্যথায় আমি যা খুঁজছি তা অক্ষম কেন on


1
আপনার মন্তব্য সম্পর্কে নোট: আমাকে কাজের একটি বিভাগ বা ইউনিট ব্যাখ্যা করে মন্তব্য লিখতে শেখানো হয়েছিল। যদি কোনও অভিজ্ঞ কোডার বুদ্ধিমান মন্তব্য লেখেন তারা কী করছে তা বর্ণনা করে, তবে সম্ভবত স্ক্রিপ্টটি বজায় রাখার সাথে যে কেউ আসবেন তারা ব্যবহারের বিশদটি বুঝতে না পারলে সর্বদা ম্যান পেজ ব্যবহার করতে পারেন। একটি মত মন্তব্য লিখতে হবে না i++; // increment i by one। আমি আপনাকে "প্রোগ্রামিং স্টাইলের উপাদানগুলি"
বিএসডি

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

বোঝা - প্রতিক্রিয়া জন্য ধন্যবাদ; পাঠ শিখলাম!
রইস উইলিয়ামস

উত্তর:


14

এ কেমন?

echo abc | \
# Convert lowercase to uppercase.
tr a-z A-Z | \

# Sort the results.
sort | \

# Only show unique lines.
uniq

(ব্যাকস্ল্যাশ হিসাবে ব্যবহার করা প্রয়োজন শেষ অক্ষর ঐ লাইনে।) আমি নিশ্চিত যে পদ্ধতির বহনযোগ্যতা সম্পর্কে নই, কিন্তু এটি সাম্প্রতিক সঙ্গে নিশ্চিত কাজ bash


আহা! (ফেসপাম) প্রশ্নটি অনুধাবন না করে আমি আসলে যে আইডিয়ামটি ব্যবহার করছিলাম তা রূপান্তরিত করেছি! আমি প্রতিটি লাইনের শুরুতে পাইপটি রেখেছিলাম, যা এখন করা বন্ধ করে দিয়ে আমি খুশি যে আমি জানি যে এই পদ্ধতিটি আমি পৌঁছে যেতে পারে এমন সমস্ত সিস্টেমে ভালভাবে কাজ করে, উভয় এবং sh উভয় ক্ষেত্রেই। ধন্যবাদ!
রইস উইলিয়ামস

এই মন্তব্যগুলি কি লাইন ধারাবাহিকতা নষ্ট করবে না?
স্টুয়ার্ট পি। বেন্টলে

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