كيفية استخدام الأمر seq على نظام Linux

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

يُنشئ الأمر Linux seq قوائم بالأرقام في غمضة عين. ولكن كيف يمكن استخدام هذه الوظيفة عمليًا؟ سنوضح لك كيف يمكن أن يكون التسلسل مفيدًا لك.

الأمر seq

للوهلة الأولى ، يبدو أن أمر Linux seq غريب. يسمح لك بإنشاء تسلسل من الأرقام بسرعة وهذا كل شيء! ومع ذلك ، فإن الكلمة الرئيسية هنا هي "بسرعة". في لحظة ، سترى مدى السرعة التي يمكن أن يعمل بها هذا الأمر الصغير.

بغض النظر عن كيفية تكوينها ، ما مدى فائدة قائمة الأرقام؟ تمت إضافة الأمر seq إلى الإصدار الثامن من Unix في عام 1985. وهو موجود منذ ذلك الحين ، لذا يجب أن يفعل شيئًا ذا قيمة.

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

يأتي الأمر seq بمفرده عند استخدامه مع أوامر أخرى تستفيد من مخرجاته ، إما من خلال الأنابيب أو توسيع سطر الأوامر.

إنشاء قائمة أساسية

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

 فيما يليها 6 

الإعلانات

إذا قمت بكتابة رقمين في سطر الأوامر ، فسيكون الأول هو رقم البداية والثاني سيكون رقم النهاية ، كما هو موضح أدناه:

 seq 4 10 

يمكنك تعيين حجم الخطوة بتضمين رقم ثالث. يقع بين أرقام البداية والنهاية. نكتب ما يلي لنطلب من seq إنشاء قائمة بالأرقام تبدأ بستة وتنتهي بالرقم 48 وتستخدم الخطوة ستة:

 seq 6 6 48 

العد التنازلي

يمكننا أيضًا أن نطلب seq لإنشاء قائمة بالأرقام من الأعلى إلى الأدنى. للقيام بذلك ، يجب أن نقدم خطوة سلبية.

ينتج الأمر التالي قائمة تحسب من 24 إلى 12 في الخطوات 6 لأننا نكتب الخطوة كرقم سالب:

 seq 24-612 

العد مع الكسور العشرية

يمكن أن تكون أرقام البداية والنهاية والخطوة أيضًا أرقامًا عشرية. إذا كان أي من الأرقام عددًا عشريًا ، فسيتم التعامل مع الأرقام الأخرى أيضًا على أنها أرقام عشرية. يقوم الأمر التالي بإنشاء قائمة أرقام بالخطوة 0.2:

 seq 1 0.2 2 

سرعة التسلسل

seq سريع للغاية - العقبة الوحيدة هي الوقت الذي تستغرقه في كتابة الأمر في نافذة المحطة الطرفية. لاختبار سرعتها ، دعنا نطلب قائمة من 250000 رقم.

الإعلانات

نكتب ما يلي ، باستخدام الأمر time لمعرفة المدة التي تستغرقها العملية حتى تكتمل:

 الوقت seq 250000 

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

تم إنشاء القائمة بأكملها وكتابتها على الشاشة في حوالي 1/3 من الثانية. إذا قمنا بإعادة توجيه القائمة إلى ملف ، فيمكننا حتى تجنب أعباء الكتابة في النافذة الطرفية.

للقيام بذلك ، نكتب ما يلي:

 الوقت seq 250000> number.txt 

الوقت المستغرق لإكمال القائمة وإنشاء الملف الآن حوالي 1/7 من الثانية.

باستخدام فاصل

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

الإعلانات

على سبيل المثال ، لنفترض أنك بحاجة إلى إنشاء قائمة مفصولة بفواصل ، أو قائمة مقسمة بنقطتين ، أو أي علامة ترقيم أو رمز آخر. المحدِّد عبارة عن سلسلة بالفعل ، لذا يمكنك استخدام أكثر من حرف واحد.

سنستخدم الخيار -s (الفاصل). سينتج الأمر التالي قائمة مفصولة بفواصل:

 seq s ، 6 6 36

سيستخدم هذا الأمر نقطتين ( : كفاصل:

 seq -s: 6 6 36

يخبر هذا الأمر seq باستخدام واصلتين ( - ) كفاصل:

 seq -s-- 6 6 36 

باستخدام تنسيق السلاسل

يدعم الأمر seq أيضًا سلاسل تنسيق بنمط لغة C. يتيح لك ذلك تنسيق الإخراج بمزيد من التحكم أكثر من مجرد تحديد فاصل. لاستخدام سلسلة تنسيق ، يمكنك استخدام الخيار -f (تنسيق).

يخبر الأمر التالي seq باستخدام أصفار لتضمين الناتج إلى حرفين:

 seq -f "٪ 02g" 6 

الإعلانات

يمكننا تنسيق السلسلة بأي نص نحبه ، ووضع الرقم في أي مكان في السلسلة ، على النحو التالي:

 seq -f "الرقم٪ 02g بسلسلة نصية تشبه C" 6 

طريقة سريعة لضبط حشوة صفرية

أسرع طريقة لضبط المساحة الصفرية هي استخدام الخيار -w (عرض متساوٍ). هذا يخبر seq باستخدام الأصفار لتعبئة الأرقام ، بحيث تكون جميعها بنفس عرض أكبر رقم.

يعد الأمر التالي من 0 إلى 1000 في خطوات 100 ، وسيتم تعبئة جميع الأرقام بالأصفار:

 seq -w 0100 1000 

يستغرق الرقم الأطول أربعة أحرف ، لذا فإن جميع الأرقام الأضيق مبطنة بأصفار حتى هذا العرض (حتى الرقم 0 مبطن بأربعة أصفار).

تسلسل الأنابيب إلى قبل الميلاد

من خلال تعيين الفاصل كرمز رياضي وتوصيل القائمة بالأمر bc ، يمكننا تقييم الأرقام الموجودة في تلك القائمة.

يُنشئ الأمر التالي قائمة بالأرقام مفصولة بعلامات نجمية ( * ) ، تبدأ من واحد وتنتهي بستة:

 seq -s * 6
الإعلانات

إذا قمنا بتغذية هذه القائمة في bc ، فإنها تقيم القائمة باستخدام العلامات النجمية ( * ) كرموز الضرب:

 seq -s * 6 | قبل الميلاد

يمكننا فعل ذلك برموز أخرى أيضًا. يستخدم الأمر أدناه علامة الجمع ( + ) لإنشاء قائمة يتم فيها إضافة جميع الأرقام:

 seq -s + 5

نكتب ما يلي لتوجيه ذلك إلى bc وتقييم القائمة:

 seq -s + 5 | قبل الميلاد 

إنشاء الملفات مع seq

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

سننشئ مجموعة من 10 ملفات بنفس الاسم الأساسي ورقم مختلف (ملف 1.txt و file-2.txt وما إلى ذلك). نكتب ما يلي:

 المس $ (seq -f "file-٪ g.txt" 1 10)

ثم نكتب ما يلي للتحقق من الملفات:

 ملف ls * 

استخدام seq في Bash Loops

يمكننا استخدام seq في نصوص Bash للتحكم في الحلقات ذات الكسور العشرية.

الإعلانات

اكتب النص التالي في محرر ، ثم احفظه باسم "loops.sh":

 #! / بن / باش

  لـ val بـ $ (seq 5 0.2 6.6) ؛ فعل

  صدى "القيمة الآن: $ val"

فعله

بعد ذلك ، نكتب ما يلي لجعل البرنامج النصي الجديد قابلاً للتنفيذ:

 chmod + x loop.sh 

عندما نقوم بتشغيل البرنامج النصي ، تتم طباعة عداد الحلقة في النافذة الطرفية. يمكننا بعد ذلك كتابة ما يلي لرؤية زيادة عداد الحلقة العشرية مع كل تكرار للحلقة:

 ./loop.sh 

تذكر أن seq يمكن أن يعد تنازليًا أيضًا ؛ يمكنك استخدام ذلك في الحلقات بنفس الطريقة.

جميل وبسيط

شيء واحد بخصوص seq هو عدم وجود الكثير من منحنى التعلم. تحتوي على صفحة man قصيرة منعشة ، ولكن لا يزال بإمكانك استخدامها بطرق ممتعة.

نظرًا لأننا غالبًا ما نحتاج إلى إنشاء ملفات اختبار بأحجام واقعية بسرعة ، فإننا نستخدم seq مع سلسلة تنسيق. نقوم بعد ذلك بإعادة توجيه الإخراج لإنشاء ملف يحتوي على العديد من سطور البيانات الوهمية كما نريد.

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