يعد استخدام منفذ الأوامر 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
- <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
أهم ما ستحصل عليه من هذا الأمر هو تحديد المعرف الخاص بعملية معينة 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
- 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
المصدر: هنا
ترجمة: عبد الرحمن صابر , مراجعة: علي العلي, تدقيق لغوي: رنيم العلي, تصميم: علي العلي, تحرير: قحطان غانم.