عند دخولك إلى عالم لينيكس، وعند استخدامك للطرفية في حال أردت ذلك، سيتوجب عليك معرفة عدد من الأوامر المهمة التي ستستخدمها بشكل يومي ومتكرر جدا. الأمر 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.