مفاهيم أساسية

مقدمة:

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

التغير من قشرة إلى قشرة :

تم تفصيل أغلب أنواع القشرات في جزء تقديم:سطر الأوامر ... والان يأتي السؤال كيف يمكن التحويل من قشرة إلى قشرة ...
أمر chsh
يمكنك من خلال هذا الامر تغيير القشرة الحالية إلى قشرة أخرى

andalusy@linux-box:~$ chsh
Password:
Changing the login shell for qasem
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]: /bin/rbash


ولكن كيف يمكنني معرفة القشرة المتاحة والمثبتة على النظام؟
هذا من خلال الملف etc/shells/

andalusy@linux-box:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/usr/bin/screen
/bin/bash
/bin/rbash


ملحوظة : في بعض التوزيعات ... يحتوي هذا الملف على أنواع من القشرات غير مثبتة على النظام بالفعل ... وبالتالي لا يمكن استخدامها أو التحول اليها ..
السبب : بالنسبة لي غير معروف

الملفات المنقوطة :
في واجهة جنوم ... بالضغط على CTRL+H يمكن رؤية مجلدات وملفات كثيرة جدا ... مسبوقة بنقطة واحدة فقط ... هذه ملفات مخفية ليس لغرض امني وانما لغرض تنظيمى ليس إلا ... بمعنى ان هذه الملفات ملفات تعريفات ومتغيرات العديد من التطبيقات المثبتة على النظام ... ومن هنا يتضح انه من الأفضل اخفائها لحين الحاجة إلى التعديل ...
وهذه الملفات المنقوطة تظهر مع الخيار a للأمر ls

andalusy@linux-box:~$ ls -a
.compiz_scs .gnupg .mozilla .tsclient
.config .google Music .update-manager-core
.dbus .gstreamer-0.10 .nautilus .update-notifier
Desktop .gtk-bookmarks .nvidia-settings-rc VideoData_Projection-F.pdf

................................


متغيرات الجلسة ومتغيرات النظام :
ممكن نعرف تعريف ....
الجلسة : هي حالة فتح قشرة معينة واستخدامها ... لتنتهي هذه الجلسة بمجرد اغلاق القشرة

متغيرات الجلسة :
هي متغيرات خاصة بالقشرة المفتوحة الآن فقط دونما أي تطبيق آخر وتختفى هذه المتغيرات بمجرد اغلاق هذه الجلسة

كيف يتم تعريف متغير ؟
يتم التعريف بكتابة الأسم المراد للمتغير ثم علامة يساوي ثم قيمة المتغير
andalusy@linux-box:~$ my_name=no_name
andalusy@linux-box:~$ calc=3
andalusy@linux-box:~$ FILE=/home/filename.txt

كيف يمكنني استخدام هذا المتغير ؟
باضافة علامة الدولار قبل هذا المتغير يمكن استغلال القيمة التي داخل هذا المتغير بطرق شتى ومتعددة
andalusy@linux-box:~$ echo $calc
andalusy@linux-box:~$ 3

andalusy@linux-box:~$ dir=/home/myname/workspace
andalusy@linux-box:~$ cd $dir
andalusy@linux-box:~$ FILE=/disk/one/two/three/filename.txt
andalusy@linux-box:~$ less $FILE

متغيرات النظام :
هي متغيرات معرفة على النظام ككل ... غير خاصة بقشرة معينة أو تطبيق معين ...
مرحلة تعريف هذه المتغيرات هي كسابقتها بالتمام
ولكن يتبقى نقل تأثير هذا التعريف إلى جميع أرجاء النظام ... وهذا يتم باستخدام أمر export
andalusy@linux-box:~$ FILE=/home/filename.txt
andalusy@linux-box:~$ export FILE

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

المسار المطلق والمتغير PATH:

هذا مثال على متغير مهم جدا له مدى تأثير على النظام ككل وايضا معرف دائما لأي حساب مستخدم ...
أولا: ما هو المسار ؟ طبعا كل كلامنا دلوقتي على الملفات وبالتالي كل ملف موجودة في شجرة معينة ... محتاجين مسار عشان نحدده .. بمعني إني انت لو عايز تعرض محتويات ملف نصي موجود مثلا في المجلد بتاعك هتقول
home/your-username/filename.txt/
واضح كده إني انت قاعد بتحدد الملف من خلال حاجة اسمها المسار صح كده ؟
زي ما كنت بتقول عالويندوز عندك فيلم على السي ... كنت بتحدده كده c:\my_movie.asf
اقتباس :

لاحظ: مائل الويندوز إلى اليسار "\" ولكن مائل عالم اليونكس كله إلى اليمين "/"
اللهم اجعلنا من أهل اليمين .. آمين

لاحظ: مائل الويندوز إلى الوراء "\" ولكن مائل عالم اليونكس كله إلى الأمام "/"
اتقدم وكفاية خلاص تتندم ....


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

andalusy@linux-box:~ $ ls -l
drwxrwxrwx 3 qasem users 4096 bin
drwxrwxrwx 2 qasem users 4096 Desktop
drwxrwxrwx 4 qasem users 4096 Documents
drwxrwxrwx 2 qasem users Mail
drwxr-xr-x 2 qasem users Music
drwxrwxrwx 4 qasem users Pictures

ولو عايزين نعرف المسار الكامل ﻷي أمر نستخدم اﻷمر which
andalusy@linux-box:~ $ which -a ls 
bin/ls/
andalusy@linux-box:~ $

الخيار a عشان يعرض كل الملفات اللي باﻷسم ده .. مش أول واحد بس ... الخيار ده مهم وتفصيله قادم في السطور القادمة
طيب ايه هو المتغير ده ... المتغير ده من اوائل المتغيرات اللي هتعرفها خاصة بالقشرة ... هو اسمه PATH$ وموجود فيه كل المجلدات اللي بتدور فيها القشرة على أي امر انت بتكتبه

طيب اشوف اللي جواها ازاي ... بسيطة استخدم اﻷمر echo

andalusy@linux-box:~ $ echo $PATH
/home/andalusy/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin

طب انا دلوقتي عايز ازود مجلدات القشرة تدور فيهم ... استخدم اﻷمر export


andalusy@linux-box:~$ export PATH=$PATH:/home/andalusy/test

طبعا واضح إني احنا بنضيف على قيمة المتغير نفسه PATH$ وبعدين بنحط الفاصل المعتمد لمتغير المسار : وبعدين بنزود الللي احنا عايزينه .. ومن غير كده طبعا انت هتمسح كل اللي متسجل جوة المتغير وهيتبقى بس اللي انت ضفته ...
لكن طبعا مش هقولك نزل ويندوز لو غلطت الغلطة دية ... التغير ده مش دائم .. ده تغير مؤقت خاص بالجلسة اللي انت قاعدها على القشرة دلوقتي ... وبمجرد ما هتخرج وترجع تاني وتشوف المتغير ده بقى جواها ايه ... هتلاقيه رجع ﻷصله بالظبط ... وتغييرك مش موجود

طب والعمل ؟
لازم تغير في ملفات الباش نفسها وتعدل المتغير ده ... بحيث يبقى متعرف زي ما انت عايز

ازاي ؟
أظن هذا الشرح كثير جدا على مفاهيم أساسية ....

قبل ما نسيب اﻷصطلاح ده ... عايزين ننوه لحاجة !! تنويه !!
مدام طبعا سيبنالك التعديل على البحري في متغير المسار ده ... اكيد متوقع إني انت تسمي اسم للملف بتاعك يتصادف إنه نفس اﻷسم للأوامر واﻷدوات اﻷساسية لنظام الباش ... هيحصل ايه ؟
طبعا الباش هتقول يا واد طنش خالص ... ولا اكن فيه حاجة حصلت وبمجرد ما هتوصل للملف اللي متكرر مرتين وتوصل لأول تكرار فيهم ... هتنفذه من غير تفاهم ... وانت وحظك بقى لو هو الملف اللي انت كنت عايزه مش هتحس بحاجة ... اما لو كان الملف اللي هو وظيفته مختلفة هتلاقى عبط طبعا ....

دلوقتي انت اخترت تعمل برنامج وبسخافتك قلت اسميه ls ... عاشت اﻷسامي يا سيدي ... ما هي خلصت اﻷسامي عشان تختار اﻷسم اللي هو اشهر اداة في الباش ...
طبعا حضرتك بتشتغل في مجلد معين وليكن test ... فقلت اضيف المجلد ده لمتغير المسار PATH ... وبالفعل دلوقتي كتبت ls ودوست انتر ... ايه اللي هيحصل ؟

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

انا آسف بجد على الفاصل السخيف ده .. بس اعمل ايه ... احنا بقينا في زمن اللي بيولع فيه الفرن يبقى اخترع ... كلمة اخترع بقت سهلة قوي مش عارف ليه ؟؟؟


عدنا ::::::


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


اﻷختصار بيعمل ايه
CTRL+A بينقل المؤشر ﻷول اﻷمر

CTRL+E بينقل المؤشر ﻵخر اﻷمر
CTRL+L بيمسح كل الشاشة الحالية
سهم فوق/تحت تتحرك في تاريخ كل اﻷوامر السابقة
TAB محاولة تكملة اﻷمر أو المسار المراد تلقائيا ... ولكن عند اﻷحتمالات
الكثيرة سيقوم بعرضها كلها
SHIFT+UP/DN احيانا كثيرة يكون المحتوي المراد عرضه أكبر من الشاشة ... وهذا
اﻷختصار لمحاولة تصفحه عبر أكثر من شاشة
CTRL+D كما لو انك استخدمت اﻷمر exit
CTRL+R للبحث في جميع اﻷوامر التي تم كتابتها في الجلسة الحالية
CTTRL+C ﻷنهاء أي أمر شغال على الفور