الجمعة، 20 مارس 2009

سطر الأوامر نظرة عن قرب أكثر 07

السلام عليكم ورحمة الله وبركاته

محور حديثنا فى هذه الجزئية سيكون عن كلا من الأمر history والأمر alias وكلاهما يمثل أهمية لمستخدمى جنو/لينوكس على مدار العمل اليومى وسنبدأ رحلتنا مع الأمر history .


الأمر history :

هل فكرت يوما فى أن ما تكتبه من أوامر بشكل اعتيادى يتم تسجيله دون أن تعطى لذلك بالا ؟؟ قد يندهش البعض ويستاءل هل أنا مراقب ؟

مممم كلا الأمر ليس كذلك لكن عندما تقوم بكتابة أمر وتمريره إلى الطرفية فيوجد هناك من يقوم بحفظ كل ما تكتبه سواء كان بشكل صحيح أم

بشكل خاطىء فى ملف خارجى يدعى bash_history. ، هذا الملف يقوم بحفظ الأوامر التى تكتبها بتريب زمنى تصاعدى أى بداية من أول أمر

قمت بتمريره إلى الطرفية انتهاء بآخر أمر قمت بكتابته وهكذا

الملف bash_history. يوجد داخل ملجد ال home directory الخاص بك ، لكن بشكل طبيعى هذا الملف لا تستطيع ملاحظته لأنه يتم أخفاؤه بشكل افتراضى (لاحظ أن اسم الملف يبدأ ب dot أو نقطة) ، وبشكل افتراضى أيضا يقوم ذلك الملف بتخزين آخر خمسمائة أمر (500) بداخله ويتم حذف الأوامر تباعا الأقدم فالأقدم ليبقى عدد الأوامر المحفوظة داخل الملف 500 أمر .

والآن إذا أردت استخدام الأمر لمعرفة ما يفعل قم بتنفيذ التالى :

كود PHP:
muhammad@ubuntu:~$ history

452 cat
/boot/grub/menu.lst | grep ubuntu
453 cat
/boot/grub/menu.lst
454 man chroot
455 man compiz
456 history
:
:
:
:

ماذا تلاحظ بعد كتابة الأمر ؟ قد تندهش بالفعل قام الأمر بسرد مجمل الأوامر التى قمت بادخالها مؤخرا ويعتمد ذلك على مدى استعمالك لمحاكى الطرفية ، بمعنى آخر هل تستخدم الطرفية بشكل كبير أو بين الحين والآخر وهكذا .....


فمثلا فى حالتى حتى الآن قمت بتمرير 456 أمر إلى الطرفية ونظرا لكثرة الأوامر فى حالتى فلم يظهر منها أمامى على الشاشة إلا بعض الأوامر التى قمت بكتابتها مؤخرا ، لكن إذا اردت معرفة مجموعة الأوامر الأولى التى قمت بكتابتها فقم بدمج الأمر history مع الأمر less بالشكل التالى :

كود PHP:
muhammad@ubuntu:~$ history | less

ليكون ناتج دمج الأمرين بالشكل التالى :

كود PHP:
1 sudo apt-cache search compiz
2 sudo apt
-get install compiz-gnome
3 sudo apt
-get install compiz
4 sudo apt
-get install compizconfig-settings-manager
5 sudo nano
/etc/apt/sources.list
6 clear
7 sudo apt
-get update
8 sudo apt
-get install compizconfig-settings-manager
:
:
:

وبالتالى تستطيع تصفح الأوامر بشكل مرتب باستخدام الزر Enter لمعرفة كل الأوامر التى قمت بادخالها مؤخرا

تنبيه : الآن قد علمتم الحكمة من عدم رؤية كلمة المرور التى تقوم بكتابتها باستمرار ، وبالتالى تفوت الفرصة على العابثين بملفاتك والمعلومات التى تخصك .

خيارات الأمر history

قد يتساءل البعض هل المعلومات السابقة هى كل ما تخص الأمر history ؟؟ قطعا لا "!!" مازال الأمر يحتفظ ببعض الخيارات التى تُكسبه قوة إضافية .

الخاصية الأولى : العلامتان "!!" والتى تعنى تنفيذ آخر أمر قمت بإدخاله ، فمثلا آخر أمر قمت بادخاله هو الأمر pwd لذا عندما تقوم كتابة الخاصية !! فيستم تنفيذ الأمر مرة أخرى ولاحظ معى التالى :

فى البداية سأقوم بكتابة الأمر pwd لتصفح محتويات مجلد ما بالشكل التالى :

كود PHP:
muhammad@ubuntu:~$ pwd
/home/muhammad

و عند كتابة العلامتان "!!" فسنحصل على نفس النتيجة السابقة بالشكل التالى :

كود PHP:
muhammad@ubuntu:~$ !!
pwd
/home/muhammad

ماذا تستنتج ؟ التفسير البديهى لذلك الأمر هو أن العلامتان "!!" تقومان بالبحث عن آخر أمر داخل الملف bash_history. ثم بعد ذلك تقوم بتنفيذ ذلك الأمر مرة أخرى ، ويؤكد كلامنا السابق أن الأمر pwd تم كتابته أولا ثم بعد ذلك تم تنفيذه مرة .


الخاصية الثانية : "[##]!" (تعنى تنفيذ أمر سابق برقمه)


من خلال هذه الخاصية نستطيع تنفيذ أمر سابق برقمه الخاص به بمعنى ، من خلال تنفيذنا للأمر history فى السابق رأينا أن كل أمر يتم تنفيذ يأخذ رقما محددا داخل الملف bash_history. وهكذا ، لذا لكى نستطيع تنفيذ رقم بعينه سيكون ذلك من خلال استخدام "[##]!" ولنأخذ مثالا على ذلك :

كود PHP:
muhammad@ubuntu:~$ history
:
:
475 clear
476 ls
477 pwd
:
:

بعد ذلك نستخدم العلامة "!" مع رقم الأمر بالشكل التالى :

كود PHP:
muhammad@ubuntu:~$ !477
pwd
/home/muhammad

كما تلاحظ فى المثال السابق قمنا أولاً باستخدام الأمر history لمعرفة أرقام بعض الأوامر التى قمنا بكتابتها ، بعد ذلك قمت باختيار رقم الأمر pwd وهو 477 ، وأخيرا قمت بتنفيذ الأمر مرة أخرى برقمه باستخدام العلامة "!" .


الخاصية الثالثة : "[string]!" (تعنى تنفيذ أمر بإستخدام بعض حروفه)

القدرة على تنفيذ أمر مرة أخرى باستخدام الرقم المناظر له أمر جيد ، لكن هل ستسعفك الذاكرة دوما لتذكر تلك الأوامر ؟ أظن لا لذا لابد من حل بديل ألا وهو استخدام العلامة "!" مع بعض الحروف من الأمر ولنأخذ مثالا على ذلك :


كود PHP:
muhammad@ubuntu:~$ cat /home/muhammad/mysql

you can
use them as always
try another one
will that help
?
كود PHP:
muhammad@ubuntu:~$ cd Desktop/
muhammad@ubuntu:~/Desktop$ !ca
كود PHP:
cat /home/muhammad/mysql
you can
use them as always
try another one
will that help
?


شرح المثال : فى البداية قمت بتصفح محتويات ملف نصى باسم mysql باستخدام الأمر cat بعد ذلك قمت بالولوج إلى مجلد ال Desktop لمجرد تغيير الأوامر ليس إلا ثم أخيرا قمت باستخدام العلامة "!" مع بعض الحروف من الأمر cat وهما الحرفان ca فكانت النتيجة نفسها كما تلاحظ .

الخاصية الرابعة : Ctrl+r

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

كود PHP:
(reverse-i-search)`':

بعد ذلك قم بادخل مثلا الأمر ls ماذا تلاحظ ؟

بمجرد أن تقوم بإدخال حرفى ّ الأمر ستظهر على الفور جملة اول أمر تم كتابته قم ذلك وللبحث عن مزيد من جمل الأوامر التى تحتوى الأمر ls قم بالضغط فى نقس اللحظة على Ctrl+r عدة مرات لتحصل على النتيجة التى تريدها .


ملحوظة : لاحظ أن الخاصية Ctrl+r تقوم بالبحث عن الأوامر التى توجد داخل الملف bash_history. فقط .


الأمر alias


هل سئمت كثيرا من كتابة بعض الأوامر مع بعض الخيارات التى تأتى معها بشكل مستمر ؟ إذا هنا يأتى دور الأمر alias فترجمة الكلمة تعنى الإسم المستعار ، فهو بشكل ما يدل على الإسم الأصلى له فمثلا باستمرار أنت تستخدم الأمر ls مع الخيار l- لعرض التصاريح الموجودة على الملفات لكن فى بعض الأحيان يتملكك الكسل وتريد تسهيل المهمة لكن لا تعرف كيف ، لذا دور الأمر alias أن يسهل لك الصعاب ويوفر عليك بعض الوقت عند كتابة الأوامر ولتتضح الأمور نبدأ فى تطبيق بعض الأمثلة العملية :


فى البداية سنقوم باستعراض كل ال aliases الموجودة على التوزيعة الخاصة بك وهل توجد أم لا وذلك بتنفيذ الأمر التالى من محاكى الطرفية :

كود PHP:
muhammad@ubuntu:~$ alias
alias ls
='ls --color=auto'

كما ترى يوجد لدى alias واحد فقط يخص الأمر ls ويأتى مع الخيار color=auto-- ، وقد يختلف الأمر معك وتظهر لديك عدة aliases ، ويتم الإحتفاظ بتلك ال aliases إما داخل الملف bashrc. أو داخل ملف مستقل اسمه bash_aliases. ، لكن فى العادة يتم الإحتفاظ باى alias تقوم بإنشائه داخل الملف bashrc. والذى يكون مسئول عن ضبط خيارات الطرفية للمستخدم الذى يملك ذلك الملف

ليست هناك تعليقات:

إرسال تعليق