أدوات 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

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

1. الأمر rm

مثال

$ rm text.txt

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

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

مثال

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

2.cp

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

مثال

$ cp text.txt text1.txt

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

$ cp text1 gnu/

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

$ cp text.txt /mnt/data/folder

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

3.mv

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

مثال

$ mv text.txt text1.txt

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

$ mv text.txt gnu/

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

$ mv text.txt /mnt/data/folder

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

Markdown

4. ls

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

مثال:

$ ls

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

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

$ ls -a

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

$ ls -lh

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

5. mkdir

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

مثال:

$ mkdir my_folder

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

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

$ mkdir -p projects/python/app

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

6. touch

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

مثال:

$ touch main.py

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

7. cat

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

مثال:

$ cat /etc/os-release

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

8. pwd

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

مثال:

$ pwd
/home/ahmed/gnu

Markdown

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

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

9. grep

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

مثال:

$ grep "linux" article.txt

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

10. sed

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

مثال:

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

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

11. awk (gawk)

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

مثال:

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

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

12. sort

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

مثال:

$ sort names.txt

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

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

مثال:

$ sort names.txt | uniq

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

14. cut

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

مثال:

$ cut -c 1-5 file.txt

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

15. tr

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

مثال:

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

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

16. diff

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

مثال:

$ diff file1.txt file2.txt

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

17. patch

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

مثال:

$ patch file1.txt < changes.diss

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

GCC – GNU Compiler Collection

1. GCC (GNU Compiler Collection)

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

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

أ. gcc

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

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

$ gcc hello.c -o hello

ب.g++

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

مثال:

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

Markdown

محررات النصوص (Text Editors)

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

1. nano

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

مثال:

$ nano config.txt

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

2. GNU Emacs

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

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

$ emacs -nw file.c

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

3. ed

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

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

مثال:

$ ed file.txt

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

Markdown

أدوات الأرشفة والضغط (Archiving and Compression)

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

1. tar

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

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

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

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

$ tar -cvf archive.tar my_folder/

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

$ tar -xvf archive.tar

2. gzip

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

مثال:

$ gzip file.txt

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

لفك الضغط:

$ gzip -d file.txt.gz

3. bzip2

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

مثال:

$ bzip2 file.txt

4. xz

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

مثال:

$ xz file.txt

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

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

أدوات الشبكات والإنترنت (Networking Tools)

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

1. 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)

2. 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

محمل الإقلاع (Bootloader) 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

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

إرسال تعليق

0 تعليقات

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

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

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