You are on page 1of 44

1

RHEL 7 Arabic Notes


‫ أحمد عبدالمنعم‬: ‫تلخيص الطالب‬

‫ مصطفى حمودة‬: ‫فيديوهات المهندس‬

Play List ‫رابط ال‬

https://www.youtube.com/playlist?
list=PLy1Fx2HfcmWBpD_PI4AQpjeDK5-5q6TG7

2
‫ملحوظة هامة ‪ :‬هذه الملخصات هى عبارة عن مجرد تجميع‬
‫للمعلومات وتمت ازالة كل الكلم الذى ليس له علقة بالكورس ‪،‬‬
‫من الخر كده اللى هنا بس هو المختصر المفيد والكلم مكتوب‬
‫باللهجة المصرية مع مراعاة التوضيح لقصى درجة‬

‫كمان هتلقى ملحظات انا جبتها من النت علشان تساعدك انك‬


‫تفهم اكتر‬

‫ملحوظة اخيرة وهى ان التراك الول لحد الفديو رقم ‪ 27‬اليوم ال‬
‫‪ 13‬وده عنوان الفديو‬
‫‪27-Day-13_VIM_Editor_Cont‬‬

‫التراك الول‬

‫‪Admin 1‬‬
‫‪3‬‬
‫بداية كده الطريقة اللى بكتب بيها ال ‪ Path‬كامل اسمها ال ‪ Absolute Path‬طب‬

‫ليه اسمها ‪ Absolute‬لنى ببساطة بكتب ال ‪ Path‬من اوله وده المثال عليها‬

‫‪cd usr/share/docs‬‬

‫والطريقة التانية اسمها ال ‪ relative path‬ودى معناها المسار المتعلق بالمكان‬


‫اللى انت واقف فيه والمثال عليها‬
‫‪cd . OR cd ..‬‬

‫ملحوظة مهمة وهى ان ال ‪ /‬ملوش ‪ Parent Directory‬وتسمى ال ‪root file‬‬


‫‪system‬‬

‫وطبعا انا عندى ‪ root 3‬ال وهم‬

‫‪ -1‬ال ‪ /‬ذات نفسها وهى عبارة عن ال ‪root file system‬‬

‫‪ -2‬مجلد ال ‪ home‬بتاع ال ‪ root‬ذات نفسه وده لن اللى عمل النظام خلى‬

‫مجلد ال ‪ home‬بتاع الرووت لوحده بعيدا عن بقية المستخدمين‬

‫‪ -3‬اخيرا ال ‪ root‬ذات نفسه كمستخدم او ك ‪ super user‬او ال ‪ Admin‬بتاع‬


‫النظام ذات نفسه‬

‫‪4‬‬
‫‪ -4‬الملحوظة اللى بعد كده وهى خاصة بال ‪ option‬وال ‪ arguments‬بتاعت ال‬

‫‪ command lines‬زى مثل المر ‪cp‬‬

‫ال ‪ option‬بيغير ال ‪ behavior‬بتاع ال ‪ command line‬انما ال ‪ argument‬عبارة‬


‫عن معلومة بتديها للمر علشان ينفذ حاجة معينة‬

‫عندنا فى ‪ 3‬طرق علشان تعمل ‪ reboot‬للينكس وهم‬

‫‪ init 6‬او ‪ systemctl reboot‬او ‪ shutdown -r now‬او ‪reboot‬‬

‫وبرضو بالنسبة لموضوع ال ‪ poweroff‬يا اما تعمل ‪shutdown -h now‬‬

‫‪ init 0‬او ‪ systemctl poweroff‬او‬

‫دول بقى شوية ملحظات جانبية باللغة النجليزية انا جبتهم من النت للى عايز‬

‫يعرف الفرق بين ‪ reboot‬او ‪ poweroff‬للجهاز‬

‫‪5‬‬
There is no difference in them. Internally they do exactly the same thing:

1. reboot uses the shutdown command (with the -r switch). The


shutdown command used to kill all the running processes, unmount all
the file systems and finally tells the kernel to issue the ACPI power
command.

2.init 6 tells the init process to shutdown all of the spawned


processes/daemons as written in the init files (in the inverse order they
started) and lastly invoke the shutdown -r now command to reboot the
machine

6
‫بعد كده بقى دخلنا على موضوع ال ‪ Permissions‬وانت لما تيجى تنفذ المر‬

‫‪ls -l‬‬
‫اول ‪ 3‬دول بتوع ال ‪ user‬وال ‪ 3‬التانيين دول بتوع ال ‪ primary group‬وال ‪3‬‬

‫التانيين دول بتوع ال ‪ others‬واول واحد ده بيحدد نوع الملف‬

‫‪drwxr-xr-x‬‬

‫ملحوظة مهمة جدا فيما يتعلق بنقطة ال ‪ user and group permissions‬وهى انى‬

‫همثل ال ‪ users‬بحرف ال ‪ u‬وال ‪ group‬بحرف ال ‪ g‬وال ‪ others‬بحرف ال ‪o‬‬

‫والمثال على كده انى لو عايز اعطى لل ‪ others‬صلحيات الكتابة مثل فده هيتم‬
‫عن طريق المر ده‬

‫‪chmod o+w test‬‬


‫كده هيدى لل ‪ others‬اللى انا مثلتهم بحرف ال ‪ o‬صلحيات ال ‪ write‬على‬

‫الملف اللى اسمه ‪test‬‬

‫بص بقى فى الكام ملحوظة دى اول ال ‪ +‬دى معناها اضافة وال ‪ -‬معناها حذف‬

‫يعنى ببساطة لما اقوله ‪ g-w‬كانى بقوله شيلى من الجروب ده تراخيص‬


‫الكتابة‬

‫‪7‬‬
‫وطبعا لزم تركزعلى اللوان فى اللينكس مثل اللون البيض ده معناه ملف‬

‫عادى والزرق ده معناها انه مجلد والخضر طبعا معناه انه ‪ executable‬يعنى‬
‫ملف قابل للتنفيذ ‪ ،‬من الخر كده ده عبارة عن برنامج‬

‫بالنسبة للتراخيص بتاعت ال ‪ directory‬ال ‪ r‬معناها انك ممكن تعمل ‪ ls‬للمجلد‬

‫ده وال ‪ w‬معناها انك ممكن ت ‪ add‬او ت ‪ delete‬ملف من المجلد ده‬

‫واخيرا ال ‪ x‬معناها انك ممكن تعمل ‪ ls -l‬او ‪cd‬‬

‫‪drwxr-xr-x. 2 root root 4.0K Sep 7 16:49 test‬‬

‫ال = معناها ‪ setting permissions‬يعنى من الخر كده بتقوله انسى اى‬

‫‪ permissions‬موجودة وابدأ طبقلى بس اللى انا هديهولك بمعنى اخر هتبدأ‬

‫تعمل ‪ resetting‬من الول‬

‫الملحوظة اللى بعد كده وهى ان اللينكس بيبص على ال ‪ content‬بتاع الملف‬
‫وليس على اسم الملف او المتداد بتاعه ‪ ،‬طيب هو هيعرف منين اذا كان ده‬

‫‪ mp3‬ول ‪ txt‬؟؟؟ ده بقى بيكون عن طريق ال ‪ header‬بتاع كل ملف‬

‫‪8‬‬
‫هنا بقى العلمة دى معناها ال | ‪ pipe‬ودى ممكن استخدمها مع امر زى‬

‫‪ifconfig | grep inet‬‬


‫وهكذه بقى‬

‫بص بقى مجموعة الوامر اللى زى ‪ whereis‬و ‪ who am i‬و ‪ whatis‬وغيرهم‬

‫دول اسمهم ‪wh commands‬‬

‫ملحوظة وعلشان تفهم ازاى الكرنال بتشتغل وهى ان الكرنال بيتعامل مع اى‬

‫حاجة بلغة الرقام يعنى هى متعرفش حاجة اسمها ‪ username‬او حتى ‪group‬‬

‫‪ name‬هى بتتعامل مع ال ‪ userid‬وال ‪ groupid‬وهكذا ‪ ،‬كل شغلها عن طريق‬

‫الرقام ‪ ،‬طب ليه اتعمل ال ‪ username‬وغيرهم ‪ ،‬ببساطة علشان تكون‬

‫‪ more human readable‬يعنى ‪ understandable‬لينا كبشر لنه من الصعب جدا‬

‫اننا نحفظ رقم ال ‪ id‬والجروب ‪ id‬وغيرهم ‪ ،‬نفس فكرة ال ‪dns‬‬

‫‪9‬‬
‫دلوقتى بقى لما بتجيب الهارد من الشركة مثل ويكون لسه جديد بيكون اسمه‬

‫‪ raw space‬بدون بارتيشنز‬

‫عندك بقى ال ‪ mbr‬بيتكون من ‪ 3‬اجزاء‬

‫‪1- partition table‬‬


‫وده لزمة فى الحياة انه يحدد بداية ونهاية كل بارتيشن موجود على الهارد‬

‫وعندنا كمان ال ‪ filesystem‬وده كل وظيفته انه ينظم عملية تخزين واسترجاع‬

‫الملفات اللى على البارتيشن المحدد مثل وال ‪ filesystem‬عبارة عن الطريقة‬


‫اللى بتخزن بيها وتسترجع البيانات وطبعا ليه انواع‬

‫عندك مثل ال ‪ fat32‬عنده عيب خطير جدا وهو ان اكبر مساحة للملف اللى‬
‫هيكون عليه مينفعش تتخطى ال ‪ 4‬جيجا‬

‫دلوقتى بقى ال ‪ inode table‬ممكن نعتبره بمثابة ‪ index‬للبارتيشن بيشيل كل‬

‫بيانات الملفات اللى متسجلة على البارتيشن من الخر كده ال ‪metadata‬‬


‫بتاعت الملفات‬

‫‪10‬‬
‫طيب ببساطة شديدة ال ‪ metadata‬هى عبارة عن البيانات اللى بتخزن جواها‬
‫المعلومات بتاعت البيانات اللى متخزنة عندك ‪ ):‬يعنى باختصار هى اللى‬
‫بتوصف الداتا الفعلية‬

‫اه يعنى افهم من كده انى لما باجى اعمل ‪ format‬للبارتيشنز وانا بنزل الويندوز‬

‫وبلحظ ان المساحة قلت حبة صغيرين فده بيكون بسبب ال ‪ inode table‬لن‬

‫انا لما بعمل ‪ format‬للبارتشين فكده معناه انى بهيئ البارتيشن للزراعة اى‬

‫للكتابة عليه وطبعا بما ان ال ‪ inode‬بيحجز مساحة فطبيعى ان مساحة‬


‫البارتيشن تقل شوية‬

‫معلومة خاطئة جدا وهى ان ال ‪ directory‬او ال ‪ folder‬يحتوى على ‪ files‬ل ل‬

‫ال ‪ directory‬عبارة عن ‪ special file‬بيعمل ‪ pointing‬على ‪ other files‬يعنى‬

‫بيشاور على ‪ files‬تانية‬

‫وعندك بقى كل الملفات اللى بتتخزن على البارتيشنز بتتخزن فى شكل ‪blocks‬‬

‫فى شكل قطع وكل ‪ block‬بيكون ليه رقم‬

‫وبالمناسبة كمان كل ملف عندك بيشاور عليه ‪ inode‬واحد بس‬

‫‪11‬‬
index node ‫ ده اصل اختصار ل‬inode ‫طيب ال‬

Inode ‫ودى مقالة حلوة جبتها من النت بتشرح اى هو ال‬

What are inodes?

An index node (or inode) contains metadata information (file size, file
type, etc.) for a file system object (like a file or a directory).
There is one inode per file system object.

An inode doesn't store the file contents or the name: it simply points to a
specific file or directory.

Storage ‫ وال‬file system ‫ اللى متعلقة بال‬blocks ‫طيب فيما يخص موضوع ال‬

‫ بايت‬16 ‫ مساحته‬block size ‫اعتبرها كأنها بلط البيت مثل فلو عندك مثل‬
‫ بايت‬16 ‫وعندك مثل ملف حجمه‬
‫ كلها ودى نفس فكرة بلط البيت اللى لما‬block size ‫فكده الملف ده هياخد ال‬
‫يكون عندك بلط كبير وجيت تحط على كل بلطة كرسى صغير فكده باقى‬
‫المساحة هتكون مهدره يعنى مش مستفاد منها‬

12
‫وطبعا زى ما انت عارف ان عملية نقل الملف من مكان لمكان تانى على نفس‬

‫البارتيشن بتكون سريعة جدا والسبب فى كده هو ان ال ‪ file system‬هيكون‬

‫حاجز اصل ال ‪ inode‬للملف ده‬

‫طيب دلوقتى لو جيت عملت ‪ copy‬لملف على نفس ال ‪ file system‬اي اللى‬

‫هيحصل ؟؟؟ اوتوماتيك ال ‪ file system‬هيحجز ‪ inode number‬او ‪inode‬‬

‫‪ numbers‬على حسب حجم الملف ‪ ،‬يعنى لو الملف كبير هيحجزله كذا ‪inode‬‬

‫‪ number‬واول ‪ inode number‬هو بس اللى هيشاور على الملف والباقى‬

‫هيتحط عليهم ‪ flag‬انهم ‪ ، used‬وبعدين هياخد نسخة من ال ‪data blocks‬‬

‫وهيوديها فى المكان اللى انت عايز تعمل فيه ‪ copy‬للملف بتاعك‬

‫وبالمناسبة كمان فكرة برامج ال ‪ recovery‬انها بتعيد قراءةالمجال‬


‫المغناطيسى من تانى اللى تم انشاؤه واحنا بنكتب على الهارد وطبعا‬
‫وكل ما زاد عدد مرات الكتابة معناها زيادة المجال مغناطيسى اللى بيتولد عند‬
‫احتكاك البره بالسطوانة بتاعت الهارد‬

‫‪13‬‬
‫دلوقتى بقى دخلنا على موضوع ال ‪ Soft Link‬وال ‪Hard Link‬‬

‫واول ملحوظة لما تيجى تستخدم ال ‪ soft link‬لزم تستخدم ال ‪Absolute path‬‬

‫عندنا بقى ال ‪ Hard Link‬عبارة عن ‪ data block‬بيشاورعليه اكتر من ‪ pointer‬او‬

‫‪ Reference‬ومعنى ‪ pointer‬او ‪ Reference‬هو اسم الملف وال ‪ Soft Link‬عبارة‬

‫عن ‪ Reference‬بيشاور على ‪ Reference‬تانى وطبعا مينفعش اعمل ‪Hard Link‬‬

‫بين اتنين ‪File System‬‬

‫نرجع بقى لموضوع ال ‪ MBR‬وبيقولك ان ال ‪ mbr‬حجمه كله على بعضه ‪512‬‬

‫بايت ‪ byte‬وحجم ال ‪ partition table‬اللى عليه معلومات البارتيشنز زى بداية‬


‫ونهاية كل واحد ‪ ،‬حجمه بيكون ‪ 64‬بايت‬
‫وبيقولك برضو ان معلومات اى بارتيشن بتتخزن فى ‪ 16‬بايت ‪ ،‬يبقى نستنج من‬

‫كده ان اقصى عدد من البارتيشنز على ال ‪ mbr‬هيساوى ‪ 16 / 64‬يساوى ‪4‬‬

‫بارتيشن بس ودى فكرة ليه ال ‪ mbr‬بيشيل ‪ 4‬بارتيشنز بس‬

‫يبقى اذا اقصى عدد من البارتيشنز ممكن يكون على الجهاز فى حالة ال ‪mbr‬‬
‫هو ‪ 4‬بارتيشنز بس‬

‫والفكرة كلها ان ال ‪ mbr‬اتصمم فى التمانينات وكان اقصى حجم ل ‪hard disk‬‬


‫وقتها هو ‪ 2‬ميجا فكان طبيعى ان المساحة تكون كده‬

‫‪14‬‬
‫‪There are only four because the data structures for the MBR partition‬‬
‫‪table only allow for exactly four records describing partitions‬‬

‫طيب علشان يحلو مشكلة العدد القليل بتاع البراتيشنز راحو عملو اي بقى ‪،‬‬

‫راح عمل ‪ 3‬بارتيشنز وال ‪ 4‬ده عاطله ‪ special type‬وخله ‪ extended‬وجواه بقى‬

‫راح عمل ال ‪logical partitions‬‬

‫طيب انت عندك انواع الهارد ‪ disks‬فى عندك ال ‪ PATA‬وال ‪ SATA‬وال ‪SCSI‬‬

‫اسكزى وال ‪ SAS‬وال ‪ SSD‬وال ‪USB Flash‬‬

‫دلوقتى بقى لو قولتلك ترجم نوع الهارد ده ‪ hdb9‬معناها اول ان نوع الهارد ده‬

‫‪ hd pata‬وال ‪ b‬معناها انه الهارد ديسك رقم ‪ 2‬الموجود فى الجهاز ورقم ‪9‬‬

‫معناه انه البارتيشن ال ‪ logical‬رقم ‪ 5‬الخامس يعنى لن ال ‪logical partions‬‬


‫بتبدأ من رقم ‪5‬‬

‫ملحوظة بسيطة وهى ليه ديما ال ‪ grub‬بيشوف الهارد بتاعى على انه ‪ hd‬او ‪hd0‬‬

‫او ‪ ، hd1‬السبب فى كده زى ما انت عارف وهو ان لسه الكرنال ذات نفسه‬

‫‪15‬‬
‫مقامش ‪ ،‬لسه الهارد لم يتم قراءته وبالتالى ال ‪ default‬بتاعه وهو انه يشوفه‬

‫ك ‪ ، hd‬لن اول الهاردات اللى طلعت كانت ال ‪PATA‬‬

‫عندى ‪ 3‬ادوات علشان تتعامل بيها مع الهارد ديسك يا اما تستخدم‬


‫ال ‪ fdisk‬يا اما تستخدم ال ‪ parted‬يا اما انك تستخدم ال ‪cfdisk /dev/sdb‬‬

‫الملحوظة اللى بعد كده وهى ان المر ‪ partprobe‬ده بيعمل ‪ scan‬للهارد من‬

‫تانى علشان يشوف اذا كان في ‪ partitions‬جديدة اتضافت ول ﻷ‬

‫ملحوظة تانى وهى ان ال ‪ inode table‬اسمه ‪super block‬‬

‫طيب دلوقتى بقى مساحة ال ‪ meta data‬بيتم تحديدها بناءا على عدد ال‬

‫‪ inodes‬اللى عندك وعدد ال ‪ inodes‬بيتحدد بناءا على اد اي ال ‪ block size‬يعنى‬

‫عندك كام ‪ block Size‬وال ‪ block Size‬بيتحدد اوتوماتيك وانت بتعمل ال ‪file‬‬

‫‪ system‬يعنى بيتحدد على ال ‪ default‬بتاع ال ‪ file system‬يا اما انت بتحددهوله‬

‫لما بتقوله غيرلى ال ‪ block size‬وال ‪ block size‬اللى هو حجم البلطة اللى انت‬
‫هتحطها فى الصالة وبناءا على حجم البلطة دى هتقدر تحط فيها كام كرسى‬
‫مثل‬
‫اه بالمناسبة انت مش بتحدد مساحة ال ‪ inode table‬خالص ‪ ،‬ال ‪inode table‬‬

‫مش بيشيل داتا اصل ‪ ،‬ال ‪ inode table‬بيشيل بس ‪ meta data‬اللى هى‬

‫‪16‬‬
‫معلومات عن الملفات زى ارقامها ومساحتها ومين ال ‪ owners‬واي هى ال‬

‫‪ Permissions‬بتاع كل ملف وهكذا بقى وطبعا بيكون برضو جوا ال ‪meta data‬‬

‫ارقام ال ‪blocks‬‬

‫بص بقى يا سيدى لو عندك ‪ disk‬وال ‪ disk‬ده ال ‪ label‬بتاعه ‪ mbr‬وانت عايز‬

‫تعمل ‪ corrupt‬لملفات ال ‪ mbr‬دى علشان ترجع الهارد ‪ row space‬يعنى‬


‫مساحة فاضية تانية فانت عندك مكان اسمه‬
‫‪/dev/random‬‬
‫وفى برضو مكان تانى اسمه‬
‫‪urandom‬‬
‫ممكن تستخدم ال ‪ out put‬اللى هيطلع منهم وتعمل ‪ redirection‬على ال‬

‫‪/dev/sdb‬‬
‫وبالتالى ملفات ال ‪ mbr‬وال ‪ partition table‬هتبوظ وكده هيرجع زى ما كان‬

‫بيقولك بقى ان ال ‪ mbr‬بيتكون من ال ‪ Partition Table‬وال ‪ Bootloader‬وحاجة‬

‫كده اسمها ال ‪ Magic Number‬اللى هو ممكن تقول عليه ال ‪ Check Sum‬ده‬

‫بينفع فى ال ‪Recovery‬‬

‫‪17‬‬
‫ملحوظة فيما يخص امر ال ‪ dd‬ال وهو اول حاجة ال ‪ block size‬بتاعه ال‬

‫‪ default‬هو ‪ 1byte‬يعنى هيكتب على بلوكايه واحد بس ‪ ،‬طب وبعدين انت‬

‫بتقوله بقى ال ‪ count‬بتاعك هيكون مثل ‪ 512‬بايت وده فى حالة لو انت عايز‬

‫تدمر ال ‪ mbr‬كله فانت هتقوله‬

‫‪dd if=/dev/random of=/dev/sdb bs=1B count=512B‬‬

‫ومعلومة كمان وهى ان ال ‪ dd‬هى اختصار ل ‪ disk dump‬وال ‪ bs‬هى اختصار ل‬

‫‪Block Size‬‬

‫عندنا بقى فى ‪ Special Files‬فى اللينكس عموما زى‬

‫‪/dev/random‬‬
‫و‬
‫‪/dev/urandom‬‬

‫وفى برضو‬
‫‪/dev/zero‬‬
‫والخير ده بقى بيكتب اصفار على الهارد‬

‫‪18‬‬
‫معلومة وهى ان كلمة ‪ Format‬بتساوى او بتوازى ‪ zero fill‬يعنى كأنك بتملى‬
‫البارتيشن باصفار‬

‫طيب بص بقى فيما يخص ال ‪ encoding‬اللى هو ال ‪ ANSI‬وال ‪ UTF-8‬لما‬

‫تيجى مثل تحفظ ملف فى ال ‪ note pad‬وتحفظه ‪ ANSI‬فهتلقى مساحته اقل‬

‫بكتير لو حفظته بال ‪UTF-8‬‬

‫وده نفس الفكرة لما تكتب ال ‪ random‬وال ‪ urandom‬فانت عندك ال ‪default‬‬

‫بتاع الملف هو ال ‪ ANSI‬فهو فعليا بيكتب مثل ‪ 100‬ميجا انما بسبب طريقة‬

‫الحفظ وال ‪ Encoding‬فده بيطلع الملف صغير جدا جدا لنه بيحجز مساحة لكل‬

‫ملف اصغر بكتير من اللى المفروض يحجزه لما يكون فى ال ‪ UTF-8‬اللى‬


‫بيدعم كل اللغات تقريبا‬
‫فا لو انت عايز تعمل ‪ over write‬صح على ملفات ال ‪ mbr‬فانت المفروض‬
‫تستخدم ال‬
‫‪/dev/zero‬‬

‫دخلنا بقى فى موضوع جديد واول حاجة ان كلمة ‪ mount‬او عملية ال ‪mounting‬‬

‫ذات نفسها معناها انك تخلى ال ‪ partition‬ده ‪ Accessible‬يعنى كأنك بتديله‬

‫حرف زى ال ‪ c‬وال ‪ d‬كده فى الويندوز‬

‫‪19‬‬
‫لو عايز تجيب معلومات بارتيشن كامل المر ده مهم جدا ليك ك ‪ Admin‬اكتب‬

‫‪dumpe2fs /dev/sdb1‬‬
‫وهى اختصار ل‬
‫‪Dump Extended 2 File System‬‬
‫عندك برضو‬
‫‪dump ext2/ext3/ext4 filesystem information‬‬

‫طيب دلوقتى بقى لو الكهرباء قطعت عليك وفى ‪ file system‬معمول ليه‬

‫‪ ، mounting‬ممكن يحصل حاجة اسمها ‪ data corruption‬او ممكن يكون هناك‬


‫احتمالين‬
‫الول انك لو جيت تعمله ‪ mounting‬ممكن يقولك ان ال ‪ filesystem‬ده فى‬

‫مشكلة ولزم تعمله ‪ check‬وده شبيه جدا بالشاشة الزرقاء بتاعت ويندوز اكس‬

‫بى لما كان بيفضل يعد وهو بيعمل ‪ checking‬على البارتيشنز‬

‫طبعا مينفعش تعمل ‪ check‬لل ‪ disk‬والبارتيشنز بتاعك معمول ليه ‪، mount‬‬

‫وطبعا لو عملت ‪ check‬لل ‪ disk‬والبارتشن معمول ليه ‪ mounting‬هيحصل ‪data‬‬


‫‪corruption‬‬
‫فطبعا لزم تتأكد اذا كان البارتيشن ده معمول ليه ‪ mounting‬ول ﻷ ‪ ،‬عامل‬
‫بالظبط كأنك بتعمل عملية لمريض من غير بنج ‪ ،‬كأنك بتعمله عملية وهو صاحى‬

‫‪20‬‬
‫دلوقتى بقى لو انت جيت تعمل ‪ e2fsck‬للبارتشين وقالك انه مش هيقدر علشان‬

‫فى ‪ corrupted data‬استخدم ال ‪ option -f‬يعنى اعمل فحص بالقوة وصلح ال‬

‫‪corrupted data‬‬

‫وطبعا مش هوصيك لو هتستخدم ال ‪ f-‬يبقى تاخد ‪ backup‬للبارتيشن نفسه مش‬


‫للداتا وطبعا طالما للبارتيشن نفسه يبقى اكيد هيلم معاه الداتا ذات نفسها‬
‫طيب السؤال هنا هتاخد ‪ backup‬ازاى والبارتيشن اصل مش ‪ ، accessible‬بص يا‬

‫سيدى عن طريق المر ‪dd‬‬

‫‪dd if=/dev/sdb1 of=/sdb-backup‬‬

‫‪if -> input file‬‬

‫‪of -> output file‬‬

‫طبعا ال ‪ check‬اللى بيتم هنا على البارتيشن ‪ ،‬هو بيروح يعمل ‪ check‬لل ‪inode‬‬

‫‪ table‬بس ‪ ،‬مش بيعدى على ال ‪ blocks‬واحد واحد كده‬

‫طيب افرض بقى وهو بيعمل ‪ force check‬جه ال ‪ inode table‬وضرب منك او‬

‫البارتيشن ضرب منك هتحلها ازاى ‪ ،‬الحل ببساطةوهو انك تعكس المر بتاع ‪dd‬‬

‫‪21‬‬
‫يعنى تخلى البارتيشن بتاعك هو ال ‪ output file‬وتخلى ملف ال ‪ backup‬هو ال‬

‫‪ input file‬هيكون المر كده‬

‫‪dd if=/sdb-backup of=/dev/sdb1‬‬

‫مثل مثل ممكن تعتبر ان ترتيب البارتيشنز فى ويندوز اسمه ‪Flat Structure‬‬

‫يعنى كل واحد فيهم مستقل بذاته عندك مثل ال ‪ C‬عبارة عن بارتيشن لوحده‬

‫وال ‪ d‬برضو عبارة عن بارتيشن لوحده وده طبعا بيختلف تماما عن اللينكس‬

‫واخيرا كلمة ‪ mount‬معناها ربط للحاجة ‪ ،‬وال ‪ mount point‬هى عبارة عن‬
‫النقطة اللى عن طريقها بتوصل للبارتيشن ذات نفسه‬

‫لما اقول ان عندى بارتيشن مساحته وليكن مثل ‪ 5‬جيجا والبارتيشن ده معمول‬

‫ليه ‪ mount‬فى ال ‪ ، /‬ده معناه ان مسطب ال ‪ os‬على البارتيشن ده‬

‫دلوقتى بقى لما انت مثل تعمل ‪ mount‬لعدد ‪ 2‬بارتيشنز فى ‪ ، media/‬فانت‬

‫هتكتب على اخر واحد بس لحد ماتعمله ‪ umount‬وبعدها هتبدأ تكتب على التانى‬

‫‪22‬‬
‫‪ ،‬طيب افرض عملت للتانى ‪ umount‬هو كمان يبقى كده المسار ده اللى هو ‪/‬‬

‫‪ media‬هترجع جزء من ال ‪ /‬ذات نفسه اللى هو بارتيشن الرووت ذات نفسه‬

‫وهنا تنبيه هام جدا وهو اوعى تعمل ‪ format‬لل ‪extended partition‬‬

‫دلوقتى فى ملحوظة برضو فيما يخص ال ‪ option‬اللى هو ‪ t-‬اللى هو نوع ال‬

‫‪ file system‬لما تيجى تعمل ‪ mount‬لبارتيشن معين ‪ ،‬هو اوتوماتيك بيحاول‬

‫يعمل ‪ detect‬لل ‪ file system‬بتاع البارتيشن‬

‫وبالنسبة لل ‪ umount‬انت ممكن تقوله ال ‪ dev/sdb5/‬كده لوحده ‪ ،‬او ممكن‬

‫تقوله على ال ‪ mount file‬ذات نفسها‬

‫المعلومة اللى بعد كده وهى ان ال ‪ UUID‬بتاع ملف ال ‪ Fstab‬هو اختصار ل‬

‫‪Universal Unique Identifier‬‬

‫علشان كده انت ممكن تستخدم ال ‪ UUID‬فى عملية ال ‪ ، mount‬والمثال على‬


‫كده‬
‫‪mount UUID=0f089c70-e20f-46a4-8a92-af7974f0c4ce /media‬‬

‫وبكده انت ضمنت انك حتى لو غيرت اسم ال ‪ disk‬بتاعك من ‪ sda‬ل مثل ‪sdc‬‬

‫فاانت كده كده هتستخدم ال ‪ UUID‬فى عملية ال ‪mount‬‬

‫‪23‬‬
‫طبعا انت ممكن تدى لكل ‪ partition‬اسم او ما يسمى بال ‪ label‬عن طريق‬

‫المر ‪ ، e2label‬وبرضو ينفع تعمل ‪ mount‬لل ‪ device‬اللى ال ‪ label‬بتاعها اسمه‬


‫كذا ‪ ،‬مثال‬
‫‪mount LABEL="Oracle" /media‬‬

‫وطبعا احسن طريقة موجودة بل منازع هى طريقة ال ‪ UUID‬فيما يخص عملية‬

‫ال ‪ ، Mounting‬انما طريقة ال ‪ label‬غير محبذة خالص‬

‫معلومة مهمة ليك وهى ان الداتا سنترز المحترمة المفروض يكون في‬

‫‪ Standard Setup‬لكل الجهزة والسيرفرات اللى شغالة ‪ ،‬بمعنى ان مثل كل‬


‫الجهزة المفروض يكون ال ‪ /‬حجمه ‪ 50‬جيجا‬
‫وال ‪ var/‬يكون حجمه مثل ‪20‬جيجا ومثل ال ‪ database‬يكون معمول ليها ‪mount‬‬

‫فى نقطة ثابتة وهى ال ‪ oracle‬مثل وهكذا ‪ ،‬يكون فى توحيد لكل السيرفرات ‪،‬‬
‫ال لو فى استثناءات‬

‫نيجى بقى لل ‪ Syntax‬بتاع ال ‪ fstab‬وهو كالتالى‬

‫‪dev‬‬ ‫‪mountpoint‬‬ ‫‪type‬‬ ‫‪mountoption dumporder‬‬ ‫‪fsCheckOrder‬‬

‫‪24‬‬
‫‪/dev/sd5‬‬ ‫‪/media‬‬ ‫‪ext4‬‬ ‫‪rw‬‬ ‫‪0>9‬‬ ‫‪0>9‬‬

‫‪ro‬‬

‫‪noexec‬‬

‫‪exec‬‬

‫كلمة ‪ dump‬كانوا وما زالوا بيستخدموها بمعنى ‪backup‬‬

‫خلى بالك معلومة لذيذة اوى ‪ ،‬عارف لو غيرت فى ملف ال ‪ fstab‬وكتبت مثل ‪/‬‬

‫‪ dev/sd5‬عارف اي اللى هيحصل ؟؟؟ بص يا سيدى هتلقى الجهاز كده وهو‬


‫بيبوت قالك‬

‫)‪A Start Job Is running for dev-sd5.devices (1s / 1min 30s‬‬

‫وهتلقيه بيقولك‬

‫‪25‬‬
‫‪Timed Out waiting for device dev-sd5.device‬‬

‫‪Dependency Failed For /work‬‬

‫وهتلقيه بيقولك ‪ welcome To Emergency Mode‬وهيطلب منك ال ‪root passwd‬‬

‫وساعتها بقى هتضطر انك تفتح ملف ال ‪ fstab‬وتكتب اسم ال ‪ device‬صح‬

‫وتعمل ‪ reboot‬بعدها‬

‫‪، mount -a‬‬ ‫طيب المفروض بقى لما تخلص تعديل فى الملف ده ‪ ،‬تروح تعمل‬

‫والمر ده معناه انه هيروح يعمل ‪ reread‬لملف ال ‪ fstab‬واى حاجة موجوده‬

‫فيه هيقول لل ‪ kernel‬اعمليله ‪ ، mount‬وطبعا لو فى ‪ error‬فى ملف ال ‪fstab‬‬

‫تلقائيا هيظهرلك رسالة توريك فين مكان ال ‪ device‬الغلط ‪ ،‬والمر ده اصل‬

‫بيعمل ‪ mount‬اوتوماتيك هو كمان‬

‫وديما بعد ما تعدل ‪ fstab‬اتأكد ان ال ‪ syntax‬بتاعه صح ‪ ،‬يعنى تكتب‬

‫‪mount -a‬‬

‫طيب اى ملف او اى ‪ device‬بتعمله ‪ mount‬بيتحط نسخه منه فى مكان اسمه‬

‫‪/etc/mtab‬‬
‫وال ‪ mtab‬دى معناها ال ‪Mounted file system Table‬‬

‫‪26‬‬
‫ولما تجيى تعمل ‪ delete‬ل ‪ partition‬معين اتأكد انه مش موجود فى ملف ال‬

‫‪fstab‬‬

‫ودلوقتى من واقع الخبرة العملية استخدم ‪ parted‬احسن لو عايز تعرض‬


‫تفاصيل البارتيشنز‬

‫طيب فى ‪ error‬مشهور اوى بيظهر لما تحاول تعمل ‪ format‬لبارتيشن معين ‪،‬‬

‫ويكون البارتيشن ده ‪ busy‬بيكون معمول ليه ‪ mount‬فى مكان معين ‪ ،‬فانت‬

‫الول هتعمله ‪ umount‬وبعدين ‪ partprobe‬وبعدين تبدأ تعمل ال ‪ format‬بتاعك‬

‫او الخطأ بصورة اخرى وهو انك تعمل ‪ delete‬للبارتشينز وفى بارتيشن معمول‬

‫ليه ‪ ، mount‬طبعا متنساش تستخدم ال ‪ partprobe‬او ‪kpartx‬‬

‫‪partprobe - inform the OS of partition table changes‬‬

‫وصلنا لموضوع ال ‪ ، Compressing‬بص بقى فى ‪ utilities‬كتيرة اوى ممكن‬

‫تستخدمها لكن الشهر هم ال ‪ gzip‬وال ‪ bzip2‬طيب اي الفرق بينهم ؟‬

‫‪gzip -> Faster‬‬


‫اسرع بكتير لكن‬

‫‪27‬‬
‫‪bzip2 -> Higher Compression Ratio‬‬

‫معلومة جانبية وهى ان عملية ضغط الفديو عبارة عن انه بيضغط ال ‪pixels‬‬
‫ذات نفسها يعنى بيضغط النقط البيضاء اللى بيتكون منها الفديو اللى هى ال‬

‫‪pixeles‬‬

‫دلوقتى بقى الفرق بين ال ‪ Compressing‬وال ‪ Archiving‬هو ان ال‬

‫‪ Compressing‬بيتنج عنه انك تقلل المساحةالموجودة لملف معين مثل ‪ ،‬انما ال‬

‫‪ Archiving‬هو عبارة عن انك بتربط مجلد بيكون جواه مثل ملفات كتيرة‬
‫بالملفات دى علشان يطلعلك فى الخر ملف واحد ضامم كل ده‬

‫ملحوظة وهى ان المر ‪ du‬هو اللى بيجبلك حجم مجلد معين ‪ ،‬ومتنساش ال ‪.‬‬
‫معناها المكان اللى انت واقف فيه مثال على كده‬

‫‪cp -r /etc/ .‬‬

‫معلومة‬
‫‪du -s -h‬‬
‫)‪-s (summarize‬‬

‫‪28‬‬
‫)‪-h (human readable‬‬

‫‪du -> desk usage‬‬

‫نخش بقى على المعلم ‪ ، tar‬واحب اقولك ان ‪ cf‬هى اختصار ل‬

‫‪create file‬‬
‫واما ال ‪ xf‬فهى اختصار ل‬

‫‪extract file‬‬
‫مثال‬
‫‪tar cf etc.tar etc/‬‬

‫‪tar xf etc.tar‬‬
‫او ممكن تستخدم معاه ‪ ، cvf‬يعنى ‪ ، create verbose file‬يعنى ورينى وانت‬
‫بتضغط‬
‫معلومة وهى ان ال ‪ tar‬هى اختصار ‪teabs Archive‬‬

‫بص بقى فى الحلوة اللى جاية دى ‪ ،‬انت دلوقتى عندك اتنين ‪ utility‬بتعمل بيهم‬

‫‪ compress‬للملفات هما ال ‪ gzip‬وال ‪ ، bzip2‬طيب هل ينفع انك تستخدم ال ‪tar‬‬


‫معاهم ؟؟‬

‫‪29‬‬
‫ايوه طبعا ‪ ،‬اي المانع ‪ ،‬شوف يا سيدى لو انت هتستخدم ال ‪ ، gzip‬يبقى ال‬

‫‪ syntax‬هيكون كده وهيكون امتداد الملف‬

‫‪.tar.gz‬‬
‫مثال‬
‫‪tar cvfz etc.tar.gz etc/‬‬

‫طب لو انت هتعمل ‪ extract‬برضو هتستخدم المر‬

‫‪tar xvfz etc.tar‬‬

‫انما بقى لو هتستخدم ال ‪ bzip2‬هيكون ال ‪ syntax‬كده‬

‫‪tar cvfj etc-backup.tar.bz2 etc/‬‬


‫وبرضو نفس الكلم فى عملية ال ‪ extract‬هتستخدم برضو ال ‪xvfj‬‬

‫عندنا امر جديد ال وهو ال ‪ ، tvfz‬وده بستخدمه لما تحب تعمل ‪ list‬للملفات‬

‫اللى موجودة جوه ملف مضفوط ‪ ،‬طبعا حرف ال ‪ t‬اختصار ل ‪list‬‬

‫‪list verbose file‬‬

‫المر ‪ tar‬هو من الوامر القليلة جدا اللى مش هتلقى قدام ال ‪ option‬علمة ‪-‬‬

‫‪30‬‬
‫معلومة جانبية اي الفرق بين ال ‪ program‬وال ‪ process‬؟!!‬

‫ال ‪ program‬هو ببساطة البرنامج اللى بيكون ‪ executable‬عندك على الجهاز ‪،‬‬

‫او يكون مش ‪ ، active‬انما بقى اول ما يبدأ انه يشتغل وي‬

‫‪allocate resources‬‬

‫فى ال ‪ memory‬ده كده بيكون اسمه ‪process‬‬

‫طبعا السيستم بيتعامل مع كل حاجة عن طريق الرقام ‪ ،‬وطبعا زى ما الكرنال‬

‫بيتعامل مع اليوزرز عن طريق ال ‪ userid‬برضو ال ‪ kernel‬بيتعامل مع البرامج‬

‫بعدما تتحول وتكون فى شكل ‪ process‬عن طريق حاجة اسمها ال‬

‫‪process id‬‬

‫كل ‪ Process‬بيكون ليها‬

‫‪Parent Process ID‬‬


‫واختصارها ‪PPID‬‬

‫دلوقتى بقى ال ‪ Memory‬وهى شغالة ‪ ،‬السيستم بيقطعها فى شكل ‪Pages‬‬

‫المر ‪ kill‬ببساطة وظيفته انه بيبعت ‪ signal‬لل ‪ Process‬اللى رقمها كذا‬

‫ويقولها اقفلى وطبعا لو عايز تعرف بقية ال ‪ Signals‬عن طريق المر‬

‫‪31‬‬
‫‪kill -l‬‬

‫عارف لما تستخدم ‪ kill -9‬ده ليه نتائج كارثية عليك ‪ ،‬لن ال ‪ Process‬دمها لسه‬
‫بيسيل‬

‫وعندك برضو المر ‪ pkill‬هيعمل ‪ kill‬عن طريق ال ‪ Process Name‬مش عن‬

‫طريق ال ‪ID‬‬

‫معلومة مهمة لو انت بتستخدم ال ‪ gui‬وعايز تفتح اى ‪ app‬من الترمنال بس من‬


‫غير ما تحجز الترمنال حط علمة & فى اخر المر ‪ ،‬مثال‬
‫& ‪sudo thunar‬‬

‫المر ‪ jobs‬هيعرضلك ال ‪ apps‬اللى شغالة فى ال ‪background‬‬

‫‪[1]+ Done‬‬ ‫‪thunar‬‬

‫رقم واحد ده هو ال ‪ background Number‬وليس ال ‪Process Id‬‬

‫‪32‬‬
‫المر ‪ % fg‬وبعدين رقم ال ‪ Background‬بيرجع ال ‪ Process‬ويخليها تحجز ال‬

‫‪ shell‬او الترمنال من تانى‬

‫‪fg >> For Ground‬‬

‫‪bg >> Back Ground‬‬

‫المر ‪ ctrl + z‬بيعمل ‪ pause‬لل ‪Process‬‬

‫اى ‪ Process‬عندك يا اما انها شغالة فى ال ‪ For Ground‬وانت بتتعامل معاها‬

‫وشايفها ‪ ،‬او يا اما انها شغالة فى ال ‪ bg‬وكده اسمها ‪ daemon‬ومعنى كلمة‬

‫‪ daemon‬اصل فى اللغة يعنى عفريت او شيطان‬

‫وطبعا بما ان العفريت مش بيتشاف فكذلك المر برضو بالنسبة لل ‪daemons‬‬


‫لكن اللى بيحصل ان تأثيره بيبان عليك زى ما بيقولك انزل العب واتنطط‬

‫شوف بقى طالما ال ‪ Process‬اشتغلت فى ال ‪ Background‬فهتلقى ال ‪Parent‬‬

‫بتاعها هو المكان اللى اشتغلت منه ‪ ،‬يعنى مثل لو شغلت من ال ‪ GUI‬فانت‬

‫هتلقى ال ‪ gui‬هو ال ‪ Parent‬بتاعها ‪ ،‬طيب لو هى شغالة فى ال ‪ BG‬وانت‬

‫روحت عملت ‪ Terminate‬لل ‪ Parent‬بتاعها ‪ ،‬فااوتوماتيك ال ‪ Parent‬بتاعها‬

‫هيكون ‪ Systemd‬طبعا ده فى ‪ RHEL 7‬انما ‪ 6‬بيكون ‪init‬‬

‫‪33‬‬
‫وطبعا مش شرط علشان انى اقول على حاجة انها ‪ service‬يبقى لزم تستقبل‬

‫‪ connection‬من بعيد من بره ال ‪ ، Machine‬يبقى معلومة النهاردة وهى ان اى‬

‫‪ app‬ممكن اشغله فى ال ‪ background‬ك ‪ daemon‬او ممكن اشغله فى ال ‪For‬‬

‫‪Ground‬‬

‫دلوقتى بقى اللى بيتحكم فى ال ‪ priority‬بتاع ال ‪ Process‬وهى شغالة حاجة‬

‫اسمها ال ‪ Nice Value‬والقيم بتاعتها بتتراوح ما بين ‪ 20-‬لحد ‪ 19‬وال ‪default‬‬

‫‪ Value‬هى ‪ 0‬ومعناه‬

‫‪normal priority‬‬

‫يبقى اذا اى ‪ Process‬لما تشغلها بتاخد ‪ Nice Value 0‬ومعناها انها شغالة ك‬
‫‪normal priority‬‬

‫ال ‪ 20-‬هى اقل ‪ Priority‬وال ‪ 19‬هى اعلى ‪ Priority‬عامل بالظبط زى فكرة‬


‫اللى عليه دين وعايز يسدده‬

‫وعندك بقى اى يوزر عادى من حقه انه يدى لل ‪ ، Process‬ب ‪ Priority‬اقل‬

‫لكن مش من حقه انه يديها ‪ Priority‬اعلى‬

‫‪34‬‬
‫ومعنى ان انت عندك ‪ Zombie Process‬يبقى كده انت عندك مشكلة‬

‫وبالتالى انت ك ‪ System Admin‬المفروض تستخدم ال ‪ htop‬وال ‪ top‬عموما‬

‫يعنى علشان لو فى ‪ Process‬معينةعايز تعملها ‪ kill‬وطبعا التنين بيدوك ال‬

‫‪ Real Time Update Value‬لكل ‪Process‬‬

‫وطبعا المر العام لو انت عايز تدى لبرنامج ‪ Priority‬معينة بيكون كالتالى‬

‫‪nice -n 15 firefox‬‬

‫طيب دلوقتى بقى لو عندك ‪ Process‬شغالة وعايز تديها ‪ Nice Priority‬جديدة ‪،‬‬

‫هل لزم انك تقفلها وتشغلها من تانى ؟؟ ل طبعا ‪،‬خد عندك المر ده بيدى ‪Nice‬‬

‫‪ Value‬لل ‪ Process‬وهى شغالة‬

‫‪renice -n 15 firefox‬‬

‫ملحوظة لو هتعمل ‪ search‬على ‪ command‬فانت هتستخدم يا اما ‪ whatis‬ودى‬

‫بتعرضلك المر بيعمل اى بالظبط ‪ ،‬او يا اما هتستخدم ‪ whereis‬ودى هتعرضلك‬

‫‪35‬‬
‫ال ‪ documentation‬بتاع المراللى هى ال ‪ man pages‬وهتعرضلك المجلد ال‬

‫‪ binary‬بتاع المر‬

‫وبالمناسبة برضو المر ‪ locate‬بيعتم على ‪ database‬موجودة عنده ولما انت‬

‫بتعمل ملف جديد وتيجى تنفذ المر ‪ locate‬مش هيجبلك المر علشان ببساطة‬

‫لزم تعمل تحديث لل ‪ database‬بتاعت المر ‪ locate‬عن طريق المر‬

‫‪updatedb‬‬

‫انما المر ‪ find‬ده مش بيعتمد عل ‪ ، DB‬وكمان هو ‪ Advanced‬جدا ممكن‬

‫تسيرش من خلله بالسم او مين ال ‪ owner‬وهو بيدورفى المكان اللى انت‬

‫واقف فيه ال لو حددته مكان معين يدور فيه وطبعا اللينكس ‪case Sensitive‬‬

‫ممكن تحط ال ‪ i-‬علشان تقوله ابحثلى فى كل المكان ومتخلكش‬

‫‪case sensitive‬‬

‫معلومة لو هتجيب ال ‪ permissions‬بتاعت ‪ directory‬يبقى تستخدم ال ‪option d‬‬

‫مع المر ‪ls‬‬

‫‪ls -ld /etc/‬‬

‫ممكن لو عايز تعمل اسم مجلد مكون من اسمين ممكن تستخدم‬


‫"‪mkdir "Linux and Java‬‬

‫‪36‬‬
‫او ممكن تستخدم ال ‪ back slash‬ومعنا انك بتقوله اعمل ‪ skip‬لل ‪ space‬دى‬

‫‪touch java\ c\ c++‬‬

‫فى عندك برضو امر تانى حلو وهو ‪cut‬‬

‫وانت ممكن تجيب العمود الول من مثل ملف زى ال ‪ etc/passwd/‬عن طريق‬

‫المر ‪cut‬‬

‫‪cut -f 1 -d : /etc/passwd‬‬

‫حرف ال ‪ f‬هو اختصار ل ‪ field‬وحرف ال ‪ d‬هو اختصار ل ‪ delemeter‬يعنى‬


‫الفاصل‬

‫المر ‪ cut‬بينفع فى ال ‪ ، Security Auditing‬وال ‪ auditing‬معناها التدقيق ‪،‬‬

‫طبعا مع المر ده يفضل جدا انك تستخدم ال ‪ sort‬علشان ترتب الناتج اللى‬
‫طالع‬

‫‪cut -f 1,3 -d : /etc/passwd | sort -n‬‬

‫‪37‬‬
‫‪ numeric‬يعنى بشكل >====== ‪-n‬‬

‫طبعا لو عندك كذا نتيجة متكررة وعايزة تعرض النتيجة بس من غير تكرار‬

‫الحاجات اللى شبه بعض ممكن تستخدم ال ‪unique‬‬

‫‪cut -d : -f 7 /etc/passwd | uniq‬‬

‫اه وخد بالك ان ‪ unique‬بيقارن كل ناتج باللى قبله فطبيعى انك برضو هتلقى‬
‫حاجات متكررة ‪ ،‬فانت ممكن تعمل حركة صايعة كالتالى‬
‫‪cut -d : -f 7 /etc/passwd | sort | uniq‬‬
‫فانت كده بتعمل ‪ sort‬الول وبعدين بتطلع ال ‪ unique‬نتائج‬

‫علمة ال ‪ pipe‬عبارة عن انها بتاخد ال ‪ output‬بتاع امر معين وتحطه ك ‪input‬‬


‫لمر تانى‬

‫نخش بقى فى التقيل وهو ال ‪vim‬‬

‫مبدئيا كده اول حاجة اتعملت كانت هى ال ‪ vi‬وهى اختصار ‪visual editor‬‬

‫وبعدين اتطور وبقى اسمها ‪ vim‬وال ‪ vim‬بقى ببساطة هو ‪ enhanced vi‬او‬

‫‪ improved vi‬يعنى نسخة محسنة من ال ‪vi‬‬

‫‪38‬‬
‫بص بقى فى ال ‪ vim‬انت عندك ‪ modes 3‬اول ما بتفتح ال ‪ vim‬بيكون ال‬

‫‪ default mode‬بتاعك هو ال ‪ command mode‬طيب لو عايز تنتقل لوضع الكتابة‬

‫طبعا بتروح لل ‪ insert mode‬ولما بتخلص بتنتقل لل ‪execution mode‬‬

‫ال ‪ command mode‬بيسمحلك انك ت ‪ view‬الملف يعنى تقرأ بس وبالنسبة لل‬

‫‪ search‬هتستخدم ال ‪ /‬وطبعا لو هتعمل ‪ shift‬بين اى ‪ mode‬والتانى لزم تعدى‬

‫الول على ال ‪ command mode‬الول ولو عايز تجيب تانى نتيجة تضغط حرف‬

‫ال ‪n‬‬

‫ال ‪ small n‬بيجيب ال ‪ next result‬انما ال ‪ capital N‬بيجيب ال ‪Previous Result‬‬

‫وحرف ال ‪ o small‬هيدخلك سطر جديد تحت اللى انت فيه وال حرف ال‬

‫‪ Capital‬هيدخلك سطر فوق اللى انت فيه‬

‫طيب لو عايزتعمل ‪ copy‬لسطر معين فى ال ‪ vim‬فانت هتستخدم ال ‪yank‬‬

‫ودى معناها ‪ ، copy‬هتضغط ‪ yy‬ولو هتعمل ‪ paste‬اضغط ‪p‬‬

‫لو عايز تاخد ‪ copy‬لكذا سطر ال ‪ general syntax‬العام بتاعه ‪ nyy‬حيث ‪ n‬هى‬
‫عدد السطر ‪ ،‬مثل‬
‫‪3yy‬‬

‫‪39‬‬
‫كده هو هياخد ‪ 3‬سطور ‪copy‬‬

‫طيب لو عايز تعمل ‪ cut‬بتعمله عن طريق المر ‪ ، dd‬مثل لو عايز تعمل ‪ cut‬ل‬

‫‪ 3‬سطور يبقى تكتب ‪3dd‬‬

‫انما بقى لو عايز تروح لسطر معين فانت هتدخل فى ال ‪ exec mode‬وتكتب‬
‫رقم السطراللى انت عايز تروحه‬
‫انما بقى لو عايز تعرض السطور بتاعتك وهى مرقمة ‪ ،‬فانت هتروح برضو لل‬

‫‪ execution mode‬وتكتب ‪ set number‬ولو عايز تلغى الترقيم اكتب‬

‫‪set nonumber‬‬

‫انما لو عايز تعمل ‪ undo‬اضغط حرف ال ‪ ، u‬ولو عايز تعمل ‪ delete‬ل ‪word‬‬

‫كاملة ممكن تكتب ‪ ، dw‬انما بقى لو عايز تعمل ‪ delete‬ل حرف اكتب ‪dl‬‬

‫طيب لو عايز مثل تمسح من السطر رقم ‪ 7‬لحد السطر رقم ‪ ، 10‬فى طريقين‬

‫ممكن تخلى ال ‪ cursor‬يروح للسطر رقم ‪ 7‬وتكتب ‪ ، 3dd‬او الحل التانى انك‬

‫تروح لل ‪ execution mode‬وتكتب‬

‫‪7,10d‬‬

‫‪40‬‬
‫انما بقى لو عايز تمسح من اول المكان اللى واقف فيه ال ‪ cursor‬لحد الخر ‪،‬‬

‫روح لل ‪ execution mode‬وقوله‬

‫‪.,$d‬‬
‫وهنا ال ‪ .‬معناها المكان اللى ال ‪ cursor‬واقف فيه‬

‫طيب لو عايز تمسح الملف من بدايته لنهايته اكتب‬


‫‪1,$d‬‬

‫دلوقتى مثل انت لو نفذت ومسحت سطر وعايز تمسح اللى تحته برضو ‪ ،‬بدل‬

‫ما تستخدم ال ‪ dd‬مرتين ‪ ،‬ممكن تستخدم ال ‪ ، .‬ودى معناها ‪redo‬‬

‫وكمان لو عايز تروح لول الملف بطريقة سريعة جدا بدل ما تقعد تروح لل‬

‫‪ execution mode‬وتكتبله رقم السطر ‪ ،‬ل انت ممكن تضغط ‪ ، gg‬ولو هتروح‬

‫للنهاية اضغط ‪G‬‬

‫بص بقى لو عايز تعمل سيرش على كلمة وتعملها ‪ replace‬بكلمة تانية اكتب ال‬

‫‪ command‬ده‬

‫‪41‬‬
‫‪:%s/mail/replaced‬‬

‫انما بقى لو عايز تعمل ‪ replace‬لكل الكلمات اللى عندك فاستخدم فى‬

‫نهايةالمر حرف ال ‪ g‬ومعناها ‪Global‬‬

‫‪:%s/mail/replaced/g‬‬

‫وممكن كمان تقوله اقرا اللى موجود فى ملف معين مثل وخده ‪ Copy‬وحطه‬

‫مكان ما ال ‪ cursor‬واقف‬

‫‪:r file1‬‬
‫وبرضو لو عايز تاخد نسخة من الملف اللى انت فيه وتحطه فى ملف تانى نفذ‬
‫المر ده‬
‫‪:w newfile‬‬
‫طيب لو فى ملف موجود اصل يبقى تحط اتنين >>‬
‫‪w >> backup‬‬

‫كمان من ضمن الفروقات بين ال ‪ vi‬وال ‪ vim‬وهى ان ال ‪ vi‬مش بيلون الكلم‬

‫انما ال ‪ vim‬بيلون وده بينفع فى كتابة الكود ‪ ،‬طب افرض انك عايزتخلى ال‬

‫‪ vim‬ميلونش الكلم‬

‫يبقى تروح لل ‪ execution mode‬وتقوله ‪syntax off‬‬

‫‪42‬‬
‫طيب مثل لو عايز تمسح من المكان اللى واقف فيه ال ‪ cursor‬لخر السطر‬

‫ممكن تقوله ‪ d‬وبعديها ال ‪$‬‬

‫انما بقى لو من مكان ال ‪ cursor‬لبداية السطر بدل ال ‪ $‬اكتب ‪0‬‬

‫طيب لو عايز ترجع لل ‪ shell‬تانى مرة بدون ما تقفل ال ‪ ، vim‬روح لل‬

‫‪ execution mode‬وحط ! وبعدين اكتب المر بتاعك‬

‫هنا فى نقطة مهمة جدا وهى افرض مثل انك عايز تنفذ امر فى ال ‪ shell‬وتحط‬

‫النتيجة بتاعته فى المكان ال ‪ cursor‬واقف فيه تعمل اى ؟؟‬


‫بسيطة المر هيكون كالتالى‬

‫‪:.!ls‬‬

‫‪43‬‬
‫انتهى الجزء الول‬

‫‪44‬‬

You might also like