الأمر ls بالتفصيل الممل

عند دخولك إلى عالم لينيكس، وعند استخدامك للطرفية في حال أردت ذلك، سيتوجب عليك معرفة عدد من الأوامر المهمة التي ستستخدمها بشكل يومي ومتكرر جدا. الأمر ls هو أحد أهم هذه الأوامر بسبب الاستخدام المكثف له في أي مكان ولأي شيء ترغب به.

مقدمة تاريخية

ظهر الأمر ls أول مره عام 1987 في نظام AT&T UNIX. الاسم ls هو اختصار لكلمة List وتعني قائمة، أو المعنى الأقرب لسياق الاستخدام هنا وهو سرد. هذا الأمر في حال لم يقترن بتعليمات إضافية يقوم بسرد محتويات المسار الحالي.

استخدام الأمر ls

للأمر ls العديد من الخيارات لتوسيع طريقة عمله وجعلها مناسبة لك بشكل صحيح.

الأمر ls بدون خيارات

ahmad@Ahmad-Workstation:~$ ls Desktop     Downloads   Pictures   snap        Videos Documents   Music       Public     Templates  'VirtualBox VMs'

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

الأمر ls مع الخيار l

ahmad@Ahmad-Workstation:~$ ls -ltotal 123drwxr-xr-x 3 ahmad ahmad  8 Sep 25 23:00  Desktopdrwxr-xr-x 5 ahmad ahmad  9 Sep 23 12:00  Documentsdrwxr-xr-x 2 ahmad ahmad  6 Sep 26 20:27  Downloadslrwxrwxrwx 1 ahmad ahmad 20 Sep 26 21:08  link -> /usr/local/bin/skividrwxr-xr-x 2 ahmad ahmad  2 Jul 29 12:26  Musicdrwxr-xr-x 4 ahmad ahmad  4 Sep  8 08:41  Picturesdrwxr-xr-x 2 ahmad ahmad  2 Jul 29 12:26  Publicdrwx------ 3 ahmad ahmad  3 Sep 19 07:30  snapdrwxr-xr-x 2 ahmad ahmad  2 Jul 29 12:26  Templatesdrwxr-xr-x 3 ahmad ahmad  3 Jul 31 12:18  Videosdrwxrwxr-x 4 ahmad ahmad  4 Sep 25 09:58 'VirtualBox VMs'

لاحظ أن المخرجات الآن تحتوي معلومات أكثر مثل نوع الملفات وتصاريحها بالإضافة إلى المالك وتاريخ آخر تعديل على الملفات. المخرجات الآن تقوم بعرض الاختصارات ومسار الملف الأصلي الذي يتم يشير إليه الاختصار. لاحظ أيضا أن أحد المخرجات هو عدد الكتل (blocks) التي يحتلها محتوى المسار في القرص الصلب.

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

ahmad@Ahmad-Workstation:~/Desktop/Ahmad$ ls -lhtotal 874M-rw-r--r-- 1 ahmad ahmad 213K Jun 26 14:33 '404 (1).pdf'-rw-r--r-- 1 ahmad ahmad 213K Jun 26 14:12  404.pdf-rw-rw-r-- 1 ahmad ahmad  278 Aug  1 15:52  Firewall-rw-r--r-- 1 ahmad ahmad 4.5M Jul  6 14:41  hpscan001.pdf-rw-rw-r-- 1 ahmad ahmad 499K Aug 10 03:30  hpscan002.jpg-rw-r--r-- 1 ahmad ahmad 341M Jul 27 09:06  May1.mp4-rw-r--r-- 1 ahmad ahmad 266M Jul 27 09:06 'May 2.mp4'-rw-r--r-- 1 ahmad ahmad 296M Jul 27 09:06 'May 3.mp4'-rw-r--r-- 1 ahmad ahmad  14K Jun  7 14:15 'Untitled 1.ods'

الأمر ls مع الخيار a

هذا الأمر مثل استخدام ls بدون خيارات عدا عن أنه يقوم بعرض الملفات المخفية. مخرجات هذا الأمر هي كالتالي:

ahmad@Ahmad-Workstation:~$ ls -a .                .bash_logout   Downloads   .masterpdfeditor   .profile   Templates         .zoom ..               .bashrc        .gnupg      .mozilla           Public     .thunderbird .android         .cache         .gphoto     Music              .putty     .var .anydesk         .config        .hplip      .mysql             .sane      Videos .audacity-data   Desktop        link        Pictures           snap      'VirtualBox VMs' .bash_history    Documents      .local      .pki               .ssh       .vscode

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

الأمر ls مع الخيار d

هذا الأمر يقوم بسرد المجلدات فقط في المسار:

ahmad@Ahmad-Workstation:~$ ls -d * Desktop     Downloads   Music      Public   Templates  'VirtualBox VMs' Documents   link        Pictures   snap     Videos

لاحظ أن النجمة في نهاية الأمر هي جزء من الأمر ولن يعمن من دونه.

الأمر ls مع الخيار R

هذا الأمر يقوم بسرد المجلدات والملفات والمجلدات الفرعية:

ahmad@Ahmad-Workstation:~$ ls -R.: Desktop   Documents   Downloads   link   Music   Pictures   Public   snap   Templates   Videos  'VirtualBox VMs'./Desktop: accesslog.txt   Ahmad  'Untitled Document 1'  'Untitled Document 2'./Desktop/Ahmad:'404 (1).pdf'   404.pdf  'create db'   Firewall   hpscan001.pdf   hpscan002.jpg   May1.mp4  'May 2.mp4'  'May 3.mp4'  'Untitled 1.ods'./Documents: AnyDesk   ISO27001_UpToNOV24.pdf   ISO27017_UpToNOV24.pdf  'ISO 90012015 - 2022.PDF'   linphone./Documents/AnyDesk:chat./Documents/AnyDesk/chat:278731627.txt./Documents/linphone:captures./Documents/linphone/captures:2022-08-02_15-14-14.mkv./Downloads:./Music:./Pictures:Screenshots  Wallpapers./Pictures/Screenshots:./Pictures/Wallpapers:./Public:./snap:authy./snap/authy:11  common  current./snap/authy/11:./snap/authy/common:./Templates:./Videos:AnyDesk./Videos/AnyDesk:'outgoing lenovo (600799427)-ahmad (805176275) 0.anydesk'  'outgoing PC (348530683)-ahmad (805176275) 0.anydesk''./VirtualBox VMs':Endless  Kubnutu'./VirtualBox VMs/Endless':Endless.nvram  Endless.vbox  Endless.vbox-prev  Endless.vdi  Logs  Snapshots'./VirtualBox VMs/Endless/Logs':VBox.log'./VirtualBox VMs/Endless/Snapshots':2022-09-25T06-59-31-450830000Z.sav'./VirtualBox VMs/Kubnutu':Kubnutu.nvram  Kubnutu.vbox  Kubnutu.vbox-prev  Kubnutu.vdi  Logs'./VirtualBox VMs/Kubnutu/Logs':VBox.log  VBox.log.1  VBox.log.2  VBox.log.3

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

الأمر ls مع الخيار t

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

ahmad@Ahmad-Workstation:~/Desktop/Ahmad$ ls -alttotal 894584drwxr-xr-x 2 ahmad ahmad        12 Sep 26 21:48  .drwxr-xr-x 3 ahmad ahmad         8 Sep 25 23:00  ..-rw-rw-r-- 1 ahmad ahmad    510363 Aug 10 03:30  hpscan002.jpg-rw-rw-r-- 1 ahmad ahmad       278 Aug  1 15:52  Firewall-rw-r--r-- 1 ahmad ahmad 309625135 Jul 27 09:06 'May 3.mp4'-rw-r--r-- 1 ahmad ahmad 278828373 Jul 27 09:06 'May 2.mp4'-rw-r--r-- 1 ahmad ahmad 356964946 Jul 27 09:06  May1.mp4-rw-r--r-- 1 ahmad ahmad   4680878 Jul  6 14:41  hpscan001.pdf-rw-r--r-- 1 ahmad ahmad    217832 Jun 26 14:33 '404 (1).pdf'-rw-r--r-- 1 ahmad ahmad    217832 Jun 26 14:12  404.pdf-rw-r--r-- 1 ahmad ahmad     13818 Jun  7 14:15 'Untitled 1.ods'

أما لعرض المحتويات مرتبة حسب التاريخ الأقدم إلى الأحدث، يمكنك تنفيذ الأمر التالي:

ahmad@Ahmad-Workstation:~/Desktop/Ahmad$ ls -alrttotal 894584-rw-r--r-- 1 ahmad ahmad     13818 Jun  7 14:15 'Untitled 1.ods'-rw-r--r-- 1 ahmad ahmad    217832 Jun 26 14:12  404.pdf-rw-r--r-- 1 ahmad ahmad    217832 Jun 26 14:33 '404 (1).pdf'-rw-r--r-- 1 ahmad ahmad   4680878 Jul  6 14:41  hpscan001.pdf-rw-r--r-- 1 ahmad ahmad 356964946 Jul 27 09:06  May1.mp4-rw-r--r-- 1 ahmad ahmad 278828373 Jul 27 09:06 'May 2.mp4'-rw-r--r-- 1 ahmad ahmad 309625135 Jul 27 09:06 'May 3.mp4'-rw-rw-r-- 1 ahmad ahmad       278 Aug  1 15:52  Firewall-rw-rw-r-- 1 ahmad ahmad    510363 Aug 10 03:30  hpscan002.jpgdrwxr-xr-x 3 ahmad ahmad         8 Sep 25 23:00  ..drwxr-xr-x 2 ahmad ahmad        12 Sep 26 21:48  .

الأمر ls مع الخيار S

يمكنك هذا الأمر من سرد وترتيب الملفات حسب الحجم من الأكبر إلى الأصغر:

ahmad@Ahmad-Workstation:~/Desktop/Ahmad$ ls -alhStotal 874M-rw-r--r-- 1 ahmad ahmad 341M Jul 27 09:06  May1.mp4-rw-r--r-- 1 ahmad ahmad 296M Jul 27 09:06 'May 3.mp4'-rw-r--r-- 1 ahmad ahmad 266M Jul 27 09:06 'May 2.mp4'-rw-r--r-- 1 ahmad ahmad 4.5M Jul  6 14:41  hpscan001.pdf-rw-rw-r-- 1 ahmad ahmad 499K Aug 10 03:30  hpscan002.jpg-rw-r--r-- 1 ahmad ahmad 213K Jun 26 14:33 '404 (1).pdf'-rw-r--r-- 1 ahmad ahmad 213K Jun 26 14:12  404.pdf-rw-r--r-- 1 ahmad ahmad  14K Jun  7 14:15 'Untitled 1.ods'-rw-rw-r-- 1 ahmad ahmad  278 Aug  1 15:52  Firewalldrwxr-xr-x 2 ahmad ahmad   12 Sep 26 21:48  .

استخدام الأمر ls مع أوامر إضافية

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

عرض الملفات فقط

لا يوجد خيار في الأمر ls لعرض الملفات فقط، وبالتالي نستخدم الأمر grep لمساعدتنا في الحصول على المخرجات الصحيحة:

ahmad@Ahmad-Workstation:/etc$ ls -alp | grep -v /total 1826-rw-r--r--   1 root root    3028 Apr 19 13:02 adduser.conf-rw-r--r--   1 root root     335 Mar 23  2022 anacrontab-rw-r--r--   1 root root     433 Mar 23  2022 apg.conf-rw-r--r--   1 root root     769 Feb 22  2022 appstream.conf-rw-r--r--   1 root root    2319 Jan  6  2022 bash.bashrc-rw-r--r--   1 root root      45 Nov 11  2021 bash_completion-rw-r--r--   1 root root     367 Dec 16  2020 bindresvport.blacklist-rw-r-----   1 root root      33 Apr 19 13:05 brlapi.key-rw-r--r--   1 root root   29219 Mar 18  2022 brltty.conf-rw-r--r--   1 root root    5529 Apr 19 13:02 ca-certificates.conf

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

حفظ المخرجات في ملف

في بعض الأحيان، قد نحتاج إلى حفظ المخرجات في ملف خصوصا في حال أن المخرجات طويلة جدا. من خلال إستخدام الأمر “>” يمكنك طرح المخرجات في ملف منفصل. مثال:

ahmad@Ahmad-Workstation:/etc$ ls -alh > /home/ahmad/Desktop/output.txt

الأمر السابق قام بسرد المخرجات في ملف على سطح المكتب بالاسم output.txt.