يعد استخدام منفذ الأوامر terminal shell من أصعب العقبات التي تواجه من يخطو أولى خطواته في عالم الراسبيري باي (Raspberry Pi) فعلي الرغم من سهولة استخدام الواجهات الرسومية إلا أن سرعة وكفاءة terminal تجعل التعامل معه أمرا ضروريافي هذ ه المقالة سنتناول 57 أمرا مقسمين في التصنيفات الآتية

  • إدارة الملفات
  • أوامر الشبكة
  • تحديثات النظام
  • إدارة الحزم
  • إدارة النظام
  • الأوامر الخاصة بنظام raspbian
  • أوامر إضافية
  • أوامر متقدمة

فسنحاول قدر المستطاع تقديم نبذة عن كل أمر متبوعاً بمثال يشرح استخدامه حتي يتزود القارئ ببعض الأوامر الرئيسية التي سيحتاجها في مشاريعه

إدارة الملفات

يتشكل نظام الملفات في لينكس علي هيئة شجرة تبدأ من الجذر وهو المجلد الرئيسي / root ثم تنبثق منه عدة ملفات ومجلدات والتي بدورها تنبثق منها مجلدات أخري وهكذا دواليك

فمثلا المجلد   home/pi هنا المجلد pi ينتمي للمجلد home

هاك بعض الأوامر للتعامل مع المجلدات في أنظمة لينكس وتذكر أنه إذا تعذر عليك الولوج إليها فكل ما عليك هو الاستخدام الأمر sudo مع هذه الأوامر الذي سيعطيك صلاحيات مدير النظام

  • <cd <path : للذهاب إلي مجلد ما ويتم تحديد عنوان المجلد إما بالنسبة للمجلد الحالي أو للمجلد الرئيسي
cd /home/pi
  • ls : يعرض كل الملفات والمجلدات في المجلد الذي تختاره
ls
ls /home/pi
ls -latr /home/pi
  • mkdir : لإنشاء مجلد فرعي في مجلد ما
mkdir myfolder
mkdir /home/pi/myfolder
  • <cp <file> <destination : ينسخ الملفات أو المجلدات لموقع أخر كما يمكننا نسخ مجلد كامل مع إضافة الرمز (r-) اختصارا ل (recursive)
cp test.txt /home/pi/Documents/
cp /home/pi/test.txt /home/pi/Documents/
cp -r /home/pi/test/ /home/pi/Documents/
  • <mv <source> <destination :يستخدم لنقل الملفات
mv /home/pi/test.txt /home/Documents/
mv /home/pi/test/ /home/Documents/
  • <cat <file : لعرض محتوي الملفات
cat /home/pi/README.txt
  • <more <file : تعرض محتوي الملف صفحة صفحة استخدم زر الادخال (enter) أو المسافة (space) للتنقل وزر  (q) للخروج
more /var/log/syslog
  • <tail <file : تستخدم لعرض آخر محتوي موجود في الملف ولذلك هي مفيدة في معرفة مستجدات النظام كما في المثال الآتي
tail /var/log/syslog

يمكنك تحديد عدد الأسطر المعروضة بالخيار (-n)

tail -n20 /var/log/syslog

كما يقوم الخيار (-f) بعرض الناتج في الوقت الحالي

tail -f /var/log/syslog
  • <head <file : على عكس tail فإن هذا الأمر يعرض بداية الملف
head /home/pi/file.txt
head -n20 /home/pi/file.txt
  • <grep <string : تكمن أهميتها في قدرتها على البحث عن النصوص سواء كانت في ملف أو ناتجة من أمر أو برنامج آخر
grep dhcp /var/log/syslog
cat /var/log/syslog | grep dhcp
/home/pi/myscript.sh | grep error
ls -latr | grep php

يمكنك استخدام العديد من الخيارات مع الأمر grep مثل الاستفادة من التعبيرات المضمنة regular expression أو لعرض نطاق محدد من الملف النصي ك الخيار اعتمادا على الكلمة المستهدفة فيمكن عرض ما قبلها B- أو ما بعدها A- أو حولها C- كما يتيح الخيار -v عرض كل شئ ما عدا الكلمة المحددة

لا تتوقف خيارات grep عند هذا الحد

grep 'dhcp\|dns' /var/log/syslog
grep -A2 -B4 'Fatal error' /var/log/apache/error.log
grep -v 'Notice' /var/log/apache/error.log

ويمكنك قراءة كتيب عن طريق الأمر man حتى يتسنى لك الاستفادة الكاملة منها

man grep
  • <nano <file : هو محرر نصوص متكامل يعمل داخل terminal بالكامل لذا فهو لا يمتلك واجهة رسومية وهو يوفر لك عدة خيارات لتسهيل عملية تحرير النصوص، ويتميز بسهولة استخدامه فقط انظر أسفل واجهة البرنامج لترى الخيارات المتاحة
nano /home/pi/myscript.sh
  • <rm <file : لحذف الملفات

وكما الحال مع الأوامر cp mv لحذف المجلدات يجب عليك استخدام الخيار rf- لحذف المجلد وجميع ما بداخله

rm monscript.sh
rm -rf /home/pi/scripts/
  • tar -c : لتخزين البيانات وعادة ما يستخدم مع الأمر gzip لتقليل حجم الأرشيف الناتج

انظر لهذا المثال

tar -cvfz archive.tar.gz /home/pi/Documents/mydirectory

c- لانشاء الأرشيف

v -لعرض تفاصيل العملية

f- لادخال اسم الملف الناتج

z- لضغط الأرشيف

يمكنك استخدام الخيار -x عوضا عن -c لفك الأرشيف

tar -xvfz archive.tar.gz

 

  • find : لإيجاد الملفات التي توافق شروط يحددها المستخدم كالاسم والحجم وتاريخ آخر تعديل والعديد من الخيارات الأخرى
find /home/pi -iname *.tar.gz
  • pwd : لمعرفة المجلد التي تعمل به
pwd
  • tree : تستخدم لتحليل موقعك الحالي حيث تعرض جميع الملفات والمجلدات الموجودة في المجلد الحالي
tree
pi@raspberrypi:/var/log $ tree
.
| – alternatives.log
| – alternatives.log.1
| – alternatives.log.2.gz
| – apt
|   | – eipp.log.xz
|   | – history.log
|   | – history.log.1.gz
|   | – history.log.2.gz
|   | – term.log
|   | – term.log.1.gz
|   ` – term.log.2.gz
...

 

أوامر الشبكة

لا غني عن التعامل مع أوامر الشبكة عند استخدام الراسبري باي خاصة إذا كان غير متصل بطرفيات الإدخال أو الإخراج

 

يأتي الراسبيري باي (+3B) مع واجهتين للشبكة: واجهة WIFI وواجهة Ethernet لذا علينا أن نعرف كيف نتعامل مع هذه الواجهات

  • ifconfig : لعرض إعدادات الشبكة الحالية وعرض عنوان ip في حالة الاتصال بإحدى الشبكات
ifconfig
ifconfig

 

  • <ping<IP : لمعرفة إذا اكان عميل ما متصل ب ip معين أم لا عن طريق إرسال حزم ping إليه
ping 192.168.1.1
  • <ifup <interface : لتفعيل واجهة الشبكة التي تريد
sudo ifup eth0

 

  • <ifdown <interface : لإيقاف واجهة شبكة معينة ويستخدم هذا الأمر مثلا عندما تتصل عن طريق واجهة ethernet وتريد إيقاف واجهة WIFI
sudo ifdown wlan0

 

الاتصال عن بعد وارسال الملفات

  • <wget <url : لتنزيل الملفات من الانترنت
wget https://wordpress.org/latest.zip
  • <ssh <user>@<ip : وهو بروتوكول شبكي يتيح إمكانية الاتصال عن بعد بحاسوب آخر والتحكم به
ssh [email protected]
  • <scp <file> <user>@<ip>:<path : لنقل الملفات إلي حاسوب بعيد باستخدام بروتوكول ssh
scp test.txt [email protected]:/root/
  • <rsync <file> <user>@<ip>:<path : تقوم بنفس عمل الأمر السابق إلا أنها تضغط الملفات المرسلة وتعدل عليها حتى تنقلها بأقصى سرعة ممكنة
rsync test.txt [email protected]:/root/

ويمكنك استخدام هذا الأمر أيضا لعمل نسخ احتياطية من نظامك

rsync -auzr /home/pi/Documents/* /home/pi/backups/Documents/

 

تحديث النظام

بعد أن أنهينا أوامر التحكم بالشبكة يمكنك الآن التعامل مع الشبكة التي تريد وتحديث النظام حتى يتسنى لك تثبيت أحدث البرامج علي نظامك

ويعتمد كل تطبيق أو أمر علي أنظمة لينكس على مجموعة من الحزم لا يعمل بدونها، وتتجمع الحزم في مجموعات تسمى المستودعات لذا من الجيد أن تحرص على تحديث فهرس مستودع الحزم باستمرار للحصول على آخر التحديثات

وفيما يلي بضع الأوامر التي تتيح لك التعامل مع مستودع الحزم بسهولة

  • apt-get update : يحدث فهرس مستودعات الحزم
sudo apt-get update
  • upgrade : يحدث كل الحزم المثبتة
sudo apt-get upgrade
  • rpi-update : عليك تعامل بحرص مع هذا الأمر فهو قادر علي تحديث كل شيء في نظامك كنواة النظام والحزم المثبتة وغيرها من برمجيات النظام
rpi-update

إدارة الحزم

سنتناول الآن كيفية تثبيت حزم جديدة على نظامك

  • <apt-get install <package : يثبت أي حزمة تريدها من مستودعات الحزم
sudo apt-get install phpmyadmin
sudo apt-get install vim htop
  • <apt-get remove <package : لحذف حزمة ما
sudo apt-get remove vim
  • <apt-cache search <search : للبحث عن اسم حزمة ما في مستودعات الحزم
sudo apt-cache search myadmin
sudo apt-cache search php

  • dpkg -l : لعرض جميع الحزم المثبتة على نظامك، يمكنك البحث عن حزمة معينة بمساعدة الأمر grep
dpkg -l
dpkg -l | grep myadmin

 

إدارة النظام

نأتي لأوامر التحكم في النظام وخدماته والعمليات المشغلة عليه

  • reboot يقوم بإعادة تشغيل النظام
sudo reboot
  • shutdown -h now : لإيقاف تشغيل النظام في التو
sudo shutdown -h now
  • <service <servicename> <action : التحكم في خدمات النظام تشغيلها أو إنهائها
service apache2 start
service apache2 stop

وهناك خيارات أخرى خاصة بخدمات معينة

service apache2 reload
service apache2 restart

عدم كتابة أي أمر يمكنك من الاطلاع على كل الأوامر المتوفرة

service apache2
  • <update-rc.d <service> <action : يسمح هذا الأمر بإدارة عمليات تشغيل وانهاء الخدمات في نظام الإقلاع (system boot) لتوزيعة debian

فمثلا بدأ خدمة ssh مع بدأ النظام استخدم

sudo update-rc.d ssh enable

ولتعطيلها

sudo update-rc.d -f ssh remove

لاحظ أن هذا الأمر محصور فقط في خدمات النظام أما إذا أردت التحكم في حالة الأوامر أو نصوص برمجية المختلفة عليك تعديل الملف  /etc / rc.local

sudo nano /etc/rc.local

 

  • ps  : لعرض العمليات التي تعمل على الراسبيري باي، لعرض جميع عمليات النظام نكتب الأمر
ps aux

وفي حالة إذا ما أردت عرض عمليات المرتبطة بمستخدم معين فعل الخيار u-

ps -u pi

ps linux command

أهم ما ستحصل عليه من هذا الأمر هو تحديد المعرف الخاص بعملية معينة PID والذي من خلاله تستطيع التحكم في هذه العملية كما سنري لاحقا

  • <kill <pid : لإنهاء مهمة معينة
kill 12345

يمكنك استخدام عدة خيارات مع هذا الأمر فمثلا الخيار 9- ليقوم إنهاء المهام المرتبطة ببعضها فمثلا لو أنك شغلت نص برمجي يضم 20 أمرا فاستخدام الأمر بدون هذا الخيار سيقوم بإنهاء فقط العملية الحالية ثم ينتقل إلي التالية لها في السكربت بعكس إذا ما استخدمت هذا الخيار فإنها سيقوم بإنهاء جميع هذه العمليات

kill -9 12345

كما يمكنك استخدام الأمر killall لإنهاء العمليات التي تنتمي لنوع معين

killall php

فهنا قمنا بإنهاء العمليات من نوع php

تعامل بحرص مع هذا الأمر ولا تلجأ إليه إلا إذا ضاقت بك السبل حيث أنه يقوم بإنهاء المهمة فورا بغض النظر عن ماذا تفعله أو الموارد التي تستخدمها مما قد يؤدي إلى فقدان أو اتلاف الملفات والبيانات

 

  • htop : هو بديل أكثر من ممتاز للأمر top فهو يعرض العمليات المشغلة علي النظام بطريقة دورية مع حجم الموارد الذي تستهلكها كل عملية بالإضافة إلي استخدامه لعدة ألوان تريح العين
htop
  • df : لعرض أقسام النظام partition list مع ما تشغله من حيز
df

للحصول على نتائج بصيغة مفهومة استخدم الخيار h-

df -h
  • vcgencmd measure_temp :  يمكنك هذا الأمر من معرفة درجة حرارة المعالج
vcgencmd measure_temp

 

الأوامر الخاصة بنظام Raspbian

جميع الأوامر التي عرضناها حتى الآن أوامر عامة في كل أنظمة لينكس، وفيما يلي سنستعرض بعض الأوامر التي يقدمها لنا نظام Raspbian حتى يتسنى لنا تطوير مشاريعنا بفاعلية

  • raspi-config : للتحكم في اعدادات الراسبيري باي عن طريق ال terminal أو عبر اتصال ssh
sudo raspi-config

raspi config

  • raspistill : يتيح لك أخذ صورة في حالة امتلاكك كاميرا متصلة بالراسبيري باي
raspistill -o image.jpg
  • raspivid : لتسجيل فيديو بدلا من صورة واحدة
raspivid -o video.h264 -t 10000

ويستخدم الخيار -t لتحديد مدة التسجيل بالملي ثانية

  • raspi-gpio : للتحكم في أطراف gpio وضبط أو قراءة قيم منها
raspi-gpio get
raspi-gpio get 20
raspi-gpio set 20 a5 
raspi-gpio set 20 op pn dh
  • raspiyuv – يشبه الأمر raspistill في تسجيله للفيديو ولكن بصيغة yuv
raspividyuv -o video.yuv

أوامر إضافية

سنتعرف الآن على مجموعة من الأوامر التي لا تقع تحت تصنيف معين

  • history : بطبيعة الحال يخزن لينكس الأوامر التي تم تنفيذها ويمكنك استخدام هذا الأمر لمعرفة هذه الأوامر المخزنة
history

كما يمكنك حذف سجل التاريخ باستخدام الخيار c-

history -c

أو حذف خانة معينة بإضافة رقم هذه الخانة بعد الخيار -d

history -d 123

 

  • Crontab : هي أداة فعالة لجدولة المهام التي تريد تنفيذها بدلا من إدخالها يدويا،
crontab -l
crontab -e
  • screen : يسمح هذا الأمر بمتابعة التشغيل بالخلفية بالرغم من إنهاء الجلسة
screen -s <name>
screen -r <name>

يمكنك إنشاء العدد الذي تريده من الجلسات استخدم الخيار -s لبدأ جلسة جديدة

والخيار r- لاستئناف جلسة معينة

يمكنك استخدام المعرف id عوضا عن الاسم في حالة نسيانه

أوامر احترافية

سنتناول في هذه الفقرة عدة أوامر متقدمة تتيح لك التعامل باحترافية مع نظام لينكس لذا فقد لا تناسب هذه الأوامر المبتدئين.

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

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

فلنلقي أولا نظرة على الصيغة العامة لأوامر awk

awk [-F] [-v var=value] 'program' file

أول خيار نقابله   -fويستخدم  لتحديد نوع الفاصلة المستخدمة بين الكلمات سواء كانت  (“,” أو “.”)

v- لتعريف متغيراتك التي ستستخدمها لاحقا

ثم البرنامج المسؤول عن التعديل على الملف النصي

وأخيرا الملف المراد التعديل عليه

لنقل مثلا أننا نريد معرفة أسماء المستخدمين الموجودين في النظام، نحن نعرف أن الملف
/etc /password يحتوي على معلومات عن من لهم صلاحيات استخدام النظام كالآتي

root:x:0:0:root:/root:/bin/bash
حيث يمثل الحقل الأول اسماء المستخدمين التي نريد استخراجها لذا يمكننا استخدام الأمر الآتي للحصول عليها

awk -F":" '{print $1}' /etc/passwd

كما ترى فإننا حددنا نوع الفاصلة “:” كما استخدمنا الأمر print متبوعا بالمتغير $1 الذي يعبر عن أول حقل

  • sed : هي أيضا أداة فعالة لمعالجة النصوص. الصيغة الأساسية لها
<sed <option> <script> <file

فلنفرض مثلا أنك تريد تصفح ملف تهيئة لأحد الخدمات مثل خدمة apache دون أن تشتت نفسك في قراءة التعليقات التي يمتلئ بها الملف، يمكنك استخدام sed لتحقيق ذلك بسهولة

sed '/^#/d' /etc/apache2/apache2.conf > /etc/apache2/apache2-nocomment.conf

الفكرة بسيطة جدا وهي حذف الأسطر التي تبدأ بالرمز # -المعبر عن التعليقات- ثم تحويل الناتج إلي ملف آخر

  • cut : توفر هذه الأداة طريقة أقل تعقيدا من سابقيها في التعامل مع النصوص فهي تقوم ببساطة باقتطاع النصوص وفقا للشروط التي تحددها
<cut <options> <file
<echo <string> | cut <options

الصيغة الأولي للتعامل مع الملفات بينم الأخرى للتعامل مع النصوص المدخلة توا

echo "abcdefghi" | cut -c 2-4

في المثال السابق سيكون الناتج bcd فالخيار c- يحدد الأحرف التي سنستخرجها

cut -d : -f 1 /etc/passwd

يقوم الأمر السابق بنفس ما قمنا به مع الأمر awk حيث يحدد -d نوع الفاصلة والخيار f- لتحديد رقم العمود المستخرج

  • wc : وهي اختصار للكلمة الانجليزية word count والتي تعني ببساطة عد الكلمات حيث يتيح هذا الأمر عد كل شيء سواء في ملف

يمكنك استخدام الخيار l- لعد الأسطر و w- للكلمات m- للأحرف وأخيرا الخيار c- لايجاد حجم الملف ككل، أما إذا أردت ببساطة الحصول على كل ما سبق فلا تستخدم أي خيار

wc .bash_history
668  1977 17979 .bash_history

حيث تمثل الخانة الأولي عدد الأسطر والثانية عدد الكلمات والأخيرة حجم الملف بالبايت

انظر للأمثلة الآتية

wc -l .bash_history
ls -latr | wc -l
wc -w myfile.txt

 

  • lsof : يعرض هذا الأمر جميع الملفات المفتوحة علي النظام والأوامر التي تستخدم هذه الملفات. مثلا إذ لم تستطع التعديل على ملف ما أو عجزت عن استخدام أمر معين ك umount فربما يكون المسؤول عن ذلك هو أحد الأوامر التي تقوم بالتعديل علي هذا الملف حاليا.
lsof
  • watch : يقوم هذا الأمر بعرض ناتج أمر معين كل فترة زمنية محدد – افتراضيا ثانيتين –
watch date
watch ls -latr
watch cat output.txt

ويمكنك تحديد هذه الفترة الزمنية بالخيار -n،

watch -n10 date

يعد هذا الأمر مفيدا مع الأوامر التي تتغير نواتجها باستمرار مثل الأمر date

 

  • netstat : لإدارة موارد الشبكة بفاعلية فمثلا يمكنك رؤية جميع المنافذ المفتوحة علي النظام والعمليات التي تجري عليها.

لنلقي نظرة خاطفة على بعض الإمكانيات التي تتيحها لنا هذه الأداة العملاقة

netstat -l

لعرض جميع الاتصالات المستقبلة للبيانات

netstat -lp

استخدم الخيار p- لمعرفة العمليات المستخدمة لهذه الاتصالات

كما يمكنك استخدام الخيار -c لرؤية البيانات بصورة دورية

netstat -lpc

 

  • dmesg : يعرض هذا الأمر كل ما حدث في نظامك في مرحلة الإقلاع، إذا ما واجهت مشكلة في مرحلة الإقلاع يمكنك استخدام هذه الأداة لمعرفة موطن الخلل ثم علاجه حيث ستعرض لك مخطط زمني بجميع ما حدث منذ لحظة الإقلاع مزودة بشرح ما حدث وأسباب ما خطأ إن وجدت
dmesg

المصدر: هنا

ترجمة: عبد الرحمن صابر , مراجعة: علي العلي, تدقيق لغوي: رنيم العلي, تصميم: علي العلي, تحرير: قحطان غانم.