aosus.org
استبدال cd بz

لماذا تستخدم cd وهناك z

تقوم الأداة z بتذكر المجلدات التي تتردد إليها بكثرة و تسهل عملية الوصول إليها

الأداة سهلة و بسيطه و متوفرة علي جميع أنظمة التشغيل و الطرفيات

سنتناول اليوم طريقة تثبيتها و استعمالها علي لينكس

نظرة علي الأداة

[mo@test-lab ~]$ pwd
/home/mo
[mo@test-lab ~]$ cd /tmp/test/
[mo@test-labfolder_test]$ cd /home/mo/
[mo@test-lab ~]$ cd folder_test # لاحظ هنا عدم تعرف الأمر cd علي المجلد لانه غير موجود في نفس المكان 
bash: cd: zoxide: No such file or directory
[mo@test-lab ~]$ zfolder_test  #لنجرب الأنتقال باستخدام الأمر z 
[mo@test-lab folder_test]$ cd mo #نعود لمجلد المنزل
[mo@test-lab ~]$ z est # و نحاول تخمين الأسم و كتابة جزء منه 
[mo@test-lab folder_test]$ # تعرفت الأداة علي المجلد عن طريق خوارزمية التخمين
[mo@test-lab folder_test]$ z mo #مثال اخر لتذكر العنوان 
[mo@test-lab ~]$ # هناقامت الأداة بتذكر عنوان مجلد المنزل للحساب الخاص بي بسبب الإنتقال له من قبل  

معايير الخوارزميه

فهم معايير خوارزمية سيسهل علينا التعامل مع الأدة وتوقع مخرجاتها.

يحكم الأداة معايير المطابقة الثلاث و تكرار زيارة المجلدات بالإضافة لتوقيت اخر زيارة إلى المجلد.

١ – لا تضع حالة الأحرف في الحسبان

z foo ==/foo ==/FOO لاحظ هنا أن الأداة تعرفت علي التعبرين و اهملت حالة الأحرف

٢ – تعتمد علي الترتيب

z fo ba ==/foo/bar !=/bar/foo لاحظ هنا عند عكس الترتيب لا تتعرف الاداة علي النمط

٣ – تماثل الجزء الأخير

z bar ==/foo/bar !=/bar/foo لاحظ هنا ان bar هو الجزء الاخير في الامر لذلك تماثل الجزء الاول و لاتماثل الاخير

ملحوظة :
== تعني أن z سيطابق المجلد و يتعرف علي اسم المجلد
!= تعني أن z لن يطابق المجلد و سيقوم بتجاهله

تعطي النتائج بشكل تنازلي بناء علي ترددك علي الملف مع مراعاة أولوية اعلي في حال كانت الزبارات في الساعات الأخيرة

التثبيت

١ – تثبيت البرمجية علي نظامك

البرمجية موجوده علي غالبية المستودعات الرسمية قم بتثبيتها عن طريق مدير الحزم الخاص بنظامك

التوزيعةالمستودعأمر التنزيل
Alpine Linux 3.13+[Alpine Linux Packages]apk add zoxide
Arch Linux[Arch Linux Community]pacman -S zoxide
CentOS 7+[Copr]dnf copr enable atim/zoxide
dnf install zoxide
Debian 11+[Debian Packages]apt install zoxide
Devuan 4.0+[Devuan Packages]apt install zoxide
Fedora 32+[Fedora Packages]dnf install zoxide
Gentoo[GURU Overlay]eselect repository enable guru
emerge --sync guru
emerge app-bashs/zoxide
Manjaropacman -S zoxide
NixOS[nixpkgs]nix-env -iA nixpkgs.zoxide
Parrot OSapt install zoxide
Raspbian 11+[Raspbian Packages]apt install zoxide
Ubuntu 21.04+[Ubuntu Packages]apt install zoxide
Void Linux[Void Linux Packages]xbps-install -S zoxide

بإمكانك أيضا تثبيتها عن طريق الأنترنت بإستعمال الأمر

curl -sS https://webinstall.dev/zoxide | bash

٢-اضافة البرنامَج إلي الطرفية الخاصة بك

لمعرفة الطرفية المستخدمة في نظامك تستطيع استخدام الأمر

echo $bash 

طرفية Bash

اضف إلي مِلَفّ الإعدادات الخاص بالصدفية (عادة يكون ~/.bashrc):

eval "$(zoxide init bash)"

طرفية Fish

اضف إلي مِلَفّ الإعدادات الخاص بالصدفية (عادة يكون ~/.config/fish/config.fish):

zoxide init fish | source

طرفية Zsh

اضف إلي مِلَفّ الإعدادات الخاص بالطرفية (عادة يكون ~/.zshrc):

eval "$(zoxide init zsh)"

لجعل الإكمال التلقائي يعمل، قد تحتاج إلى كتابة الأمر rm ~/.zcompdump*; compinit.

أي طرفية تتوافق مع معايير posix

اضف إلي مِلَفّ الإعدادات الخاص بالصدفية:

eval "$(zoxide init posix --hook prompt)"

مثال علي طرفية bash


[mo@test-lab ]$ which $bash
/bin/bash
[mo@test-lab ~]$ # الصدفية الخاصة بنا هي bash 
[mo@test-lab ~]$ # سنقوم بإضافة الأداة الي ملف الصدفة الخاصة بنا )حسب ملف صدفيتك(
[mo@test-lab ~]$ echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
[mo@mo-lab ~]$ source ~/.bashrc # نقوم بإعادة تحميل ملف الإعدادات حتي تظهر التغيرات 
[mo@test-lab ~]$ z
[mo@test-lab ~]$ z /home
[mo@test-lab home]$

٣-خطوة اختيارية قم بتحميل fzf

fzf هو برنامَج مطابقة غير دقيقة سيسهل علينا عملية الاختيار في حال كان هناك اكثر من بديل لنفس المجلد المطلوب
قم بالتحميل عن طريق مدير الحزم.

مدير الحزمالتوزيعةالأمر
APKAlpine Linuxsudo apk add fzf
APTDebian 9+/Ubuntu 19.10+sudo apt-get install fzf
Condaconda install -c conda-forge fzf
DNFFedorasudo dnf install fzf
NixNixOS, etc.nix-env -iA nixpkgs.fzf
PacmanArch Linuxsudo pacman -S fzf
pkgFreeBSDpkg install fzf
pkginNetBSDpkgin install fzf
pkg_addOpenBSDpkg_add fzf
XBPSVoid Linuxsudo xbps-install -S fzf
ZypperopenSUSEsudo zypper install fzf

ملاحظة : zoxide يدعم الإصدار 0.21.0 و أعلى.

٤-خطوة اختيارية استيراد البيانات

  • autojum
zoxide import --from autojump path/to/db
  • pz, z.lua, or zsh-z
zoxide import --from z path/to/db

الإعداد

استبدال cd بz

خطوة اختيارية لمن لا يفضل كتابة الأمر z و يبقي مع الأفتراضيات، وبداخل ملف إعدادات الطرفية الذي قمنا بتعديله سابقا قم بإضافة alias cd='z'

[mo@mo-lab ~]$ cd test # تجربة الإتنقال الي مجلد بستخدام cd 
bash: cd: test: No such file or directory
[mo@mo-lab ~]$ z test # تجربة مرة اخر باستخدام z بعد عدم تعرف cd 
[mo@mo-lab test]$ pwd # انتقل z الي المجلد بنجاح 
/tmp/test
[mo@mo-lab test]$ cd ~ # سنعود الي مجلد المنزل 
[mo@mo-lab ~]$ echo "alias cd='z'" >> ~/.bashrc سنقوم بإعادة تعريف الأمر cd  و نجعل الصدفية تنفذ الأمر z عند كتابة cd 
[mo@mo-lab ~]$ source ~/.bashrc # نقوم بإعادة تحميل ملف الإعدادات حتي تظهر التغيرات 
[mo@mo-lab ~]$ cd test
[mo@mo-lab test]$ pwd # انتقل بنجاح لأن ما ينفذ في اخلفية هو الأمر z 
/tmp/test
[mo@mo-lab test]$ #و هكذا قمنا بتحويل الأمر cd  و بإمكانا استعمال cd و سنحصل علي مميزات z  

تغيير طريقة عمل z وجعلها تطبع المجلد بعد الأنتقال

خيار حسب التفضيل هناك من يحب ان يحصل علي رد فعل مرأي يووضح المجلد الذي تم الأنتقال إليه.

بداخل ملف اعدادات الصدفية الذي قمنا بتعديله سابقا قم بإضافة export _ZO_ECHO=1

[mo@mo-lab ~]$ z test
/tmp/test # في حال تفعيل الخيار سيقوم بطباعة عنوان الملف بعد الإنتقال 
[mo@mo-lab test]$ 

رأي الشخصي في الأداة

هل تقوم الأداة باستبدال الأمر cd نظريا نعم فهي تقوم بكل ما يقوم به و مكتوبة بلغة rust مما يجعلها مفضلة من البعض لسرعتها
ولكن لن يكون انتقال المجتمع بأكمله و جعلها الخِيار الإفتراضي بتلك السهولة قم بتحمليها و اخبرني برأيك وشاركنا النقاش في التعليقات.

المصادر

ترخيص

هذا الموضوع يتبع ترخيص جميع مواضيع أسس هو CC-BY-SA 4.0

هذا الموضوع فائز بجائزة أسس للكتابة

هذا الموضوع أحد المواضيع الفائزة بجائزة أسس للكتابة, الجائزة الاولى في العالم العربي للتحفيز الكتابة عن البرمجيات الحرة.
تفاصيل أكثر عن الجائزة

المواضيع الفائزة لشهر أبريل ومايو 2022

mo saleh
كاتب فائز بجائزة أسس للكتابة |  + مقالات
Aosus