Linux: مشروع المرحلة 1 المصغّر — إعداد بيئة تطوير شخصية
هذا هو المشروع الختامي للمرحلة 1. ستطبّق كل ما تعلمته في الدروس الخمسة الأولى — عمليات الملفات، والتنقل في الدلائل، واختصارات الطرفية — لتبني بيئة تطوير لينكس شخصية عملية ومنظمة من الصفر.
📋 المتطلبات المسبقة: يجب إكمال
- الدرس 1: مقدمة في لينكس
- الدرس 2: تثبيت لينكس
- الدرس 3: أساسيات الطرفية
- الدرس 4: التنقل في نظام الملفات
- الدرس 5: عمليات الملفات والدلائل
1. ما ستتعلمه
- تصميم هيكل دلائل المشروع
- تخصيص محث Shell (PS1)
- الأسماء المستعارة وأوامر الاختصار
- تثبيت بيئة تشغيل لغات التطوير
- إدارة ملف إعدادات .bashrc
2. قصة شياو مينغ مع "البيئة الفوضوية"
(1) الألم: ملفات متناثرة في كل مكان، البحث كالبحث عن كنز
استخدم شياو مينغ لينكس لثلاثة أشهر، لكن كل جلسة كانت أشد إيلامًا من سابقتها:
- ملفاته التي أنشأها متناثرة عبر دليله المنزلي
~ - في كل مرة يفحص السجلات كان عليه كتابة أمر طويل
- عندما يحتاج فحص إصدار Java،
java -versionقالcommand not found— لم يكن يعرف أن JDK مثبت بالفعل، لكن ليس في PATH الخاص به
(2) حل المعيارية
قرر شياو مينغ قضاء 10 دقائق في تنظيم بيئة تطويره باستخدام مهارات المرحلة 1: دلائل قياسية + أسماء مستعارة عملية + تثبيت بيئة التشغيل. بعد ذلك، أوامر طرفيته انخفضت من 10 ضغطات إلى 2.
(3) الفائدة: النظام يجلب الكفاءة
بيئة تطوير معيارية تعني أن شياو مينغ لا يحتاج "للتفكير" في أين الملفات — هياكل دلائل ثابتة، وأسماء أوامر مختصرة، وبيئات لغات تطوير جاهزة للاستخدام توفر له 30 دقيقة على الأقل يوميًا.
3. نقاط المعرفة
(1) هيكل دلائل المشروع القياسي
بيئة تطوير جيدة تبدأ بهيكل الدلائل. إليك تخطيطًا مقترحًا للمطورين:
~/projects/ # كل المشاريع
├── web/ # مشاريع الوب
│ ├── frontend/
│ └── backend/
├── scripts/ # سكريبتات Shell
├── learning/ # تجارب تعليمية
├── notes/ # ملاحظات وتوثيق
└── tmp/ # ملفات مؤقتة (يمكن تنظيفها في أي وقت)
(2) PS1 — تخصيص محث Shell
متغير البيئة PS1 (Prompt String 1) يتحكم في شكل محث طرفيتك.
# الصيغة الافتراضية
# user@host:current_dir$
# تخصيصات شائعة
export PS1='\u@\h:\w\$ ' # user@host:/path/to/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ ' # بألوان
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ ' # عرض سطرين
ℹ️ ملاحظة: في تسلسلات الهروب لـPS1،
\uهو اسم المستخدم، و\hهو اسم المضيف، و\wهو المسار الكامل، و\Wيعرض اسم الدليل الحالي فقط. المحث ثنائي السطر (إضافة\nفي PS1) لا يضغط مساحة إدخالك عندما تكون المسارات طويلة — موصى به بشدة.
تسلسلات الهروب الشائعة:
| التسلسل | المعنى |
|---|---|
\u |
اسم المستخدم الحالي |
\h |
اسم المضيف (صيغة قصيرة) |
\w |
دليل العمل الحالي (مسار كامل) |
\W |
اسم الدليل الحالي (المكوّن الأخير فقط) |
\d |
التاريخ |
\t |
الوقت (صيغة 24 ساعة) |
\$ |
# (جذر) أو $ (مستخدم عادي) |
\n |
سطر جديد |
(3) alias — أعطِ أوامرك اسمًا مستعارًا
# الصياغة الأساسية
alias shortname='long-command'
# أسماء مستعارة شائعة
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'
> 💡 نصيحة: أكبر قيمة للأسماء المستعارة هي تقصير الأوامر الطويلة المتكررة إلى حرفين أو ثلاثة — مثل `ll` بدلًا من `ls -la`، أو `..` بدلًا من `cd ..`. ابدأ بـ3-5 أسماء مستعارة أكثر استخدامًا بدلًا من إعداد عشرات دفعة واحدة.
(4) ملف إعدادات .bashrc
~/.bashrc هو ملف الإعدادات الذي يُحمَّل عند بدء bash. كل مرة تفتح نافذة طرفية جديدة، ينفذ bash كل الأوامر في .bashrc.
# تعديل .bashrc
nano ~/.bashrc
# تطبيق التغييرات فورًا (بدون إغلاق الطرفية وإعادة فتحها)
source ~/.bashrc
(5) ▶ مثال: إنشاء هيكل دلائل قياسي
# اذهب إلى الدليل المنزلي
cd ~
# إنشاء دلائل قياسية والتحقق منها
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
# عرض النتيجة
ls -la ~/projects
الإخراج:
TEXTtotal 28 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web
(6) ▶ مثال: تخصيص محث PS1 (مؤقت)
# جرّب محثات مختلفة في الطرفية الحالية
export PS1='\u:\w\$ '
# النتيجة: alice:/home/alice$
export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# النتيجة: (أخضر) username@hostname
# /current/path$
الإخراج:
TEXTalice:/home/alice$ alice@ubuntu /home/alice$
(7) ▶ مثال: إضافة أسماء مستعارة (دائم)
# تعديل .bashrc
echo '# My custom aliases' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc
# تطبيق التغييرات
source ~/.bashrc
# اختبار
ll
myip
الإخراج:
TEXTtotal 48 drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 . drwxr-xr-x 1 alice alice 4096 Jul 8 10:23 .. -rw-r--r-- 1 alice alice 3771 Jul 8 10:23 .bashrc drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 projects 203.0.113.42
(8) ▶ مثال: تثبيت Python وNode.js
# تثبيت Python3 وpip
sudo apt update
sudo apt install -y python3 python3-pip
# التحقق
python3 --version
# Output: Python 3.10.12
# تثبيت Node.js (من مستودع NodeSource الرسمي)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# التحقق
node --version
# Output: v20.12.0
npm --version
الإخراج:
TEXTPython 3.10.12 v20.12.0 10.5.0
(9) ▶ مثال: التحقق من جاهزية البيئة
echo "=== Operating System ===" && lsb_release -d
echo "=== Home Directory Structure ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== Aliases ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1
الإخراج:
TEXT=== Operating System === Description: Ubuntu 22.04.3 LTS === Home Directory Structure === total 28 drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 learning drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 notes drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 scripts drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 tmp drwxr-xr-x 2 alice alice 4096 Jul 8 10:23 web === Shell === /bin/bash === Python === Python 3.10.12 === Node.js === v20.12.0 === Aliases === alias cls='clear' alias la='ls -A' alias ll='ls -la' === PS1 === \[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$
(10) ▶ مثال شامل: سكريبت إعداد بيئة التطوير الكامل
احفظ هذا السكريبت باسم ~/setup-dev.sh وشغّله مرة واحدة لإكمال كل الإعدادات:
#!/bin/bash
set -e # Exit immediately on error
echo "Setting up Linux development environment..."
# 1. إنشاء هيكل الدلائل
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ Directory structure created"
# 2. إعداد أسماء .bashrc المستعارة وPS1
cat >> ~/.bashrc << 'EOF'
# ---- Custom configuration starts ----
# Aliases
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'
# PS1 prompt
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '
# ---- Custom configuration ends ----
EOF
echo "✅ .bashrc configured"
# 3. تثبيت أدوات التطوير
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ Development tools installed"
# 4. التحقق
source ~/.bashrc
echo "=== Environment Verification ==="
echo "Python: $(python3 --version 2>/dev/null || echo 'not installed')"
echo "Node.js: $(node --version 2>/dev/null || echo 'not installed')"
echo "Git: $(git --version 2>/dev/null || echo 'not installed')"
echo "✅ All done! Run source ~/.bashrc or reopen your terminal"
# تشغيل السكريبت
chmod +x ~/setup-dev.sh
./setup-dev.sh
❓ أسئلة شائعة
س: ما الفرق بين
.bashrcو.bash_profile؟ ج: \1
س: هل تبقى الأسماء المستعارة بعد إعادة التشغيل؟ ج: فقط لجلسة الطرفية الحالية (مؤقتة). لجعلها دائمة، يجب كتابة أوامر
aliasفي~/.bashrc.
س: كيف أجعل الأسماء المستعارة تعمل لكل المستخدمين؟ ج: اكتبها في الإعدادات العامة
/etc/bash.bashrcأو/etc/profile.d/custom.sh(يتطلب صلاحيات جذر).
س: هل يمكن للمحث PS1 عرض فرع Git؟ ج: نعم. استخدم الدالة
__git_ps1(تتطلب bash-completion) أو أضف$(git branch 2>/dev/null | grep '*' | sed 's/* //')إلى PS1 الخاص بك.
س: كيف أستعيد بيئتي إذا أفسدتها؟ ج: إذا أُسيئ إعداد
.bashrc، ابدأ bash نظيفًا بـbash --noprofile --norcثم عدّله وأصلحه. أو انسخه احتياطيًا مسبقًا بـcp ~/.bashrc ~/.bashrc.backup.
📖 ملخص
- هيكل الدلائل القياسي:
~/projects/{web,scripts,learning,notes,tmp} - PS1 يخصّص المحث؛
aliasيعطي الأوامر أسماء مختصرة .bashrcحيث تعيش الإعدادات الدائمة؛ شغّلsource ~/.bashrcبعد التعديل- تثبيت بيئات التطوير:
sudo apt install python3 nodejs - يمكنك كتابة سكريبت
setup-dev.shلإعداد بيئتك بنقرة واحدة (لهذا يهم تعلم سكريبتات Shell)
📝 تمارين
- أساسي (صعوبة ⭐): أنشئ هيكل دلائل التطوير الشخصي (projects/scripts/learning على الأقل) وأعد 3 أسماء مستعارة مفيدة (مثل
llو..وcls) في.bashrc - متوسط (صعوبة ⭐⭐): خصّص PS1 لعرض اسم المستخدم والدليل الحالي وفرع Git، وثبّت بيئة تشغيل لغة تطوير (Python أو Node.js)
- متقدم (صعوبة ⭐⭐⭐): اكتب سكريبت
~/projects/scripts/info.shيُخرج إصدار النظام والنواة والقرص والذاكرة، معset -eلمعالجة الأخطاء ومخرجات منسّقة