أدوات gnu

ahmed x86
0

 

أدوات GNU

 

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

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



أدوات معالجة النصوص (GNU Coreutils)

 

هي الحزمة الأساسية التي تحتوي على أدوات سطر الأوامر الشهيرة التي نستخدمها يومياً للتعامل مع الملفات والنصوص.

من أشهر هذه الأدوات: ls, rm, mv, cat (ملاحظة: الأمر cd هو غالباً أمر داخلي في الصدفة Shell Built-in وليس جزءاً من Coreutils، لكنه يستخدم معها دائماً).

 

لنشرح وظائف هذه الأدوات:

richard stallman

لنتعرف فى هذا المقال عن هذى الادوات

وهي من تطوير richard stallman


أدوات النظام الأساسية (GNU Coreutils) 

ادوات سطر الأوامر فى لينكس مثل ls و cd و pwd و rm و mv

لنشرح هذى الأدوات وما ظيفاتها

 

أمر rm: الإدارة الذكية للملفات: كيف تحذف وتدير ملفاتك بأمان عبر rm.

مثال:

$ rm text.txt


سيقوم هذا الأمر بحذف الملف اللذي يحمل اسم text.txt

انما عندما لا يوجد ملف بهذا الاسم سوف يقول No such file or directory

مثال

$ rm file.txt
rm: cannot remove 'text.txt': No such file or directory



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


امر الـcp اختصار كلمة cope من اهم الأوامر اللتي سوف تتعامل معاها فى حياتك على التيرمنال لانه يقوم بنسخ الملف من مكان لاخر

مثال

$ cp text.txt text1.txt

هذا احد الامثلة لو كان فى نفس المجلد

$ cp text1 gnu/

لنقل فى مجلد فرعي فى نفس المجلد اللذي نحن فيه

$ cp text.txt /mnt/data/folder

لنقل فى مسار اخر كليا


أمر mv: تنظيم النظام: دليلك الشامل لنقل وإعادة تسمية الملفات بـ mv

 

وهذا امر يتم استخدامه بكثرة بين من يستخدم التيرمنال لانه امر مسؤل عن نقل الملفات او اعادة تسميتها

مثال 

$ mv text.txt text1.txt

وهنا قمنا بإعادة تسمية ملف 

$ mv text.txt gnu/

وهنا نقلنا ملف من مسار لمسار فرعي 

$ mv text.txt /mnt/data/folder

وهنا قمنا بنقل الملف من مكان لمكان اخر


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


أمر ls هو اختصار لـ List، وهو بمثابة "عينك" داخل التيرمينال. لا يمكنك التحرك بدونه لأنه يعرض لك الملفات والمجلدات الموجودة في المسار الحالي.

مثال: 

$ ls

سيعرض لك الملفات الظاهرة فقط.

لكن المحترفين يستخدمون خيارات إضافية (Flags) للحصول على معلومات أكثر: 

$ ls -a

هذا الخيار (all) يعرض الملفات المخفية (التي تبدأ بنقطة . مثل ملفات الإعدادات .bashrc أو .config). 

$ ls -lh

هذا الخيار يعرض التفاصيل (الحجم، الصلاحيات، المالك) وبصيغة مقروءة للبشر (Human readable).

 

 أمر mkdir: بناء هيكلة المجلدات: حيل ذكية لإنشاء المسارات باستخدام mkdir

 

أمر mkdir هو اختصار لـ Make Directory، ووظيفته إنشاء المجلدات الجديدة.

مثال: 

$ mkdir my_folder

سيقوم بإنشاء مجلد جديد.

خدعة مفيدة جداً (Flag -p): إذا أردت إنشاء مجلد داخل مجلد غير موجود أصلاً (مسار كامل)، استخدم -p: 

$ mkdir -p projects/python/app

 سيقوم بإنشاء المجلد projects ثم python بداخله ثم app دفعة واحدة.

 

 أمر touch: التجهيز السريع: إنشاء الملفات وتحديث الطابع الزمني عبر touch

 

أمر بسيط جداً ولكنه مهم. وظيفته الأساسية تحديث الطابع الزمني للملف، لكننا نستخدمه في 99% من الحالات لإنشاء ملف فارغ جديد بسرعة.

مثال: 

$ touch main.py

سينشئ ملفاً فارغاً اسمه main.py جاهزاً للكتابة بداخله.

أمر cat: استعراض المحتوى فوراً: قراءة الملفات بسرعة البرق باستخدام cat

 

أمر cat هو اختصار لـ Concatenate. نستخدمه لقراءة محتوى الملفات النصية وعرضها مباشرة داخل التيرمينال دون فتح محرر نصوص.

مثال: 

$ cat /etc/os-release

سيعرض لك معلومات عن توزيعة اللينكس التي تستخدمها حالياً.

 

أمر pwd: تائه في المجلدات؟ إليك كيف يحدد لك أمر pwd موقعك بدقة.

أمر pwd هو اختصار لـ Print Working Directory. عندما تتوه داخل المجلدات الكثيرة، اكتب هذا الأمر لتعرف "أين أنا الآن؟".

مثال: 

$ pwd
/home/ahmed/gnu

Markdown

 

أدوات معالجة النصوص والفلترة (Text Processing):

 

هذه الأدوات هي الجندي المجهول في عالم Linux، وتستخدم لفلترة وتعديل وتحليل النصوص بسرعة فائقة.

 

أمر grep: القوة الضاربة في البحث: استخراج أي نص من بين آلاف السطور بـ grep

 

أمر grep هو اختصار لـ Global Regular Expression Print. وظيفته البحث عن كلمة أو جملة محددة داخل الملفات.

مثال: 

$ grep "linux" article.txt

سيبحث عن كلمة "linux" داخل الملف ويعطيك السطر الذي وردت فيه.

 

أمر sed: التعديل السحري: كيف تغير محتوى الملفات آلياً ودون فتحها عبر sed

 

أمر sed هو اختصار لـ Stream Editor. هو محرر نصوص قوي جداً، نستخدمه غالباً لاستبدال النصوص بشكل آلي دون فتح الملف.

مثال: 

$ sed 's/old/new/g' file.txt

هذا الأمر سيستبدل كلمة "old" بكلمة "new" في كامل النص ويعرض النتيجة (حرف s يعني استبدال، و g تعني global أي في كل السطر).

 

أداة awk: عملاق البيانات: احتراف تنسيق التقارير ومعالجة النصوص بـ awk

أداة awk هي لغة برمجة كاملة مصممة لمعالجة النصوص وتنسيق البيانات، وتستخدم غالباً لاستخراج أعمدة محددة من النصوص.

مثال: 

$ awk '{print $1}' data.txt

سيقوم بطباعة الكلمة الأولى فقط من كل سطر في الملف (مفيد جداً مع مخرجات الأوامر الأخرى).

 

أوامر sort و uniq: تنقية البيانات: ترتيب السطور وحذف التكرارات بلمحة بصر

 

كما هو واضح من الاسم، يقوم بترتيب السطور داخل الملف (أبجدياً أو رقمياً).

مثال: 

$ sort names.txt

سيرتب الأسماء أبجدياً من A إلى Z. ##13. uniq

أمر uniq يستخدم لإزالة التكرار من السطور المتتالية. وغالباً ما يُستخدم مع sort.

مثال: 

$ sort names.txt | uniq

يقوم بترتيب الملف أولاً ثم حذف الأسماء المكررة لتظهر مرة واحدة فقط.

 

شرح أمر cut لقص أجزاء محددة من السطور

يستخدم لقص جزء محدد من كل سطر، سواء بناءً على عدد الحروف أو فاصل معين (مثل الفاصلة).

مثال: 

$ cut -c 1-5 file.txt

سيعرض أول 5 حروف فقط من كل سطر.

 

شرح أمر tr لتحويل وتبديل الأحرف 

أمر tr هو اختصار لـ Translate. يستخدم لاستبدال أو حذف أحرف معينة من المخرجات.

مثال: 

$ cat file.txt | tr a-z A-Z

سيحول كل حروف الملف من حروف صغيرة (Lowercase) إلى كبيرة (Uppercase).


شرح أمر diff لمقارنة الملفات ومعرفة الفرق بينها

أمر diff يستخدم لمقارنة ملفين وإخبارك بالفرق بينهما سطراً بسطر. مهم جداً للمبرمجين.

مثال: 

$ diff file1.txt file2.txt

سيظهر لك ما تم إضافته أو حذفه في الملف الثاني مقارنة بالأول.

 

شرح أداة patch لتطبيق التحديثات البرمجية

أداة patch تستخدم لتطبيق التعديلات (التي ولدها أمر diff) على ملف أصلي. هي أساس تحديث البرمجيات مفتوحة المصدر.

مثال:

$ patch file1.txt < changes.diss

سيقوم بتحديث file1.txt بناءً على الفروقات المسجلة في ملف changes.diff.


مجموعة مترجمات جينو (شرح GCC و ++G):

شرح مترجم GCC وطريقة ترجمة أكواد C و C++

 

كانت تعني سابقاً GNU C Compiler، لكنها تطورت لتصبح مجموعة ضخمة تدعم لغات عديدة. هي الأداة التي تترجم الكود المصدري (Source Code) إلى لغة الآلة (Machine Code). بدونها، لم نكن لنستطيع بناء نواة Linux نفسها!

أهم أمرين فيها هما: 

شرح مترجم gcc للغة البرمجة C. 

هو المترجم الخاص لملفات لغة C.

مثال: لنفرض أن لديك ملف كود اسمه hello.c. لتحويله إلى برنامج يعمل: 

$ gcc hello.c -o hello

 

شرح مترجم g++ لبرمجة لغة C++ 

 

هو المترجم الخاص لملفات لغة C++.

مثال: 

$ g++ main.cpp -o myapp
./myapp


 

أفضل محررات النصوص في نظام لينكس (Text Editors)

لا تكتمل أي توزيعة لينكس بدون محررات نصوص، وتتميز أدوات GNU بتنوعها لتناسب المبتدئين والخبراء.

  

شرح محرر النصوص نانو (nano)

محرر النصوص الأبسط والأشهر للمبتدئين. يتميز بكونه سهل الاستخدام جداً، حيث تظهر اختصارات لوحة المفاتيح في أسفل الشاشة دائماً.

مثال: 

$ nano config.txt

(للخروج وحفظ الملف، تضغط Ctrl+X ثم Y ثم Enter، وهي التعليمات التي ستراها أسفل الشاشة).

 

شرح محرر النصوص إيماكس (GNU Emacs)

يصفه البعض بأنه "نظام تشغيل" وليس مجرد محرر نصوص! هو محرر ضخم وقوي جداً، قابل للتخصيص بشكل لا نهائي باستخدام لغة Lisp. يمكنك استخدامه لكتابة الكود، تصفح الملفات، قراءة البريد، وحتى تصفح الويب.

مثال لفتحه في التيرمينال: 

$ emacs -nw file.c

(الخيار -nw يعني No Window، لفتحه داخل التيرمينال وليس كنافذة مستقلة).

 

شرح محرر النصوص السطري ed

هو "الأب الروحي" لمحررات النصوص في Unix. هو محرر سطري (Line Editor) قديم جداً، لا يعرض لك النص كاملاً أمامة بل تتعامل معه سطرًا بسطر.

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

مثال: 

$ ed file.txt

(ستجد أنه صامت تماماً! للبدء بالكتابة تحتاج لمعرفة أوامره الخاصة مثل a للإضافة و w للحفظ)


 

طريقة ضغط وأرشفة الملفات في لينكس (Archiving Tools):

 

تتميز أدوات GNU بامتلاكها أقوى أدوات الضغط التي توفر مساحة تخزين هائلة وتسهل نقل الملفات.

 

شرح أمر tar لجمع وضغط الملفات في لينكس

هو "ملك الأرشفة" في لينكس واختصار لـ Tape Archive. وظيفته الأساسية هي تجميع عدة ملفات ومجلدات داخل "حاوية" واحدة (ملف واحد)، وغالباً ما يُستخدم مع أدوات الضغط الأخرى.

أهم الخيارات (Flags) التي ستحفظها مثل اسمك:

  • c: إنشاء (Create).
  • x: استخراج (Extract).
  • v: عرض التفاصيل (Verbose).
  • f: تحديد اسم الملف (File).

أمثلة: لضغط مجلد (أرشفة): 

$ tar -cvf archive.tar my_folder/

لفك الضغط (استخراج): Bash

$ tar -xvf archive.tar

 

شرح أدوات الضغط السريع gzip و bzip2 و xz 

أداة GNU zip، وهي الأكثر شيوعاً لضغط الملفات بسرعة عالية. تنتج ملفات بامتداد .gz.

مثال: 

$ gzip file.txt

(سيتحول الملف إلى file.txt.gz ويقل حجمه).

لفك الضغط: 

$ gzip -d file.txt.gz

 

برجمية bzip2

أداة ضغط تشبه gzip ولكنها تستخدم خوارزمية مختلفة (Burrows-Wheeler). تتميز بأنها تعطي حجم ملف أقل (ضغط أقوى) لكنها أبطأ قليلاً في عملية الضغط. امتدادها .bz2.

مثال: 

$ bzip2 file.txt

 

برمجية  xz

الأداة الأحدث والأقوى حالياً. توفر أعلى نسبة ضغط مقارنة بالسابقين، ولذلك أصبحت المعيار المعتمد في أرشفة نواة لينكس (Linux Kernel archives) وحزم التوزيعات الحديثة. امتدادها .xz.

مثال: 

$ xz file.txt

معلومة للمحترفين: غالباً ما نستخدم tar لدمج هذه الأدوات في أمر واحد.

لإنشاء ملف tar.gz: نستخدم tar -czvf (حرف z لـ gzip). لإنشاء ملف tar.xz: نستخدم tar -cJvf (حرف J لـ xz).

 

أدوات إدارة الشبكات والإنترنت في سطر الأوامر:

لا تكتمل قوة سطر الأوامر دون القدرة على الاتصال بالإنترنت أو إدارة الشبكات. يقدم مشروع GNU أدوات عريقة لهذا الغرض.

 

شرح أمر wget لتحميل الملفات من الإنترنت

أداة التحميل الأسطورية (World Wide Web Get). تتميز بأنها قوية جداً وثابتة، يمكنها تحميل الملفات في ظروف الشبكة السيئة واستكمال التحميل عند انقطاعه.

مثال: 

$ wget [https://example.com/file.iso](https://example.com/file.iso)

لاستكمال تحميل توقف سابقاً (نستخدم c-): Bash

$ wget -c [https://example.com/huge-file.zip](https://example.com/huge-file.zip)



 GnuTLS

هي مكتبة وأدوات لتنفيذ بروتوكولات الأمان (SSL/TLS و DTLS). هي المنافس الحر لمكتبة OpenSSL، وتستخدمها العديد من برامج GNU لتأمين الاتصالات وتشفير البيانات عبر الشبكة.

مثال (لفحص شهادة أمان موقع): 

$ gnutls-cli google.com

3. GNU Inetutils

هي حزمة تجمع "أدوات الشبكة الشائعة" (Common Networking Utilities). تضم مجموعة من الأدوات الكلاسيكية التي لا غنى عنها لأي مدير شبكات:

أ. ping

الأداة الأولى في تشخيص مشاكل الشبكة. ترسل حزمة بيانات صغيرة للخادم وتنتظر الرد (Echo Reply) للتأكد من أن الموقع يعمل.

مثال: 

$ ping google.com

ب. ftp

اختصار لـ File Transfer Protocol. أداة لنقل الملفات بين جهازك والخادم. رغم قدمها، إلا أنها ما زالت تستخدم بكثرة في إدارة مواقع الويب القديمة وخوادم الملفات.

مثال: 

$ ftp ftp.example.com

ج. telnet

بروتوكول قديم للاتصال بالأجهزة عن بعد. تحذير: لا يستخدم حالياً لتسجيل الدخول (Login) لأنه غير مشفر (يرسل كلمات المرور كنص واضح). استخدامه الحديث: يستخدمه المحترفون الآن فقط لاختبار ما إذا كان "منفذ" (Port) معين مفتوحاً أم لا.

مثال (لاختبار المنفذ 80): 

$ telnet google.com 80

 

شرح محمل الإقلاع (GNU GRUB) وطريقة إعداده

اختصار لـ GRand Unified Bootloader. هو البرنامج الأول الذي يعمل عند تشغيل حاسوبك.

له وظيفتان رئيسيتان تتمان عبر أمرين مختلفين:

أ. التثبيت (grub-install)

هذا الأمر يقوم بتثبيت ملفات الإقلاع فعلياً على القرص الصلب (تحديداً في قسم EFI). نستخدمه عند تنصيب النظام لأول مرة أو عند "إصلاح النظام" من بيئة حية (Live USB).

مثال (لأنظمة UEFI): 

$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB

مثال (ﻷأنظمة bios): 

$ grub-install --target=i386-pc /dev/sda

ب. التحديث (grub-mkconfig)

بعد التثبيت، نستخدم هذا الأمر للبحث عن الأنظمة المثبتة (مثل Windows أو توزيعات أخرى) وتوليد ملف الإعدادات grub.cfg.

مثال:

$ grub-mkconfig -o /boot/grub/grub.cfg

/etc/default/grub

لكن grub ليس مجرد اؤامر بل هو عالم عملاق داخل ملف /etc/default/grub ولذلالك وجب شرحها

1. GRUB_DEFAULT

يحدد النظام الذي سيبدأ تلقائياً إذا لم تلمس شيئاً. 

GRUB_DEFAULT=0

0: يعني الخيار الأول في القائمة (عادة أحدث كيرنل Arch). saved: سيقوم بتذكر آخر نظام اخترته وسيدخل عليه في المرة القادمة (مفيد جداً إذا كنت تستخدم Dual Boot مع ويندوز).

2. GRUB_TIMEOUT

الوقت (بالثواني) الذي ستنتظره القائمة قبل الدخول تلقائياً. 

GRUB_TIMEOUT=5

إذا جعلته 0: سيدخل فوراً دون إظهار القائمة (تحتاج للضغط على Shift بسرعة أثناء الإقلاع لإظهارها).

إذا جعلته -1: ستنتظر القائمة إلى الأبد حتى تختار بنفسك.

3. GRUB_CMDLINE_LINUX_DEFAULT

هذا أهم سطر للمحترفين. هنا تضع "بارامترات الكيرنل" (Kernel Parameters). 

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"

quiet: لتقليل النصوص التي تظهر بسرعة أثناء الإقلاع.

loglevel=3: لإخفاء رسائل النظام غير المهمة.

لأصحاب كروت NVIDIA: هنا نضيف nvidia_drm.modeset=1.

لتحسين البطارية: هنا نضيف إعدادات مثل nowatchdog.

  1. GRUB_THEME

ولمن يحب تخصيص شكل grub فسوف يلاحظ هذا السطر كثيرا 

GRUB_THEME="/boot/grub/themes/Hyperland/theme.txt"

هنا تضع مسار "الثيم" الخاص بـ GRUB لتغيير شكله من الشاشة السوداء المملة إلى شكل جمالي بصور وأيقونات. نظرة سريعة داخل /boot/grub/grub.cfg (للقراءة فقط)

الخلاصة (القاعدة الذهبية):

عدّل ملف /etc/default/grub.

نفذ أمر التحديث الذي شرحناه سابقاً: 

grub-mkconfig -o /boot/grub/grub.cfg

هكذا يتم تطبيق تعديلاتك بأمان.

Tags

إرسال تعليق

0 تعليقات

إرسال تعليق (0)

#buttons=(اوافق) #days=(20)

موقعنا يستخدم ملفات تعريف الارتباط (Cookies) لتحسين تجربتك. تحقق الآن
Ok, Go it!