في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
نظم التشغيل 1، الدرس العملي 9
استكشف أوبونتو من الطرفية (terminal): اعرف طريقك، واقرأ الملفات، ثم أنشئها وانسخها وانقلها واحذفها.
pwd، واستعراض ما حولك بالأوامر ls وls -a وls -lcd باستخدام المسارات المطلقة (absolute) والنسبية (relative)، والرمزين .. و~less وcat وhead وtailtouch وmkdir وmv وcp وrm وrmdirnano، والبحث فيه بالأمر grepالبداية
محث، وأمر، وإجابة
اضغط Super، واكتب terminal، ثم اضغط Enter: تفتح نافذة فيها سطر واحد
student@ubuntu:~$| الجزء | المعنى |
|---|---|
student | المستخدم الذي سجلت الدخول به |
ubuntu | اسم الحاسوب |
~ | المجلد الذي أنت فيه الآن: ~ هو مجلدك الرئيسي (home folder) |
$ | من هنا يبدأ أمرك |
الاسم أولا، ثم الخيارات، ثم الوسائط
| سطر الأمر | الاسم | الخيارات | الوسائط |
|---|---|---|---|
pwd | pwd | لا يوجد | لا يوجد |
ls -l | ls | -l مخرجات مطولة | لا يوجد |
mkdir -p some/other/directories | mkdir | -p إنشاء المجلدات الأب | مسار واحد |
cp -r some again | cp | -r تكراري (recursive) | مصدر ووجهة |
التنقل
pwd وls وcd
تبدأ الطرفية الجديدة في مجلدك الرئيسي
student@ubuntu:~$ pwd
/home/student/، ثم home، ثم student/ هو الجذر (root)، أعلى شجرة المجلدات الواحدة/ the root
|-- etc configuration files
|-- home
| `-- student your home folder (~)
`-- usr
`-- share
`-- localeيطبع ls أسماء ما في المجلد الحالي مرتبة حسب الاسم. وفي مجلدك الرئيسي في آلتك الافتراضية:
student@ubuntu:~$ ls
Desktop Documents Downloads Music Pictures Public snap Templates Videossnap بيانات التطبيقات المثبتة بصيغة snapفي تثبيت سطح المكتب محتويات أكثر هنا، لذلك تكون قائمتك أطول
student@ubuntu:~$ cd /usr/share
student@ubuntu:/usr/share$ ls
apport dot.profile locale polkit-1
base-files dot.profile.md5sums locales profile
base-passwd dpkg man profile.md5sums
bash-completion gcc menu sensible-utils
bug gdb misc staff-group-for-usr-local
common-licenses i18n motd tabset
debconf info nano terminfo
debianutils info.dir networks util-linux
dict keyrings pam zoneinfo
doc libc-bin pam-configs
doc-base libgcrypt20 perl5
dot.bashrc lintian pixmapsلا يحوي الحساب الجديد إلا ملفات الصدفة:
student@ubuntu:~$ ls -a
. .. .bash_logout .bashrc .profile.cache و.config. هو هذا المجلد؛ و.. هو المجلد الأبسطر لكل عنصر: ثلاثة ملفات فارغة ومجلدان
student@ubuntu:~$ ls -l
total 8
-rw-rw-r-- 1 student student 0 Sep 25 11:07 file1
-rw-rw-r-- 1 student student 0 Sep 25 11:07 file2
-rw-rw-r-- 1 student student 0 Sep 25 11:07 file3
drwxrwxr-x 3 student student 4096 Sep 25 11:08 some
drwxrwxr-x 3 student student 4096 Sep 25 11:08 test| العمود | مثال | المعنى |
|---|---|---|
| النوع والأذونات | drwxrwxr-x | d مجلد، و- ملف؛ والأذونات (permissions) لاحقا في المقرر |
| الروابط | 3 | عدد الروابط الصلبة (hard links) |
| المالك والمجموعة | student student | من يملك العنصر |
| الحجم | 4096 | بالبايت؛ وتعرض الملفات الفارغة 0 |
| وقت التعديل | Sep 25 11:08 | آخر تغيير؛ ويأتي الاسم في النهاية |
توقع: ملف أم مجلد؟ المالك؟ الحجم؟ آخر تغيير؟
-rw-rw-r-- 1 student student 46 Sep 25 11:10 file1| المسار المطلق | المسار النسبي | |
|---|---|---|
| البداية | / | اسم، أو . أو .. |
| يقاس من | الجذر / | المجلد الحالي |
| مثال | /usr/share/locale | locale، مكتوبا في /usr/share |
| يعمل من أي مكان؟ | نعم | لا: يعتمد على مكانك |
انتقال واحد بمسار مطلق، ثم انتقالان بمسارين نسبيين
student@ubuntu:~$ cd /usr/share
student@ubuntu:/usr/share$ pwd
/usr/share
student@ubuntu:/usr/share$ cd locale
student@ubuntu:/usr/share/locale$ cd ar/LC_MESSAGES
student@ubuntu:/usr/share/locale/ar/LC_MESSAGES$ pwd
/usr/share/locale/ar/LC_MESSAGESstudent@ubuntu:/usr/share/locale/ar/LC_MESSAGES$ cd ..
student@ubuntu:/usr/share/locale/ar$ pwd
/usr/share/locale/ar
student@ubuntu:/usr/share/locale/ar$ cd
student@ubuntu:~$ pwd
/home/student.. هو المجلد الأب: مستوى واحد إلى الأعلىcd وحده وcd ~ وcd /home/student كلها تعيدك إلى المجلد الرئيسي~ تعني مجلدك الرئيسي في أي أمرأنت في /usr/share/locale/ar/LC_MESSAGES وتكتب cd ../... توقع المجلد الجديد.
student@ubuntu:/usr/share/locale/ar/LC_MESSAGES$ cd ../..
student@ubuntu:/usr/share/locale$ pwd
/usr/share/localeفي مجلدك الرئيسي تكتب cd nothere، ولا يوجد مجلد بهذا الاسم. توقع ما يحدث.
student@ubuntu:~$ cd nothere
bash: cd: nothere: No such file or directory
student@ubuntu:~$الملفات النصية
يحفظ لينكس جزءا كبيرا من النظام في ملفات نصية عادية
student@ubuntu:~$ less /etc/servicesless عارض صفحات (pager): يعرض الملف شاشة واحدة في كل مرة:/etc/services خدمات الشبكة التي يعرفها النظام| المفتاح | الإجراء |
|---|---|
| سهما الأعلى والأسفل | سطر واحد |
Space أو Page Down أو Ctrl+f | صفحة واحدة إلى الأسفل |
Page Up أو Ctrl+b | صفحة واحدة إلى الأعلى |
/ ثم كلمة، ثم Enter؛ وn وN | البحث إلى الأمام؛ والتطابق التالي والسابق |
q | الخروج والعودة إلى المحث |
داخل less /etc/services تكتب /mail وتضغط Enter. توقع السطر الذي يصل إلى الأعلى.
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
whois 43/tcp nicnameتوقع: إلى أين ينقلك n؟
mailq 174/tcp # Mailer transport queue for Zmailer
xdmcp 177/udp # X Display Manager Control Protocol
bgp 179/tcp # Border Gateway Protocolتطبع هذه الأوامر ثم تعود إلى المحث فورا.
| الأمر | يطبع |
|---|---|
cat file | الملف كله |
head file | أول 10 أسطر |
tail file | آخر 10 أسطر |
عد الأسطر أدناه: 10 أسطر بالضبط، ومنها السطر الفارغ.
student@ubuntu:~$ tail /etc/services
sgi-cad 17004/tcp # Cluster Admin daemon
binkp 24554/tcp # binkp fidonet protocol
asp 27374/tcp # Address Search Protocol
asp 27374/udp
csync2 30865/tcp # cluster synchronization tool
dircproxy 57000/tcp # Detachable IRC Proxy
tfido 60177/tcp # fidonet EMSI over telnet
fido 60179/tcp # fidonet EMSI over TCP
# Local servicesالإنشاء والنسخ والحذف
اعمل في مجلدك الرئيسي، المكان الوحيد الذي يسمح لك فيه بإنشاء الملفات
student@ubuntu:~$ touch file1
student@ubuntu:~$ ls
file1
student@ubuntu:~$ touch /home/student/file2 /home/student/file3
student@ubuntu:~$ ls
file1 file2 file3الملف file3 موجود من قبل. توقع ما يفعله touch file3 مرة ثانية.
student@ubuntu:~$ ls -l file3
-rw-rw-r-- 1 student student 0 Sep 25 11:07 file3
student@ubuntu:~$ touch file3
student@ubuntu:~$ ls -l file3
-rw-rw-r-- 1 student student 0 Sep 25 11:10 file3ينجح mkdir test ثم mkdir test/example كلاهما. توقع نتيجة mkdir some/other/directories حين لا يوجد some.
student@ubuntu:~$ mkdir some/other/directories
mkdir: cannot create directory 'some/other/directories': No such file or directory
student@ubuntu:~$ mkdir -p some/other/directories
student@ubuntu:~$ ls
file1 file2 file3 some testاقرأه هكذا: انقل من هنا إلى هناك
student@ubuntu:~$ mv file1 test
student@ubuntu:~$ ls
file2 file3 some test
student@ubuntu:~$ ls test
example file1
student@ubuntu:~$ mv test/file1 .
student@ubuntu:~$ ls
file1 file2 file3 some test
student@ubuntu:~$ mv test testing
student@ubuntu:~$ ls
file1 file2 file3 some testingstudent@ubuntu:~$ cp file3 file4
student@ubuntu:~$ ls
file1 file2 file3 file4 some testingالعنصر some مجلد. توقع ما يفعله cp some again.
student@ubuntu:~$ cp some again
cp: -r not specified; omitting directory 'some'
student@ubuntu:~$ cp -r some again
student@ubuntu:~$ ls again
other
student@ubuntu:~$ cp file1 again
student@ubuntu:~$ ls again
file1 otherيحذف rm الملفات، ويحذف rmdir المجلدات الفارغة. توقع نتيجة rmdir some، بينما ما زال some يحوي other/directories.
student@ubuntu:~$ rm file4
student@ubuntu:~$ rmdir testing/examplestudent@ubuntu:~$ rmdir some
rmdir: failed to remove 'some': Directory not emptyفي الأمثلة أدناه، يحوي المجلد ~/projects ملفين فارغين، هما labs وtasklist
-i (interactive، أي تفاعلي) يسأل قبل كل حذف: y يحذف، وn يبقي الملفrm يسأل افتراضيا؛ أما أوبونتو فلا-f (force، أي الإجبار) لا يسأل أبدا: مريح لملفات كثيرة، وخطر للسبب نفسهstudent@ubuntu:~/projects$ rm -i labs
rm: remove regular empty file 'labs'? n
student@ubuntu:~/projects$ ls
labs tasklistأدوات النصوص
nano وgrep، وجلسة كاملة
nano file1، ثم سطران مكتوبان
GNU nano 7.2 file1 *
Hello there.
Here is some text.
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute ^C Location
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify ^/ Go To Line* بعد الاسم: تغييرات لم تحفظ بعد| المفاتيح | ما يحدث |
|---|---|
Ctrl+O، ثم Enter | الكتابة إلى الملف (الحفظ): يؤكد nano بالرسالة [ Wrote 2 lines ] |
Ctrl+X | الخروج؛ ومع وجود تغييرات غير محفوظة يسأل Save modified buffer? |
Y أو N | الحفظ والخروج، أو تجاهل التغييرات |
Ctrl+C | إلغاء السؤال والبقاء في المحرر |
أضيف سطر ثالث ثم حفظ الملف. توقع الحجم الذي يعرضه ls -l.
student@ubuntu:~$ cat file1
Hello there.
Here is some text.
Another line.في المجلد ~/projects، أصبح الملف tasklist يحوي سطرا واحدا، كتب بالمحرر nano
student@ubuntu:~/projects$ cat tasklist
Hello World
student@ubuntu:~/projects$ grep ll tasklist
Hello Worldgrep كل سطر يحوي النمط (pattern)ll موجود داخل Hello: وجزء من كلمة يكفيgrep شيئاتوقع نتيجة grep hello tasklist، ثم grep -i hello tasklist.
student@ubuntu:~/projects$ grep hello tasklist
student@ubuntu:~/projects$ grep -i hello tasklist
Hello Worldابحث في مخرجات أمر آخر
student@ubuntu:~/projects$ ls /etc | grep -i net
issue.net
networksمن المجلد الرئيسي لحساب جديد: الجلسة التي تبني المجلد ~/projects المستخدم في شريحتي rm -i وgrep
mkdir projects وmkdir -p 2022/Q1: مجلدات للعملrmdir لمجلد فارغ؛ وrm -R لمجلد يحوي ملفاcd /etc، ثم العودة إلى المجلد الرئيسي بثلاث طرق: cd /home/student وcd ~ وcdcd projects، ثم touch لثلاثة ملفات وللملف .secretfile، ثم قارن ls بالأمر ls -amv لنقل ملف إلى 2022، وmv لإعادة التسمية، وcp للنسخ إلى ~/2022/Q1، وrm لحذف الملف المخفيnano لكتابة سطر في tasklist، ثم البحث فيه بالأمر grepدورك
نحو 30 دقيقة: أربعة تمارين على الورق، ثم مهام في آلتك الافتراضية
نحو 4 دقائق
ابدأ في /home/student. اكتب ما يطبعه كل pwd.
cd /usr/share
cd locale/ar
cd ..
pwd
cd ../..
pwd
cd
pwdstudent@ubuntu:/usr/share/locale$ pwd
/usr/share/locale
student@ubuntu:/usr$ pwd
/usr
student@ubuntu:~$ pwd
/home/studentنحو 7 دقائق
تنفذ في مجلدك الرئيسي بالترتيب. ارسم كل مجلد وكل ملف في lab9.
mkdir lab9
cd lab9
mkdir -p notes/week9
touch a.txt b.txt
mv a.txt notes
cp b.txt notes/week9
mv b.txt c.txt
cp -r notes backup
rm notes/a.txtlab9
|-- backup
| |-- a.txt
| `-- week9
| `-- b.txt
|-- c.txt
`-- notes
`-- week9
`-- b.txtنحو 5 دقائق
ما زلت في lab9 بعد التمرين 2. كل أمر يفشل: اذكر السبب، وما الذي ينجح بدلا منه.
rmdir backupcp notes copymkdir x/ycd c.txtrm backup| الأمر | سبب الفشل | استخدم بدلا منه |
|---|---|---|
rmdir backup | Directory not empty | rm -r backup |
cp notes copy | -r not specified; omitting directory | cp -r notes copy |
mkdir x/y | x غير موجود: No such file or directory | mkdir -p x/y |
cd c.txt | Not a directory: لا يدخل cd إلا المجلدات | cat c.txt لقراءته |
rm backup | Is a directory | rm -r backup |
نحو 5 دقائق
أمر واحد لكل مهمة
draft.txt إلى final.txtreports/2026/sep؛ ولا يوجد حتى reportssite إلى site-backup~/lab9/reports/2026، اصعد إلى ~/lab9/reportstodo التي فيها finish أو Finish1. mv draft.txt final.txt
2. mkdir -p reports/2026/sep
3. cp -r site site-backup
4. cd ..
5. ls -la
6. grep -i finish todoنحو 9 دقائق
تحقق من كل خطوة بالأمر ls أو pwd
pwd، ثم ls -a في المجلد الرئيسي: ما الملفات المخفية عندك؟mkdir -p lab9/notes/week9، ثم touch للملفين a.txt وb.txt في lab9lab9، شغل باقي التمرين 2 وتحقق من رسمك بالأمر lsnano todo: buy milk وFinish OS lab وbook the lab وfinish reportgrep finish todo وgrep -i finish todo وgrep lab todo: اشرح كل سطرless /etc/services، وابحث عن http، ثم n مرتين، ثم q؛ ثم rm -r lab9 وrm todostudent@ubuntu:~$ grep finish todo
finish report
student@ubuntu:~$ grep -i finish todo
Finish OS lab
finish report
student@ubuntu:~$ grep lab todo
Finish OS lab
book the lab.bash_logout و.bashrc و.profile، ومعها . و..؛ ويضيف سطح المكتب غيرها، مثل .cache و.configgrep finish: السطر المكتوب بحروف صغيرة فقط؛ ويطابق الخيار -i أيضا Finish OS labgrep lab: السطران اللذان يحويان labpwd بمكانك، وls بما فيه، وينقلك cd: .. إلى الأعلى، و~ إلى المجلد الرئيسي/؛ ويبدأ المسار النسبي من مكانكtouch وmkdir -p؛ وينقل mv ويعيد التسمية؛ وينسخ cp -r المجلداتrm وrm -r إلى الأبد: لا يوجد تراجعMahmoud Abas|أوامر لينكس، الجزء 1