3.2 سطر الأوامر ليس مخيفاً!! كتاب لينكس الشامل >>

3.2 سطر الأوامر ليس مخيفاً!!

الفهرس

3.2.1 مقدمة لسطر الأوامر

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

ومن باب الحرية -وهو شعار FSF- فإنك تستطيع استخدام أي برنامج ليكون مفسراً لأوامرك يسمى غلاف shell حاليا الأكثر شهرة هو bash ولكن يستطيع كل مستخدم تغييره واستخدام آخر مثل ksh,csh ...

tipتلميح

BASH أي Bourne Again SHell وقد سمي كذلك لأن بيرني عمل برنامج سماه على اسمه غلاف بيرني ولكن بعد مدة ظهرت برامج أقوى منه مثل korn shell (اسمه ksh) و csh فانقرض هذا البرنامج حتى جاء أحد عشاقة فطوّره وأضاف عليه الميزيات المنافسة وسماه غلاف بيرني مرة أخرى !!

ويجب أن لا يختلط الموضع عليك بين الغلاف والطرفية terminal فهي البرنامج الذي يشغل البرنامج الغلاف في البيئة الرسومية(أو غير الرسومية) وأنت عندما تريد تشغيل سطر الأوامر في البيئة الرسومية تقوم بتشغيل الطرفية/التيرمينال (كما هي العادة لا يوجد تيرمينال واحدة بل تختار ما يناسبك) وتختلف هذه فيما بينها بمقدار الجمال ودعم اللغات ودعم الجر والاسقاط مثلا
xterm الأبشع على الإطلاق وتغيير الخط أو الخلفية ضرب من الجنون
rxvt أقل بشاعة من سابقه
aterm جميل ويمكن أن تكون الخلفية شفافة
mlterm بها دعم رائع للغة العربية
konsol من أجمل ما يكون وهو تابع لمجموعة kde ويمكن أن تكون الخلفية شفافة
gnome-terminal من أجمل ما يكون وهو تابع لمجموعة gnome ويمكن أن تكون الخلفية شفافة
وتكون أيقونتهم على شكل شاشة سوداء أو صدفة (معنى آخر ل shell ). ربما تجد الطرفية التي اختارتها التوزيعة في القائمة الرئيسية ثم أدوات النظام System tools ثم الطرفية terminal.

وهناك أيضا الشاشة النصية غير الرسومية ال console ويمكن الذهاب إليها بالتغيير إلى طرفية إفتراضية VT غير رسومية (معظم التوزيعات تشغل سبع طرفيات افتراضية تعمل كل منها وكأنها جهاز منفصل وتخصص الأخيرة لتكون رسومية أي سيكون لديك سبعة أجهزة في جهاز) اضغط CTRL+ALT+Fn (حيث Fn هي F1 F2 ...) للتحول إلى الطرفية الوهمية النونية(الأولى أو الثانية...الخ ) إن الأمر أسهل مما يبدوا، اضغط CTRL+ALT+F1 ستتحول إلى شاشة نصية تطلب منك ادخال اسم مستخدم كلمة سر ثم تعطيك سطر أوامر تستطيع تشغيل أي شيء اضغط CTRL+ALT+F2 ستتحول إلى شاشة نصية أخرى وهكذا حتى السابعة التي هي الشاشة الرسومية وتعمل كلها معا ملاحظة: يمكنك التغيير من عددها أو ترتيبها تزيد منها إذا كنت مبذرا أو لديك جهاز سريع أو تقللها للتقليل من إرهاق الجهاز

عند تشغل سطر الأوامر بأي طريقة منها يظهر [folder@host]$ للمستخدم العادي او [folder@host]# للمستخدم الجذر والحكمة من ذلك هو تحذيرك لأن خطأ إملائي بسيطة وأنت جذر قد يخرب النظام بينما للمستخدم العادي يقول له "لا يحق لك تدمير النظام" وحتى هذه يمكن تغييرها.
ابدأ بكتابة الأمر (انتبه الأحرف الكبيرةA تختلف عن الصغيرة a )وعندما تنسى كيف يكتب اكتب جزءاً منه ثم اضغط TAB ولكي تعرف كل البدائل اضغط TAB مرتين وعندما تنتهي اضغط إدخال [ENTER]

مثلا بدلا من كتابة
cd /home/ali/
يكفي أن تكتب
cd /h [TAB]a[TAB]
وإذا كان هناك ali و ahmad
cd /h [TAB]a[TAB][TAB] 
سيظهر
ali	ahmad
اضغط l[TAB] ليصبح لديه al[TAB] ونكون  انتهينا
وتفيد هذه الميزة أيضا عندما يكون هناك أسماء طويلة مثلا لتشغيل لعبة rocksndiamond يكفي أن تطبع بعض الحروف ثم [TAB] ، ويمكنك استخدام سهم لأعلى ولأسفل للحصول على الأوامر التي طبعتها من قبل (وتظل محفوظة حتى عند إعادة تشغيل الجهاز) ولأسباب أمنية كل مستخدم يحصل على الأوامر التي طبعها هو وليس غيره ، استخدم الأسهم الجانبية للتحرك لليمين واليسار أيضا، ويمكن أن تجعله يدقق أخطائك الإملائية تلقائيا !!

3.2.2 لنبدأ بطباعة الأوامر

هذا جدول يبين الأوامر الأساسية ، ما هو داخل أقواس مربعة [ ] يمكنك عدم كتابته ، و ... تعني التكرار ، | تعني اكتب هذا أو هذا وحتى لا تخلط ما هو الشيء الحرفي وما هو الذي تعوض مكانه معناه وضعنا هذه الأخيرة بخط مائل، الأمر ليس معقدا كما يبدو انتظر حتى ترى الأمثلة وتطبقها عمليا

cd [DIR] للدخول إلى مجلد(دليل) DIR وإذا كتبت cd لوحدها سوف تذهب إلى الدليل البيت وللعودة إلى الدليل الذي كنت فيه اولا cd - وللذهاب للدليل الأب للدليل الذي أنت فيه cd .. وللذهب إلى الدليل الأصل/الجذر الذي تتفرع منه الأدلة الأخرى cd /
pwd عرض المسار إلى الدليل الحالي
ls [-lhFa] [PATTERN] عرض الملفات التي تتفق مع PATTERN ، استخدم l للعرض المفصل و h لإظهار الحجم بطريقة مفهومة أكثر و F لوضع علامة تبين نوع الملف بعد اسمه و a لعرض جميع الملفات حتى التي تبدأ بنقطة وهناك الكثير
clear مسخ الشاشة
echo ["STRING"]
printf "STRING1" ["STRING2"]
الأولى تطبع النص إلى جهاز الإخراج القياسي ، الثانية بطريقة لغة السي
whatis [COMMMAND | FILE]
man [COMMMAND | FILE]
info [COMMMAND | FILE]
عرض مساعدة عن الأمر أو الملف الفلاني مثلا man ls أو info grub (للخروج من البرنامج اضغط q) أو whatis gedit الذي يعرض معلومات من سطر واحد يتم توليدها بواسطة mkwhatis ويمكن البحث فيها بواسطة apropos
less [FILE]
more [FILE]
عرض ملف على الشاشة استخدم الأسهم و PageUP PageDown للحركة (للخروج من البرنامج اضغط q)
cat [FILE]... عرض ملف (ومجموعة ملفات) على الشاشة بطريقة غير تفاعلية (الوصف الحقيقي للأمر هو أنه يجمع هذه الملفات ثم يرسلها إلى جهاز الإخراج القياسي )
dd [if=FILE1] [of=FILE2] [bs=N] [count=M] إرسال M وحدة كل منها بحجم N بايت (يمكنك أن تضع k و M للكيلو والميغا) الأول من الملف الأول (تعني if - input file) إلى الثاني (نعم output file) إذا لم تحدد إي من الملفين فإنه الدخل/الخرج القياسي. تستخدم غالياً مع ملفات الأجهزة.
cp [-aRvi] SOURCE... DIST
mv [-aRvi] SOURCE... DIST
rm [-Rv] SOURCE... DIST
نسخ ، نقل(نسخ وحذف الأصل أو تغيير الاسم) وحذف على الترتيب. من المصدر(المصادر) إلى الهدف والخيارات هي :
i السؤال "هل أنت متأكد؟" قبل الحذف
v اكتب ماذا تفعل خطوة خطوة
a الحفاظ على نوع الملف
R نقل الأدلة الفرعية
mkdir DIR...
rmdir DIR...
عمل دليل جديد ، وحذف دليل فارغ على الترتيب.
ln [-sf] FILE_OR_DIR LINK
sln FILE_OR_DIR LINK
عمل رابط/وصلة تشير إلى الملف الأول وتتصرف مثلها تماماً ( أن يكون لديك نسختين من نفس الملف في أماكن مختلفة إن شئت دون أن تأخذ حيزاً على القرص) ، الخيارات :
s أن يكون الرابط soft أي يظهر عند عمل ls -l
f اجبار احلال الرابط الجديد مكان القديم. البرنامج الثاني static يعمل حتى لو كانت وصلات المكتبات غير صحيحة.
su [USER] التحول إلى مستخدم آخر إذا لم يذكر من هو يعتبر الجذر (طبعا بعد أن يقدم كلمة السر له)
whoami تخبرك من أنت !! أي المستخدم الذي تمثله الآن
file [PATTERN] عرض الملفات وما هو نوعها بطريقة مفهومة (اعتمادا على تركيبها ليس الإمتداد) مثلا يقول لك أن هذه English text file وذلك ASCII C text file وذلك MPEG video file ...
df [-hbkmg] [PARTITION | DIR]
du [-hbkmg] [FILE_OR_DIR]
عرض المساحة المتبقية،والمساحة التي يشغلها دليل معين b بالبايت ، k بالكيلوبايت ، m بالميغا ، g بالغيغا ، h بطريقة مفهومة
free عرض المساحة المتبقية من الذاكرة والذاكرة الإفتراضية
COMMAND1 ; COMMAND2 [ ; COMMAND3]... تنفيذ الأمر الأول ثم نفذ الثاني وهكذا
COMMAND1 && COMMAND2 [ && COMMAND3]... تنفيذ الأمر الأول فإذا نجح نفذ الثاني وهكذا
COMMAND1 || COMMAND2 [ || COMMAND3]... تنفيذ الأمر الأول فإذا لم ينجح نفذ الثاني وهكذا
COMMAND1 & نفذ الأمر في الخلفية (لا ينتظر حتى ينتهي ويمكنك من تشغيل أوامر أخرى )
COMMAND1 | COMMAND2 تمرير مخرجات البرنامج الأول إلى الثاني ، تسمى هذه التقنية بالأنبوب (pipe)
`COMMAND` ناتج(مخرجات) تنفيذ هذه البرنامج ملاحظة ` تحصل ليها من المفتاح قرب الواحد الذي يحمل حرف الذال والعلامة ~ وهي ليست علامة اقتباس مفردة " بدون shift
$VARIABLE قيمة المتغير ويسمى هذا تعويض
VARIABLE=VALUE وضع المتغير على القيمة (لا يوجد مسافة)
COMMAND [ < FILE1 ] [ > FILE2 ] استخدام الملف الأول كجهاز ادخال افتراضي والملف الثاني كجهاز إخراج افتراضي
COMMAND [ < FILE1 ] [ << "STRING" ] استخدام الملف الأول كجهاز ادخال افتراضي من أوله وحتى الحصول على النص "STRING"
COMMAND [ >> FILE ] إضافة مخراجات الأمر إلى نهاية الملف
COMMAND [ 1> FILE1 ] [ 2> FILE2 ] ارسال المخرجات إلى الملف الأول وإرسال رسائل الخطأ إلى الملف الثاني

ولتسهل عليك حفظ الأوامر اعرف أصل أسماءها

cd (Change Dir ) , pwd (resent working dir),ls(list) , man (manual page) , cp (copy) , mv (move) , rm (remove) , mkdir (Make Dir ) , rmdir (Remove Dir ) , ln (link) du (disk usage) , df (disk free) , su (super user)
وأيضا الخيارات
a (all ) , f (force) , R (recursive) , h (human readable) v (verbos :give info while working)

tipتلميح

تكون خيارات معظم الأدوات على شكل -- ثم الخيار مثلا --force --verbos وللإختصار نضع - واحدة ثم الخيار المختصر -f -v ويجوز أيضا كتابة -fv بدون مسافة بينهما ، أي أن [-abcdef] تعني -a -b -c -d -e -f. وهكذا.

كما في الجدول يمكنك طلب مساعدة عن برنامج معين مثلا bc بكتابة man bc التي تعرض كتيب الاستخدام أو بكتابة info bc التي تعرض صفحة المعلومات الفرق بين كتيب الإستعمال man و صفحة المعلومات info أن الأولى أقل تفصيلاً واختصاراً وأكثر استعمالاً إلا أن الثانية مفصلة أكثر ومتشعبة أكثر (تحرك بالأسهم ثم اضغط إدخال ENTER على موضوع معين لعرضه للتالي n وللسابق p ولدرجة أعلى u) للخروج من البرنامجان استخدم q وللبحث / أو ؟.

توفر كتيبات man معلومات عن المواضيع التالية(بالترتيب)

وقد يحصل أن يوجد أكثر من كتيب بنفس الاسم مثلا printf هي أمر ووظيفة من مكتبة سي إذا كتبت man printf سيعرض لك الأمر وليس وظيفة سي لأنها أولاً في القائمة إذا أردت أن تحدد له أيها يعرض اذكر الرقم مثلاً man 3 printf تظهر مساعدة عن وظيفة printf من مكتبة سي هناك برنامج xman الرسومي الذي يعرض قائمة (بشعة) لتختار منها الكتيب الذي تريد عرضه ويمكنك النقر على البيت home ثم كتابة man:printf في العنوان سيعرضها عليك بشكل مرتب أو يمكنك استعمال مركز مساعدة kde المسمى khelpcenter (التي تشغلها من قائمة help في أي برنامج من عائلة kde أو من قائمة K الرئيسية ) ثم اختر من اللوح الجابي UNIX manual pages أي الكتيبات ثم اختر القسم مثلاً 5 الخاص بهيئة الملفات ثم اختر lilo.conf.

Manual from kde help center

أما بالنسبة لصفحات المعلومات فهي الأخرى يمكن فتحها بطريقة رسومية جميلة من خلال مدير الملفات بالنقر على البيت home ثم كتابة info:xboard حيث xboard هو الموضوع/البرنامج الذي تريد أن تقرأ عنه. كما ويمكنك استعمال مركز المساعدة في kde بنفس الطريقة السابقة ولك بالنقر على Browse info pages من اللوح الجانبي ثم المجال مثلاً games ثم اسم البرنامج/الموضوع مثلاً xboard

info from kde help center

هذه بعض الأمثلة ععندما تشاهد # في مجموعة من الأوامر فهي وما بعدها إلى نهاية السطر لا تنفذ ، وللتمييز بينها وبين التي يكتبها الجهاز تلقائيا قبل الأمر (المُحث) عندما تكون الجذر وضعنا ما تكتبه أنت بخط غامق وما يظهر على الشاشة بخط عادي

bash$ cd ~
bash$ pwd
/home/ali
bash$ whoami
ali
bash$ echo "Hello World"
Hello World
bash$ echo "any thing after hash" # is a comment,it has no effect
any thing after hash
bash$ echo "Hello `whoami`" # note ` not '(single quote)
Hello ali
bash$ su
password:********
bash# whoami
root
bash# exit
bash$ whoami
ali
bash$ ls -F
Projects/ readme.txt backround.jpeg test.sh*
bash$ ls -l
total 4
drwxr-xr-x 2	ali users	 4024 May 28 19:20 Projects
-rw-r--r-- 1	ali users	19106 May 28 19:20 readme.txt
-rw-r--r-- 1	ali users	 1224 May 28 19:20 backgrond.jpeg
-rwxr-xr-x 1	ali users	 1024 May 28 19:20 test.sh
bash$ echo "ali is the owner of the files
> and they belong to users group"
notice that ali is the owner of the files
and they belong to users group
bash$ gedit readme.txt # يجب أن تغلق المحرر لتعود لكتابة الأوامر
bash$ gedit readme.txt & # & تستطيع الكتابة دون إغلاقه بسبب 
bash$ mcedit readme.txt  # بدون & لأنه غير رسومي ، F10 للخروج
اكتب شيئا يملئ صفحتين في هذا الملف وخزن 
bash$ less readme.txt # press q to quit, / to search
bash$ ls -l /usr/lib | less # list file in pager
bash$ man file # كما في less
bash$ file * # انظر النتيجة بنفسك
bash$ mc 

عند كتابة ls -l فإن القائمة تكون مفصلة وتحتوي أولا على خصائص الملف مثلا d للدليل/المجلد directory و l للوصلة link و أما c فتعني أن الملف عبارة عن جهاز حرفي charecter device أي ترسل له المعلومات حرفاً تلو الآخر مثل لوحة المفاتيح أما b للإشارة إلى أن الملف جهاز block device مثل الأقراص بعد الحرف الأول تأتي الأذونات مثلا rwxr-xr-x للمالك ثم للمجموعة ثم للآخرين قراءة و كتابة وتنفيذ على الترتيب ثم رقم يكون واحد للملف العادي ويكون عدد الأدلة الفرعية للمجلدات (دون الوصلات وتجمع له 2 وهما الدليلان ./ و ../) ثم اسم المالك ثم المجموعة ثم الحجم ثم الوقت ثم اسم الملف

tipتلميح

إذا كانت مخرجات أمر أكثر من صفحة يمكنك العودة إلى الصفات التي فاتتك باستعمال SHIFT+PGUP/SHIFT+PGDN
ويمكنك قص ونسخ الأوامر من الشاشة وذلك بتعليم (تحديد) النص (بجر الفأرة من بداية الكلمة إلى نهايتها) ثم النقر بالزر الأوسطر (الزرين معاً إذا لم يكن موجوداً)أو بالزر الأيمن في بعض البرامج فينتقل النص إلى موقع المؤشر

لإيقاف عمل برنامج اضغط على CTRL+c (تكتب أحيانا Cc للإختصار)
لإيقاف الدخل اضغط على CTRL+d (وتعني نهاية الملف EOF)
وإذا كنت تتسائل لماذا لا يوجد خيار ل ls ليعرض صفحة صفحة فذلك لأنك تستطيع استعمال CTRL+PageUp / CTRL+PageDown للصعود لأعلى والنزول في أي وقت في أي برنامج أو يمكنك ارسال مخرجات الأمر ls إلى less أو more باستخدام الأنبوب "|" كما في المثال أعلاه.مستخدمي سطر الأوامر يحبون برنامج mc (أي midnight commander) وهو شبيه ب nc (أي norton commander) جربه وبرنامج mcedit جزء منه.

# تصحيح الأخطاء الإملائية في أمر تغير الدليل  لمرة واحدة
[/@host]$ cd /hpme/ali # بدلا من cd /home/ali
cd: /hpme/ali not found 
[/@host]$ shopt -s cdspell 
[/@host]$ cd /hpme/ali # بدلا من cd /home/ali
/home/ali
[/home/ali@host]$  cd /user/ben 
/usr/bin
[/usr/bin@host]$ 

هذا الأمر عليك طباعته كل مرة تريد تشغيل التدقيق الإملائي !! كيف نجعل هذا الأمر ينفذ تلقائيا ؟ اعلم أنه يتم تنفيذ /etc/profile أو ~/.bashrc تلقائيا فإذا كنت تريد إضافته لكل المستخدمين فعليك بالملف /etc/profile أما إذا كنت تريده لك وحدك فليك بالملف .bashrc في بيتك (تذكر أن ~ تعني الدليل البيت وهو يختلف من مستخدم إلى آخر) هذه الطريقة

# تصحيح الأخطاء الإملائية في أمر تغيير الدليل
# تلقائيا ولك وحدك دون غيرك
[~/@host]$  echo "shopt -s cdspell" >> .bashrc 
# تصحيح الأخطاء الإملائية في أمر تغيير الدليل
# تلقائيا ولكل المستخدمين
[~/@host]$ su root 
password:******
[/home/ahmad@host]# echo "shopt -s cdspell" >> /etc/profile 
[/home/ahmad@host]# exit 
[~/@host]$

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

tipتلميح

اكتب الأمر اللازم لعمل ملف يحتوي على قائمة محتويات الدليل /usr/bin.

# كيف تعمل ملف جديد بدون فتح محرر نصوص !!
[~/@host]$  cat > test2.txt << HANGA 
Start Typing
You can have more that one line
To End the Typing, Type the Magic Word
HANGA
[~/@host]$  less test2.txt 
# cat يرسل كل الملفات التي تعطيها إياه إن لم توجد يأخذ الدخل القياسي -لوحة المفاتيح
# وقد حددنا كلمة معينة لتكون إشارة إنهاء الإدخال وهي التي بعد <<
# وحددنا جهاز الإخراج ليكون الملف test2.txt

الأوامر التي ننفذها يتم تشغيلها من أدلة مختلفة منها غالبا الدليل الحالي ، وقد يكون برنامجان لهما نفس الاسم كيف تعرف أيها سينفذ؟ اكتب which COMMAND سيكتب لك المسار للأمر فإذا كنت تريد تنفيذ واحد من مسار آخر اكتب المسار قبل الأمر، أما كيف تحدد الأدلة التي يبحث فيها عن برامج فهو متغير البيئة PATH

# مسار البرنامج
[~/@host]$  which cat 
/bin/cat
[~/@host]$  echo "$PATH" 
/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./
# لإضافة دليل إلى آخر (أقل أولوية) القائمة
[~/@host]$  PATH="$PATH:/MY_DIR" 
[~/@host]$  echo "$PATH" 
/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./:/MY_DIR
# لإضافة دليل إلى أول (أعلى أولوية) القائمة
[~/@host]$  PATH="/MY_FOLDER:$PATH" 
[~/@host]$  echo "$PATH" 
/MY_FOLDER:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:./:/MY_DIR
# هذا التعديل مؤقت ويزول عند إعادة التشغيل
# لاحظ معظم التوزيعات تضع الدليل الحالي /. في آخر الألويات
###############
# يجوز وضع التعويض في أي مكان
[~/@host]$  echo $EDITOR 
vim
[~/@host]$  $EDITOR 
# تشغيل البرنامج المحدد بالمتغير 

لاحظ عندما تحدثنا عن أمر ls فإننا قلنا أنه يأخذ نموذج PATTERN وليس اسم ملف أو مجلد وهكذا معظم الأوامر الأخرى (حتى لو لم نذكر ذلك لأن bash هو من يقوم بالتعويض) ومعنى ذلك أنه يمكن أن نعطيه نموذج عن الملفات التي نريد فيقوم بالبحث عن ملفات تطابق النموذج الذي قدمناه ، وذلك برموز خاصة تترجم بالمعاني المبينة في الجدول المرافق وأي شيء آخر يترجم حرفيا تسمى هذه wild cards

* أي شيء من أي طول (بما في ذلك لا شيء) *term*كل شيء فيه term
? رمز واحد أو لا شيء S??autofsيبدأ ب S ثم رمزان على الأكثر ثم autofs
[SET] أي رمز من عناصر المجموعة [a-zA-z][0-9]حرف ثم رقم من منزلة واحدة
{PAT1 [ ,PAT2]...} النموذج الأول أو الثاني ... *.{jpeg,png}أي شيء ينتهي ب . ثم jpeg أو png

أصبح الآن هناك رموز لها معنى غير ما هي عليه مثلا ؟ ليست علامة سؤال وإنما تمثل أي حرف وأيضا $VAR تعني قيمة المتغير VAR فإذا أردنا المعنى الحرفي لشيء وليس المعنى المجازي مثلا فتح ملف باسم Why? ونقصد هنا بعلامة السؤال علامة السؤال وليس أي حرف إذاً كيف نخبره بذلك يتم ذلك بطريقة تسمى escape وذلك بإضافة \ قبل الرمز الذي تريد مثلا Why\? ستعني الملف الذي نريد مثلا إذا كنت تريد الذهاب إلى مجلد Mohammad Ali فإن كتابة cd Mohammad Ali لن تنجح لأن cd لا تأخذ سوى معامل واحد والمسافة بين محمد ولي ستعتبر فاصل بين المعاملات لذا فالصواب أن تقول cd Mohammad\ Ali هنا المسافة ستعني مسافة وهناك طريقة أخرى وهي استعمال علامة التنصيص (الإقتباس) وهي نوعان الأول هو التنصيص القوي (علامة تنصيص مفردة) وهي تمثل ما بداخلها حرفيا أما الثانية فهي أضعف (مزدوجة) فهي تسمح بتعويض قيمة المتغير و تقوم ب escape لذا يمكنك استعمال التنصيص الضعيف مثلا cd "Mohammad Ali" ولكن إذا كان اسم المجلد $Ali فإنه لن ينفع لأنه يقوم بالتعويض مكان Ali بقيمة المتغير عندها نستخدم escape أو التنصيص المفرد القوي cd '$Ali'

warningتحذير

لا تسمي هكذا أسماء غريبة بها رموز مثل $?#%\ أو مسافة لأن هذا يربكك وأنت تطبع الأوامر. ولا تخلط بين علامة التنصيص المفردة ' وعلامة تنفيذ برنامج ` وأخذ الخرج الموجودة عند عرف الذال

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

bash$  ls)/usr/bin/ \ 
>  /usr/sbin/ \ 
>  /usr/doc/ | \ 
>  less 
# نفس الأمر التالي
bash$  ls /usr/bin/ /usr/sbin/ /usr/doc/ | less 

<< السابق كتاب لينكس الشامل التالي >>