Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور

3 حيل في Terminal ستتمنى لو عرفتها في وقت سابق

كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور؟
في هذه المقالة أشارك أسرارًا فعالة لأوامر سطر الأوامر (Terminal) غالبًا ما تبقى خفية أو يُغفل عنها الكثيرون. ستتعلم أوامر تُسهل المهام اليومية، تحسّن سرعتك في التعامل مع النظام، وتمنحك أدوات قوية للتحكم الكامل. أبدأ بالإجابة السريعة ثم أُفصّل:

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

linux-terminal-open-in-the-ubuntu-desktop-on-a-laptop-screen كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور

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

هيا نبدأ — ولن يخذلك Terminal بعد اليوم.

سواءً كنتَ تتعلم الطرفية أو محترفًا مُحنّكًا، فهناك دائمًا العديد من الحيل الصغيرة التي يمكنك تعلمها – حيل تُوفّر عليك الوقت. لديّ ثلاث حيل مفيدة في Bash يُمكنك إضافتها إلى ترسانتك.

استبدال العملية، لتحويل البيانات إلى ملفات بيانات مؤقتة

ربما واجهتَ موقفًا احتجت فيه إلى مسار ملف كمُعامل، ولكن كل ما لديك هو البيانات.

على سبيل المثال، لنفترض أنك تُريد تعديل نص موجود مُسبقًا في الطرفية:

echo "foo" | nano

الأمر السابق لا يعمل، لأنه لا يمكنك توجيه البيانات إلى nano؛ بدلاً من ذلك، عليك توفير مسار ملف، كما يلي: nano /path/to/file.txt.

لحل هذه المشكلة، غالبًا ما ستستخدم تسلسل أوامر مشابهًا لما يلي:

echo foo > bar.txt
nano bar.txt

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

echo <(true)

إذا قمت بتنفيذ الأمر السابق، فسترى أنه يطبع مسار الملف كما يلي:

/dev/fd/16

يُولّد استبدال العملية ملفًا مؤقتًا من مُخرَج أمر، مما يسمح لأمر آخر بالقراءة منه. في المثال السابق، يُولّد “<(true)” مسار المُخرَج، ويستقبله “echo”. البيانات في المُخرَج هي ببساطة “true”.

اقرأ أيضا:  postmarketOS 25.06 يُحسّن استقرار هواتف Linux ويوسّع قائمة الأجهزة المدعومة

نصيحة
يشير الجزء “fd” من المسار إلى مُصطلح “واصف الملف”، وهو مُعرّف تستخدمه البرامج داخليًا للإشارة إلى الملفات المفتوحة. يحتوي هذا المثال على واصف ملف رقمه 16. واصفات الملفات خاصة بالعمليات التي تستخدمها – وهو “echo” في هذه الحالة.

لنستخدم استبدال العملية بطريقة مفيدة:

nano <(echo "foo")

الأمر السابق هو نفسه كتابة الأمر التالي:

echo "foo" > /tmp/foo
nano /tmp/foo

لن تتمكن من حفظ النص وتعديله عند تشغيل nano <(echo “foo”) لأن الملف المُنشأ خصيصًا للقراءة فقط، ولكن يمكنك تغيير مكان حفظه باستخدام اختصار Ctrl+o.

استبدال عملية الإدخال/الإخراج

يُنشئ التعبير “<(foo)” استبدالًا لعملية الإدخال. أو يمكنك أيضًا إنشاء استبدال لعملية الإخراج:

echo "foo" > >(cat)

الأمر السابق هو نفسه كتابة الأمر التالي:

echo "foo" > /tmp/foo
cat /tmp/foo

مع أن الأمرين قد يبدوان مختلفين، إلا أنهما يعملان بنفس الطريقة. يتضح الأمر أكثر عندما تفهم أن الأمر echo “foo” > >(cat) يكتب “foo” في ملف خاص، والذي يقرأ منه الأمر cat.

باختصار،

  • echo <(true) هو استبدال لعملية إدخال، ويستقبل الأمر echo البيانات عبر مسار ملف خاص (في هذه الحالة، تكون البيانات “true” فقط).
  • echo “foo” > >(cat) هو استبدال لعملية إخراج، ويستقبل الأمر cat الكلمة التي تم ترديدها عبر مسار خاص. الحرف “>” الأول هو عامل إعادة التوجيه، والثاني جزء من تعبير الاستبدال نفسه.

لإنهاء هذا القسم، أعتقد أن مثالًا واقعيًا سيربط الأمر بشكل جيد:

diff <(ls -1 ~) <(ls -1 /tmp)

سيُقارن هذا الأمر الاختلافات بين مجلدين. يُعد استبدال عملية الإدخال مفيدًا في هذه الحالة لأن دالة diff تتوقع مسارات الملفات، وهذا ما توفره عمليات الاستبدال.

اقرأ أيضا:  فهم هيكل الدليل في لينكس: دليل مبسط للمبتدئين

ملاحظة
الرمز “ls -1” هو واحد، وليس الحرف l.

أوامر توسيع السجل للتكرار

يستخدم مطورو Bash مصطلح “توسيع” كثيرًا. قد يبدو معقدًا، لكنه يعني ببساطة تغيير شيء صغير إلى شيء أكبر – لتوسيعه. المثال الأشهر هو توسيع التلدة (~)، الذي يتوسع إلى مسار المجلد الرئيسي.

الأمثلة الثلاثة التالية تُسمى جميعها توسيعات السجل. جميع هذه التعبيرات تتوسع من مدخلات أحرف بسيطة إلى عناصر في سجل shell.

Bang, Bang!!

هذا أحد أكثر الأوامر استخدامًا بعد cd وls. إنه سهل الاستخدام والفهم. يُعيد تشغيل آخر أمر نفّذته.

ls
!!

a-terminal-window-displays-the-ls-command-executed-twice-the-second-time-it-was-executed-with-a-double-exclamation-point كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور

يمكنك ملاحظة من مخرجات الأمر أن الأمر ls يُنفَّذ مرتين.

وسِّع عنصرًا محددًا في سجلك
أولًا، راجع سجلك لاختيار أمر مناسب:

history

ثم ببساطة اختر أحد الأرقام الموجودة على اليسار وأدخله كـ N:

!N
the-terminal-shows-the-bash-history-a-double-exclamation-point-was-entered-and-it-re-executed-the-last-command-a-simple-directory-listing كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور

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

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

التوسيع بالاسم، لتسهيل الاختيار

قد يكون البحث المتكرر في سجل أوامرك والعثور على أمر مرقم محدد أمرًا مملًا. توجد طريقة بديلة وأكثر فعالية: يتيح لك Bash كتابة بداية الأمر جزئيًا، وسينفذ أحدث تطابق.

echo foo
!e
!ech

يُعد هذا مثاليًا عند التبديل بين عدة أوامر خلال جلسة طرفية واحدة. مع ذلك، بالنسبة للأوامر الأطول عمرًا (الأقدم بكثير)، أُفضّل استخدام أداة بحث تاريخي ضبابي.

مجموعات الأوامر

أحيانًا، قد ترغب في تنفيذ عدد من الأوامر كمجموعة، مع اعتبار مخرجاتها نتيجة واحدة. خذ المثال التالي في الاعتبار:

echo foo > /tmp/foo.txt
echo bar >> /tmp/foo.txt

يُسمى حرف “>” عامل إعادة التوجيه، وهو يُرسل ناتج الأمر إلى الملف المُحدد، مُستبدلًا محتوياته؛ ويفعل “>>” الشيء نفسه، باستثناء أنه يُضيف إلى الملف – وهو ما يُعرف بعامل إعادة التوجيه.

اقرأ أيضا:  كيفية استخدام ملف .bashrc في Linux وتخصيصه لتحسين تجربتك

سيُنشئ الأمر السابق ملفًا بالشكل التالي:

foo
bar

أحيانًا، عندما تكون أوامرك أكثر تعقيدًا، قد يكون استخدام هذا الأسلوب غير مُجدٍ نظرًا لكثرة الأسطر غير الضرورية. الأسلوب الأبسط هو استخدام مجموعة أوامر.

تدمج مجموعة الأوامر جميع مخرجات أوامرها في مجموعة واحدة، مما يُسهّل معالجة النتيجة بشكل كبير.

{ echo foo; echo bar; } > /tmp/foo.txt

سيؤدي ذلك إلى نفس ناتج الأمر السابق. يجب أن تتم إعادة التوجيه مرة واحدة فقط، لذا لا حاجة لعامل إعادة التوجيه (>>).

تحذير
يُشترط وضع فاصلة منقوطة بعد كل أمر، وخاصةً الأمر الأخير. كما يُشترط وضع مسافات بين الأقواس وكلمات الأمر.

يمكنك إثبات أن الأوامر خارج المجموعة تُنفَّذ مرة واحدة فقط بتنفيذ تسلسل الأوامر التالي:

{ echo "A"; echo "B"; } | wc -l

a-terminal-window-displays-a-command-group-with-two-echo-statements-in-it-the-value-is-piped-to-the-wc-command-that-performs-a-line-count-which-displays-the-number-2 كيف تكتشف أوامر Terminal تُغيّر تجربتك على الفور

ترسل مجموعة الأوامر كلا مُخرَجي الصدى معًا كدفق واحد. لهذا السبب، يحسب الأمر “wc” كلا السطرين معًا كرسالة واحدة ويُظهر 2؛ وإلا، فسيُظهر 1 على سطرين منفصلين.

مثال على حالة استخدام واقعية:

{ ping -c 1 example.com; ping -c 1 example.net; } > /tmp/ping.txt

باختصار:

استبدال العملية يستبدل العملية بمسار ملف مؤقت. على سبيل المثال، nano <(echo “foo”) و echo “foo” > >(cat).

توسعات سجل shell هي أحرف خاصة تشير إلى عناصر سجل bash. على سبيل المثال، !foo، !N أو !!.

توحد مجموعة الأوامر مخرجات أوامر متعددة في نتيجة واحدة. على سبيل المثال، { echo “foo”; echo “bar”; } > /tmp/foo.txt.

كل ما تم شرحه لا يمثل سوى جزء بسيط مما تقدمه bash. إذا أعجبتك توسعات سجل shell، فستحب درسنا التعليمي حول كيفية استخدام أمر history. قد يهمك أيضًا الحيل التي تسهل تعلم سطر الأوامر.

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

زر الذهاب إلى الأعلى