أوامر نظام ملفات UNIX

دليل موجز لأوامر نظام ملفات UNIX

لقد كتبت هذا الدليل بهدف تسهيل التعلم والتذكر والرجوع إلى أدوات نظام ملفات UNIX الرئيسية. macOS و GNU / Linux كلاهما من أنظمة UNIX ، من الناحية العملية. macOS هو نظام UNIX معتمد ، يعتمد على BSD UNIX ، بينما GNU / Linux يشبه UNIX أو مشتق من UNIX.

بعد مقدمة عن نظام الملفات وكيف يعمل ، سأغطي تفاصيل الأوامر التالية:

العمل مع المجلدات والملفات

  • mkdir
  • cd
  • pwd
  • rmdir
  • ls
  • touch
  • mv
  • cp
  • ln

أذونات

  • chmod
  • chown
  • chgrp

محتوى الملفات

  • cat
  • less
  • find
  • cpio
  • dd
  • wc

كيف يعمل نظام الملفات

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

في هذا الدليل ، أفحص بشكل خاص نظام ملفات UNIX ، والذي يمكن العثور عليه على أجهزة macOS و GNU / Linux. يختلف نظام ملفات Windows ، على الرغم من أن Windows 10 يحتوي على ملفنظام Windows الفرعي لنظام Linuxمثبت يسمح لك باستخدام نفس الأدوات المساعدة التي أصفها هنا.

يبدأ نظام الملفات من/. هذه هي عقدة الجذر التي تستضيف أدلة المستوى الأول.

الدلائل المعتادة التي ستجدها في نظام UNIX هي

  • /binيحتوي على أوامر النظام الرئيسية
  • /etcيحتوي على تكوين النظام
  • /devيحتوي على أجهزة النظام
  • /usrيحتوي على ملفات المستخدم
  • /tmpيحتوي على الملفات المؤقتة

... هناك المزيد ، لكنك فهمت الفكرة.

كم يعتمد على نوع النظام المستخدم. قام Linux بتوحيد المجلدات باستخدام جهد Linux Standard Base ، وعادةً ما يكون لديك:

  • /binأوامر النظام الرئيسية
  • /bootالملفات المستخدمة لتشغيل الجهاز (غير موجودة على macOS)
  • /devأجهزة النظام
  • /etcملفات تكوين النظام
  • /etc/optملفات تكوين برامج المستخدم
  • /homeالدلائل الرئيسية للمستخدمين (/ المستخدمون في macOS)
  • /libمكتبات النظام (غير موجودة على macOS)
  • /mntأنظمة الملفات المركبة
  • /optبرامج المستخدم
  • /procuser by kernel and Operations (غير موجود على macOS)
  • /rootالمجلد الرئيسي للمستخدم الجذر (غير موجود على macOS)
  • /run(غير موجود على macOS)
  • /sbinمستخدم ثنائيات النظام لتشغيل النظام
  • /tmpملفات مؤقتة
  • /usrيحمل برامج المستخدم والمكتبات والأدوات
  • /usr/binثنائيات المستخدم
  • /usr/includeملفات رأس المستخدم
  • /usr/libمكتبات المستخدم
  • /usr/localيستخدمه برنامج المستخدم لتخزين عمليات التثبيت ، مثل Homebrew على macOS
  • /usr/sbinثنائيات النظام
  • /usr/shareيحتوي على بيانات مستقلة عن البنية. يمكن أن تحتوي على الكثير من الأشياء المتنوعة بما في ذلك الوثائق وصفحات الدليل
  • /usr/srcيحتوي على الكود المصدري للحزم المثبتة (غير موجود في macOS)
  • /varيحتوي على ملفات مؤقتة وسجلات والمزيد

يحتوي macOS على العديد من المجلدات المختلفة ، بما في ذلك

  • /Applicationsيخزن تطبيقات المستخدمين
  • /Libraryيحتفظ بالمكتبة (الإعدادات والموارد) المستخدمة عالميًا من قبل مستخدمي النظام
  • /Systemيحتفظ بملفات النظام
  • /privateيحتفظ بملفات النظام والسجلات والمزيد

يحتوي كل مجلد على ملفات وأدلة ، والتي بدورها يمكن أن تحتوي على ملفات وأدلة أخرى ، وما إلى ذلك.

كل الملفات والمجلدات لها اسم.

ما الذي يجعل الاسم صالحًا؟ يمكن أن تكون طويلة من 1 إلى 255 حرفًا ، ويجب أن تتكون من أي حرف أبجدي رقمي (a-z/A-Z/0-9) ، والشرطة السفلية (_) ، نقطة (.) وفاصلة (,) الشخصيات.

يمكنك أيضًا استخدام المساحة ، على الرغم من أنه لا يوصى به عمومًا لأن المساحة تحتاج إلى الهروب بشرطة مائلة للخلف في كل مرة يجب عليك الرجوع إلى الملف / المجلد.

اعتمادًا على النظام ، يمكن أن يكون نظام الملفات حساسًا لحالة الأحرف. في نظام macOS ، يكون نظام الملفات هوليسحساس لحالة الأحرف بشكل افتراضي ، لذلك لا يمكنك تسمية ملف / مجلدtestوآخر يسمىTest. كلهم نفس الشئ.

سأقوم الآن بتقديم أوامر الأداة المساعدة المختلفة. يتم تنفيذها في سياق قذيفة ، مثل Bash أو Fish أو Zsh. عندما تبدأ قذيفة ، ستكون في دليل منزلك. في macOS ، يوجد ذلك في ملف/Users/<yourname>/طريق.

لا تتغير الأوامر إذا قمت بتغيير الصدفة التي تستخدمها ، لأن هذه هي الأوامر الأساسية والأساسية في UNIX. من المحتمل أن تستخدم هذه الأوامر لعقود عديدة ما لم تحدث ثورة في عالم الحوسبة (وتحدث ، لكن تلك الأشياء من جانب الخادم عادة ما تتحرك ببطء). لإعطائك بعض المنظور ، فإنmkdirالأمر الذي ستراه الآن تم تقديمه في UNIX AT&T الإصدار 1 ، في أوائل الثمانينيات.

العمل مع المجلدات والملفات

mkdir

يمكنك إنشاء مجلدات باستخدام ملفmkdirيأمر:

mkdir fruits

يمكنك إنشاء مجلدات متعددة بأمر واحد:

mkdir dogs cars

يمكنك أيضًا إنشاء عدة مجلدات متداخلة عن طريق إضافة ملف-pاختيار:

mkdir -p fruits/apples

تأخذ الخيارات الموجودة في أوامر UNIX بشكل عام هذا النموذج. تقوم بإضافتهم مباشرة بعد اسم الأمر ، ويقومون بتغيير طريقة عمل الأمر. يمكنك في كثير من الأحيان الجمع بين خيارات متعددة أيضًا.

يمكنك العثور على الخيارات التي يدعمها الأمر عن طريق الكتابةman <commandname>. جرب الآن معman mkdirعلى سبيل المثال (اضغط علىqمفتاح للهروب من صفحة الرجل). صفحات الرجل هي المساعدة المدمجة المذهلة لنظام UNIX

cd

بمجرد إنشاء مجلد ، يمكنك الانتقال إليه باستخدام امتدادcdيأمر.cdيعنيجهانجددليل. تقوم باستدعائه لتحديد مجلد للانتقال إليه. يمكنك تحديد اسم مجلد أو مسار كامل.

مثال:

mkdir fruits
cd fruits

أنت الآن فيfruitsمجلد.

يمكنك استعمال ال..مسار خاص للإشارة إلى المجلد الأصل:

cd .. #back to the home folder

يشير الحرف # إلى بداية التعليق ، والذي يستمر للسطر بأكمله بعد العثور عليه.

يمكنك استخدامه لتشكيل مسار:

mkdir fruits
mkdir cars
cd fruits
cd ../cars

هناك مؤشر مسار خاص آخر وهو.، ويشير إلىتيارمجلد.

يمكنك أيضًا استخدام المسارات المطلقة ، والتي تبدأ من المجلد الجذر/:

cd /etc

pwd

متى شعرت بالضياع في نظام الملفات ، اتصل بامتدادpwdأمر لمعرفة مكانك:

pwd

سيتم طباعة مسار المجلد الحالي.

rmdir

تمامًا كما يمكنك إنشاء مجلد باستخدامmkdir، يمكنك حذف مجلد باستخدامrmdir:

mkdir fruits
rmdir fruits

يمكنك أيضًا حذف عدة مجلدات مرة واحدة:

mkdir fruits cars
rmdir fruits cars

يجب أن يكون المجلد الذي تحذفه فارغًا.

لحذف المجلدات التي تحتوي على ملفات ، سنستخدم الملف العامrmالأمر الذي يحذف الملفات والمجلدات ، باستخدام-rfوالخيارات:

rm -rf fruits cars

كن حذرًا لأن هذا الأمر لا يطلب التأكيد وسيزيل على الفور أي شيء تطلب منه إزالته.

لا يوجدسلة مهملاتعند إزالة الملفات من سطر الأوامر ، وقد يكون استرداد الملفات المفقودة أمرًا صعبًا.

ls

داخل مجلد ، يمكنك سرد جميع الملفات التي يحتوي عليها المجلد باستخدام ملفlsيأمر:

ls

إذا قمت بإضافة اسم مجلد أو مسار ، فسيتم طباعة محتويات هذا المجلد:

ls /bin

lsيقبل الكثير من الخيارات. أحد مجموعات الخيارات المفضلة لدي هو-al. جربها:

ls -al /bin

مقارنة بالسهلls، فهذا يعيد المزيد من المعلومات.

لديك من اليسار إلى اليمين:

  • أذونات الملف (وإذا كان نظامك يدعم قوائم ACL ، فستحصل أيضًا على علامة ACL)
  • عدد الروابط المؤدية إلى هذا الملف
  • صاحب الملف
  • مجموعة الملف
  • حجم الملف بالبايت
  • الملف المعدل التاريخ والوقت
  • اسم الملف

يتم إنشاء هذه المجموعة من البيانات بواسطةlاختيار. الaيظهر الخيار بدلاً من ذلك أيضًا الملفات المخفية.

الملفات المخفية هي ملفات تبدأ بنقطة (.).

touch

يمكنك إنشاء ملف فارغ باستخدام امتدادtouchيأمر:

touch apple

إذا كان الملف موجودًا بالفعل ، فإنه يفتح الملف في وضع الكتابة ، ويتم تحديث الطابع الزمني للملف.

mv

بمجرد أن يكون لديك ملف ، يمكنك نقله باستخدام امتدادmvيأمر. أنت تحدد المسار الحالي للملف ، ومساره الجديد:

touch test
mv pear new_pear

الpearيتم الآن نقل الملف إلىnew_pear. هكذا أنتإعادة تسميةالملفات والمجلدات.

إذا كانت المعلمة الأخيرة عبارة عن مجلد ، فسيتم نقل الملف الموجود في مسار المعلمة الأول إلى هذا المجلد. في هذه الحالة ، يمكنك تحديد قائمة بالملفات وسيتم نقلها جميعًا في مسار المجلد المحدد بواسطة المعلمة الأخيرة:

touch pear
touch apple
mkdir fruits
mv pear apple fruits #pear and apple moved to the fruits folder

cp

يمكنك نسخ ملف باستخدام امتدادcpيأمر:

touch test
cp apple another_apple

لنسخ المجلدات ، تحتاج إلى إضافة ملف-rخيار لنسخ محتويات المجلد بالكامل بشكل متكرر:

mkdir fruits
cp -r fruits cars

ln

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

يمكننا إنشاء نوعين من الروابط: روابط صلبة وروابط رمزية (ناعمة). لا يمكننا إنشاء رابط صلب إلى دليل ، لكن يمكننا إنشاء رابط رمزي. لهذا السبب ، الروابط الرمزية (تسمى أيضًاالروابط الرمزية) أكثر شيوعًا.

نقوم بإنشاء ارتباط رمزي باستخدام هذه الصيغة:ln -s original linkname. مثال:

mkdir fruits
ln -s fruits newfruits

لاحظ كيف استخدمت ملفllيأمر. هذا ليس أمرًا قياسيًا ، ولكنهالاسم المستعاربالنسبةls -al. في shell ، يمكنك تحديد الأسماء المستعارة التي هي اختصارات لتركيبات الأوامر والوسيطات الشائعة

أذونات

لقد ذكرت الأذونات لفترة وجيزة من قبل ، عند تقديمls -alيأمر.

السلسلة الغريبة التي تراها في كل سطر ملف ، مثلdrwxr-xr-x، يحدد أذونات الملف أو المجلد.

دعونا نحللها.

يشير الحرف الأول إلى نوع الملف:

  • -يعني أنه ملف عادي
  • dيعني أنه دليل
  • lيعني أنه رابط

ثم لديك 3 مجموعات من القيم:

  • تمثل المجموعة الأولى أذوناتصاحبمن الملف
  • تمثل المجموعة الثانية أذونات أعضاءمجموعةالملف مرتبط بـ
  • المجموعة الثالثة تمثل أذوناتأي أحد غيره

تتكون هذه المجموعات من 3 قيم.rwxيعني ذلك بالتحديدشخصيةلديه حق الوصول للقراءة والكتابة والتنفيذ. يتم استبدال أي شيء تتم إزالته بـ-، والتي تتيح لك تكوين مجموعات متنوعة من القيم والأذونات النسبية:rw-وr--وr-x، وهكذا.

يمكنك تغيير الأذونات الممنوحة لملف باستخدام امتدادchmodيأمر.

chmodيمكن استخدامها بطريقتين. الأول يستخدم الوسيطات الرمزية ، والثاني يستخدم الوسيطات الرقمية. لنبدأ بالرموز أولاً ، وهي أكثر سهولة.

أنت تكتبchmodمتبوعًا بمسافة وحرف:

  • aتمثلالكل
  • uتمثلالمستعمل
  • gتمثلمجموعة
  • oتمثلالآخرين

ثم تكتب إما+أو-لإضافة إذن أو إزالته. ثم أدخل رمز أذونات واحدًا أو أكثر (rوwوx).

كل ذلك متبوع باسم الملف أو المجلد.

وهنا بعض الأمثلة:

chmod a+r filename #everyone can now read
chmod a+rw filename #everyone can now read and write
chmod o-rwx filename #others (not the owner, not in the same group of the file) cannot read, write or execute the file

يمكنك تطبيق نفس الأذونات على العديد من الأشخاص عن طريق إضافة أحرف متعددة قبل+/-:

chmod og-r filename #other and group can't read any more

في حالة قيامك بتحرير مجلد ، يمكنك تطبيق الأذونات على كل ملف موجود في هذا المجلد باستخدام الامتداد-r(العودية) العلم.

الحجج الرقمية أسرع ولكن أجد صعوبة في تذكرها عندما لا تستخدمها يومًا بعد يوم. يمكنك استخدام رقم يمثل أذونات الشخصية. يمكن أن تكون قيمة هذا الرقم 7 كحد أقصى ، ويتم حسابها بهذه الطريقة:

  • 1إذا كان لديه إذن التنفيذ
  • 2إذا كان لديه إذن الكتابة
  • 4إذا كان لديه إذن القراءة

هذا يعطينا 4 مجموعات:

  • 0لا أذونات
  • 1يمكن تنفيذها
  • 2يستطيع الكتابة
  • 3يمكن الكتابة والتنفيذ
  • 4يمكنه القراءة
  • 5يمكن القراءة والتنفيذ
  • 6يمكن القراءة والكتابة
  • 7يستطيع القراءة والكتابة والتنفيذ

نستخدمها في أزواج من 3 ، لتعيين أذونات المجموعات الثلاث معًا:

chmod 777 filename
chmod 755 filename
chmod 644 filename

المالك والمجموعة

يمكنك تغيير مالك الملف باستخدام امتدادchownيأمر:

chown <username> <filename>

يمكنك تغيير مجموعة الملف باستخدام امتدادchgrpيأمر:

chgrp <group> <filename>

إدارة محتوى الملفات

less

الlessالأمر الذي أستخدمه كثيرًا. يعرض لك المحتويات المخزنة داخل ملف ، في واجهة مستخدم لطيفة وتفاعلية.

استعمال:less <filename>.

بمجرد أن تكون داخل أlessجلسة ، يمكنك الإقلاع عن طريق الضغطq.

يمكنك التنقل في محتويات الملف باستخدام امتدادupوdownمفاتيح ، أو باستخدامspace barوbللتنقل صفحة بصفحة. يمكنك أيضًا الانتقال إلى نهاية ضغط الملفGوالقفز مرة أخرى إلى بداية الضغطg.

يمكنك البحث عن محتويات داخل الملف بالضغط على/وكتابة كلمة للبحث. هذا البحثإلى الأمام. يمكنك البحث للخلف باستخدام ملف?رمز وكتابة كلمة.

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

الضغط علىFيدخل المفتاحوضع المتابعة، أووضع المشاهدة. عندما يقوم شخص آخر بتغيير الملف ، مثل من برنامج آخر ، يمكنك رؤية التغييراتحي. بشكل افتراضي ، هذا لا يحدث ، وسترى فقط إصدار الملف في الوقت الذي فتحته. تحتاج إلى الضغطctrl-Cللخروج من هذا الوضع. في هذه الحالة ، يكون السلوك مشابهًا لتشغيل ملفtail -f <filename>يأمر.

يمكنك فتح ملفات متعددة والتنقل خلالها باستخدام:n(للانتقال إلى الملف التالي) و:p(للذهاب إلى السابق).

tail

لقد ذكرت للتوtailفي الأمر السابق ، فلننتهز هذه الفرصة لشرح ما يفعله.

أفضل حالة استخدام في رأيي هي عندما يتم استدعائها بامتداد-fاختيار. يفتح الملف في النهاية ويراقب تغييرات الملف. في أي وقت يوجد فيه محتوى جديد في الملف ، تتم طباعته في النافذة. يعد هذا أمرًا رائعًا لمشاهدة ملفات السجل ، على سبيل المثال:

tail -f /var/log/system.log

للخروج ، اضغط علىctrl-C.

يمكنك طباعة آخر 10 أسطر في الملف:

tail -n 10 <filename>

يمكنك طباعة محتوى الملف بالكامل بدءًا من سطر معين باستخدام+قبل رقم السطر:

tail -n +10 <filename>

tailيمكن أن تفعل أكثر من ذلك بكثير وكما هو الحال دائمًا نصيحتي هي التحققman tail.

cat

مشابه لtailبطريقة ما ، لديناcat. يستثنيcatيمكنه أيضًا إضافة محتوى إلى ملف ، وهذا يجعله قويًا للغاية.

في أبسط استخدام له ،catيطبع محتوى الملف إلى الإخراج القياسي:

cat file

يمكنك طباعة محتوى ملفات متعددة:

cat file1 file2

واستخدام عامل إعادة توجيه الإخراج>يمكنك تجميع محتوى عدة ملفات في ملف جديد:

cat file1 file2 > file3

استخدام>>يمكنك إلحاق محتوى ملفات متعددة بملف جديد ، وإنشائه إذا لم يكن موجودًا:

cat file1 file2 >> file3

عند مشاهدة ملفات التعليمات البرمجية المصدر ، من الرائع رؤية أرقام الأسطر ، ويمكنك الحصول عليهاcatاطبعها باستخدام ملف-nاختيار:

cat -n file1

يمكنك فقط إضافة رقم إلى الأسطر غير الفارغة باستخدام-b، أو يمكنك أيضًا إزالة جميع الأسطر الفارغة المتعددة باستخدام-s.

catغالبًا ما يتم استخدامه مع مشغل الأنابيب|لتغذية محتوى ملف كمدخل لأمر آخر:cat file1 | anothercommand.

wc

wcيعنيعدد الكلمات. هنا هو الاستخدام الأكثر شيوعًا:

  • wc -l file1خطوط العد
  • wc -w file1عد الكلمات
  • wc -c file1عد الشخصيات
  • wc -m file1عد الأحرف مع دعم متعدد البايت (على سبيل المثال ، يتم احتساب الرموز التعبيرية على أنها 1 ، وليس كأحرف متعددة)

يمكنك الجريwcتوفير ملفات متعددة ، وفي هذه الحالة سيتم إجراء العمليات الحسابية على كل ملف على حدة ، ثم طباعة ملخص:

find

الfindيمكن استخدام الأمر للعثور على الملفات أو المجلدات المطابقة لنمط بحث معين. يبحث بشكل متكرر.

دعنا نتعلمها على سبيل المثال.

ابحث عن جميع الملفات الموجودة أسفل الشجرة الحالية التي تحتوي على ملحق.jsالتمديد وطباعة المسار النسبي لكل ملف مطابق:

find . -name '*.js'

من المهم استخدام علامات الاقتباس حول الأحرف الخاصة مثل*لتجنب تفسيرها الصدفة.

ابحث عن أدلة ضمن الشجرة الحالية تطابق الاسم "src":

find . -type d -name src

يستخدم-type fللبحث في الملفات فقط ، أو-type lللبحث عن الروابط الرمزية فقط.

-nameحاله حساسه. استعمال-inameلإجراء بحث غير حساس لحالة الأحرف.

يمكنك البحث تحت أشجار جذر متعددة:

find folder1 folder2 -name filename.txt

ابحث عن أدلة ضمن الشجرة الحالية تطابق الاسم "node_modules" أو "public"

find . -type d -name node_modules -or -name public

يمكنك أيضًا استبعاد مسار باستخدام-not -path:

find . -type d -name '*.md' -not -path 'node_modules/*'

يمكنك البحث في الملفات التي تحتوي على أكثر من 100 حرف (بايت) فيها:

find . -type f -size +100c

البحث عن ملفات أكبر من 100 كيلوبايت ولكن أصغر من 1 ميغابايت

find . -type f -size +100k -size -1M

تم تحرير ملفات البحث منذ أكثر من 3 أيام

find . -type f -mtime +3

بحث في الملفات التي تم تحريرها في آخر 24 ساعة

find . -type f -mtime -1

يمكنك حذف جميع الملفات المطابقة للبحث عن طريق إضافة ملف-deleteاختيار. يؤدي هذا إلى حذف جميع الملفات التي تم تحريرها في آخر 24 ساعة:

find . -type f -mtime -1 -delete

يمكنك تنفيذ أمر على كل نتيجة من نتائج البحث. في هذا المثال نركضcatلطباعة محتوى الملف:

find . -type f -exec cat {} \;

لاحظ الإنهاء\;.{}اسم الملف في وقت التنفيذ.

تحميل مجانيكتيب أوامر Linux


المزيد من دروس CLI: