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

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

عدنا لِنُكمل المسيرة الشيقة مع سطر الأوامر ونبدأ بسم الله :


الجزء الثانى : الأوامر الأساسية فى لينوكس


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


الأمر : ls


يعتبر الامر ls من أكثر الأوامر شيوعا وانتشارا واستخداما لما له من أهمية شديدة لمستخدم لينوكس بشكل شبه يومى . ولمعرفة أهمية الأمر نفترض أنك تمتلك ملفات تخصك على احدى المجلدات وفى يوم ما أردت استعراض هذه الملفات على هذا المجلد فما الذى يمكنّك من ذلك ؟

الإجابة هو الأمر ls حيث يقوم الأمر باستعراض الملفات والمجلدات الفرعية تحت المجلد الرئيسى التى توجد فيه هذه الأشياء ، والآن لنبدأ سويا رحلة البحث عن المتعة باستخدام سطر الأوامر ، لمستخدمى واجهة جنوم عليهم الذهاب للمسار التالى :

كود PHP:
Applications => Accessories => Terminal

والآن على الفور أول شىء نقوم بكتابة الأمر ls فى صورته البسيطة دون دمجه مع أى خيارات اضافية ثم بعد ذلك نضغط على الزر enter كما يلى :


كود PHP:
oem@ubuntu:~$ ls
1.rmvb
38AR_Crucifiction_Fact_or_Fiction_vs_Douglas_512KB
.rmvb
Desktop
documenation
and presentation of parallel processing for SDR using OMAP.rar
Examples
w32codecs_20061022
-0.0_i386.deb

كما يمكنك استعراض الملفات الموجودة على مجلد فى المسار الحالى دون الحاجة إلى كتابة مسار المجلد ولنفترض أننا نريد استعراض محتويات المجلد Desktop نقوم بعمل التالى :

كود PHP:
oem@ubuntu:~$ ls Desktop
33391_hi
.ram
4.rm index_files
index
.php spraah2.pdf

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

كود PHP:
oem@ubuntu:~$ ls /home/oem/Desktop/
33391_hi.ram spraah2.pdf
4.rm index_files
index
.php

ولكن أﻻ توجد طريقة أسهل فى التعامل لعرض ملفات ال home directory تكون أفضل من ذلك ؟

نعم ، توجد العلامة ~ والتى تقوم نفس مقام المسار home/oem/ دون أدنى اختلاف ولنتأكد من ذلك من خلال الطرفية بعمل التالى :

كود PHP:
oem@ubuntu:~$ ls ~/Desktop
33391_hi
.ram spraah2.pdf
4.rm index_files
index
.php

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

الإجابة بالطبع ﻻ فقد تكون على مسار وتقوم باستعراض ملفات مسار آخر ولاستعياب ذلك نفترض أننا على مسار home/oem/ ونريد استعراض ملفات مسار آخر فلنرى ذلك فى الطرفية :

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

ﻻحظ أننا أوﻻ قمنا بمعرفة المسار الحالى عن طريق استخدام الأمر pwd لمجرد التأكد ليس إﻻ .

كود PHP:
oem@ubuntu:~$ ls /var/cache/
apt debconf gnome-system-tools man setup-tool-backends
cups dictionaries
-common locate pppconfig

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

أوضح قليلا الآن حان دور استخدام ال wildcards .نفترض أننا نود البحث عن ملف اسمه mysql_unde_rground.pdf وكل ما نتذكره عن الملف اسمه والامتداد الخاص به والمجلد الذى يوجد به ولكن المجلد يحتوى على ملفات ذات الامتداد pdf. وأخرى ذات امتداد txt.وما نريده هو عرض الملفات التى تنتهى بامتداد pdf.نقوم بعمل التالى :

كود:
oem@ubuntu:~$ ls ~/Desktop/*.pdf
/home/oem/Desktop/mysql_under_ground.pdf /home/oem/Desktop/spraah2.pdf
/home/oem/Desktop/new.pdf

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

كود:
oem@ubuntu:~$ ls ~/Desktop/*under*.pdf
/home/oem/Desktop/mysql_under_ground.pdf

بعد أن ظهرت أهمية ال wildcards وكيفية استخدامها ودمجها مع الأمر ls نبدأ الآن فى استعراض الخيارات التى يمكن اضافتها مع الامر .


1- استعراض الملفات الموجودة على المجلدات الفرعية :

كود PHP:
View a List of Files in Subfolders (ls -R or ls --recursive)

يعتبر الخيار R- من ضمن الخيارات المهمة والتى يتم إضافتها إلى الأمر ls وذلك لاستعراض الملفات الموجودة على المجلدات الفرعية داخل مجلد رئيسى بسهولة ويسر دون الاحتياج إلى فتح كل مجلد على حده كما يلى :

كود PHP:
oem@ubuntu:~$ ls -R ~/Desktop
/home/oem/Desktop:
33391_hi.ram index.php
4.rm mysql_under_ground
.pdf
new.pdf spraah2.pdf
index_files

/home/oem/Desktop/index_files:
362922962_1887f6723a_o.png ips_menu_html.js
365159135_b0fcd2be76_o
.jpg ips_menu.js
7951.png ips_xmlhttprequest
.js
Alfred
.gif js.js
arab
. jss.php
arab_data Market
.jpg

/home/oem/Desktop/index_files/arab_data:
arab_01.gif arab_04.gif arab_10.gif arab_13.gif
arab_02
.gif arab_08.gif arab_11.gif arab_14.gif
arab_03
.gif arab_09.gif arab_12.gif arab_15.gif

كما رأينا أعلى قام الأمر أوﻻ باستعراض الملفات بالمجلد الرئيسى Desktop ثم بعد ذلك تم استعراض الملفات الموجودة داخل المجلد الفرعى index_file ثم بعد ذلك تم استعراض الملفات الموجودة داحل المجلد الفرعى arab_data ، وﻻحظ أيضا أن كل مجلد فرعى يظهر بالمسار الإرتباطى الخاص به أو ال relative path.

ولكن هل الخيار R- دائما هو الأفضل ؟

الإجابة ﻻ ، ولتعرف لماذا جرب التالى فى الطرفية وستعرف ماذا أقصد :

كود PHP:
ls -R /var

2- استعراض الملفات الموجودة على أى مجلد فى عمود رأسى واحد فقط :


كود PHP:
View a List of Contents in a Single Column (ls -lor ls --format=single-column)

تعودنا قبل ذلك عند كتابة الأمر ls وحده دون اضافة أى خيارات أن تظهر الملفات على شكل أعمده وصوف وبين كل عمود وعمود مسافتين لسهولة قراءة خرج الأمر ، ولكن الجديد مع الخيار 1- أنه يمكنك استعراض ملفات أى مجلد فى عمود رأسى واحد فقط كما يلى :

كود PHP:
oem@ubuntu:~$ ls -1 ~/Desktop
33391_hi
.ram
4.rm
index_files
index
.php
mmmm
spraah2
.pdf

ملحوظة : يمكن استخدام الخيار R- مع الخيار 1- لعمل الوظيفتين اللتان يقوم بهما الخياران فى آن واحد أى استعراض الملفات على المجلدات الفرعية داخل المجلد الرئيسى مع عرض نتيجة كل مجلد فرعى فى عمود رأسى واحد فقط ليكون الأمر بالشكل التالى :

كود PHP:
ls -1R ~/Desktop

أما إذا استخدمت الخياران 1R- مع الأمر ls فى مجلد رئيسى يحتوى على مئات المجلدات الفرعية مثل var/ ، فقد تحتاج إلى ctrl+c ... حينها ستعرف فائدة الضغط على هذه المفاتيح........

3- استعراض الملفات الموجودة على أى مجلد مع وضع Comma بين كل ملف وآخر :

كود PHP:
view Contents As a Comma-Separated List ( ls -m )

خيار آخر لتنظيم شكل الملفات عند استعراضها باستخدام الأمر ls وهو الخيار m- حيث يقوم بوضع comma بين كل ملف وآخر كما يلى :

كود PHP:
oem@ubuntu:~$ ls -m /var
backups, cache, games, lib, local, lock, log, mail, opt, run, spool, tmp

4- استعراض الملفات والمجلدات المخفية على مسار معين :

كود PHP:
View Hidden Files and Folders (ls -a or ls --all)

حتى هذه اللحظة كانت نتائج استعراض الملفات والمجلدات سواء كانت رئيسية أو فرعية باستخدام الأمر ls الملفات والمجلدات المرئية فقط ، ولكن ماذا لو كانت هناك ملفات أو مجلدات مخفية ؟ هنا الخيار a- ليقوم بهذه المهمة ، فعلى سبيل المثال مجلد ال home directory الخاص بك يحتوى ملفات مخفية والبعض بل يمكن الكثير ﻻ يعلم ذلك ولكى تعرف ذلك تابع التالى :

كود PHP:
oem@ubuntu:~$ ls -a ~/
.
..
.
bash_history
.bash_logout
.bash_profile
.bashrc
books
~
.
DCOPserver_ubuntu__0
.DCOPserver_ubuntu_:0
Desktop
.dmrc
using OMAP
.rar
.esd_auth
.evolution
Examples
.fonts.cache-1
.mozilla
.mplayer

ﻻحظ : المجلدات المخفية يكون فى بدايتها نقطة أو ال dot ، وقد رأيتَ فى المجلد الرئيسى والخاص بالمستخدم الذى أنشاْته أثناء مرحلة التنصيب يحتوى على الكثير من المجلدات الفرعية مع مجلدات أخرى فرعية ولكنها مخفية ، بعض من هذه المجلدات المخفية تكون لبرامج أنت تقوم بتنصيبها وتحتوى على ملفات ال configuration الخاصة بها ، والبعض الآخر لبرامج أساسية يتم تنصيبها أثناء تثبيت التوزيعة بدون تدخل من المستخدم.

أيضا من ضمن الأشياء التى أودُ لفت انتباهك إليها هو أول سطرين فى نتيجة الأمر أى ال. ، .. (dot and double dots) حيث تشير ال . إلى المجلد الحالى الذى توجد فيه الآن أما ال .. فتشيران إلى المجلد الأب الذى يحوى المجلد الرئيسى وطبيعى فى هذه الحالة هو المجلد home/ بحيث يكون المجلد home/ هو المجلد الأب أو فيما يسمى بال parent directory للمجلد oem/. هذان المجلدان متواجدان بشكل عام فى كل المسارات التى توجد بالتوزيعة وﻻ تستطيع التخلص منهم . وبالتالى توقع أن تَجِدْهما فى كل مرة تستخدم فيها الخيار a- . ولك أن تشكر الخيار a- أن نبهك إلى وجود ملفات ومجلدات لم تكن تعلم عنها شيئا !!


5- استعراض الملفات مع إظهار أنواعها :

كود PHP:
Visually Display a Files Type (ls -F or ls --classify)

بأعلى استعرضنا بعض الخيارات التى يتم إضافتها للأمر ls لتُكسبه رونقا ًرائعا وتُضفى عليه لمسات جذابه لتعرضْ لك ما تريده ولكن هل تظن الأمر ينتهى عند هذا الحد ؟ البعض قد يظن أن الأمر ls قد أتى بكل مافى جعبته ، ولكن ليس الآن هناك المزيد والمزيد.....

من ضمن الخيارات الرائعة التى تأتى مع الأمر ls هو الخيار F- ، حيث يقوم هذا الخيار بعرض نوع الملف الموجود على المجلد سواء كان الملف تنفيذى أو Executable ، مجلد أو Direcotry ، رابط رمزى أو Symbolic link ، أو FIFO وهى اختصار لعبارة First in First out ويس هناك مجال لشرح ال FIFO لأنه يحتاج درس آخر خاص به ، كل ما يهمنى الآن أن تعرفه أن الخيار F- يقوم بعرض رموز أو علامات كل منها تدل على نوع من الأنواع التى قمت بذكرها ..... والآن لنستعرض كيفية كتابة الأمر فى الطرفية كما يلى :

كود PHP:
oem@ubuntu:~$ ls -F /bin
bzgrep
* gunzip* nano* umount*
bzip2* gzexe* nc* uname*
bzip2recover* gzip* netcat@ uncompress*
bzless* hostname* netstat* vdir*
bzmore* ip* pidof@ which*
mido/ mysql/
كود PHP:
oem@ubuntu:~$ ls -F /dev
log
= ptyc9 ptyrd ptyx1 tty18 ttybe ttyr2 ttyt6 ttyya
loop
/ ptyca ptyre ptyx2 tty19 ttybf ttyr3 ttyt7 ttyyb

ﻻحظ : قمت فى المثال السابق باستعراض أنواع بعض الملفات للمجلد bin/ ، والبعض الآخر للمجلد dev/ باستخدام الخيار F- وظهرت لدىّ نتيجة الأمر كما رأيت ، تدل العلامة * على أن الملف الذى توجد أمامه أنه ملف تنفيذى أو كما قلنا Executable ، أما العلامة@ فتدل على أن الملف رابط رمزى أو Symbolic link ، أما العلامة / فتدل على أن الملف مجلد ، والعلامة= تدل على ملف من نوع Socket ولذلك فهى علامات خاصة لمعرفة نوع الملفات من بين الأنواع السابق ذكرها .

ملحوظة : المجلد bin/ الشكل الإفتراضى له ﻻ يحتوى على مجلدات نهائيا ولذلك قمت بوضع مجلدين فرعيين بداخل المجلد للتوضيح فقط ...

هذا الجدول تلخيص للكلام السابق :

كود PHP:
Character Meaning

* Executable

/ Directory

@ Symbolic Link

| FIFO

= Socket

6- استعراض الملفات ، التصاريح عليها ، المالك ، وأشياء أخرى...


كود PHP:
List Permissions, Ownership, and More (ls -l or ls --format=long)

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

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

كود PHP:
oem@ubuntu:~$ ls -l
total 972012
drwxr
-xr-x 3 oem oem 364911700 2006-10-22 20:01 mysql
-rwxr-xr-x 3 oem oem 364911700 2006-10-22 20:01 addext
drwxr
-xr-x 4 oem oem 4096 2007-01-27 06:26 Desktop
drwxr
-xr-x 2 oem oem 4096 2007-01-25 18:24 mm

والخيار l- يرمز إلى الكلمة long ، وبالتالى نستنبط من معنى الكلمة long أﻻ وهو الطول ،أى أن الخيار يمدنا بالكثير من المعلومات المهمة جدا عن الملفات والمجلدات والآن لنستعرض كيفية فهم السطر من اليمين إلى اليسار ونأخد مثال على ذلك السطر الأول :

أوﻻ : الإسم mysql يدل على اسم الملف الذى تم استعراضه من قِبل الأمر ls نتيجة كتابة الخيار l- معه .

ثانيا : الأرقام 20:01 ، 2006-10-22 تدل على الساعة والتاريخ اللذين تم فيهما التعديل الأخير على الملف .

ثالثا : الرقم 364911700 يوضح حجم الملف mysql ولكن بال bytes

رابعا : الإسم oem من جهة اليمين يوضح المجموعة المالكة للملف .

خامسا : الإسم oem من جهة اليسار يوضح المالك الأصلى للملف ( المستخدم الذى قام بإنشاء الملف ) .

سادسا : الرقم بجوار مالك الملف ، مثلا فى حالة الملف Desktop ( كما ذكرنا قبل ذلك المجلد يعتبر نوع من الملفات الخاصة ) فى السطر الخاص به رقم 4 وهذا الرقم له حالتان :

1- إذا كان الرقم فى سطر خاص بملف عادى فهو يوضح عدد ال hard links الموجودة لذلك الملف .

2- إذا كان الرقم فى سطر خاص بمجلد فهو يوضح عدد المجلدات الفرعية الموجودة بداخل المجلد الرئيسى وفى مثالنا المجلد Desktop يحتوى على أربع مجلدات فرعية .

ملحوظة : قمت بإنشاء مجلد فارغ وأسميته mm كما تلاحظون فى السطر الأخير ولكن يوجد فى السطر الخاص بهذا المجلد رقم 2 فكيف ذلك وقد ذكرت أن المجلد فارغ ؟

لنرجع قليلا إلى الوراء وبالتحديد فى الخيار a- فقد ذكرت أنه يوجد مجلدان فرعيان بشكل دائم مع أى مجلد رئيسى وهما ال . و ال .. اى المجلد الحالى والمجلد الأب (parent directory) ولذلك وجدنا عدد المجلدات الفرعية بالمجلد mm وقد وُضِعَ فى السطر الخاص به ولنرى ذلك :

كود PHP:
oem@ubuntu:~$ ls -a mm/
. ..

سابعا : الرموز drwxr-xr-x وتشير إلى التصريح الخاص بالملف mysql ، ولكن من الوهلة الأولى يبدو وكأنه شفرة سرية !! ولكنه فى الحقية من الأمور السهل جداً فهمُها واستيعابها بقليل من المعرفة ، لاحظ معى هناك عشرة أحرف مقسمين إلى أربع مجموعات ( قد ﻻ يبدو الأمر كذلك ) .

المجموعة الأولى : تتكون من الحرف الأول (1).

المجموعة الثانية : تتكون من الحرف الثانى إلى الحرف الرابع (2-4)

المجموعة الثالثة : تتكون من الحرف الخامس إلى الحرف السابع (5-7)

المجموعة الرابعة : تتكون من الحرف الثامن إلى الحرف العاشر (8-10)

وعلى سبيل المثال نأخد التصريح الخاص بالملف mysql ويبدو مقسما إلى المجموعات السابق ذكرها بالشكل التالى :

كود PHP:
d|rwx|r-x|r-x

والآن تعالوا معى لنعرف بالضبط كيفية فهم هذا التصريح من اليسار إلى اليمين:

المجموعة الأولى والتى تشمل الحرف الأول ( وفى حالتنا هذه هو حرف ال d) تمثل نوع الملف سواء كان مجلد (directory) أو ملف عادى (regular file) وطبعا من البديهى أن يرمز الحرف d إلى الكلمة (directory) أو مجلد ، وبالتالى يعتبر الملف mysql من نوع مجلد أو ملف خاص كما ذكرنا سابقا ، بينما العلامة- أو ال dash توضح أنه ملف .وطبعا توجد بعض الخيارات التى تؤدى هذه المهمة ولكن عن طريق الرموز الخاصة بها مثل الخيار F- والذى من ضمن علاماته ال / والتى ترمز إلى مجلد كما يمكن معرفة ذلك أيضا من خلال الخيار color-- حيث عند دمج هذا الخيار مع الأمر ls تظهر ألوان للملفات بشكل مختلف ويرمز كل لون إلى نوع معين من الملفات وأكْتفى فقط بسرد الجدول الخاص بهذه الألوان كالتالى :

كود PHP:
Color Meaning

Default shell text color Regular File

Green Executable

Blue Directory

Magenta Symbolic Link

Yellow FIFO

Magenta Socket

Red Archive
(.tar ,.zip ,.deb ,.rpm )

Magenta Imgaes (.jpg ,.gif ,.png ,.tiff)

Magenta Audio (.mp3 ,.wav ,.ogg)

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

كود PHP:
Character Meaning

- Regular File

- Executable

d directory

l Symbolic Link

s Socket

b Block Device

c Character Device

p Named Pipe

أما الأحرف التسعة الباقية فطبيعى تمثل المجموعة الثانية ، والثالثة ، والرابعة على الترتيب وبالتالى تكون التصاريح الخاصة بالملف على الترتيب تخص كلاً من المالك الأصلى أو file's owner ، المجموعة التابع لها الملف أو file's group ، والتصريح الأخير لمجموعة المستخدمين الباقين على النظام أو other users ، ففى المثال السابق نجد التصريح الخاص لمالك الملف oem هو rwx والتصريح الخاص بالمجموعة oem هو r-x والتصريح الخاص بباقى المستخدمين على النظام هو r-x ولكن ماذا تعنى هذه الحروف ؟

فى كل حالة يعنى الحرف r العبارة التالية " yes , read is allowed" أو يُسمح بقراءة الملف ; أما الحرف w فيعنى "yes , write is allowed" أو يسمح بالكتابة على الملف ( وكلمة "write" تعنى كلا ًمن التعديل والحذف أو ال changing and deleting ) أما الحرف x فيعنى " yes , execute is allowed" أو يسمح بتنفيذ الملف إذا كان Executable ، أما عن العلامة- فتعنى " no , dont allow this action" فمثلا لو أتت ال- مكان الحرف r فى تصريح أى مجموعة فوقتها تعنى "no , read is not allowed" أو تصريح القراءة غير مسموح به كذلك لو أتت هذه مكان الحرف w أو الحرف x.

وبالنظر إلى الملف addext مثلا نجد أن المالك oem له تصريح rwx أى يستطيع القراءة والكتابة والتنفيذ على الملف ، أما المجموعة oem فلها التصريح r-x أى تستطيع القراءة والتنفيذ فقط ، وباقى المستخدمين لهم التصريح r-x أى يستطيعوا أيضا القراءة والتنفيذ فقط . هذا الكلام ينطبق على الملفات حيث معنى القراءة والكتابة مفهوم ولكن أﻻ يوجد شىء غريب بالموضوع كيف لنا مثلا أننا ننفذ مجلد كما فى حالة المجلد mysql ؟

قلنا أن كلا ًمن الحرفين r ، w سواء بالنسبة للمجلد أو الملف العادى يحتملان نفس المعنى ولكن الوقفة هنا مع الحرفx حيث يختلف تنفيذ الملف عن تنفيذ المجلد كيف ذلك ؟

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

أما إذا جاء الحرف w فى تصريح ملف فهو يعنى أنه يمكنك الكتابة على هذا الملف والتعديل عليه باحدى محررات النصوص المعروفة مثل nano او vi وغيرها .

والآن حان دور الحرف x فإذا جاء الحرف x فى تصريح مجلد فهو يعنى أنه يمكنك الولوج إلى ذلك المجلد وتنفيذ البرامج الموجودة بداخله ، أو الولوج إلى المجلدات الفرعية التى توجد بداخله ، أما إذا جاء الحرف فى تصريح ملف فهو يعنى أنه يمكنك تنفيذ الملف ليقوم بعمل مهمة او أداء وظيفة معينة أو بمعنى "Execute the file to become a program".

والآن وكما تعلمنا مدى قوة الخيار l- والتى ظهرت بشكل ٍجَلِىّ فى الأمثلة السابقة ، ولكن تزداد قوة الخيار l- أكثر وأكثر عند دمجه مع خيارات أخرى مثل الخيار a- والذى تعلمنا أيضا قوته فى إظهار الملفات المخفية والتى قد ﻻ نلقى لها بالا ً ليكون ناتج الامر ls فى النهاية بشكل التالى بعد دمج الخيارين :

كود PHP:
oem@ubuntu:~$ ls -al ~
drwxr-xr-x 3 root root 4096 2007-01-22 02:12 .
drwxr-xr-x 31 oem oem 4096 2007-01-28 21:57 ..
-
rw-r--r-- 1 oem oem 18164916 2007-01-28 06:05 A3.41.zip
-rw------- 1 oem oem 6260 2007-01-29 08:33 .bash_history
rw
-r--r-- 1 oem oem 2227 2007-01-22 02:12 .bashrc
-rw------- 1 oem oem 0 2007-01-23 11:50 books~
drwxr-xr-x 9 oem oem 4096 2007-01-29 10:23 Desktop

كما ترون قمنا باستعراض الملفات الموجودة على ال home directory أو ~ باستخدام خياران يقومان بوظيفتين مختلفتين وهما على الترتيب :

* استعراض الملفات المخفية والتى تخص الخيار a-

* استعراض الملفات ، التصاريح عليها ، المالك ، وأشياء أخرى... والتى تخص الخيار l-



7- استعراض الملفات مع عكس الترتيب الهجائى لها

كود PHP:
Reverse The Order Contents Are Listed (ls -r or ls --reverse)

لو تمعنا قليلا فى الخيار السابق أﻻ وهو l- ودققنا النظر لوجدنا أنه يقوم بسرد الملفات ويقوم بترتيبها ترتيبا ً هجائيا ً بمعنى حسب ترتيب الحروف باللغة الإنجليزية يبدأ أوﻻ بالملفات التى تحتوى فى بداية أسمائها على الحرف A ، ثم الملفات التى تحتوى على الحرف B ، ثم الملفات التى تحتوى على الحرف C ، وهكذا ولكن ماذا لو أردنا أن نقوم بعمل العملية العكسية ، بمعنى أوضح نستعرض الملفات التى تحتوى فى بداية أسمائها على الحرف z ، ثم الحرف y ، ثم الحرف x ...... انتهاءً بالحرف A ؟

هنا الخيار r- ليقوم بتلك المهمة حيث يقوم باستعراض الملفات ترتيبا ًهجائيا ً معكوسا وبالتالى يتم دمج الخيار r- مع الأمر ls كما يلى :

كود PHP:
oem@ubuntu:~$ ls -alr ~

drwxr-xr-x 9 oem oem 4096 2007-01-29 10:23 Desktop
-rw------- 1 oem oem 0 2007-01-23 11:50 books~
rw-r--r-- 1 oem oem 2227 2007-01-22 02:12 .bashrc
-rw------- 1 oem oem 6260 2007-01-29 08:33 .bash_history
-rw-r--r-- 1 oem oem 18164916 2007-01-28 06:05 A3.41.zip
drwxr
-xr-x 31 oem oem 4096 2007-01-28 21:57 ..
drwxr-xr-x 3 root root 4096 2007-01-22 02:12 .

لاحظ : كما أسلفنا سابقا وذكرنا أن لينوكس حساس تجاه الحروف ال capital والحروف ال small ولذلك الخيار r- مختلف تمام عن الخيار R-



8- استعراض الملفات وتصنيفها عن طريق الإمتداد الخاص بها

كود PHP:
Sort Contents By File Extension (ls -X or ls --sort=extension)

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

كود PHP:
keymouse.zip
mido
.rar
mysql
.txt
image
.jpg

فحينما تقوم بتنفيذ الأمر ls -X على المجلد الذى توجد فيه هذه الملفات ، ولنفترض أنه المجلد ~ أو ال home directory فسيقوم الأمر بترتيب الملفات كالتالى :

كود PHP:
oem@ubuntu:~$ ls -X
image
.jpg
mido
.rar
mysql
.txt
keymouse
.zip

لاحظ : ترتيب الحروف الهجائية لللغة الإنجليزية للملفات الأربعة أو الحرف j ، ثم الحرف r ، ثم الحرف t ثم أخيرا الحرف z .

وبالطبع تستطيع دمج الخيار X- مع الخيار l- ليعرض لك الكثير من المعلومات عن الملفات وفى نفس الوقت يقوم بترتيبهم حسب الإمتدادات الخاصة بهم كما يلى :

كود PHP:
drwxr-xr-x 9 oem oem 4096 2007-01-29 10:23 Desktop
drwxr
-xr-x 2 oem oem 4096 2007-01-27 07:50 mm
-rw-r--r-- 1 oem oem 18164916 2007-01-28 06:05 A3.41.tar.gz
-rw-r--r-- 1 oem oem 183457 2007-01-23 15:37 gg.mht
-rw-r--r-- 1 oem oem 647142 2007-01-25 11:05 Firefox_wallpaper.png
-rw-r--r-- 1 oem oem 364911700 2006-10-22 20:01 1.rmvb
-rw-r--r-- 1 oem oem 5654152 2004-01-01 05:46 IAA_2.2.0.2150.zip

ملحوظة : عندما توجد مجلدات فرعية داخل المجلد الرئيسى فتكون فى مقدمة الترتيب ﻷنها طبيعى ﻻ تحتوى على امتدادات ، ولاحظ أيضا إنه عندما توجد ملفات تحتوى أكثر من امتداد كما فى حالة الملف A3.41.tar.gz فيكون الترتيب خاص بالإمتداد النهائى أﻻ وهو gz ويكون الترتيب على أساسه .


9-استعراض الملفات وتصنيفها عن طريق الأحجام الخاصة بها

كود PHP:
Sort Contents By Size (ls -S or ls --sort=size)

تستطيع أيضا استعراض الملفات عن طريق الأحجام الخاصة بها على القرص الصلب لديك باستخدام الخيار S- وإضافته للأمر ls كما يلى :

كود PHP:
oem@ubuntu:~$ ls -laS ~

-
rw-r--r-- 1 oem oem 364911700 2006-10-22 20:01 1.rmvb
-rw-r--r-- 1 oem oem 18164916 2007-01-28 06:05 A3.41.zip
-rw-r--r-- 1 oem oem 5654152 2004-01-01 05:46 IAA_2.2.0.2150.zip
-rw------- 1 oem oem 1962871 2007-01-24 12:23 ghhh
-rw-r--r-- 1 oem oem 647142 2007-01-25 11:05 Firefox_wallpaper.png

ﻻحظ : قمت بإضافة الخيار S- إلى الخيارين l- و a- لبيان وظفيته بشكل واضح ، كما أود لفت انتباهك إن أحجام الملفات التى يقوم الخيار S- بإظهارها تكون بال bytes .


10-استعراض الملفات وتصنيفها عن طريق الأحجام الخاصة بها فى صورة KB
، MB ، GB


كود PHP:
Express File Sizes in Terms of KB , MB , GB (ls -h or ls --human-readable)

ملحوظة :

كود PHP:
KB = kilo byte

MB
= mega byte

GB
= giga byte

استعرضنا فى الخيار السابق كيفية عرض الملفات باستخدام الأمر ls وتصنفيها مستخدمين الخيار S- ولكن كما ذكرت كانت الأحجام المعروضة بال byte فقط ، ولذلك أتى الخيار h- ليكون مُكملا للخيار S- حيث يقوم بعرض أحجام الملفات بصورة أفضل من سابقتها وهى عرضها فى صورة giga byte ، mega byte ، giga byte ولنرى ذلك بالمثال التالى :

كود PHP:
oem@ubuntu:~$ ls -laSh ~

-
rw-r--r-- 1 oem oem 349M 2006-10-22 20:01 1.rmvb
-rw-r--r-- 1 oem oem 18M 2007-01-28 06:05 A3.41.zip
-rw-r--r-- 1 oem oem 5.4M 2004-01-01 05:46 IAA_2.2.0.2150.zip
-rw------- 1 oem oem 1.9M 2007-01-24 12:23 ghhh
-rw-r--r-- 1 oem oem 632K 2007-01-25 11:05 Firefox_wallpaper.png
-rw-r--r-- 1 oem oem 437K 2007-01-24 09:10 parallel processing for SDR using OMAP.rar
-rw-r--r-- 1 oem oem 196K 2007-01-29 08:01 .xsession-errors

ﻻحظ أننى قمت بإضافة الخيار h- إلى خيارات أخرى لكى نحصل على نتائج أكثر فعالية .


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

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

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

إرسال تعليق