ব্যাশে কোনও ফাঁকা জায়গা ছাড়াই কেবলমাত্র হেক্স অক্ষরযুক্ত ফাইলের একটি হেক্স্স ডাম্প কীভাবে তৈরি করবেন?


188

আমি কীভাবে ব্যাশ ব্যবহার করে লিনাক্সে বাইনারি ফাইলের একটি অপরিবর্তিত হেক্স ডাম্প তৈরি করব ? odএবং hexdumpকমান্ড ডাম্প উভয় সন্নিবেশ স্পেস এবং এই আদর্শ নয়।

আউটপুটে সমস্ত হেক্স অক্ষর, বিয়োগ স্পেস বা নিউলাইন সহ কেবল একটি দীর্ঘ স্ট্রিং লেখার কোনও উপায় আছে কি?


উত্তর:


250

xxd -p file

অথবা আপনি যদি একক লাইনে এটি সব করতে চান:

xxd -p file | tr -d '\n'


13
প্রক্রিয়াটি বিপরীত করতে fyi: xxd -r -ps hexascii.txt ফাইল (এটি নিউলাইনগুলির সাথে বা এটি ছাড়া ঠিক আছে)
কার্টিস ইয়ালাপ ২

92

ফর্ম্যাট স্ট্রিংগুলি হেক্সডাম্পকে ঠিক যেমনটি আপনি চান ঠিক তেমন আচরণ করতে পারে (কোনও সাদা অংশ নেই, বাইট বাই বাইট):

hexdump -ve '1/1 "%.2x"'

1/1এর অর্থ "প্রতিটি বিন্যাস একবার প্রয়োগ করা হয় এবং একটি বাইট নেয়", এবং "%.2x"এটি প্রিন্টফের মতো প্রকৃত বিন্যাসের স্ট্রিং। এই ক্ষেত্রে: 2-অক্ষরের হেক্সাডেসিমাল সংখ্যা, সংক্ষিপ্ত হলে নেতৃস্থানীয় শূন্যগুলি।


7
আপনার একটি দরকার -vবা এটি পুনরাবৃত্তি বাইটগুলি নামবে এবং সেগুলি একটি নক্ষত্রের সাথে প্রতিস্থাপন করবে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

2
আমি অবাক হয়েছি যে হেক্সডাম্প নিজেই আউটপুট শেষে নতুন লাইনটি (কেবলমাত্র) যুক্ত করতে সক্ষম হয়েছে .. (এর স্পষ্ট ; echo
সংযোজন

2
আমার উপনাম:alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"

পুনরাবৃত্তি গণনা এবং বাইট গণনা একের মধ্যে ডিফল্ট হয়, সুতরাং 1/1 বাদ দেওয়া যেতে পারেhexdump -ve '"%.2x"'
এলেক্স চে

@ মাইখাল, যদি আপনি আউটপুট বাইটের সংখ্যা জানেন তবে এটি সম্ভব। আপনি 13 টি প্রথম বাইট আউটপুট দেওয়ার জন্য যদি হেক্সডাম্প ব্যবহার করেন তবে বলুন:hexdump -n 13 -e '13/1 "%.2x" "\n"'
অ্যালেক্স চে

24

এটি সংস্করণের বিবরণগুলির উপর নির্ভর করে বলে মনে হচ্ছে od। ওএসএক্সে, এটি ব্যবহার করুন:

od -t x1 -An file |tr -d '\n '

(এটি কোনও ঠিকানা ছাড়াই টাইপ হেক্স বাইট হিসাবে মুদ্রণযোগ্য And এবং পরে হোয়াইটস্পেস অবশ্যই মুছে ফেলা হবে))


1
আমি -vএই প্রসঙ্গে যুক্ত করব, অন্যথায় এটি এড়িয়ে যায় *
সিরো সান্তিলি 8 冠状 病 六四 事件

10

পার্ল ওয়ান-লাইনার:

perl -e 'local $/; print unpack "H*", <>' file

যাচাই. "Xxd -p ফাইল | tr -d '\ n'" মিলছে।
কার্টিস ইয়ালাপ

1
fyi প্রক্রিয়াটি বিপরীতে: perl -e 'স্থানীয় $ /; "এইচ *", <> '<hexascii.txt> ফাইল মুদ্রণ করুন
কার্টিস ইয়ালাপ ২

"স্থানীয় $ /" অপ্রয়োজনীয়।
কার্টিস ইয়ালাপ

সর্বশেষ মন্তব্যে আপডেট করুন: "প্যাক" এর জন্য "স্থানীয় $ /" অপ্রয়োজনীয়। আনপ্যাকের জন্য, আপনার এটি প্রয়োজন তবে বিকল্পভাবে "অপরিবর্তিত $ /" রাখতে পারেন। $ / হ'ল লাইন বিভাজক (ডিফল্ট এনএল)। অপরিবর্তিত স্লার্প-মোডে রাখে। সুতরাং <> স্ট্রিং প্রসঙ্গে রেফারেন্স করা পুরো বাইনারি ফাইলটিকে লাইনে ভাগ না করে টানতে পারে।
কার্টিস ইয়ালাপ

বিকল্প ফর্ম: পার্ল-ই 'প্রিন্ট আনপ্যাক "এইচ *", যোগ দিন ("", <>)' <ফাইল
কার্টিস ইয়ালাপ

2

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

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