كيفية استخدام أمر السلاسل في Linux

نشرت: 2022-01-29
محطة لينكس على جهاز كمبيوتر محمول
فاطماواتي أحمد زينوري / Shutterstock.com

هل تريد رؤية النص داخل ملف ثنائي أو ملف بيانات؟ يسحب أمر strings Linux تلك الأجزاء من النص - تسمى "سلاسل" - من أجلك.

لينكس مليء بالأوامر التي يمكن أن تبدو كحلول في البحث عن المشاكل. أمر strings يقع بالتأكيد في هذا المعسكر. فقط ما هو الغرض منه؟ هل هناك نقطة إلى أمر يسرد السلاسل القابلة للطباعة من داخل ملف ثنائي؟

لنعد خطوة إلى الوراء. قد تحتوي الملفات الثنائية - مثل ملفات البرامج - على سلاسل نصية يمكن للبشر قراءتها. لكن كيف يمكنك رؤيتهم؟ إذا كنت تستخدم cat أو less ، فمن المحتمل أن ينتهي بك الأمر مع نافذة طرفية معلقة. البرامج المصممة للعمل مع الملفات النصية لا تتكيف بشكل جيد إذا تم تغذية الأحرف غير القابلة للطباعة من خلالها.

معظم البايتات الموجودة في الملف الثنائي ليست قابلة للقراءة من قبل الإنسان ولا يمكن طباعتها على النافذة الطرفية بطريقة منطقية. لا توجد أحرف أو رموز قياسية لتمثيل القيم الثنائية التي لا تتوافق مع الأحرف الأبجدية الرقمية أو علامات الترقيم أو المسافات البيضاء. بشكل جماعي ، تُعرف هذه الأحرف "القابلة للطباعة". الباقي أحرف "غير قابلة للطباعة".

لذا ، فإن محاولة عرض أو البحث في ملف ثنائي أو ملف بيانات عن سلاسل نصية يمثل مشكلة. وهنا يأتي دور strings . فهو يستخرج سلاسل الأحرف القابلة للطباعة من الملفات بحيث يمكن للأوامر الأخرى استخدام السلاسل دون الحاجة إلى التعامل مع الأحرف غير القابلة للطباعة.

باستخدام أمر السلاسل

لا يوجد شيء معقد في أمر strings النصية ، واستخدامه الأساسي بسيط للغاية. نقدم اسم الملف الذي strings في البحث من خلاله في سطر الأوامر.

الإعلانات

هنا ، سنستخدم سلاسل في ملف ثنائي - ملف قابل للتنفيذ - يسمى "jibber". نكتب strings ، مسافة ، "jibber" ثم نضغط على Enter.

 سلاسل jibber 

يتم استخراج السلاسل من الملف وإدراجها في نافذة المحطة.

ضبط الحد الأدنى لطول السلسلة

بشكل افتراضي ، ستبحث السلاسل عن السلاسل المكونة من أربعة أحرف أو أطول. لتعيين حد أدنى أطول أو أقصر ، استخدم الخيار -n (الحد الأدنى للطول).

لاحظ أنه كلما كان الحد الأدنى للطول أقصر ، زادت فرصك في رؤية المزيد من الخردة.

تحتوي بعض القيم الثنائية على نفس القيمة الرقمية مثل القيمة التي تمثل حرفًا قابلًا للطباعة. إذا صادفت اثنتان من هذه القيم الرقمية جنبًا إلى جنب في الملف وقمت بتحديد حد أدنى للطول يبلغ اثنين ، فسيتم الإبلاغ عن هذه البايتات كما لو كانت سلسلة.

الإعلانات

لتطلب من strings استخدام اثنين كحد أدنى للطول ، استخدم الأمر التالي.

 سلاسل -n 2 jibber 

لدينا الآن سلاسل من حرفين مضمنة في النتائج. لاحظ أنه يتم حساب المسافات على أنها حرف قابل للطباعة.

سلاسل الأنابيب من خلال أقل

نظرًا لطول الناتج من strings ، سنقوم بتوجيهه خلال less . يمكننا بعد ذلك التمرير خلال الملف بحثًا عن نص مثير للاهتمام.

 سلاسل jibber | أقل 

يتم الآن تقديم القائمة لنا less من ذلك ، مع عرض الجزء العلوي من القائمة أولاً.

استخدام السلاسل مع ملفات الكائن

عادةً ما يتم تجميع ملفات التعليمات البرمجية المصدر للبرنامج في ملفات الكائنات. وترتبط هذه بملفات المكتبة لإنشاء ملف ثنائي قابل للتنفيذ. لدينا ملف كائن jibber في متناول اليد ، لذلك دعونا نلقي نظرة داخل هذا الملف. لاحظ امتداد الملف “.o”.

 jibber.o | أقل 

يتم تغليف المجموعة الأولى من السلاسل في العمود الثامن إذا كانت أطول من ثمانية أحرف. إذا تم تغليفها ، فسيكون الحرف "H" في العمود التاسع. قد تتعرف على هذه السلاسل على أنها عبارات SQL.

الإعلانات

يكشف التمرير خلال الإخراج أن هذا التنسيق لا يستخدم في جميع أنحاء الملف.

من المثير للاهتمام رؤية الاختلافات في سلاسل النص بين ملف الكائن والملف التنفيذي النهائي.

البحث في مناطق محددة في الملف

تحتوي البرامج المترجمة على مناطق مختلفة داخل نفسها تُستخدم لتخزين النص. بشكل افتراضي ، تبحث strings في الملف بأكمله بحثًا عن نص. هذا تمامًا كما لو كنت قد استخدمت الخيار -a (الكل). لجعل البحث في السلاسل فقط في أقسام البيانات المُهيأة والمحملة في الملف ، استخدم الخيار -d (البيانات).

 سلاسل -d jibber | أقل 

ما لم يكن لديك سبب وجيه لذلك ، يمكنك أيضًا استخدام الإعداد الافتراضي والبحث في الملف بأكمله.

طباعة سلسلة الأوفست

يمكننا جعل strings تطبع الإزاحة من بداية الملف حيث توجد كل سلسلة. للقيام بذلك ، استخدم الخيار -o (الإزاحة).

 سلاسل -o parse_phrases | أقل 

يتم إعطاء الإزاحة في Octal.

لعرض الإزاحة في قاعدة عددية مختلفة ، مثل النظام العشري أو الست عشري ، استخدم الخيار -t (الجذر). يجب أن يتبع خيار الجذر d (عشري) أو x (سداسي عشري) أو o (Octal). استخدام -to هو نفس استخدام -o .

 سلاسل -حد parse_phrases | أقل 

تتم الآن طباعة الإزاحات بالنظام العشري.

 سلاسل -tx parse_phrases | أقل 

تتم الآن طباعة الإزاحات بالنظام الست عشري.

بما في ذلك المسافة البيضاء

تعتبر strings أحرف الجدولة والمسافة جزءًا من السلاسل التي تعثر عليها. لا يتم التعامل مع أحرف المسافات البيضاء الأخرى ، مثل الأسطر الجديدة وأحرف الإرجاع ، كما لو كانت جزءًا من السلاسل. يتسبب الخيار -w (المسافة البيضاء) في معالجة السلاسل لجميع أحرف المسافات كما لو كانت جزءًا من السلسلة.

 السلاسل -w add_data | أقل 

الإعلانات

يمكننا أن نرى السطر الفارغ في الإخراج ، وهو نتيجة إرجاع (غير مرئي) للسطر وأحرف السطر الجديد في نهاية السطر الثاني.

نحن لا نقتصر على الملفات

يمكننا استخدام strings مع أي شيء يمثل ، أو يمكن أن ينتج ، دفقًا من البايت.

باستخدام هذا الأمر ، يمكننا البحث في ذاكرة الوصول العشوائي (RAM) لجهاز الكمبيوتر الخاص بنا.

نحتاج إلى استخدام sudo لأننا ندخل إلى / dev / mem. هذا ملف جهاز شخصي يحتوي على صورة للذاكرة الرئيسية لجهاز الكمبيوتر الخاص بك.

 سلاسل sudo / dev / mem | أقل 

القائمة ليست المحتويات الكاملة لذاكرة الوصول العشوائي الخاصة بك. إنها فقط الأوتار التي يمكن استخلاصها منه.

ذات صلة: ماذا يعني "كل شيء هو ملف" في لينكس؟

البحث في العديد من الملفات دفعة واحدة

يمكن استخدام أحرف البدل لتحديد مجموعات الملفات التي سيتم البحث فيها. يمثل الحرف * أحرفًا متعددة ، بينما يمثل الحرف ? يمثل الحرف أي حرف واحد. يمكنك أيضًا اختيار تقديم العديد من أسماء الملفات في سطر الأوامر.

الإعلانات

سنستخدم حرف بدل ونبحث في جميع الملفات القابلة للتنفيذ في الدليل / bin. نظرًا لأن القائمة ستحتوي على نتائج من العديد من الملفات ، فسنستخدم الخيار -f (اسم الملف). سيؤدي هذا إلى طباعة اسم الملف في بداية كل سطر. يمكننا بعد ذلك معرفة الملف الذي تم العثور على كل سلسلة فيه.

نحن نقوم بتوزيع النتائج عبر grep ، ونبحث عن سلاسل تحتوي على كلمة "حقوق الطبع والنشر".

 السلاسل -f / bin / * | حقوق النشر grep 

نحصل على قائمة مرتبة ببيانات حقوق النشر لكل ملف في الدليل / bin ، مع اسم الملف في بداية كل سطر.

خيوط مفككة

ليس هناك غموض في الأوتار. إنه أمر لينكس نموذجي. إنه يفعل شيئًا محددًا جدًا ويفعله جيدًا.

إنها إحدى أدوات Linux الأخرى ، وهي تنبض بالحياة حقًا عندما تعمل مع أوامر أخرى. عندما ترى كيف يمكنه الجلوس بين الملفات الثنائية والأدوات الأخرى مثل grep ، تبدأ في تقدير وظيفة هذا الأمر الغامض قليلاً.

ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين