'- <<(…)' ব্যবহার করে কমান্ড আউটপুট পুনঃনির্দেশ


10

আমার একটি শামসাম বের করার দরকার ছিল। এটি কাজ করে, তবে কেন কেউ ব্যাখ্যা করতে পারে?

sed 's/^.*= //' -< <(openssl dgst -sha256 filename)

আমি $( )কনস্ট্রাক্টের সাথে পরিচিত , তবে এর <( )সাথে মিলিত ডকসগুলি খুঁজে পাচ্ছি না -<, যা আমি ধরে নিয়েছি যে এটি sedএসটিডিনে পুনর্নির্দেশ করছে is

আমি জানি যে আরও সহজ উপায় আছে, তবে এই নির্মাণটি আমাকে অন্তর্ভুক্ত করে।

উত্তর:


10

দ্য

<(openssl dgst -sha256 filename)

নির্মাণ একটি প্রক্রিয়া প্রতিস্থাপন । এটি পর্দার আড়ালে একটি ফাইল (বা ফিফো) তৈরি করে এবং এর নামটি কমান্ড সিকোয়েন্সে ফিরিয়ে দেয়।

< 

একটি নিয়মিত ফাইল পুনর্নির্দেশকরণ, পর্দার অন্তর্ভুক্ত ফাইলের বিষয়বস্তুগুলিকে পুনর্নির্দেশ করে stdinand

-

sedএটির ইনপুটটি আসছে কিনা তা বোঝাতে কোনও স্থানধারক স্বীকৃত stdin

যেহেতু sedফাইলগুলি থেকে পড়তে পুরোপুরি সক্ষম, তাই -<এই প্রসঙ্গে অপ্রয়োজনীয় বলে মনে হচ্ছে;

sed 's/^.*= //' <(openssl dgst -sha256 filename)

ঠিক পাশাপাশি কাজ করা উচিত।


3
বা কেবলopenssl ... | sed '...'
মাইল 21

8

<( COMMAND )ব্যাশ কনস্ট্রাক্ট বলা হয় প্রক্রিয়া প্রতিকল্পন

এটি অভ্যন্তরের মূল্যায়ন করে COMMANDএবং এর আউটপুটটিকে ফিফোর কাছে পুনর্নির্দেশ করে, একটি নামযুক্ত পাইপ যা ভিতরে ভার্চুয়াল ফাইল বর্ণনাকারী /dev/fdনির্ধারিত হয়। এটি একটি অস্থায়ী ফাইলের মতো কাজ করে যা মূল্যায়িত কমান্ডের আউটপুট ধারণ করে।


<ব্যাশ কনস্ট্রাক্ট বলা হয় ইনপুট ফেরৎ

এটি ডানদিকে একটি ফাইল বর্ণনাকারী লাগে এবং এর সামগ্রীটি বাম দিকে কমান্ডের STDIN (স্ট্যান্ডার্ড ইনপুট) এ পুনঃনির্দেশ করে।


-একটি ব্যাশ কনস্ট্রাক্ট নয় বরং একটি জন্য যুক্তিsed যে তার ইনপুট ফাইল নির্দিষ্ট করে। বিশেষ মানটির -অর্থ এসটিডিএন থেকে পড়া (যা sedএটির ডিফল্ট, তাই এটি বাদ দেওয়া যেতে পারে)।


sed 's/^.*= //' - < <(openssl dgst -sha256 filename)

এই লাইনটি প্রথমে openssl dgst -sha256 filenameএকটি ফিফোতে চলে এবং আউটপুটকে ক্যাশে করে। এই নামক পাইপের প্রতিনিধিত্বকারী ফাইল বর্ণনাকারীকে ইনপুট ফাইল হিসাবে বিবেচনা করা হবে যা এর এসটিডিনে পুনঃনির্দেশিত হয় sed 's/^.*= //' -। এই sedকমান্ডটি STDIN থেকে পড়ে এবং একটি স্পেসের পরে "=" চিহ্নের আগে প্রতিটি অক্ষর সরিয়ে দেয়।

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