يعتقد الكثير من المبرمجين المبتدئين أن استخدام واجهة سطر الأوامر أمر معقد، ما يجعله حكرًا على المحترفين، وهو اعتقاد مغلوط، إذ لا بدّ من التعامل مع واجهة سطر الأوامر بدءًا من مرحلة إعداد بيئة بايثون، وصولًا إلى تشغيل مرحلة البرامج.
يتضمن هذا المقال قائمة مختصرة بالأوامر الشائعة والتي لابد من استخدامها في نافذة سطر الأوامر، من المؤكد وجود كم من الأوامر والوسطاء أكبر يكثير من هذا الموجود هنا، ولكن تعامل مع هذه القائمة على أنها الحد الأدنى المطلوب للمضي في استخدام نافذة سطر الأوامر.
كما يقدّم هذا المقال تعريفًا بمفهوم متغيرات البيئة وكيفية عرضها والتعامل معها.
سنعبر عن وسطاء سطر الأوامر في هذا القسم بتضمين كل منها بين قوسين متوسطين، فعلى سبيل المثال العبارة cd
متبوعًأ باسم المجلد المستهدف تعني أنه يجب إدخال الأمر cd
متبوعًا بوسيط هو اسم مجلد جديد لتغيير الدليل إليه.
مطابقة أسماء المجلدات والملفات مع محارف البدل
تتعامل الكثير من الأوامر مع أسماء المجلدات والملفات كوسطاء، كما تتعامل مع الأسماء المتضمنة محارف بدل مثل *
و ?
، ما يسمح لنا بتحديد عدة ملفات مطابقة، حيث يطابق محرف البدل * كافة الملفات الموافقة للمحارف التي تليه، في حين يطابق المحرف ? أي محرف مفرد مكانه، وندعو العبارات التي تستخدم محارف البدل * و? بالأنماط العامة.
تسمح الأنماط العامة بتحديد أنماط للملفات، فعلى سبيل المثال يمكن تنفيذ الأمر dir
أو ls
لعرض جميع الملفات والمجلدات في دليل العمل الحالي، لكن إن أردنا عرض ملفات بايثون فقط، فنستخدم الأمرين بالشكل dir *.py
أو ls *.py
بغية عرض الملفات التي تنتهي باللاحقة py. فقط.
فمثلًا النمط العام py.* يعني "أي مجموعة من المحارف المتبوعة بـ py.":
C:\Users\Al>dir *.py Volume in drive C is Windows Volume Serial Number is DFF3-8658 Directory of C:\Users\Al 03/24/2019 10:45 PM 8,399 conwaygameoflife.py 03/24/2019 11:00 PM 7,896 test1.py 10/29/2019 08:18 PM 21,254 wizcoin.py 3 File(s) 37,549 bytes 0 Dir(s) 506,300,776,448 bytes free
إن النمط العام records201?.txt
يعني أي ملف يبدأ بالسلسلة records201 متبوعة بأي محرف متبوعًا بالسلسلة txt.، وهذا ما يوافق بالنتيجة كافة الملفات ابتداءً من records2010.txt وصولًا إلى records2019.txt (مع أي ملفات بأسماء من قبيل records201X.txt)، في حين أن النمط العام record20??.txt
يوافق أي ملف بأي محرفين مكان ?? مثل records2021.txt أو records20AB.txt.
تغيير المجلدات باستخدام الأمر cd
إن تنفيذ الأمر cd
متبوعًا باسم المجلد المستهدف يغير دليل العمل الحالي في الصَدَفَة إلى المجلد المطلوب:
C:\Users\Al>cd Desktop C:\Users\Al\Desktop>
تعرض الصدفة دليل العمل الحالي كجزء من موجه الأوامر، وأي مجلدات أو ملفات مستخدمة لاحقًا في الأوامر سيتم التعامل معها نسبةً إلى هذا الدليل.
وفي حال كون اسم المجلد يتضمن مسافات، فلابد من تضمينه بين علامتي اقتباس مزدوجة.
ولتغيير دليل العمل الحالي ليكون المجلد الرئيسي للمستخدم، نكتب الأمر cd ~
وذلك في نظامي التشغيل ماك أو إس ولينكس، أما في نظام ويندوز فنكتب الأمر cd %%USERPROFILE
.
وإن رغبت بتغيير محرك الأقراص الحالي أيضًا في ويندوز، فلابد بدايةً من إدخال اسم القرص المطلوب كأمرٍ منفصل:
C:\Users\Al>d: D:\>cd BackupFiles D:\BackupFiles>
أما لتغيير دليل العمل ليصبح هو المجلد الأب لدليل العمل الحالي، يكفي استخدام ..
كاسم للمجلد، بالشكل:
C:\Users\Al>cd .. C:\Users>
عرض قائمة بمحتويات مجلد باستخدام الأمرين dir و ls
يعرض الأمر dir الملفات والمجلدات ضمن دليل العمل الحالي وذلك في نظام التشغيل ويندوز، ويؤدي الأمر ls نفس المهمة في نظامي التشغيل ماك أو إس ولينكس، كما يمكن عرض محتويات مجلد آخر باستخدام الأمر dir
أو ls
متبوعًا باسم المجلد الآخر.
يعد كل من رمزي الانتقال l-
و a-
وسيطًا مساعدًا مفيدًا للأمر ls
، الذي يعرض افتراضيًا أسماء الملفات والمجلدات الموجودة فقط، أما لعرض قائمة أكثر تفصيلًا تحتوي على أحجام الملفات وسماحياتها وتاريخ آخر تعديل عليها وغيرها من المعلومات، فنستخدم الوسيط l-
.
يعامِل كل من نظامي التشغيل ماك أو إس ولينكس الملفات التي تبدأ بنقطة على أنها ملفات إعدادات، فيبقيانها مخفية عن الأوامر العادية، وهنا من الممكن استخدام الوسيط -a ليعرض الأمر ls
جميع الملفات بما فيها المخفية، ولعرض قائمة المعلومات الموسعة والملفات المخفية معًا ندمج وسيطي التحويل كما يلي ls -al
، وفيما يلي مثال من نافذة موجه الأوامر في نظام ماك او إس أو لينكس:
al@ubuntu:~$ ls Desktop Downloads mu_code Pictures snap Videos Documents examples.desktop Music Public Templates al@ubuntu:~$ ls -al total 112 drwxr-xr-x 18 al al 4096 Aug 4 18:47 . drwxr-xr-x 3 root root 4096 Jun 17 18:11 .. -rw------- 1 al al 5157 Aug 2 20:43 .bash_history -rw-r--r-- 1 al al 220 Jun 17 18:11 .bash_logout -rw-r--r-- 1 al al 3771 Jun 17 18:11 .bashrc drwx------ 17 al al 4096 Jul 30 10:16 .cache drwx------ 14 al al 4096 Jun 19 15:04 .config drwxr-xr-x 2 al al 4096 Aug 4 17:33 Desktop --snip--
يعد الأمر dir
في نظام ويندوز نظير الأمر ls -al
، وفيما يلي مثال من نافذة موجه الأوامر في نظام ويندوز:
C:\Users\Al>dir Volume in drive C is Windows Volume Serial Number is DFF3-8658 Directory of C:\Users\Al 06/12/2019 05:18 PM <DIR> . 06/12/2019 05:18 PM <DIR> .. 12/04/2018 07:16 PM <DIR> .android --snip-- 08/31/2018 12:47 AM 14,618 projectz.ipynb 10/29/2014 04:34 PM 121,474 foo.jpg
عرض محتويات المجلدات الفرعية باستخدام الأمرين dir /s و find
بتنفيذ الأمر dir /s
في نظام التشغيل ويندوز تعرض المجلدات مع ما تحويه من مجلدات فرعية، فعلى سبيل المثال يعرض الأمر التالي جميع المجلدات التي تنتهي باللاحقة py. في المجلد C:\github\ezgmail مع كافة المجلدات الفرعية ضمنه:
C:\github\ezgmail>dir /s *.py Volume in drive C is Windows Volume Serial Number is DEE0-8982 Directory of C:\github\ezgmail 06/17/2019 06:58 AM 1,396 setup.py 1 File(s) 1,396 bytes Directory of C:\github\ezgmail\docs 12/07/2018 09:43 PM 5,504 conf.py 1 File(s) 5,504 bytes Directory of C:\github\ezgmail\src\ezgmail 06/23/2019 07:45 PM 23,565 __init__.py 12/07/2018 09:43 PM 56 __main__.py 2 File(s) 23,621 bytes Total Files Listed: 4 File(s) 30,521 bytes 0 Dir(s) 505,407,283,200 bytes free
ويؤدي الأمر find . –name
في نظامي ماك أو إس ولينكس الوظيفة ذاتها، كالتالي:
al@ubuntu:~/Desktop$ find . -name "*.py" ./someSubFolder/eggs.py ./someSubFolder/bacon.py ./spam.py
وجود النقطة (.) يجعل الأمر find
يبحث في دليل العمل الحالي، والخيار name-
يجعله يبحث عن جميع أسماء المجلدات والملفات، أما الوسيط py.*
ذو محرف البدل فيجعل الأمر find
يعرض كافة المجلدات والملفات ذات الأسماء التي تتطابق النمط العام py.*
، ومن الجدير بالملاحظة أن الأمر find
يتطلب كون أي سلسلة تلي الوسيطname-
محصورة بين علامتي اقتباس مزدوجتين.
نسخ الملفات والمجلدات باستخدام الأمرين copy و cp
لإنشاء نسخة من ملف أو مجلد في مجلد آخر، نكتب الأمر copy [source file or folder] [destination folder]
أو cp [source file or folder] [destination folder]
، وفيما يلي مثال من نافذة موجه الأوامر في نظام لينكس:
al@ubuntu:~/someFolder$ ls hello.py someSubFolder al@ubuntu:~/someFolder$ cp hello.py someSubFolder al@ubuntu:~/someFolder$ cd someSubFolder al@ubuntu:~/someFolder/someSubFolder$ ls hello.py
الأسماء المختصرة للأوامر: عندما بدأت بتعلم نظام التشغيل لينكس، تفاجأت عندما اكتشفت أن الأمر copy
الخاص بويندوز يدعى cp
في نظام لينكس، إذ أن الاسم "copy" كان أكثر وضوحًا من "cp"، وفكرت حينها، هل يستحق اختصار محرفين جعل الاسم غامضًا؟ ومع الوقت ومع اكتسابي للمزيد من الخبرة في نوافذ سطر الأوامر، وجدتُ أن الجواب هو نعم بكل تأكيد. ففي حين أننا نقرأ الشيفرة المصدرية أكثر مما نكتبها، فإن استخدام أسماء كاملة وطويلة للمتغيرات والدوال مفيد بالفعل، أما في نافذة سطر الأوامر فإننا نكتب الأوامر أكثر بكثير من قراءتها، وبالتالي في هذه الحالة العكس هو الصحيح، بمعنى أن استخدام أسماء مختصرة أو قصيرة للأوامر يجعل من عبء كتابتها أيسر.
نقل الملفات والمجلدات باستخدام الأمرين move و mv
في نظام التشغيل ويندوز، يمكننا نقل ملف أو مجلد من مصدره إلى مجلد وجهة جديد من خلال تنفيذ الأمر move [source file or folder] [destination folder]
، وبنفس الطريقة يؤدي الأمر mv [source file or folder] [destination folder]
نفس الوظيفة في كل من نظامي التشغيل ماك أو إس ولينكس، فيما يلي مثال من نافذة موجه الأوامر في ويندوز:
al@ubuntu:~/someFolder$ ls hello.py someSubFolder al@ubuntu:~/someFolder$ mv hello.py someSubFolder al@ubuntu:~/someFolder$ ls someSubFolder al@ubuntu:~/someFolder$ cd someSubFolder/ al@ubuntu:~/someFolder/someSubFolder$ ls hello.py
إذ تم نقل الملف hello.py من مصدره ~/someFolder إلى الوجهة الجديدة ~/someFolder/someFolder، ولم يعد ظاهرًا في موقعه الأصلي.
إعادة تسمية الملفات والمجلدات باستخدام الأمرين ren و mv
بتنفيذ الأمرren [file or folder] [new name]
نعيد تسمية الملف أو المجلد في نظام ويندوز، وبطريقة مشابهة يتم ذلك في نظامي ماك أو إس ولينكس باستخدام الأمر mv [file or folder] [new name]
، ومن الجدير بالملاحظة أنه من الممكن استخدام الامر mv
في نظامي ماك أو إس ولينكس لإعادة تسمية الملفات ونقلها أيضًا، ففي حال تم وضع اسم ملف موجود مسبقًا في موقع الوسيط الثاني المخصص للاسم الجديد للملف في حالة الرغبة بإعادة تسميته، فعندها ينقل الأمر mv
الملف أو المجلد من مصدره إلى ذلك المجلد، أما في حال وضع اسمًا جديدًا لا يطابق أي من أسماء المجلدات الموجودة أصلًا، عندها يعيد الأمر mv
تسمية الملف أو المجلد، وفيما يلي مثال من نافذة موجه الأوامر في نظام التشغيل لينكس:
al@ubuntu:~/someFolder$ ls hello.py someSubFolder al@ubuntu:~/someFolder$ mv hello.py goodbye.py al@ubuntu:~/someFolder$ ls goodbye.py someSubFolder
وبذلك تغير اسم الملف hello.py ليصبح goodbye.py.
حذف الملفات والمجلدات باستخدام الأمرين del و rm
لحذف ملف أو مجلد في نظام التشغيل ويندوز ننفذ الأمرdel [file or folder]
، أما في نظامي التشغيل ماك أو إس ولينكس فننفذ الأمرrm [file]
(إذ أن rm هو اختصار لكلمة remove).
ولأمري الحذف السابقين اختلافات بسيطة، إذ أن تنفيذ الأمر del
في نظام ويندوز على مجلد ما يؤدي إلى حذف كافة ملفاته دون مجلداته الفرعية، كما أن هذا الأمر لن يحذف المجلد المصدري، ولحذفه بكامل محتوياته بالكامل، استخدام أحد الأمرين rd
أو rmdir
اللذان سنشرحهما في فقرة "حذف الملفات باستخدام الأمرين rd
وrmdir
" لاحقًا، وبالتالي فإن تنفيذ الأمر del [folder]
لن يحذف أي ملفات داخل المجلدات الفرعية لهذا المجلد المصدري، ولحذفها ننفذ الأمر بالشكل del /s /q [folder]
، حيث يضمن الوسيط /s تطبيق الأمر del
على المجلدات الفرعية، في حين يمثل الوسيط q/ تأكيدًا للعملية، ويوضح الشكل التالي هذا الفرق.
القسم الأيسر يبين كيفية حذف الملفات في حال تنفيذ الأمرdel delicious
، أما القسم الأيمن لحالة تنفيذ الأمر بالشكل del /s /q delicious
من غير الممكن استخدام الأمر rm
في نظامي التشغيل ماك أو إس ولينكس لحذف المجلدات وحده، لكن من الممكن استخدامه بالشكل rm -r [folder]
لحذف المجلد بجميع محتوياته، وينفذ الأمر rd /s /q [folder]
في نظام التشغيل ويندوز المهمة ذاتها، ويوضح الشكل التالي هذه الفكرة.
يتم حذف المجلد بكامل محتوياته عند تنفيذ الأمر rd /s /q delicious أو rm -r delicious.
إنشاء المجلدات باستخدام الأمرين md و mkdir
من الممكن إنشاء مجلد جديد فارغ في نظام التشغيل ويندوز بتنفيذ الأمر md [new folder]
، أما في نظامي ماك أو إس ولينكس فيتم ذلك باستخدام الأمر mkdir [folder]
، كما يعمل الأمر mkdir
أيضًا في نظام ويندوز، إلا ان الأمر md
أسهل في الكتابة، وفيما يلي مثال من نافذة موجه الأوامر في لينكس:
al@ubuntu:~/Desktop$ mkdir yourScripts al@ubuntu:~/Desktop$ cd yourScripts 1 al@ubuntu:~/Desktop/yourScripts$ ls al@ubuntu:~/Desktop/yourScripts$
نلاحظ أن الملف الجديد الذي تم إنشاؤه فارغ وبالتالي لا يظهر أي شيء لدى تنفيذ أمر عرض المحتويات ls
(السطر المشار له بالرقم 1).
حذف المجلدات باستخدام الأمرين rd و rmdir
في نظام ويندوز، وبتنفيذ الأمر rd [source folder]
يتم حذف المجلد المصدري، ولإنجاز نفس المهمة في نظامي التشغيل ماك أو إس ولينكس، نستخدم الأمر rmdir [source folder]
.
مع ملاحظة أن الأمر rmdir
يؤدي أيضًا نفس الوظيفة في نظام ويندوز، إلا أن rd
أسهل للكتابة، ولابد من كون المجلد فارغًا لنتمكن من حذفه، وفيما يلي مثال من نافذة موجه الأوامر في نظام التشغيل ويندوز:
al@ubuntu:~/Desktop$ mkdir yourScripts al@ubuntu:~/Desktop$ ls yourScripts al@ubuntu:~/Desktop$ rmdir yourScripts al@ubuntu:~/Desktop$ ls al@ubuntu:~/Desktop$
أنشأنا في المثال السابق مجلدًا فارغًا باسم yourScript، ومن ثم حذفناه.
أما لحذف المجلدات غير الفارغة (مع كل ما تتضمنه من ملفات ومجلدات)، فننفذ الأمر rd /s /q [source folder]
في نظام التشغيل ويندوز، أو الأمر rm -rf [source folder]
في نظامي التشغيل ماك أو إس ولينكس.
إيجاد البرامج باستخدام الأمرين where و which
بتنفيذ الأمر where [program]
في نظام التشغيل ويندوز أو الأمر which [program]
في نظامي ماك أو إس ولينكس نتبين الموقع المحدد للبرنامج، فعندما ندخل أمرًا في نافذة سطر الأوامر، يبدأ الحاسوب بالبحث عن البرنامج في المجلدات الموجودة في متغير البيئة PATH (رغم أن نظام ويندوز يبحث أولًا في دليل العمل الحالي).
إذ تبين لنا هذه الأوامر أي من برامج بايثون التنفيذية سيتم تشغيلها لدى استخدام الأمر pythin
في الصَدَفَة، ففي حال وجود عدة إصدارات من بايثون مثبتة على الجهاز، فسيتضمن بالنتيجة عدة برامج تنفيذية وبنفس الاسم، وستكون أفضلية التشغيل حسب ترتيبها في متغير البيئة PATH، وهنا يأتي دور الأمرين where و when لعرضه، كما في المثال:
C:\Users\Al>where python C:\Users\Al\AppData\Local\Programs\Python\Python38\python.exe
يشير اسم المجلد في المثال السابق إلى أن نسخة برنامج بايثون التي تعمل من الصدفة موجودة في المسار الآتي:
C:\Users\Al\AppData\Local\Programs\Python\Python38
تنظيف نافذة موجه الأوامر باستخدام الأمرين cls و clear
لحذف كافة النصوص من نافذة موجه الأوامر، ننفذ الأمر cls
في نظام التشغيل ويندوز أو الأمر clear
في نظامي التشغيل ماك أو إس أو لينكس، الأمر المفيد لدى رغبتك بالبدء بنافذة سطر أوامر جديدة فارغة.
متغيرات البيئة ومتغير المسار PATH
تحتوي جميع العمليات قيد التنفيذ وبغض النظر عن اللغة البرمجية التي كتبت بها، على مجموعة من المتغيرات المسماة متغيرات البيئة، وهي قادرة على تخزين السلاسل النصية.
وعادةً ما تتضمن متغيرات البيئة إعداداتٍ على مستوى النظام، والتي يحتاجها أي برنامج، فعلى سبيل المثال يحتوي متغير البيئة TEMP على مسار الملف الذي يمكن لأي برنامج أن يخزن فيه الملفات المؤقتة.
عندما يُشغّل نظام التشغيل برنامجًا (مثل نافذة سطر الأوامر)، فتتلقى العملية المنشأة حديثًا هذه نسختها من متغيرات ومعطيات البيئة الخاصة بنظام التشغيل.
ومن الممكن تعديل متغيرات البيئة الخاصة بالعملية فرديًا، دون تعديل مجموعة متغيرات البيئة الخاصة بنظام التشغيل، ما يضمن تطبيق التغيرات فقط على هذه العملية وليس على نظام التشغيل أو على غيرها من العمليات.
والهدف الأساس من التطرق إلى متغيرات البيئة في هذا المقال، هو أن المتغير PATH وهو أحدها، قادر على المساعدة في تشغيل البرامج باستخدام نافذة سطر الأوامر.
عرض متغيرات البيئة
من الممكن عرض قائمة بمتغيرات البيئة الخاصة بنافذة موجه الأوامر باستخدام الأمر set
(في نظام التشغيل ويندوز) أو الأمر env
(في نظامي التشغيل ماك أو إي ولينكس)، كما في المثال:
C:\Users\Al>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Al\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files --snip-- USERPROFILE=C:\Users\Al VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\ windir=C:\WINDOWS
إن النص على يسار إشارة المساواة (=) هو اسم متغير البيئة والنص على يمينها هو قيمة السلسلة التي يتضمنها، ولكل عملية مجموعتها الخاصة من متغيرات البيئة لذلك يمكن لسطر الأوامر المختلفة أن تمتلك قيمًا مختلفة لمتغيرات البيئة نفسها.
كما من الممكن عرض قيمة متغير بيئة بحد ذاته باستخدام الأمر echo
، فمثلًا بتنفيذ الأمر echo %HOMEPATH%
في نظام التشغيل ويندوز أو الأمر echo $HOME
في نظامي التشغيل ماك أو إس ولينكس، تُعرض قيمة متغيرات البيئة HOMEPATH أو HOME على التوالي، والتي تحتوي على المجلد الرئيسي الحالي للمستخدم، ويبدو الأمر كالتالي في نظام التشغيل ويندوز:
C:\Users\Al>echo %HOMEPATH% \Users\Al
أما في نظامي التشغيل ماك أو إس ولينكس، فيبدو بالشكل:
al@al-VirtualBox:~$ echo $HOME /home/al
إن قامت تلك العملية بإنشاء عملية أخرى (كأن يقوم برنامج سطر الأوامر بتشغيل مفسر بايثون) فإن العملية الابن تحصل على نسختها الخاصة من متغيرات البيئة الخاصة بالعملية الأب، ومن الممكن التعديل على متغيرات البيئة للعملية الابن دون التأثير على متغيرات البيئة الخاصة بالعملية الأب وبالعكس.
وبالتالي من الممكن عد متغيرات البيئة الخاصة بنظام التشغيل على أنها "مجموعة رئيسية"، تنسخ منها العمليات متغيرات البيئة اللازمة لعملها، وإجمالًا فإن متغيرات البيئة الخاصة بنظام التشغيل قد تُعدل بطريقة أقل مما هو عليه لمتغيرات البيئة الخاصة ببرنامج بايثون، وفي الواقع فمن النادر أن يعدل المستخدمون متغيرات البيئة مباشرةً.
الخلاصة
يتضمن ضبط البيئة كافة الخطوات الضرورية لجعل الحاسوب قادرًا على تشغيل برامجنا بسهولة، وتتطلب هذه العملية منا معرفة بعض مفاهيم الأولية حول كيفية عمل الحاسوب، كفهم نافذة سطر الأوامر وأهم الأوامر ووسطاء كل منها.
ورغم اختلاف موجه الأوامر وأسماء الأوامر الشائعة باختلاف أنظمة التشغيل، إلا أنها تؤدي بالنتيجة المهام ذاتها.
قد يستغرق الأمر وقتًا لتعتاد التعامل مع موجه الأوامر، نظرًا لكثرة الأوامر ووسطاء كل منها، لذا لا تتردد في البحث مطولًا على الإنترنت عن المساعدة، فهو الأمر الطبيعي الذي يقوم به مطورو البرامج يوميًا.
ترجمة -وبتصرف- للفصل الثاني "إعداد البيئة وواجهة سطر الأوامر" من كتاب Beyond the Basic Stuff with Python لصاحبه Al Sweigart.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.