开发者都或多或少接触过 linux 接触过命令行,当然肯定也都被命令行狠狠地“fuck”过。我很多时候都是微不足道的原因导致了命令行出错,例如将 python 输入成 ptyhon,例如将 ls -alh
输入成 ls a-lh
而导致出错,这个时候我会想说:“fuck”。
开发 thefuck 的这位同仁,恐怕也经常会有这种不和谐的情况。因此开发了这个软件 thefuck。
thefuck 不仅仅能修复字符输入顺序的错误,在很多别的你想说“fuck”的情况下,thefuck 依然有效。
例如以下情况。
任何情况下你想说“我操”,你都可以用得到 thefuck。
例如:
使用过 ubuntu 的开发者很多都知道有这么一条命令:sl。这条命令是在你将 ls 错误地输成 sl 时,会在屏幕上快速驶过一辆火车。当然,有了 thefuck,sl 似乎也可以退休了。
➜ sl The program 'sl' is currently not installed. You can install it by typing: sudo apt-get install sl ➜ fuck ls #修正 a.go b.php dockerui jekyll-casper main.go PureBlog sss.png typecho a.php c-hash Font-Awesome jekyll-pure mili signal.c TeamTalk upload bii-ubuntu-64_3_0.deb Dockerfile harmony JekyllPure ngircd signal.c~ tingyun-agent-php-latest.x86_64.deb web.goblog Dockerfile.bak hashmap kasper php-src sss.jpg tipi zerver
➜ 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
➜ git pushfatal: 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 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 Python 3.4.2 (default, Oct 8 2014, 13:08:17) ...
➜ git brnchgit: 'brnch' is not a git command. See 'git --help'. Did you mean this? branch ➜ fuck git branch * master
thefuck 还有其他很多种用法,就等着你去发现。
python (2.7+ or 3.3+)
pip
python-dev
可以使用 pip 安装:sudo pip install thefuck
或者使用 OS X、Ubuntu、Arch 的包管理器安装。
安装后配置
bash:
alias fuck='eval $(thefuck $(fc -ln -1)); history -r'
Zsh、Fish 和 PowerShell 的 配置方法见这里。
更新到最新的 thefuck 的方法非常简单:
sudo pip install thefuck --upgrade
前面说了那么多用法,
那么有人觉得 thefuck 可能只是一个用来
thefuck 进行命令修复的模块名和对应的修复原理如下:
brew_unknown_command:修复 brew
命令,例如将 brew docto
修复为 brew doctor
cd_parent:将 cd..
修正为 cd ..
cd_mkdir:cd
进入不存在的目录时尝试创建目录。
cp_omitting_directory:cp
时添加 -a
选项
fix_alt_space:将所有的的Alt+Space修正为Space。
git_add:修正没有 git add
的情况。
git_checkout:git checkout
不存在的分支之前尝试创建分支。
git_no_command:修正错误的选项,例如 git brnch
。
git_push:如果 push
失败,尝试将 git push
修正为 git push --set-upstream origin $branch
。
has_exists_script:为所有的提示不存在的命令尝试添加 ./
前缀。
lein_not_task:修正 lein
,例如 lein rpl
。
mkdir_p:mkdir
时尝试添加 -p
选项。
no_command:修正不存在的命令,例如 vom
修正为 vim
。
man_no_space:将没有空格的 man
命令添加空格,例如 mandiff
修正为 man diff
pacman:arch 系统上,如果使用没有安装的软件,尝试使用 pacman
或者 yaourt
安装。
pip_unknown_command:修正错误的 pip
命令,例如 pip isntall
修正为 pip install
python_command:当前目录试图执行没有 x
权限的 python 程序时,修复为添加 python
前缀
sl_ls:sl
修正为 ls
rm_dir:如果删除文件夹,为 rm
添加 -rf
选项。
ssh_known_hosts:如果远程主机公钥不匹配,尝试将远程主机公钥从 know_hosts
中移除。
sudo:如果提示没有权限,尝试添加 sudo
。
switch_layout:将键盘布局修正为英语布局。
apt_get:如果不存在命令,尝试使用 apt-get
包管理器安装。
brew_install:修正 brew install
的格式。
composer_not_command:修正 composer 命令。
没有启用的模块:
ls_lah:为 ls
添加 -alh
选项。
rm_root:为 rm -rf /
添加 --no-preserve-root
选项。
当然,你也可以自定义修正规则:
一个自定义规则的案例:
def match(command, settings): return ('permission denied' in command.stderr.lower() or 'EACCES' in command.stderr)# 获取 stderr 中的字符串和程序返回值(errno),# 修正规则(命令前添加 sudo)def get_new_command(command, settings): return 'sudo {}'.format(command.script)# 以下为可选项# 默认是否开启enabled_by_default = True# 附加命令def side_effect(command, settings): subprocess.call('chmod 777 .', shell=True)# 优先级,数字越大优先级越低。priority = 1000
虽然 thefuck 带来了很多便利,不过仍然建议注意这件事情:
thefuck 会给出的修正后的命令,但是默认情况下你看到它们的时候,命令都已经默认执行了。
大部分情况下,thefuck 可能给出的是正确的修正,但是小部分情况下,给出的修正并不是你想要的。
所以建议将 ~/.thefuck/settings.py
中的设置改为 require_confirmation = True
,这样可以自己决定是否执行修正后的命令。
介绍内容来自 segmentfault
在mac的命令行操作时,是不是经常忘记一些命令,或者记错了命令,这个时候是不是想说一句fuck,好的,现在就介绍这款能让你爽翻天,还能提高效率的工具。首先感谢 @liamosaur tweet 大神开发了该工具 ,也要感谢我的同事介绍给我这款工具, 我也是今天朋友介绍给我的,爽翻天,so,我不能自己一个人爽,要爽大家一起爽 ! 1.thefuck工具简介 thefuck是github上一
博客搬运自我的个人博客 chantAria的博客 精力有限,新博客我会同步到CSDN,但博客内容的更新只会出现在个人博客 欢迎大家来玩耍哦! 报错代码 今天心血来潮打算在自己的centos服务器安装大名鼎鼎的thefuck 根据官网的指示,安装方法非常简单,只需要 pip install thefuck 安装完成后再进行简单地配置就可以大功告成了 但是在linux上安装时,却报了如下错误
无意中发现了一个高性能sqrt算法。 此算法来源于Quake-III Arena (雷神之锤3),它是90年代的经典游戏之一。 后来,QUAKE的开发商遵守GPL协议,公开了QUAKE-III的源代码,让世人有幸目睹Carmack传奇的3D引擎的源码。 float Q_rsqrt( float number ) { long i; float x2, y; const fl
MAC: brew install thefuck 安装完成后提示Please put eval $(thefuck --alias) in your ~/.bashrc and apply changes with 可以在 /etc目录下找到 .bashrc 在terminal下输入 open ~/.bach_profile 找到 .bash_profile 选择一个目录添加以下代码 eva
扩展说明 所有服务器均支持 telnet 访问,用于人工干预。 扩展接口 org.apache.dubbo.remoting.telnet.TelnetHandler 扩展配置 <dubbo:protocol telnet="xxx,yyy" /> <!-- 缺省值设置,当<dubbo:protocol>没有配置telnet属性时,使用此配置 --> <dubbo:provider telnet=
全局配置 你可以获得命令行帮助通过pyspider --help和pyspider all --help来获得帮助。 全局的选项适用于所有的子命令 ``` Usage: pyspider [OPTIONS] COMMAND [ARGS]... A powerful spider system in python. Options: -c, --config FILENAME
Mongo命令行是一个跟MongodDB服务交互的JavaScript接口工具,它是MongoDB封装的一个组件。你可以使用这个命令行工具查询,更新数据,执行一些管理操作。 运行命令行 安装并启动MongoDB后,就可以连接mongo命令行到MongoDB实例了。先确认MongoDB实例已经运行,然后才可以启动mongo命令行连接。 打开一个命令行窗口,执行如下命令即可: mongo 请确认你已经
init yog2 init 是脚手架命令,用于初始化一些环境与代码,目前提供的脚手架有 yog2 init project 初始化一个yog2 project,主要包含了基础的 project 目录结构和基础框架代码 yog2 init app 初始化一个 yog2 app,主要包含了基础的 app 目录结构与一些样例文件 yog2 init node-runtime 仅限百度内部使用,包含了公
swoft 提供了功能强大的命令行应用处理功能,swoft 的 http server、websocket server 等都是通过命令行启动和管理的 安装 Composer 安装 composer require swoft/console Git 仓库 Github https://github.com/swoft-cloud/swoft-console 参与贡献 欢迎参与贡献,您可以 fo
开发时很多任务都需要在命令行界面下完成。 在线阅读宁皓网的《CLI》命令行界面。 Windows 下载完整版的 cmder,它里面包含了很多 Windows 上不具备的工具。用 cmder 可以代替 Windows 系统上自带的 cmd 与 Powershell 命令行界面。 http://cmder.net/ macOS 用系统自带的终端(Terminal),或者下载安装 iTerm。
下文列出了Chrome浏览器和Electron支持的命令行开关. 你也可以在[app][app]模块的[ready][ready]事件之前使用[app.commandLine.appendSwitch][append-switch] 来添加它们到你应用的main脚本里面: 1 const {app} = require('electron') 2 app.commandLine.appendSwi
Hyperf 的命令行默认由 hyperf/command 组件提供,而该组件本身也是基于 symfony/console 的抽象。 安装 通常来说该组件会默认存在,但如果您希望用于非 Hyperf 项目,也可通过下面的命令依赖 hyperf/command 组件: composer require hyperf/command 查看命令列表 直接运行 php bin/hyperf.php 不带