The Fuck هو تطبيق رائع، مستوحى من تغريدة @liamosaur، والذي يعمل على تصحيح الأخطاء في أوامر وحدة التحكم السابقة.
هل اللعنة بطيئة جدًا؟ جرب الوضع الفوري التجريبي!
المزيد من الأمثلة:
➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root ?
➜ fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
[sudo] password for nvbn:
Reading package lists... Done
...
➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
➜ fuck
git push --set-upstream origin master [enter/↑/↓/ctrl+c]
Counting objects: 9, done.
...
➜ puthon
No command ' puthon ' found, did you mean:
Command ' python ' from package ' python-minimal ' (main)
Command ' python ' from package ' python3 ' (main)
zsh: command not found: puthon
➜ fuck
python [enter/↑/↓/ctrl+c]
Python 3.4.2 (default, Oct 8 2014, 13:08:17)
...
➜ git brnch
git: ' brnch ' is not a git command. See ' git --help ' .
Did you mean this ?
branch
➜ fuck
git branch [enter/↑/↓/ctrl+c]
* master
➜ lein rpl
' rpl ' is not a task. See ' lein help ' .
Did you mean this ?
repl
➜ fuck
lein repl [enter/↑/↓/ctrl+c]
nREPL server started on port 54848 on host 127.0.0.1 - nrepl://127.0.0.1:54848
REPL-y 0.3.1
...
إذا لم تكن خائفًا من تشغيل الأوامر المصححة بشكل أعمى، فيمكن تعطيل خيار إعدادات require_confirmation
:
➜ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root ?
➜ fuck
sudo apt-get install vim
[sudo] password for nvbn:
Reading package lists... Done
...
على نظامي التشغيل macOS أو Linux، يمكنك تثبيت The Fuck عبر Homebrew:
brew install thefuck
على Ubuntu/Mint، قم بتثبيت The Fuck باستخدام الأوامر التالية:
sudo apt update
sudo apt install python3-dev python3-pip python3-setuptools
pip3 install thefuck --user
على FreeBSD، قم بتثبيت The Fuck باستخدام الأوامر التالية:
pkg install thefuck
على نظام التشغيل ChromeOS، قم بتثبيت The Fuck باستخدام chromebrew باستخدام الأمر التالي:
crew install thefuck
على الأنظمة القائمة على Arch، قم بتثبيت The Fuck باستخدام الأمر التالي:
sudo pacman -S thefuck
على الأنظمة الأخرى، قم بتثبيت The Fuck باستخدام pip
:
pip install thefuck
وبدلاً من ذلك، يمكنك استخدام مدير حزم نظام التشغيل (OS X، Ubuntu، Arch).
# يوصى بوضع هذا الأمر في .bash_profile
أو .bashrc
أو .zshrc
أو أي برنامج نصي آخر لبدء التشغيل:
eval $( thefuck --alias )
# You can use whatever you want as an alias, like for Mondays:
eval $( thefuck --alias FUCK )
أو في تكوين Shell الخاص بك (Bash، Zsh، Fish، Powershell، tcsh).
التغييرات متاحة فقط في جلسة الصدفة الجديدة. لإتاحة التغييرات على الفور، قم بتشغيل source ~/.bashrc
(أو ملف تكوين Shell مثل .zshrc
).
لتشغيل الأوامر الثابتة دون تأكيد، استخدم الخيار --yeah
(أو فقط -y
للاختصار، أو --hard
إذا كنت محبطًا بشكل خاص):
fuck --yeah
لإصلاح الأوامر بشكل متكرر حتى النجاح، استخدم الخيار -r
:
fuck -r
pip3 install thefuck --upgrade
ملاحظة: تم تغيير وظيفة الاسم المستعار في الإصدار 1.34 من The Fuck
لإزالة The Fuck ، قم بعكس عملية التثبيت:
يحاول The Fuck مطابقة الأمر السابق بقاعدة. إذا تم العثور على تطابق، فسيتم إنشاء أمر جديد باستخدام القاعدة المطابقة وتنفيذه. يتم تمكين القواعد التالية بشكل افتراضي:
adb_unknown_command
- يعمل على إصلاح الأوامر التي بها أخطاء إملائية مثل adb logcta
؛ag_literal
- يضيف -Q
إلى ag
عند اقتراحه؛aws_cli
– يعمل على إصلاح الأوامر التي بها أخطاء إملائية مثل aws dynamdb scan
؛az_cli
- يعمل على إصلاح الأوامر التي بها أخطاء إملائية مثل az providers
؛cargo
- تشغيل cargo build
بدلاً من cargo
؛cargo_no_command
- يعمل على إصلاح الأوامر الخاطئة مثل cargo buid
؛cat_dir
- يستبدل cat
بـ ls
عندما تحاول cat
دليل؛cd_correction
- التدقيق الإملائي وتصحيح أوامر القرص المضغوط الفاشلة؛cd_cs
– يغير cs
إلى cd
;cd_mkdir
– ينشئ الدلائل قبل إدخالها إليها؛cd_parent
– يغير cd..
إلى cd ..
;chmod_x
- يضيف بت التنفيذ؛choco_install
- يُلحق اللواحق الشائعة لحزم الشوكولاتة؛composer_not_command
- يعمل على إصلاح اسم أمر الملحن؛conda_mistype
– إصلاحات أوامر conda؛cp_create_destination
- يقوم بإنشاء دليل جديد عندما تحاول cp
أو mv
إلى دليل غير موجودcp_omitting_directory
- يضيف -a
عندما تقوم بدليل cp
؛cpp11
- يضيف -std=c++11
المفقود إلى g++
أو clang++
؛dirty_untar
- يعمل على إصلاح أمر tar x
الذي تم إلغاء تحديده في الدليل الحالي؛dirty_unzip
- يعمل على إصلاح أمر unzip
الذي تم فك ضغطه في الدليل الحالي؛django_south_ghost
- يضيف --delete-ghost-migrations
إلى فشل بسبب هجرة أشباح django South؛django_south_merge
- يضيف --merge
إلى هجرة django الجنوبية غير المتسقة؛docker_login
- ينفذ docker login
ويكرر الأمر السابق؛docker_not_command
- يعمل على إصلاح أوامر عامل الإرساء الخاطئة مثل docker tags
؛docker_image_being_used_by_container
- يزيل الحاوية التي تستخدم الصورة قبل إزالة الصورة؛dry
– يعمل على إصلاح التكرارات مثل git git push
;fab_command_not_found
– يعمل على إصلاح أوامر النسيج التي بها أخطاء إملائية؛fix_alt_space
- يستبدل Alt+Space بحرف Space؛fix_file
- يفتح ملفًا به خطأ في $EDITOR
الخاص بك؛gem_unknown_command
– إصلاح أوامر gem
الخاطئة؛git_add
– إصلاحات "pathspec 'foo' لا يتطابق مع أي ملف (ملفات) معروفة لـ git." ;git_add_force
- يضيف --force
إلى git add <pathspec>...
عندما تكون المسارات .gitignore'd؛git_bisect_usage
- يعمل على إصلاح git bisect strt
و git bisect goood
و git bisect rset
وما إلى ذلك عند التنصيف؛git_branch_delete
- يغير git branch -d
إلى git branch -D
؛git_branch_delete_checked_out
- يغير git branch -d
إلى git checkout master && git branch -D
عند محاولة حذف فرع تم سحبه؛git_branch_exists
- يقدم git branch -d foo
أو git branch -D foo
أو git checkout foo
عند إنشاء فرع موجود بالفعل؛git_branch_list
- يلتقط git branch list
بدلاً من git branch
ويزيل الفرع الذي تم إنشاؤه؛git_branch_0flag
- يعمل على إصلاح الأوامر مثل git branch 0v
و git branch 0r
وإزالة الفرع الذي تم إنشاؤه؛git_checkout
- إصلاح اسم الفرع أو إنشاء فرع جديد؛git_clone_git_clone
- يستبدل git clone git clone ...
بـ git clone ...
git_clone_missing
- يضيف git clone
إلى عناوين URL التي تظهر وكأنها مرتبطة بمستودع git.git_commit_add
- يقدم git commit -a ...
أو git commit -p ...
بعد الالتزام السابق إذا فشل لأنه لم يتم تنظيم أي شيء؛git_commit_amend
– يقدم git commit --amend
بعد الالتزام السابق؛git_commit_reset
- يقدم git reset HEAD~
بعد الالتزام السابق؛git_diff_no_index
- يضيف --no-index
إلى git diff
السابق في الملفات التي لم يتم تعقبها؛git_diff_staged
- يضيف --staged
إلى git diff
السابق بمخرجات غير متوقعة؛git_fix_stash
– يعمل على إصلاح أوامر git stash
(الأمر الفرعي الذي به خطأ إملائي save
المفقود)؛git_flag_after_filename
– إصلاحات fatal: bad flag '...' after filename
git_help_aliased
- إصلاحات استبدال أوامر git help <alias>
بالأمر المستعار؛git_hook_bypass
- يضيف علامة --no-verify
السابقة لـ git am
أو git commit
أو أمر git push
؛git_lfs_mistype
- يعمل على إصلاح أوامر git lfs <command>
المكتوبة بشكل خاطئ؛git_main_master
- يعمل على إصلاح اسم الفرع غير الصحيح بين main
master
git_merge
- يضيف جهاز التحكم عن بعد إلى أسماء الفروع؛git_merge_unrelated
- يضيف --allow-unrelated-histories
عند الحاجةgit_not_command
- يعمل على إصلاح أوامر git الخاطئة مثل git brnch
؛git_pull
- يقوم بتعيين المنبع قبل تنفيذ git pull
السابقة؛git_pull_clone
– يتم النسخ بدلاً من السحب في حالة عدم وجود الريبو؛git_pull_uncommitted_changes
- يخزن التغييرات قبل سحبها ويبرزها بعد ذلك؛git_push
- يضيف --set-upstream origin $branch
إلى git push
السابق الفاشل؛git_push_different_branch_names
- يعمل على إصلاح عمليات الدفع عندما لا يتطابق اسم الفرع المحلي مع اسم الفرع البعيد؛git_push_pull
– يقوم بتشغيل git pull
عند رفض push
؛git_push_without_commits
– ينشئ التزامًا أوليًا إذا نسيت وفقط git add .
عند إنشاء مشروع جديد؛git_rebase_no_changes
- يقوم بتشغيل git rebase --skip
بدلاً من git rebase --continue
عندما لا تكون هناك تغييرات؛git_remote_delete
– يستبدل git remote delete remote_name
بـ git remote remove remote_name
;git_rm_local_modifications
– يضيف -f
أو --cached
عندما تحاول rm
ملف محليًا؛git_rm_recursive
- يضيف -r
عندما تحاول rm
دليل؛git_rm_staged
- يضيف -f
أو --cached
عندما تحاول rm
ملف يتضمن تغييرات مرحليةgit_rebase_merge_dir
- يوفر git rebase (--continue | --abort | --skip)
أو إزالة .git/rebase-merge
dir عندما تكون عملية إعادة الأساس قيد التقدم؛git_remote_seturl_add
- يعمل على تشغيل git remote add
عندما يكون git remote set_url
على جهاز تحكم عن بعد غير موجود؛git_stash
– يخزن تعديلاتك المحلية قبل إعادة تأسيس الفرع أو تبديله؛git_stash_pop
- يضيف تعديلاتك المحلية قبل فتح المخبأ، ثم يعيد تعيينه؛git_tag_force
- يضيف --force
إلى git tag <tagname>
عندما تكون العلامة موجودة بالفعل؛git_two_dashes
– يضيف شرطة مفقودة إلى أوامر مثل git commit -amend
أو git rebase -continue
;go_run
- يُلحق ملحق .go
عند تجميع/تشغيل برامج Go؛go_unknown_command
- يعمل على إصلاح أوامر go
الخاطئة، على سبيل المثال go bulid
؛gradle_no_task
– إصلاحات لم يتم العثور عليها أو مهمة gradle
غامضة؛gradle_wrapper
- يستبدل gradle
بـ ./gradlew
؛grep_arguments_order
- يعمل على إصلاح ترتيب وسيطات grep
لمواقف مثل grep -lir . test
؛grep_recursive
- يضيف -r
عند محاولة استخدام دليل grep
؛grunt_task_not_found
– إصلاحات الأوامر grunt
التي بها أخطاء إملائية؛gulp_not_task
- يعمل على إصلاح مهام gulp
التي بها أخطاء إملائية؛has_exists_script
- يُضاف مسبقًا ./
عند وجود البرنامج النصي/الثنائي؛heroku_multiple_apps
- يضيف --app <app>
إلى أوامر heroku
مثل heroku pg
؛heroku_not_command
- يعمل على إصلاح أوامر heroku
الخاطئة مثل heroku log
؛history
- يحاول استبدال الأمر بالأمر الأكثر تشابهًا من التاريخ؛hostscli
- يحاول إصلاح استخدام hostscli
؛ifconfig_device_not_found
– يعمل على إصلاح أسماء الأجهزة الخاطئة مثل wlan0
إلى wlp2s0
؛java
- يزيل امتداد .java
عند تشغيل برامج Java؛javac
– يقوم بإلحاق .java
المفقود عند تجميع ملفات Java؛lein_not_task
- يعمل على إصلاح مهام lein
الخاطئة مثل lein rpl
؛long_form_help
- يتغير -h
إلى --help
عندما لا يكون إصدار النموذج القصير مدعومًاln_no_hard_link
- يرصد إنشاء رابط ثابت على الدلائل، ويقترح رابطًا رمزيًا؛ln_s_order
- يعمل على إصلاح ترتيب وسيطات ln -s
؛ls_all
- يضيف -A
إلى ls
عندما يكون الإخراج فارغًا؛ls_lah
- يضيف -lah
إلى ls
;man
- تغيير القسم اليدوي؛man_no_space
- يصلح أوامر الرجل بدون مسافات، على سبيل المثال mandiff
؛mercurial
- يعمل على إصلاح أوامر hg
الخاطئة؛missing_space_before_subcommand
- إصلاح الأمر الذي يحتوي على مساحة مفقودة مثل npminstall
؛mkdir_p
- يضيف -p
عند محاولة إنشاء دليل بدون أحد الوالدين؛mvn_no_command
- يضيف clean package
إلى mvn
؛mvn_unknown_lifecycle_phase
– يعمل على إصلاح مراحل دورة الحياة التي بها أخطاء إملائية مع mvn
؛npm_missing_script
- يعمل على إصلاح اسم البرنامج النصي المخصص npm
في npm run-script <script>
؛npm_run_script
– يضيف run-script
المفقود لبرامج npm
النصية المخصصة؛npm_wrong_command
- يعمل على إصلاح أوامر npm الخاطئة مثل npm urgrade
؛no_command
– يعمل على إصلاح أوامر وحدة التحكم الخاطئة، على سبيل المثال vom/vim
;no_such_file
- ينشئ الدلائل المفقودة باستخدام أوامر mv
و cp
؛omnienv_no_such_command
- يعمل على إصلاح الأوامر الخاطئة لـ goenv
و nodenv
و pyenv
و rbenv
(على سبيل المثال: pyenv isntall
أو goenv list
)؛open
- إما إضافة http://
إلى العنوان الذي تم تمريره open
أو إنشاء ملف أو دليل جديد وتمريره open
؛pip_install
- يعمل على إصلاح مشكلات الأذونات المتعلقة بأوامر pip install
عن طريق إضافة --user
أو تعليق sudo
مسبقًا إذا لزم الأمر؛pip_unknown_command
– يعمل على إصلاح أوامر pip
الخاطئة، على سبيل المثال pip instatl/pip install
؛php_s
– يستبدل -s
بـ -S
عند محاولة تشغيل خادم PHP محلي؛port_already_in_use
- يقتل العملية المرتبطة بالمنفذ؛prove_recursively
- يضيف -r
عند استدعائه مع الدليل؛python_command
- يُلحق python
مسبقًا عند محاولة تشغيل برنامج غير قابل للتنفيذ/بدون ./
python script؛python_execute
- يُلحق .py
المفقود عند تنفيذ ملفات Python؛python_module_error
- يعمل على إصلاح ModuleNotFoundError من خلال محاولة pip install
تلك الوحدة؛quotation_marks
– تعمل على إصلاح الاستخدام غير المتكافئ لـ '
و "
عندما تحتوي على وسيطات'؛path_from_history
- يستبدل المسار الذي لم يتم العثور عليه بمسار مطلق مماثل من التاريخ؛rails_migrations_pending
– تشغيل عمليات الترحيل المعلقة؛react_native_command_unrecognized
- يعمل على إصلاح أوامر react-native
غير المعروفة؛remove_shell_prompt_literal
- يزيل رمز موجه الصدفة البادئ $
، الشائع عند نسخ الأوامر من الوثائق؛remove_trailing_cedilla
– يزيل الحروف اللاحقة ç
، وهو خطأ مطبعي شائع في تخطيطات لوحة المفاتيح الأوروبية؛rm_dir
- يضيف -rf
عند محاولة إزالة الدليل؛scm_correction
- يصحح SCM الخاطئ مثل hg log
إلى git log
؛sed_unterminated_s
- يضيف '/' المفقود إلى s
sed
؛sl_ls
- يتغير sl
إلى ls
؛ssh_known_hosts
- إزالة المضيف من known_hosts
عند التحذير؛sudo
- يُلحق sudo
بالأمر السابق إذا فشل بسبب الأذونات؛sudo_command_from_user_path
– يقوم بتشغيل الأوامر من المستخدمين $PATH
باستخدام sudo
؛switch_lang
- يقوم بتبديل الأمر من تخطيطك المحلي إلى en؛systemctl
- يأمر بشكل صحيح معلمات systemctl
المربكة؛terraform_init.py
- يقوم بتشغيل terraform init
قبل التخطيط أو التطبيق؛terraform_no_command.py
– يعمل على إصلاح أوامر terraform
غير المعروفة؛test.py
- يقوم بتشغيل pytest
بدلاً من test.py
؛touch
- ينشئ أدلة مفقودة قبل "اللمس"؛tsuru_login
– يقوم بتشغيل tsuru login
إذا لم تتم مصادقته أو انتهت صلاحية الجلسة؛tsuru_not_command
- يعمل على إصلاح أوامر tsuru
الخاطئة مثل tsuru shell
؛tmux
- إصلاح أوامر tmux
؛unknown_command
- يعمل على إصلاح "الأمر غير المعروف" بنمط hadoop hdfs، على سبيل المثال يضيف "-" المفقود إلى الأمر الموجود على hdfs dfs ls
؛unsudo
- يزيل sudo
من الأمر السابق إذا رفضت العملية التشغيل بامتياز المستخدم المتميز.vagrant_up
- يبدأ تشغيل المثيل المتشرد؛whois
- إصلاح أمر whois
؛workon_doesnt_exists
– يعمل على إصلاح اسم virtualenvwrapper
env الذي يقترحه نظام التشغيل لإنشاء ملف جديد.wrong_hyphen_before_subcommand
- إزالة الواصلة الموضوعة بشكل غير صحيح ( apt-install
-> apt install
, git-log
-> git log
, وما إلى ذلك)yarn_alias
- يعمل على إصلاح أوامر yarn
المستعارة مثل yarn ls
؛yarn_command_not_found
– إصلاحات أوامر yarn
التي بها أخطاء إملائية؛yarn_command_replaced
- إصلاحات أوامر yarn
المستبدلة؛yarn_help
- يجعل من السهل فتح وثائق yarn
؛ يتم تمكين القواعد التالية افتراضيًا على منصات محددة فقط:
apt_get
- تثبيت التطبيق من apt إذا لم يكن مثبتًا (يتطلب python-commandnotfound
/ python3-commandnotfound
)؛apt_get_search
– تغييرات تحاول البحث باستخدام apt-get
مع البحث باستخدام apt-cache
؛apt_invalid_operation
- يعمل على إصلاح مكالمات apt
و apt-get
غير الصالحة، مثل apt-get isntall vim
؛apt_list_upgradable
- يساعدك على تشغيل apt list --upgradable
بعد apt update
؛apt_upgrade
- يساعدك على تشغيل apt upgrade
بعد apt list --upgradable
؛brew_cask_dependency
- تثبيت تبعيات برميل خشبي؛brew_install
– يعمل على إصلاح اسم الصيغة brew install
؛brew_reinstall
- يحول brew install <formula>
إلى brew reinstall <formula>
؛brew_link
- يضيف --overwrite --dry-run
في حالة فشل الارتباط؛brew_uninstall
- يضيف --force
brew uninstall
إذا تم تثبيت إصدارات متعددة؛brew_unknown_command
- يعمل على إصلاح أوامر المشروب الخاطئة، على سبيل المثال brew docto/brew doctor
؛brew_update_formula
- يحول brew update <formula>
إلى brew upgrade <formula>
؛dnf_no_such_command
- يعمل على إصلاح أوامر DNF المكتوبة بشكل خاطئ؛nixos_cmd_not_found
– تثبيت التطبيقات على NixOS؛pacman
- يثبت التطبيق باستخدام pacman
إذا لم يكن مثبتًا (يستخدم yay
أو pikaur
أو yaourt
إذا كان ذلك متاحًا)؛pacman_invalid_option
- يستبدل خيارات pacman
بالأحرف الصغيرة بأحرف كبيرة.pacman_not_found
- يعمل على إصلاح اسم الحزمة باستخدام pacman
أو yay
أو pikaur
أو yaourt
.yum_invalid_operation
- يعمل على إصلاح مكالمات yum
غير الصالحة، مثل yum isntall vim
؛الأوامر التالية مجمعة مع The Fuck ، ولكن لا يتم تمكينها افتراضيًا:
git_push_force
- يضيف --force-with-lease
إلى git push
(قد يتعارض مع git_push_pull
);rm_root
- يضيف --no-preserve-root
إلى الأمر rm -rf /
. لإضافة القاعدة الخاصة بك، قم بإنشاء ملف باسم your-rule-name.py
في ~/.config/thefuck/rules
. يجب أن يحتوي ملف القاعدة على وظيفتين:
match ( command : Command ) - > bool
get_new_command ( command : Command ) - > str | list [ str ]
بالإضافة إلى ذلك، يمكن أن تحتوي القواعد على وظائف اختيارية:
side_effect ( old_command : Command , fixed_command : str ) - > None
يمكن أن تحتوي القواعد أيضًا على المتغيرات الاختيارية enabled_by_default
و requires_output
priority
.
يحتوي Command
على ثلاث سمات: script
و output
و script_parts
. يجب ألا تغير قاعدتك Command
.
تم تغيير واجهة برمجة تطبيقات القواعد في الإصدار 3.0: للوصول إلى إعدادات القاعدة، قم باستيرادها باستخدام from thefuck.conf import settings
settings
عبارة عن كائن خاص تم تجميعه من ~/.config/thefuck/settings.py
وقيم من env (انظر المزيد أدناه).
مثال بسيط لقاعدة تشغيل البرنامج النصي باستخدام sudo
:
def match ( command ):
return ( 'permission denied' in command . output . lower ()
or 'EACCES' in command . output )
def get_new_command ( command ):
return 'sudo {}' . format ( command . script )
# Optional:
enabled_by_default = True
def side_effect ( command , fixed_command ):
subprocess . call ( 'chmod 777 .' , shell = True )
priority = 1000 # Lower first, default is 1000
requires_output = True
المزيد من الأمثلة على القواعد، والوظائف المساعدة للقواعد، والمساعدين الخاصين بالتطبيق/نظام التشغيل.
يمكن تغيير العديد من معلمات The Fuck في الملف $XDG_CONFIG_HOME/thefuck/settings.py
(الإعدادات الافتراضية $XDG_CONFIG_HOME
هي ~/.config
):
rules
- قائمة القواعد الممكّنة، بشكل افتراضي thefuck.const.DEFAULT_RULES
؛exclude_rules
– قائمة القواعد المعطلة، بشكل افتراضي []
;require_confirmation
- يتطلب التأكيد قبل تشغيل أمر جديد، بشكل افتراضي True
؛wait_command
- الحد الأقصى للوقت بالثواني للحصول على مخرجات الأمر السابق؛no_colors
- تعطيل الإخراج الملون؛priority
- الإملاء بأولويات القواعد، وستتم مطابقة القاعدة ذات priority
الأقل أولاً؛debug
- تمكين إخراج التصحيح، بشكل افتراضي False
؛history_limit
– القيمة الرقمية لعدد أوامر السجل التي سيتم فحصها، مثل 2000
؛alter_history
- دفع الأمر الثابت إلى السجل، بشكل افتراضي True
؛wait_slow_command
- الحد الأقصى للوقت بالثواني للحصول على مخرجات الأمر السابق إذا كان مدرجًا في قائمة slow_commands
؛slow_commands
- قائمة الأوامر البطيئة؛num_close_matches
– الحد الأقصى لعدد التطابقات القريبة التي يمكن اقتراحها، افتراضيًا 3
.excluded_search_path_prefixes
- بادئات المسار التي يجب تجاهلها عند البحث عن الأوامر، بشكل افتراضي []
. مثال على settings.py
:
rules = [ 'sudo' , 'no_command' ]
exclude_rules = [ 'git_push' ]
require_confirmation = True
wait_command = 10
no_colors = False
priority = { 'sudo' : 100 , 'no_command' : 9999 }
debug = False
history_limit = 9999
wait_slow_command = 20
slow_commands = [ 'react-native' , 'gradle' ]
num_close_matches = 5
أو عبر متغيرات البيئة:
THEFUCK_RULES
- قائمة القواعد الممكّنة، مثل DEFAULT_RULES:rm_root
أو sudo:no_command
؛THEFUCK_EXCLUDE_RULES
– قائمة القواعد المعطلة، مثل git_pull:git_push
;THEFUCK_REQUIRE_CONFIRMATION
- يتطلب التأكيد قبل تشغيل أمر جديد، true/false
؛THEFUCK_WAIT_COMMAND
- الحد الأقصى للوقت بالثواني للحصول على مخرجات الأمر السابق؛THEFUCK_NO_COLORS
– تعطيل الإخراج الملون، true/false
؛THEFUCK_PRIORITY
- أولوية القواعد، مثل no_command=9999:apt_get=100
، ستتم مطابقة القاعدة ذات priority
الأقل أولاً؛THEFUCK_DEBUG
- يتيح إخراج التصحيح، true/false
؛THEFUCK_HISTORY_LIMIT
- كم عدد أوامر السجل التي سيتم فحصها، مثل 2000
؛THEFUCK_ALTER_HISTORY
– دفع الأمر الثابت إلى السجل true/false
؛THEFUCK_WAIT_SLOW_COMMAND
- الحد الأقصى للوقت بالثواني للحصول على مخرجات الأمر السابق إذا كان في قائمة slow_commands
؛THEFUCK_SLOW_COMMANDS
– قائمة بالأوامر البطيئة، مثل lein:gradle
;THEFUCK_NUM_CLOSE_MATCHES
– الحد الأقصى لعدد التطابقات القريبة التي يمكن اقتراحها، مثل 5
.THEFUCK_EXCLUDED_SEARCH_PATH_PREFIXES
– بادئات المسار التي يجب تجاهلها عند البحث عن الأوامر، بشكل افتراضي []
.على سبيل المثال:
export THEFUCK_RULES= ' sudo:no_command '
export THEFUCK_EXCLUDE_RULES= ' git_pull:git_push '
export THEFUCK_REQUIRE_CONFIRMATION= ' true '
export THEFUCK_WAIT_COMMAND=10
export THEFUCK_NO_COLORS= ' false '
export THEFUCK_PRIORITY= ' no_command=9999:apt_get=100 '
export THEFUCK_HISTORY_LIMIT= ' 2000 '
export THEFUCK_NUM_CLOSE_MATCHES= ' 5 '
إذا كنت ترغب في إنشاء مجموعة محددة من القواعد غير العامة، ولكنك لا تزال ترغب في مشاركتها مع الآخرين، فقم بإنشاء حزمة باسم thefuck_contrib_*
بالبنية التالية:
thefuck_contrib_foo
thefuck_contrib_foo
rules
__init__.py
*third-party rules*
__init__.py
*third-party-utils*
setup.py
سيجد The Fuck القواعد الموجودة في وحدة rules
.
يتطلب السلوك الافتراضي لـ The Fuck وقتًا لإعادة تشغيل الأوامر السابقة. عندما يكون The Fuck في الوضع الفوري، فإنه يوفر الوقت عن طريق تسجيل الإخراج باستخدام البرنامج النصي، ثم قراءة السجل.
حاليًا، يدعم الوضع الفوري لغة Python 3 مع bash أو zsh فقط. يجب أيضًا تعطيل وظيفة التصحيح التلقائي لـ zsh حتى يعمل thefuck بشكل صحيح.
لتمكين الوضع الفوري، قم بإضافة --enable-experimental-instant-mode
إلى تهيئة الاسم المستعار في .bashrc
أو .bash_profile
أو .zshrc
.
على سبيل المثال:
eval $( thefuck --alias --enable-experimental-instant-mode )
انظر CONTRIBUTING.md
يمكن العثور على ترخيص المشروع هنا.