Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

3 أسباب وجيهة لاستبدال Bash بـ Zsh

العمل على الطرفية جزء أساسي من حياة أي مطور أو مستخدم متقدم لنظام Linux أو macOS، ومع مرور الوقت يبدأ كثيرون بملاحظة أن Bash، رغم بساطته، لم يعد كافيًا لتجربة مرنة وسريعة. هنا يبرز Zsh كخيار حديث يقدم أدوات أكثر ذكاءً مثل الإكمال التلقائي المتقدم، وإدارة المكونات الإضافية، وتحسين مظهر الطرفية. هذه التفاصيل الصغيرة تصنع فرقًا كبيرًا في الإنتاجية وتمنح المستخدم تحكمًا أوسع في بيئته اليومية. في هذا المقال نتناول الأسباب التي جعلت Zsh يصبح البديل المفضل للمطورين حول العالم.

a-3d-illustration-of-the-linux-mascot-tux-holding-a-zsh-terminal-window ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

إذا كنت تستخدم الطرفية بكثرة، فربما تفهم المعاناة المتكررة لكتابة أوامر طويلة. فخاصية إكمال علامات التبويب في Bash غير فعالة، ومسارات الملفات مُملة في الكتابة، والأخطاء المطبعية تُسبب إزعاجًا مستمرًا. لديّ ثلاثة أسباب وجيهة تجعل Zsh يُعالج هذه المشاكل ويُحسّن سير عمل الطرفية لديك.

نظام بيئي شامل للمكونات الإضافية لحل آلاف المشاكل

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

لتزويد واجهات برمجة التطبيقات (shells) بإمكانيات إضافية، يُمكننا اتباع إحدى الطرق التالية: تعديل ملفات تكوين واجهات برمجة التطبيقات (shell) مباشرةً وإضافة وظائف مُخصصة. على سبيل المثال، يُمكنك إدراج أسماء مُستعارة أو وظائف في ملف تكوين واجهات برمجة التطبيقات (shell)، لتصبح هذه الوظائف إضافات دائمة لبيئة واجهات برمجة التطبيقات (shells) لديك.

foo() {
  echo "This is the foo function"
}

سيقدم لك المثال السابق دالة قابلة لإعادة الاستخدام تُسمى “foo”، والتي تطبع رسالة أساسية فقط؛ ويمكنك استخدامها كأمر. مع ذلك، فرغم أن تعديل واجهة المستخدم أمر شائع، بل وضروري حتى للأدوات الشخصية المخصصة، إلا أنه نهج يدوي للغاية، وقد يتطلب جهدًا أكبر مما ترغب في القيام به على المدى الطويل.

اقرأ أيضا:  ما يميز openSUSE ويجعلها تنافس أقوى توزيعات Linux

هناك نهج آخر (وغالبًا أفضل) وهو استخدام الإضافات. الإضافات هي ببساطة حزم مكونة من دوال واجهة المستخدم، كتبها واختبرها ونشرها شخص آخر، وبالتالي يكون كل العمل الشاق قد أُنجز نيابةً عنك. لتثبيت الإضافات، عادةً ما تستخدم إطار عمل واجهة المستخدم – وهو بدوره مكون من دوال واجهة المستخدم. يقوم إطار عمل واجهة المستخدم بتهيئة بيئة واجهة المستخدم، وتسهيل تثبيت وتفعيل الإضافات، وغالبًا ما يوفر ميزات إضافية.

كان Zsh أول واجهة مستخدم تُنشئ بيئة عمل مناسبة للإضافات، وهي إطار عمل يُعرف باسم Oh My Zsh. بعد سنوات عديدة، نضج نظام Zsh البيئي لدرجة أنه يضم آلاف الإضافات والسمات وأطر العمل. ينصح الكثيرون باستخدام Oh My Zsh، لكنني أفضل Zinit لتركيزه على سرعة بدء التشغيل، والتي لا تتجاوز أجزاءً من الثانية.

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

مساعدة ذكية للأوامر مع إكمال ممتاز

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

a-terminal-window-shows-basic-z-shell-completion-options-it-displays-a-list-of-directories-inside-the-current-working-directory ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

يوفر Bash إكمالات shell، لكن عملية الاختيار معقدة، إذ تتطلب مني غالبًا الضغط على مفتاح Tab من 10 إلى 15 مرة لإكمال خيار واحد. مع أن إكمالات Zsh أفضل افتراضيًا، إلا أن الإضافات والأطر تُحسّن إمكانياتها بشكل كبير.

اقرأ أيضا:  أفضل منصات التخزين السحابي البديلة لـ Google Drive لمستخدمي Linux

a-terminal-window-displays-a-list-of-file-paths-as-z-shell-completion-options-the-options-are-displayed-vertically-and-augmented-with-the-fzf-command ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية a-terminal-window-displays-a-list-of-z-shell-completion-options-for-the-ls-command-the-options-are-displayed-vertically-and-augmented-with-the-fzf-command ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

تُظهر الصور السابقة عمليات إكمال Zsh مُعزَّزة بملحق يستفيد من أداة fzf. تُعدّ Fzf أداةً أساسيةً تُتيح لك تضييق نطاق اختياراتك آنيًا باستخدام بحث تقريبي. عند استخدامها مع عمليات الإكمال، لا يلزم أن تكون مُدخلاتك صحيحة تمامًا، وستظل fzf تُساعدك في العثور على الخيار المُناسب. هذا مُفيدٌ عند كتابة عشرات الأوامر بتتابع سريع، ولا تُخصِّص وقتًا كافيًا لتكون إملائيًا صحيحًا تمامًا.

إنشاء الأوامر عمليةٌ بحتة، وليست عملًا فنيًا، لذا يجب أن تُوجَّه ميزات shell نحو جعلها فعّالة قدر الإمكان. يُؤدي Zsh عملًا رائعًا في ذلك من خلال دعمه الممتاز لإكمال الأوامر. لم أستطع استخدام shell لفترة طويلة إذا لم يكن نظام الإكمال الخاص به مُساويًا لما يُقدِّمه Zsh.

تحرير سطر الأوامر الذكي باستخدام مُحرِّر سطر الأوامر Zsh

لا يقتصر سطر الأوامر على إدخال الأوامر فحسب؛ بل غالبًا ما يُمكِنه تحريرها أيضًا. يحتوي كلٌّ من Zsh وBash على محرري سطر أوامر كفؤين يوفران عناصر تحكم متقدمة لمعالجة نص الأمر قبل إدخاله.

يستخدم Bash GNU Readline، وهو محرر سطر أوامر عام يُستخدم في العديد من مشاريع البرمجيات المختلفة. يسمح لك هذا المحرر بتحرير سطر الأوامر باستخدام روابط مفاتيح Emacs أو Vi، مما يجعل أوامر التحرير أشبه باستخدام محرر نصوص. Readline قابل للتكوين، ولكنه غير قابل للتوسيع دون كتابة شيفرة C مخصصة. يتخذ محرر سطر Zsh (ZLE) نهجًا مختلفًا لأنه قابل للتوسيع عبر نصوص shell. تتيح قابلية ZLE للتوسيع ميزات قوية مدفوعة من قِبل المجتمع مثل تمييز بناء الجملة والعناصر المخصصة، بالإضافة إلى دعم روابط المفاتيح بنمط Emacs وVi.

العناصر (في رأيي) هي ما يميز ZLE حقًا. العنصر هو مجرد دالة shell يتم تنشيطها عادةً عبر اختصار لوحة المفاتيح. تتمتع العناصر بإمكانية الوصول إلى نص سطر الأوامر وتسمح لك بتنفيذ أي أمر shell عليه قبل قبول الأمر. هذا يفتح آفاقًا واسعة لتبسيط سير عملك.

أداتي المفضلتان تُسهّلان إجراء تغييرات Git (متتبع شفرة المصدر) واختيار الملفات.

أداة Git

أستخدم Git كثيرًا لتتبع ومراجعة تغييرات شفرة المصدر. أداتي الأولى تُبسّط أمر commit. إجراء عمليات commit في Git مهمة متكررة، وكتابة الأمر كاملًا في كل مرة، بما في ذلك رسالة وصفية، أمر مُرهق.

git commit --all --message "make lots of bugs"

بعد كتابة “git commit –all –message” عشرات المرات، بدأ التكرار يُرهقني. لهذا السبب أستخدم الأداة التالية.

git_commit_with_message() {
  local msg=$BUFFER
  BUFFER="git commit --all --message \"${msg}\""
  zle accept-line
}
zle -N git_commit_with_message
bindkey "\e^M" git_commit_with_message

a-terminal-window-with-two-words-entered-into-the-command-line-complete-rewrite-a-terminal-window-with-two-words-entered-into-the-command-line-complete-rewrite-1 ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

a-terminal-window-that-shows-a-git-commit-message-after-it-completes-the-commit-message-reads-complete-rewrite-1 ما الذي يجعل Zsh يتفوق على Bash في تجربة الاستخدام اليومية

أضع دالة shell السابقة في ملف .zshrc وأعيد تحميله. يمكنني بعد ذلك إجراء عملية تعهد Git بكتابة رسالة وصفية والضغط على Alt+Enter. ثم تُغلّفها الأداة بأمر “git commit –all –message”. هذا يوفر لي الكثير من الطاقة على المدى الطويل.

اقرأ أيضا:  لماذا أصبحت Garuda Linux التوزيعة التي لا أستغني عنها بعد سنوات من الاستخدام اليومي

أداة اختيار المسار

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

yazi_pick_path() {
  local file=$(yazi --chooser-file=>(cat))

  [[ -z "$file" ]] && zle redisplay && return

  LBUFFER+="\"$file\""
  zle redisplay
}

zle -N yazi_pick_path
bindkey '\ey' yazi_pick_path

الآن، عندما أكتب أمرًا وأحتاج إلى مسار، يمكنني الضغط على Alt+Y، وستفتح نافذة مدير ملفات Yazi في الطرفية. عندما أختار ملفًا أو مجلدًا وأضغط على Enter، يُدرج Yazi مسارًا بين علامتي اقتباس في سطر الأوامر نيابةً عني.

نظام ZLE قوي

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

على الرغم من أن Bash لديه أطر عمل شائعة (Bash-it و Oh My Bash) تأتي مع بعض الإضافات المفيدة، إلا أنني لا أعتقد أن عروضها تُضاهي نظام Zsh البيئي. بالإضافة إلى ذلك، يُقدم Zsh أيضًا أنظمة إكمال وتحرير أسطر أكثر تقدمًا بكثير. تسمح لي هذه الأنظمة الثلاثة القوية بالاستفادة من عمل الآخرين وتخصيص بيئتي بطريقة أجدها صعبة مع Bash.

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

زر الذهاب إلى الأعلى