تقوم الأداة 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 |
Manjaro | pacman -S zoxide | |
NixOS | [nixpkgs] | nix-env -iA nixpkgs.zoxide |
Parrot OS | apt 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 هو برنامَج مطابقة غير دقيقة سيسهل علينا عملية الاختيار في حال كان هناك اكثر من بديل لنفس المجلد المطلوب
قم بالتحميل عن طريق مدير الحزم.
مدير الحزم | التوزيعة | الأمر |
---|---|---|
APK | Alpine Linux | sudo apk add fzf |
APT | Debian 9+/Ubuntu 19.10+ | sudo apt-get install fzf |
Conda | conda install -c conda-forge fzf | |
DNF | Fedora | sudo dnf install fzf |
Nix | NixOS, etc. | nix-env -iA nixpkgs.fzf |
Pacman | Arch Linux | sudo pacman -S fzf |
pkg | FreeBSD | pkg install fzf |
pkgin | NetBSD | pkgin install fzf |
pkg_add | OpenBSD | pkg_add fzf |
XBPS | Void Linux | sudo xbps-install -S fzf |
Zypper | openSUSE | sudo 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

