الدورة المقابلة https://www.bilibili.com/video/BV18p4y167Md
دورة نظام التشغيل بالمراسلة محاضرات عملية لنظام التشغيل 45
جدول المحتويات CSAPP يأتي الفهم المتعمق لأنظمة الكمبيوتر من الفصل المفتوح لرئيس Microsoft
yangminz
https://www.bilibili.com/video/BV17K4y1N7Q2 (تحديث)
جدول المحتويات سلسلة البرمجة كائنية التوجه C++ من سلسلة البرمجة الكائنية التوجه لـ Master Hou Jie's CPP (مكتملة)
مقدمة للاستخدام الأساسي وخيارات الأوامر.
الرجل هو اختصار للدليل الذي يعرض المعلومات المحددة للتعليمات.
عند تنفيذ man date، يظهر DATE(1) ويمثل الرقم الموجود به نوع التعليمات شائعة الاستخدام وأنواعها هي كما يلي:
اسم الرمز | يكتب |
---|---|
1 | التعليمات أو الملفات القابلة للتنفيذ التي يمكن للمستخدمين تشغيلها في بيئة الصدفة |
5 | ملف التكوين |
8 | الأوامر الإدارية متاحة لمسؤولي النظام |
المعلومات تشبه الرجل، لكن المعلومات تقسم المستند إلى صفحات، ويمكن القفز على كل صفحة.
يقوم /usr/share/doc بتخزين مجموعة كاملة من الوثائق الخاصة بالبرنامج.
قبل إيقاف التشغيل، تحتاج إلى استخدام الأمر who للتحقق مما إذا كان هناك مستخدمون آخرون متصلون بالإنترنت.
من أجل تسريع قراءة وكتابة ملفات القرص، لن تتم مزامنة بيانات الملف الموجودة في الذاكرة مع القرص على الفور، لذلك يلزم إجراء عملية مزامنة قبل إيقاف التشغيل.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
يتم الإعلان عن المسار إلى الملف القابل للتنفيذ في PATH، مفصولاً بـ :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
يسمح Sudo للمستخدمين العاديين باستخدام أوامر الجذر القابلة للتنفيذ، ولكن فقط المستخدمين المضافين في ملف التكوين /etc/sudoers يمكنهم استخدام هذا الأمر.
يعد RPM وDPKG النوعين الأكثر شيوعًا لأدوات إدارة حزم البرامج:
توزيعة Linux هي نسخة متكاملة من Linux kernel وبرامج التطبيقات المختلفة. أدوات إدارة الحزم تعتمد على التوزيعات التجارية التوزيعات المجتمعية RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
طلب | تأثير |
---|---|
:ث | الكتابة على القرص |
:ث! | يفرض الكتابة على القرص عندما يكون الملف للقراءة فقط. تعتمد إمكانية كتابته على أذونات المستخدم في الملف. |
:س | يترك |
:س! | اضطر إلى المغادرة دون إنقاذ |
:wq | الكتابة على القرص وترك |
:ووق! | فرض الكتابة على القرص ثم الخروج |
يهدف مشروع جنو، المترجم بالمشروع الأصلي، إلى إنشاء نظام تشغيل مجاني تمامًا يسمى جنو، ويتم إصدار برنامج محتواه بالكامل تحت رخصة GPL. الاسم الكامل لـ GPL هو GNU General Public License، والذي يتضمن المحتويات التالية: حرية تشغيل هذا البرنامج لأي غرض، حرية إعادة إنتاجه، حرية تحسين هذا البرنامج وإصدار التحسينات علنًا. ¶اختر ترخيصًا مفتوح المصدر (يفتح نافذة جديدة) كيف تختار ترخيصًا مفتوح المصدر (يفتح نافذة جديدة)؟
يرمز IDE (ATA) إلى Advanced Technology Attachment. الحد الأقصى لسرعة الواجهة هو 133 ميجابايت/ثانية لأن الأداء المضاد للتداخل لكابل المنفذ المتوازي ضعيف للغاية ويشغل الكابل مساحة كبيرة، وهو ما لا يؤدي إلى ارتفاع درجة الحرارة الداخلية. تبديد الكمبيوتر، تم استبداله تدريجياً بـ SATA.
الاسم الكامل لـ SATA هو Serial ATA، وهي واجهة ATA تستخدم منفذًا تسلسليًا، وتتميز بمقاومة قوية للتداخل، ولها متطلبات أقل بكثير لطول كابل البيانات من ATA، وتدعم وظائف قابلة للتبديل السريع وغيرها. تبلغ سرعة واجهة SATA-II 300 ميجا بايت/ثانية، بينما يمكن أن يصل معيار SATA-III الجديد إلى سرعة نقل تبلغ 600 ميجا بايت/ثانية. تعد كابلات البيانات SATA أيضًا أرق بكثير من ATA، مما يفيد في دوران الهواء في الهيكل ويجعل تنظيم الكابلات أسهل.
الاسم الكامل لـ SCSI هو واجهة نظام الكمبيوتر الصغيرة، وقد شهدت عدة أجيال من التطوير، بدءًا من SCSI-II المبكر وحتى Ultra320 SCSI الحالي وقناة الألياف، مع أنواع مختلفة من الواجهات. تُستخدم محركات الأقراص الثابتة SCSI على نطاق واسع في أجهزة الكمبيوتر الشخصية والخوادم على مستوى محطات العمل، ولذلك، فهي تستخدم تقنيات أكثر تقدمًا، مثل سرعة القرص العالية التي تبلغ 15000 دورة في الدقيقة، ولها استخدام أقل لوحدة المعالجة المركزية أثناء النقل من محركات الأقراص الصلبة ATA وSATA بنفس السعة وأكثر تكلفة.
يتم التعامل مع كل قطعة من الأجهزة في Linux كملف، بما في ذلك الأقراص. تتم تسمية الأقراص وفقًا لنوع واجهة القرص. أما أسماء ملفات القرص الشائعة فهي كما يلي:
تحديد الرقم التسلسلي بعد اسم الملف يرتبط بالترتيب الذي يكتشف به النظام الأقراص، ولا علاقة له بموضع الفتحة التي يتم إدخال الأقراص فيها.
هناك تنسيقان رئيسيان لجداول تقسيم القرص، أحدهما هو جدول أقسام MBR الأكثر تقييدًا، والآخر هو جدول أقسام GPT الأحدث والأقل تقييدًا.
في MBR، القطاع الأول هو الأكثر أهمية، فهو يحتوي على سجل التمهيد الرئيسي (MBR) وجدول الأقسام، ويشغل سجل التمهيد الرئيسي 446 بايت وجدول الأقسام 64 بايت.
يبلغ حجم جدول الأقسام 64 بايت فقط ويمكنه تخزين ما يصل إلى 4 أقسام فقط، وهي القسم الأساسي (الأساسي) والقسم الموسع (الموسع). يوجد قسم موسع واحد فقط، يستخدم قطاعات أخرى لتسجيل جداول أقسام إضافية، لذلك يمكن تقسيم المزيد من الأقسام من خلال الأقسام الموسعة.
يتعامل Linux أيضًا مع الأقسام كملفات. طريقة تسمية ملفات الأقسام هي: اسم ملف القرص + رقمه، مثل /dev/sda1. لاحظ أن ترقيم الأقسام المنطقية يبدأ من 5.
تحتوي الأقراص المختلفة على أحجام قطاعات مختلفة، على سبيل المثال 512 بايت و4 كيلو بايت لأحدث الأقراص. لكي تكون متوافقة مع جميع الأقراص، تستخدم GPT عناوين الكتل المنطقية (عنوان الكتلة المنطقية، LBA) في قطاعات محددة. الحجم الافتراضي لـ LBA هو 512 بايت.
تسجل الكتلة الأولى من GPT سجل التمهيد الرئيسي (MBR)، تليها 33 كتلة لتسجيل معلومات القسم، ويتم استخدام آخر 33 كتلة لعمل نسخة احتياطية من معلومات القسم. أول هذه الكتل الـ 33 هو سجل رأس GPT، حيث يسجل هذا الجزء موقع وحجم جدول الأقسام نفسه وموقع قسم النسخ الاحتياطي، كما أنه يضع رمز التحقق (CRC32) الخاص بجدول الأقسام استخدم رمز التحقق هذا لتحديد ما إذا كانت GPT صحيحة أم لا. إذا كان هناك خطأ، يمكنك استخدام قسم النسخ الاحتياطي لاستعادته.
ليس لدى GPT مفهوم الأقسام الموسعة، فهي جميعها أقسام أساسية ويمكن تقسيم كل LAB إلى 4 أقسام، بحيث يمكن تقسيم إجمالي 4 * 32 = 128 قسمًا.
لا يدعم MBR محركات الأقراص الثابتة التي تزيد سعتها عن 2.2 تيرابايت، بينما يدعم GPT ما يصل إلى 233 تيرابايت = 8 زيتا بايت.
BIOS (نظام الإدخال/الإخراج الأساسي) هو برنامج ثابت (برنامج مضمن في الأجهزة). يتم تخزين برنامج BIOS في ذاكرة للقراءة فقط والتي لن تفقد محتواها بعد انقطاع التيار الكهربائي.
BIOS هو أول برنامج يتم تنفيذه بواسطة الكمبيوتر عند تشغيله. يعرف هذا البرنامج القرص الذي يمكن تمهيده ويقرأ سجل التمهيد الرئيسي (MBR) للقطاع الأول من القرص برنامج إدارة التمهيد، سيقوم برنامج إدارة التمهيد هذا بتحميل الملفات الأساسية لنظام التشغيل.
يوفر مدير التمهيد في سجل التمهيد الرئيسي (MBR) الوظائف التالية:
القائمة، وتحميل الملفات الأساسية، ونقلها إلى برامج إدارة التمهيد الأخرى. يمكن استخدام وظيفة النقل لتنفيذ التمهيد المتعدد. ما عليك سوى تثبيت برنامج إدارة التمهيد لنظام تشغيل آخر على قطاع التمهيد لقسم آخر. عند بدء تشغيل برنامج إدارة التمهيد، يمكنك اختيار بدء تشغيل نظام التشغيل الحالي أو ابدأ تشغيل نظام التشغيل الحالي من خلال القائمة، ثم انقله إلى برامج إدارة التمهيد الأخرى لبدء نظام تشغيل آخر.
في الشكل أدناه، يوفر برنامج إدارة التمهيد في سجل التمهيد الرئيسي (MBR) للقطاع الأول قائمتين: M1، M2. يشير M1 إلى نظام التشغيل Windows، ويشير M2 إلى قطاعات التمهيد للأقسام الأخرى، والتي تحتوي على يوفر برنامج آخر لإدارة التمهيد قائمة تشير إلى Linux.
لتثبيت نظام التشغيل المتعدد، من الأفضل تثبيت Windows أولاً ثم Linux. نظرًا لأنه سيتم الكتابة فوق سجل التمهيد الرئيسي (MBR) عند تثبيت Windows، يمكن لنظام التشغيل Linux اختيار تثبيت برنامج إدارة التمهيد في سجل التمهيد الرئيسي (MBR) أو قطاع التمهيد للأقسام الأخرى، ويمكنه ضبط قائمة برنامج إدارة التمهيد .
لا يستطيع BIOS قراءة جدول أقسام GPT، لكن UEFI يمكنه ذلك.
تنسيق القسم هو إنشاء نظام ملفات على القسم. يمكن عادةً تهيئة القسم باستخدام نظام ملفات واحد فقط، ولكن يمكن لتقنيات مثل مصفوفات الأقراص تهيئة القسم باستخدام أنظمة ملفات متعددة.
أهم المكونات هي كما يلي:
بالإضافة إلى ذلك، فهو يشمل أيضًا:
وهذا يعني أن الكتلة التي يوجد بها محتوى الملف متناثرة للغاية.
أحجام الكتل المدعومة في نظام الملفات Ext2 هي 1K و2K و4K. تحدد الأحجام المختلفة الحد الأقصى لحجم الملف الواحد ونظام الملفات.
مقاس | 1 كيلو بايت | 2 كيلو بايت | 4 كيلو بايت |
---|---|---|---|
أكبر ملف واحد | 16 جيجابايت | 256 جيجابايت | 2 تيرابايت |
الحد الأقصى لنظام الملفات 2 تيرابايت 8 تيرابايت 16 تيرابايت يمكن استخدام كتلة واحدة فقط من خلال ملف واحد، ويتم إهدار الجزء غير المستخدم مباشرة. لذلك، إذا كنت بحاجة إلى تخزين عدد كبير من الملفات الصغيرة، فمن الأفضل اختيار كتلة أصغر.
يحتوي inode على وجه التحديد على المعلومات التالية:
يتميز inode بالخصائص التالية:
يسجل inode رقم الكتلة حيث يوجد محتوى الملف، ولكن كل كتلة صغيرة جدًا ويتطلب الملف الكبير مئات الآلاف من الكتل. يحتوي inode على حجم محدود ولا يمكنه الإشارة مباشرة إلى العديد من أرقام الكتل. ولذلك تم إدخال المراجع غير المباشرة، والمراجع المزدوجة غير المباشرة، والثلاثية غير المباشرة. المرجع غير المباشر يعني أن الكتلة المرجعية المسجلة بواسطة inode تسجل المعلومات المرجعية.
عند إنشاء دليل، يتم تخصيص inode وكتلة واحدة على الأقل. المحتوى المسجل بواسطة الكتلة هو رقم inode واسم الملف لجميع الملفات الموجودة في الدليل. يمكن ملاحظة أن inode الملف نفسه لا يسجل اسم الملف، ولكن يتم تسجيل اسم الملف في الدليل، لذلك، ترتبط العمليات مثل إضافة الملفات وحذف الملفات وتغيير أسماء الملفات بإذن w الدليل.
إذا حدث انقطاع مفاجئ للطاقة، فسيحدث خطأ في نظام الملفات. على سبيل المثال، تم تعديل الصورة النقطية للكتلة فقط قبل انقطاع التيار الكهربائي، ولكن لم تتم كتابة البيانات فعليًا في الكتلة. يقدم نظام الملفات ext3/ext4 وظيفة سجل يمكن استخدامها لإصلاح نظام الملفات.
يستخدم التثبيت الدليل كنقطة دخول لنظام الملفات، أي أنه بعد إدخال الدليل، يمكن قراءة بيانات نظام الملفات.
من أجل الحفاظ على الاتساق في بنية الدليل لتوزيعات Linux المختلفة، يحدد معيار التسلسل الهرمي لنظام الملفات (FHS) بنية دليل Linux.
الدلائل الثلاثة الأساسية هي كما يلي:
هناك ثلاثة أنواع من المستخدمين: أصحاب الملفات والمجموعات وغيرهم من المستخدمين الذين لديهم أذونات ملفات مختلفة.
عند استخدام ls لعرض ملف، سيتم عرض معلومات الملف، مثل drwxr-xr-x. 3 root root 17 May 6 00:14 .config
شرح هذه المعلومات كما يلي:
أنواع الملفات الشائعة ومعانيها هي:
في حقل إذن الملف المكون من 9 أرقام، كل 3 أرقام موجودة في مجموعة، وهناك 3 مجموعات في المجموع، تمثل كل مجموعة أذونات الملف لمالك الملف والمجموعة التي ينتمي إليها والأشخاص الآخرين. الأرقام الثلاثة في مجموعة الأذونات هي أذونات r وw وx، مما يشير إلى أنها قابلة للقراءة والكتابة والقابلة للتنفيذ.
هناك ثلاثة أنواع من أوقات الملفات:
سرد معلومات الملف أو الدليل. معلومات الدليل هي الملفات الموجودة فيه.
# # ls [-aAdfFhilnrRSt] file|dir
-a : 列出全部的文件
-d : 仅列出目录本身
-l : 以长数据串行列出,包含文件的属性与权限等等数据
cd [相对路径或绝对路径]
# # mkdir [-mp] 目录名称
-m : 配置目录权限
-p : 递归创建目录
rmdir [-p] 目录名称
-p : 递归删除目录
# # touch [-acdmt] filename
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date= "日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
انسخ الملف. إذا كان هناك أكثر من ملفين مصدر، فيجب أن يكون الملف الوجهة دليلاً.
cp [-adfilprsu] source destination
-a : 相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
-d : 若来源文件为链接文件,则复制链接文件属性而非文件本身
-i : 若目标文件已经存在时,在覆盖前会先询问
-p : 连同文件的属性一起复制过去
-r : 递归持续复制
-u : destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all : 除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
# # rm [-fir] 文件或目录
-r : 递归删除
نقل الملفات.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
يمكن تمثيل مجموعة من الأذونات بالأرقام، في هذا الوقت، تعتبر البتات الثلاثة لمجموعة الأذونات بمثابة بتات من رقم ثنائي. وزن كل بت من اليسار إلى اليمين هو 4 و2 و1 هو الوزن الرقمي المقابل لكل إذن، والقيم هي r: 4، w: 2، x: 1.
# # chmod [-R] xyz dirname/filename
مثال: قم بتغيير أذونات ملف .bashrc إلى -rwxr-xr--.
# # chmod 754 .bashrc
يمكنك أيضًا استخدام الرموز لتعيين الأذونات.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
مثال: إضافة أذونات الكتابة إلى ملف .bashrc لجميع المستخدمين.
# # chmod a+w .bashrc
**لا يتم تخزين أسماء الملفات في محتويات الملف، ولكن في الدليل الذي يوجد به الملف. **لذلك، فإن الحصول على إذن w على الملف لا يمكنه تعديل اسم الملف. تقوم الدلائل بتخزين قوائم الملفات، وأذونات الدليل هي الأذونات الموجودة في قائمة الملفات الخاصة به.
** لذلك، فإن إذن r للدليل يعني أنه يمكن قراءة قائمة الملفات؛ ويعني إذن w أنه يمكن تعديل قائمة الملفات، وعلى وجه التحديد، يمكن إضافة الملفات وحذفها وتعديل اسم الملف الدليل هو دليل عمل، ويمكن أن يجعل إذن x الدليل دليل عمل، وهو أساس أذونات r وw. إذا لم يكن من الممكن جعل الدليل دليل عمل، فلن تكون هناك طريقة لقراءة قائمة الملفات أو تعديلها قائمة الملفات. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
قم بإنشاء إدخال في الدليل لتسجيل اسم الملف ورقم inode. هذا inode هو inode للملف المصدر. احذف أي إدخال وسيظل الملف موجودًا، طالما أن عدد المراجع ليس صفرًا. لديه القيود التالية: لا يمكنه توسيع نطاق أنظمة الملفات ولا يمكنه ربط الدلائل.
# # ln /etc/crontab .
# # ll -i /etc/crontab crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
يحفظ ملف الارتباط الرمزي المسار المطلق للملف المصدر، وسيكون موجودًا في الملف المصدر عند القراءة، ويمكن فهمه على أنه اختصار لنظام التشغيل Windows. عند حذف الملف المصدر، لا يمكن فتح الملف المرتبط. يمكن إجراء الروابط إلى الدلائل.
# # ll -i /etc/crontab /root/crontab2
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 - > /etc/crontab
# # cat [-AbEnTv] filename
-n : 打印出行号,连同空白行也会有行号,-b 不会
# # head [-n number] filename
-n : 后面接数字,代表显示几行的意思
بحث الأوامر.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
بحث الملف. إنه أسرع لأنه يبحث فقط في عدد قليل من الأدلة المحددة. ## أين [-bmsu] dirname/filename
بحث الملف. يمكنك البحث باستخدام الكلمات الرئيسية أو التعبيرات العادية. يستخدم تحديد الموقع قاعدة البيانات /var/lib/mlocate/ للبحث، ويتم تخزينه في الذاكرة وتحديثه مرة واحدة يوميًا، لذلك لا يمكنك استخدام تحديد الموقع للبحث عن الملفات التي تم إنشاؤها حديثًا. يمكنك استخدام Updateb لتحديث قاعدة البيانات على الفور.
# # locate [-ir] keyword
-r: 正则表达式
بحث الملف. يمكنك البحث باستخدام خصائص الملف وأذوناته.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) الخيارات المتعلقة بالوقت
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) الخيارات المتعلقة بأصحاب الملفات والمجموعات
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) الخيارات المتعلقة بأذونات الملفات وأسماءها
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
هناك العديد من أسماء الملفات المضغوطة في نظام Linux، ومن أشهرها ما يلي:
امتداد | ضاغط |
---|---|
*.ز | ضغط |
*.أَزِيز | أَزِيز |
*.gz | com.gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.قطران | لا يتم ضغط البيانات التي تم حزمها بواسطة برنامج tar. |
*.tar.gz | الملفات المجمعة بواسطة برنامج tar والمضغوطة بواسطة gzip |
*.tar.bz2 | الملفات المجمعة بواسطة برنامج tar والمضغوطة بواسطة bzip2 |
*.tar.xz | الملفات المجمعة بواسطة برنامج tar والمضغوطة بواسطة xz |
gzip هو أمر الضغط الأكثر استخدامًا في Linux ويمكنه فك ضغط الملفات المضغوطة بواسطة الضغط وzip وgzip.
بعد ضغط gzip، لم يعد الملف المصدر موجودًا. هناك 9 مستويات ضغط مختلفة متاحة. يمكنك استخدام zcat وzmore وzless لقراءة محتويات الملفات المضغوطة.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
يوفر نسبة ضغط أعلى من gzip. عرض الأوامر: bzcat، bzmore، bzless، bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
يوفر نسبة ضغط أفضل من bzip2. يمكن ملاحظة أن نسب ضغط gzip وbzip2 وxz يتم تحسينها باستمرار. ومع ذلك، تجدر الإشارة إلى أنه كلما زادت نسبة الضغط، كلما زاد وقت الضغط.
عرض الأوامر: xzcat، xzmore، xzless، xzgrep.
$ xz [-dtlkc#] filename
يمكن لأمر الضغط ضغط ملف واحد فقط، بينما يمكن للحزمة حزم ملفات متعددة في ملف واحد كبير. لا يمكن استخدام Tar للتغليف فحسب، بل يمكنك أيضًا استخدام gip وbzip2 وxz لضغط الملفات المعبأة.
$ tar [-z | -j | -J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩
$ tar [-z | -j | -J] [tv] [-f 已有的 tar 文件] ==查看
$ tar [-z | -j | -J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
-z : 使用 zip;
-j : 使用 bzip2;
-J : 使用 xz;
-c : 新建打包文件;
-t : 查看打包文件里面有哪些文件;
-x : 解打包或解压缩的功能;
-v : 在压缩/解压缩的过程中,显示正在处理的文件名;
-f : filename: 要处理的文件;
-C 目录 : 在特定目录解压缩。
الاستخدام | طلب |
---|---|
حزمة وضغط | tar -jcv -f filename.tar.bz2 اسم الملف أو الدليل المراد ضغطه |
يفحص | القطران -jtv -f filename.tar.bz2 |
بفك | tar -jxv -f filename.tar.bz2 -C دليل لفك الضغط |
يمكنك أن تطلب من النواة تقديم الخدمات من خلال Shell، و Bash هو أحد أنواع Shell.
سجل الأوامر: تسجيل الأوامر المستخدمة وإكمال الأوامر والملفات: مفتاح الاختصار: علامة التبويب تسمية مستعارة: على سبيل المثال، lm هو الاسم المستعار لنصوص ls -al Shell بدل: على سبيل المثال، ls -l /usr/bin/X* يسرد /usr/ bin جميع الملفات أدناه بدءًا من X
$
قبل المتغير، أو يمكنك استخدام النموذج ${}
;$ x=abc
$ echo $x
$ echo ${x}
إذا كانت هناك مسافات في المحتوى المتغير، فيجب استخدام علامات الاقتباس المزدوجة أو علامات الاقتباس المفردة.
x="lang is $LANG"
، ثم قيمة x is lang هي zh_TW.UTF-8؛x='lang is $LANG'
، ثم قيمة x lang هي $LANG
. 指令
أو $(指令)
لتعيين نتائج تنفيذ التعليمات للمتغيرات. على سبيل المثال، version=$(uname -r)، قيمة الإصدار هي 4.15.0-22-generic. يمكنك استخدام أمر التصدير لتحويل المتغيرات المخصصة إلى متغيرات البيئة. يمكن استخدام متغيرات البيئة في البرامج الفرعية. البرامج الفرعية المزعومة هي برامج فرعية تم إنشاؤها بواسطة Bash الحالي. يمكن تعريف متغيرات Bash كمصفوفات وأرقام صحيحة. لاحظ أن الأنواع الرقمية لا تحتوي على أرقام الفاصلة العائمة. إذا لم يتم التصريح عنها، فالافتراضي هو نوع السلسلة. يتم الإعلان عن المتغيرات باستخدام أمر التصريح: $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
استخدم [ ] لفهرسة مصفوفة:
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
وقم بتنفيذها.تشير إعادة التوجيه إلى استخدام الملفات بدلاً من الإدخال القياسي والإخراج القياسي وإخراج الأخطاء القياسية.
1 | شفرة | مشغل |
---|---|---|
الإدخال القياسي (Stdin) | 0 | < أو << |
الإخراج القياسي (Stdout) | 1 | > أو >> |
إخراج الخطأ القياسي (stderr) | 2 | 2> أو 2 >> |
ومن بينها، يشير سهم واحد إلى إعادة التوجيه بطريقة الكتابة الفوقية، بينما يشير السهمان إلى إعادة التوجيه بطريقة الإلحاق.
يمكن إعادة توجيه المخرجات القياسية غير الضرورية وإخراج الأخطاء القياسية إلى /dev/null، وهو ما يعادل رميها في سلة المهملات. إذا كنت بحاجة إلى إعادة توجيه الإخراج القياسي وإخراج الخطأ القياسي إلى ملف في نفس الوقت، فأنت بحاجة إلى تحويل مخرج واحد إلى مخرج آخر. على سبيل المثال، 2>&1 يعني تحويل إخراج الخطأ القياسي إلى إخراج قياسي.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
خط الأنابيب هو استخدام الإخراج القياسي لأمر واحد كما يمكن استخدام الإدخال القياسي لأمر آخر عندما تحتاج البيانات إلى المعالجة في خطوات متعددة قبل أن نتمكن من الحصول على ما نريد.
استخدم |. بين الأوامر لفصل أوامر خطوط الأنابيب الفردية.
$ ls -al /etc | less
يقوم القطع بتقسيم البيانات واستخراج الجزء المطلوب. تتم عملية التجزئة سطرًا تلو الآخر.
$ cut
-d : 分隔符
-f : 经过 -d 分隔后,使用 -f n 取出第 n 个区间
-c : 以字符为单位取出区间
$ last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
$ last | cut -d ' ' -f 1
$ export
declare -x HISTCONTROL= " ignoredups "
declare -x HISTSIZE= " 1000 "
declare -x HOME= " /home/dmtsai "
declare -x HOSTNAME= " study.centos.vbird "
.....(其他省略).....
$ export | cut -c 12-
تستخدم للفرز.
$ sort [-fbMnrtuk] [file or stdin]
-f : 忽略大小写
-b : 忽略最前面的空格
-M : 以月份的名字来排序,例如 JAN,DEC
-n : 使用数字
-r : 反向排序
-u : 相当于 unique,重复的内容只出现一次
-t : 分隔符,默认为 tab
-k : 指定排序的区间
$ cat /etc/passwd | sort -t ' : ' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
يمكنك أخذ بيانات مكررة واحدة فقط.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
ستؤدي إعادة توجيه الإخراج إلى إعادة توجيه محتوى الإخراج إلى ملف، ولا يمكن لـ Tee إكمال هذه الوظيفة فحسب، بل يمكنه أيضًا الحفاظ على الإخراج على الشاشة. أي أنه باستخدام الأمر Tee، يتم إرسال الإخراج إلى كل من الملف والشاشة.
$ tee [-a] file
يستخدم لحذف الأحرف في السطر أو استبدال الأحرف.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
تحويل أحرف الجدولة إلى أحرف المسافة.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
تحويل علامات التبويب إلى عدد معين من المسافات، الافتراضي هو 8.
$ expand [-t] file
-t : tab 转为空格的数量
دمج الصفوف التي تحتوي على نفس البيانات معًا.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
الصق الخطين معًا مباشرةً.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
تقسيم يقسم الملف إلى ملفات متعددة.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (البحث عن تعبير عادي وطباعته عالميًا)، استخدم التعبيرات العادية للبحث والطباعة عالميًا.
$ grep [-acinv] [--color = auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto : 找到的关键字加颜色显示
$ grep -n ' the ' regular_express.txt
8:I can ' t finish the test.
12:the symbol ' * ' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
نظرًا لأن { و } لهما معنى خاص في الصدفة، فيجب تجاوزهما باستخدام أحرف الهروب.
$ grep -n ' go{2,5}g ' regular_express.txt
للإخراج المنسق. لا ينتمي إلى أمر خط الأنابيب. تحتاج إلى استخدام النموذج $() عند إرسال البيانات إلى printf.
$ printf ' %10s %5i %5i %5i %8.2f n ' $( cat printf.txt )
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
تم إنشاؤه بواسطة ألفريد أهو وبيتر واينبرجر وبريان كيرنيغان. الاسم awk هو الأحرف الأولى من اسم المؤسسين الثلاثة.
awk يعالج سطرًا واحدًا في كل مرة. أصغر وحدة معالجة هي حقل