কীভাবে এমডি 5 হ্যাশটি পাইলে শেল আসে shell


12

আমি ফলাফলটি md5sumঅন্য কমান্ডে পাইপ করার একটি সহজ উপায় খুঁজছি । এটার মতো কিছু:

$echo -n 'test' | md5sum | ...

আমার সমস্যাটি হ'ল md5sumকেবল স্ট্রিংয়ের হ্যাশই নয়, একটি হাইপেনও আউটপুট দেয় যা সূচিত করে যে ইনপুটটি স্টিডিন থেকে এসেছে। আমি ম্যান ফাইলটি পরীক্ষা করে দেখেছি এবং আউটপুট নিয়ন্ত্রণের জন্য কোনও পতাকা পেলাম না।


4
দ্রষ্টব্য: echo -nপাঠ্যের ডেটা অজানা হলে ব্যবহার না করার বিষয়ে সতর্ক থাকুন । printf '%s' "$DATA"পরিবর্তে ব্যবহার করুন। বিপরীতে echo -n "$DATA", এটি কার্যকর হবে যখন DATA="-n"(অন্যান্য উদাহরণগুলির মধ্যে)।
স্টাফেন গিমেনেজ

উত্তর:


14

আপনি কমান্ড কাট ব্যবহার করতে পারেন ; এটি আপনাকে প্রতিটি ইনপুট লাইন থেকে একটি নির্দিষ্ট অক্ষর / বাইট পরিসর কাটতে দেয়। যেহেতু MD5 হ্যাশের নির্দিষ্ট দৈর্ঘ্য (32 অক্ষর) রয়েছে তাই আপনি -c 1-32ইনপুট লাইন থেকে প্রথম 32 টি অক্ষর রাখার বিকল্পটি ব্যবহার করতে পারেন :

echo -n test | md5sum | cut -c 1-32

বিকল্পভাবে, আপনি cutপ্রতিটি স্থান এবং লাইনটি কেবল প্রথম ক্ষেত্রের বিভাজন করতে বলতে পারেন : (স্থানের অক্ষরের চারপাশে উদ্ধৃতিগুলি নোট করুন)

echo -n test | md5sum | cut -d " " -f 1

দেখুন কাটা র manpage আরো বিকল্পের জন্য।


আমি সে সম্পর্কেও ভেবেছিলাম! আমি -d+ বেছে নিয়েছি -fযাতে এর md5sumসাথে sha1sumবা পরে যা কিছু প্রতিস্থাপন করা যায়।
স্টাফেন গিমেনেজ

awkখুব কাজ করে: echo -n test | md5sum | awk -F" " '{print $1}' বাawk -F" " '{print $1}' <(echo -n test | md5sum)
লেবেশাদে

উত্তরের জন্য ধন্যবাদ. @ ললেবশেদ আসলে, আপনাকে প্রিন্টফ ব্যবহার করতে হবে অন্যথায় এটি শেষের দিকে একটি নতুন লাইন চরিত্রটি আউটপুট দেয়;)
এনএমট

@ লেলেভশেড: -F" "অপশনটি awkদেখতে খুব অদ্ভুত, এটির জন্য এটি ডিফল্ট awk
এনজোটিব

3

আপনি cutএটি করতে পারেন:

echo -n 'test' | md5sum | cut -d' ' -f1

এখানে, -d' 'স্থান সীমানা হিসাবে স্থান চয়ন করে, এবং -f1প্রথম ক্ষেত্রের (একটি সীমানার আগে) জিজ্ঞাসা করে।


2

অ্যাজক ব্যবহার করাও দুর্দান্ত কাজ করে:

echo -n 'test' | md5sum | awk '{print $1}'

আরেকটি উপায় একটি সাবস্ট্রিং তৈরি করা হয়। আপনি জানেন যে এমডি 5 হ্যাশটি 32 টি অক্ষরের একটি স্ট্রিং, আপনি এটি ব্যবহার করতে পারেন:

HASH=$(echo -n 'test' | md5sum -) && echo ${HASH:0:32}

এটি কেবল ম্যানিপুলেশনগুলিকে স্ট্রিং করছে, তাই আপনি পছন্দটি পেয়েছেন!

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