الدليل الكامل لاستخدام Terminal في التعامل مع الملفات، الخوادم، وقواعد البيانات

التكنولوجيا و الانترنيت

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

في هذه المقالة، سنغوص في عمق استخدام Terminal من الصفر حتى العمليات المتقدمة. سنتعلم كيفية التعامل مع الملفات، وكيفية الاتصال بالخوادم عبر SSH، وأفضل الطرق لنقل الملفات ونسخ قواعد البيانات بين الأجهزة أو من الجهاز إلى الخادم.

1. التنقل بين المجلدات (Navigation Commands)

  • pwd: يعرض المسار الكامل للمجلد الحالي.
  • cd folder_name: يدخل إلى مجلد فرعي داخل المجلد الحالي.
  • cd ..: الرجوع إلى المجلد الأب.
  • cd ~: الانتقال إلى مجلد المستخدم الرئيسي (home).
  • cd /: الانتقال إلى الجذر (root) للنظام.
  • cd -: الرجوع إلى آخر مجلد كنت فيه.
  • cd ~/Documents: الدخول مباشرة إلى مجلد "Documents" داخل home.
  • cd /var/www/html: الانتقال مباشرة إلى مسار محدد في النظام.
  • ls: عرض محتويات المجلد الحالي.
  • ls -l: عرض محتويات المجلد مع تفاصيل كل ملف (الصلاحيات، الحجم، التاريخ...).

2. إنشاء المجلدات والملفات (Create Files and Folders)

  • mkdir myfolder: إنشاء مجلد جديد باسم "myfolder".
  • mkdir -p folder1/folder2: إنشاء مجلد متداخل مع إنشاء المجلدات الأب إن لم تكن موجودة.
  • touch file.txt: إنشاء ملف فارغ باسم "file.txt".
  • touch file1.txt file2.txt: إنشاء أكثر من ملف دفعة واحدة.
  • echo "نص داخل الملف" > myfile.txt: إنشاء ملف ووضع نص فيه.
  • cp /dev/null myfile.txt: إنشاء أو تفريغ ملف إلى حالة فارغة.
  • nano newfile.txt: إنشاء وفتح ملف جديد باستخدام محرر "nano".
  • cat > anotherfile.txt: إنشاء ملف وكتابة نص مباشر فيه من الطرفية.
  • > empty.txt: إنشاء ملف فارغ أو مسح محتوى الملف الموجود.
  • install -d newfolder: إنشاء مجلد باستخدام أمر install.

3. عرض الملفات والمجلدات (Listing Files and Folders)

  • ls: عرض الملفات في المجلد الحالي.
  • ls -l: عرض تفصيلي مع الصلاحيات والتواريخ.
  • ls -a: عرض كل الملفات بما في ذلك المخفية.
  • ls -lh: عرض تفصيلي بأحجام مقروءة للبشر (KB, MB...).
  • ls -R: عرض الملفات داخل المجلدات الفرعية أيضًا.
  • ls -lt: ترتيب الملفات حسب التاريخ (الأحدث أولاً).
  • ls -ltr: ترتيب الملفات حسب التاريخ (الأقدم أولاً).
  • ls -1: عرض اسم كل ملف في سطر منفصل.
  • ls *.txt: عرض الملفات التي تنتهي بـ .txt فقط.
  • tree: عرض هيكل المجلدات بشكل شجري (يتطلب تثبيت الأمر).

4. نسخ، نقل، حذف (Copy, Move, Delete)

  • cp file1.txt file2.txt: نسخ الملف.
  • cp -r folder1 folder2: نسخ مجلد بكامل محتواه.
  • mv old.txt new.txt: إعادة تسمية أو نقل الملف.
  • mv file.txt /path/to/folder/: نقل الملف إلى مجلد آخر.
  • rm file.txt: حذف ملف.
  • rm -r myfolder: حذف مجلد وكل محتوياته.
  • rm -f file.txt: حذف ملف دون طلب تأكيد.
  • rm -rf folder/: حذف مجلد ومحتواه دون تأكيد.
  • cp file{1,2,3}.txt backup/: نسخ عدة ملفات دفعة واحدة إلى مجلد.
  • mv *.log /var/log/old/: نقل جميع ملفات log إلى مجلد آخر.

5. التعامل مع الملفات المضغوطة بأنواعها (Compressed Files)

  • tar -cvf archive.tar folder/: إنشاء أرشيف TAR من مجلد.
  • tar -xvf archive.tar: فك ضغط أرشيف TAR.
  • tar -czvf archive.tar.gz folder/: إنشاء أرشيف مضغوط بصيغة GZIP.
  • tar -xzvf archive.tar.gz: فك ضغط أرشيف GZIP.
  • gzip file.txt: ضغط ملف بصيغة GZIP (ينتج file.txt.gz).
  • gunzip file.txt.gz: فك ضغط ملف GZIP.
  • zip -r archive.zip folder/: إنشاء أرشيف ZIP من مجلد.
  • unzip archive.zip: فك ضغط أرشيف ZIP.
  • 7z a archive.7z file1 file2: إنشاء أرشيف بصيغة 7z (يتطلب تثبيت p7zip).
  • 7z x archive.7z: فك ضغط أرشيف 7z.

6. التعامل مع خادم بعيد (Remote Server Interaction)

  • ssh user@server_ip: الاتصال بخادم عن بعد باستخدام SSH.
  • ssh -p 2222 user@host: الاتصال بخادم عبر منفذ مختلف (مثال: 2222).
  • scp file.txt user@server:/path/: نسخ ملف إلى الخادم البعيد.
  • scp user@server:/path/file.txt ./: نسخ ملف من الخادم إلى جهازك المحلي.
  • rsync -avz folder/ user@host:/backup/: مزامنة مجلد إلى الخادم البعيد بكفاءة.
  • rsync -avz user@host:/backup/ ./: تحميل نسخة من مجلد من الخادم إلى الجهاز المحلي.
  • ssh user@host 'ls -l /var/www': تنفيذ أمر عن بُعد على الخادم.
  • ssh-keygen: إنشاء مفتاح SSH على الجهاز المحلي.
  • ssh-copy-id user@server: إرسال مفتاح SSH إلى الخادم لتسجيل الدخول دون كلمة مرور.
  • sftp user@server: فتح جلسة SFTP لتصفح ورفع/تنزيل الملفات من وإلى الخادم.

7. إدارة الصلاحيات والملكية (Permissions & Ownership)

  • chmod 755 file.sh: تعيين صلاحيات التنفيذ والقراءة والكتابة (المالك فقط يكتب).
  • chmod +x script.sh: منح صلاحية التنفيذ لملف سكربت.
  • chmod -x file: إزالة صلاحية التنفيذ.
  • chmod -R 755 folder/: تطبيق الصلاحيات على مجلد ومحتواه بالكامل.
  • chown user file.txt: تغيير ملكية الملف إلى مستخدم آخر.
  • chown user:group file.txt: تغيير المالك والمجموعة في آنٍ واحد.
  • chown -R user:group folder/: تغيير ملكية مجلد وكل ما بداخله.
  • ls -l: عرض الصلاحيات والملكية لكل ملف أو مجلد.
  • umask: عرض أو ضبط القناع الافتراضي للصلاحيات عند إنشاء ملفات جديدة.
  • stat file.txt: عرض معلومات تفصيلية عن صلاحيات وملكية الملف.

8. إدارة العمليات (Processes Management)

  • ps: عرض قائمة بالعمليات الحالية للمستخدم.
  • ps aux: عرض جميع العمليات مع تفاصيلها.
  • top: مراقبة العمليات الحية واستهلاك الموارد بشكل حي.
  • htop: واجهة تفاعلية متقدمة لمراقبة العمليات (يحتاج تثبيت).
  • kill PID: إنهاء عملية باستخدام رقم المعرف الخاص بها.
  • kill -9 PID: فرض الإنهاء الفوري لعملية.
  • pkill process_name: إنهاء العمليات حسب الاسم.
  • nice -n 10 command: تشغيل عملية بأولوية منخفضة.
  • renice -n 5 -p PID: تغيير أولوية عملية تعمل حاليًا.
  • jobs: عرض العمليات التي تعمل في الخلفية في الجلسة الحالية.

9. إدارة قواعد البيانات (MySQL/MariaDB و PostgreSQL)

أولاً: MySQL / MariaDB

  • mysql -u root -p: الدخول إلى واجهة MySQL كمستخدم root.
  • CREATE DATABASE dbname;: إنشاء قاعدة بيانات جديدة.
  • SHOW DATABASES;: عرض جميع قواعد البيانات.
  • USE dbname;: استخدام قاعدة بيانات معينة.
  • SHOW TABLES;: عرض الجداول في قاعدة البيانات الحالية.
  • DESCRIBE tablename;: عرض بنية الجدول.
  • CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';: إنشاء مستخدم جديد.
  • GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';: منح كل الصلاحيات لمستخدم على قاعدة بيانات.
  • FLUSH PRIVILEGES;: تحديث الصلاحيات بعد التغيير.
  • DROP DATABASE dbname;: حذف قاعدة بيانات.
  • DROP USER 'user'@'localhost';: حذف مستخدم.
  • SHOW GRANTS FOR 'user'@'localhost';: عرض صلاحيات المستخدم.
  • mysqldump -u user -p dbname > backup.sql: نسخ احتياطي لقاعدة بيانات.
  • mysql -u user -p dbname < backup.sql: استيراد نسخة احتياطية.
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass';: تغيير كلمة مرور المستخدم root.

ثانياً: PostgreSQL

  • sudo -u postgres psql: الدخول إلى واجهة PostgreSQL كمستخدم postgres.
  • \l: عرض جميع قواعد البيانات.
  • \c dbname: الاتصال بقاعدة بيانات معينة.
  • \dt: عرض الجداول في قاعدة البيانات الحالية.
  • \d tablename: عرض بنية جدول.
  • CREATE DATABASE dbname;: إنشاء قاعدة بيانات جديدة.
  • DROP DATABASE dbname;: حذف قاعدة بيانات.
  • CREATE USER username WITH PASSWORD 'password';: إنشاء مستخدم جديد.
  • GRANT ALL PRIVILEGES ON DATABASE dbname TO username;: منح كل الصلاحيات لمستخدم.
  • REVOKE ALL PRIVILEGES ON DATABASE dbname FROM username;: سحب الصلاحيات.
  • \du: عرض جميع المستخدمين وصلاحياتهم.
  • ALTER USER username WITH SUPERUSER;: ترقية مستخدم ليصبح مديراً (Superuser).
  • pg_dump dbname > backup.sql: أخذ نسخة احتياطية.
  • psql dbname < backup.sql: استعادة نسخة احتياطية.
  • DROP USER username;: حذف مستخدم.

10. أوامر إضافية مفيدة (Useful Miscellaneous Commands)

  • history: عرض سجل الأوامر المستخدمة في الجلسة.
  • clear: مسح الشاشة وتنظيف الطرفية.
  • nano filename: تعديل ملف باستخدام محرر نصوص بسيط داخل الطرفية.
  • vim filename: تحرير ملف باستخدام محرر نصوص متقدم.
  • chmod +x file.sh: جعل ملف shell قابلاً للتنفيذ.
  • tail -f /var/log/syslog: متابعة مباشرة لملف سجلات النظام.
  • cat filename: عرض محتوى ملف على الشاشة.
  • less filename: تصفح محتوى ملف صفحة صفحة.
  • ps aux | grep apache: البحث عن العمليات الجارية التي تحتوي على كلمة "apache".
  • df -h: عرض المساحة الحرة والمستخدمة في الأقراص بحجم مقروء.
  • du -sh folder/: معرفة حجم مجلد معين.
  • top: مراقبة أداء النظام والعمليات في الوقت الحقيقي.
  • uptime: عرض مدة تشغيل النظام منذ آخر إعادة تشغيل.
  • whoami: معرفة اسم المستخدم الحالي.
  • uname -a: عرض معلومات النظام والنواة.

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