Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 数值测试 参数 说明 -eq 等于则为真 -ne…
Linux: Shell 神器, 神器软件, 命令行软件
ag:比grep、ack更快的递归搜索文件内容。
tig:字符模式下交互查看git项目,可以替代git命令。
mycli:mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。
jq: json文件处理以及格式化显示,支持高亮,可以替换python -m json.tool。
shellcheck:shell脚本静态检查工具,能够识别语法错误以及不规范的写法。
yapf:Google开发的python代码格式规范化工具,支持pep8以及Google代码风格。
mosh:基于UDP的终端连接,可以替代ssh,连接更稳定,即使IP变了,也能自动重连。
fzf:命令行下模糊搜索工具,能够交互式智能搜索并选取文件或者内容,配合终端ctrl-r历史命令搜索简直完美。
PathPicker(fpp):在命令行输出中自动识别目录和文件,支持交互式,配合git非常有用。
运行以下命令:
git diff HEAD~8 --stat | fpp
htop: 提供更美观、更方便的进程监控工具,替代top命令。
axel:多线程下载工具,下载文件时可以替代curl、wget。
axel -n 20 http://centos.ustc.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso
sz/rz:交互式文件传输,在多重跳板机下传输文件非常好用,不用一级一级传输。
cloc:代码统计工具,能够统计代码的空行数、注释行、编程语言。
ccache:高速C/C++编译缓存工具,反复编译内核非常有用。使用起来也非常方便:
gcc foo.c
改成:
ccache gcc foo.c
tmux:终端复用工具,替代screen、nohup。
neovim: 替代vim。
script/scriptreplay: 终端会话录制。
script -t 2>time.txt session.typescript # 录制开始 # your commands exit # 录制结束
回放:
scriptreplay -t time.txt session.typescript
you-get: 非常强大的媒体下载工具,支持youtube、google+、优酷、芒果TV、腾讯视频、秒拍等视频下载。
还有mac专有的pbcopy/pbpaste:
把命令行输出拷贝到系统粘贴板:
cat test.sh| pbcopy
把系统粘贴板内容拷到终端:
pbpaste
mac下的say命令支持多种语言(英语、普通话、粤语)文本朗读,支持各种销魂恐怖的语气。跑这个命令感受下,小心被吓着了:
for i in `say -v '?' | cut -d ' ' -f 1`; do echo $i && say -v "$i" 'Hello World';done
更具体的列表可参考:int32bit/dotfiles 。
pm:在 bash / zsh 中迅速切换项目目录
将你常去的目录添加到 pm 中,然后一条命令进行切换:
cd projects/awesome-project pm add awesome-project
上面的 pm add + 名称,可以将当前目录存储到 pm 中,并取一个名字。
类似的方法再添加几个目录,然后用 pm list 查看一下现在添加了哪些:
pm list # awesome-project # another-project
然后使用 pm go + 名字,迅速切换到该目录:
pm go awesome-project # Current project: awesome-project
最后还有一个命令:pm remove + 名字,进行删除。
cgasm:命令行查询汇编指令
Intel x86/x64 开发者手册,上千页的 PDF 里漫游,效率很低,对不对?cgasm 支持本地模糊搜索,比如查询 aes 相关的指令:
看 Intel 的 PDF 你要这么搞很费力吧?默认 cgasm + 指令,会显示简介。
当然,具体使用你会需要看更详细的说明,那么可以使用 cgasm -v aesenc,将会显示和开发手册 PDF里一致的内容:指令字节码,编码模式,状态影响,伪操作码描述和等价的 Intrinsic 等详细内容,比搜网页和查询 PDF效率高多了。
owncloud:DropBox 的开源替代品,提供命令行客户端 owncloudcmd
后端开发经常再不同的主机上跳来跳去,同步一些常用文件变得必不可少,当然你可以放到 DropBox 里,但我的 DropBox 账号只有一个,个人文件太多,不想再各种主机上乱放,且我发现 Linux 下的 DropBox 命令行客户端有时候会 100% cpu 占用,死循环了。
使用 owncloud 当然要搭建公网服务端,这有一定门槛,但如果你有一台 vps 或者公网固定 ip 的服务器,可以用 docker 直接拉一个 owncloud 服务器下来就行,五分钟都不到。作为 DropBox 的代替品 owncloud 我很喜欢它一句口号:你的数据,你掌握。
把 owncloudcmd 工具放到 crontab 里面,每五分钟对你的 ~/.cloud/ 目录进行一次同步,你直接修改一台机器上的 ~/.cloud/ 下面的文件,基本上一处修改,所有地方就及时自动同步上了,比用 git 同步常用资料方便多了。
ncdu:可视化的空间分析程序
你发现有人把 /home 空间撑爆了,影响了大家的工作,你愤怒了一层层的 du,一层层的 cd,整个过程就像刨垃圾堆一样的恶心,后来发现了 ncdu 这个基于 ncurses 的空间分析程序:
不但能用光标上下键移动,回车还可以进入对应目录又可以查看最新的占用,很快就揪出了占用空间最大的罪魁祸首。
glances:更强大的 htop / top 代替者
htop 代替 top,glances 代替 htop:
信息比 htop 丰富了不少,更全了,对吧?除了命令行查看外,glances 还提供页面服务,让你从页面上随时查看某服务器的状态。
mc :内容浏览/预览
即便能舒适的呆在终端命令行里工作的人,有时候面对有些事情,也会感到烦躁,比如浏览一个目录的结构和里面文件内容,比如从源文件夹选择拷贝一批特定的文件到目标文件夹,这时候你需要 mc ,对就是前面 mcedit 的父项目 midnight commander ,安装方法同 mcedit:
和原来 Windows 下的 Total Commander 很类似,直接光标上下移动浏览文件,按 TAB键切换左右窗口,支持鼠标,支持内容预览,让你快速了解一堆文件夹里有些什么东西,按 F3 可以唤出 mcedit 预览文件,还可以用二进制查看文件内容,F4可以编辑文件。
ranger:内容浏览/预览
另一款内容预览软件,界面没有 mc 那么漂亮,标记拷贝也没它强,但是预览功能做的很不错,如果你习惯 vim 键位的话,你会发现ranger有些地方比 mc做的好不少:
上下键(或者j, k)移动光标,内容预览自动出现在右边,左键可以回退上一层目录,q退出,如果你对预览很依赖,你会喜欢上 ranger 这款软件,apt-get 直接安装即可。
dstat:vmstat 代替者
可能不少人都用过,但是本问题下好像没人提?
能输出比 vmstat 更加:美观,整洁,强大的内容。
cheat:命令行笔记
就是各种 cheat sheet ,比如经常搞忘 redis 命令的话,你可以新建 ~/.cheat/redis 这个文件,写一些内容,比如:
cat /etc/passwd | redis-cli -x set mypasswd redis-cli get mypasswd redis-cli -r 100 lpush mylist x redis-cli -r 100 -i 1 info | grep used_memory_human: redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3 redis-cli --scan --pattern '*:12345*'
然后使用的时候,cheat redis 命令就可以显示出来刚才新建的 cheat sheet 了:
同样 cheat 本身还自带了很多常用 cheat sheet,比如你可以试试:
cheat tar # 当你忘记 tar 命令时候 cheat vim # vim cheat sheet cheat rsync # 文件同步的 cheat sheet
忘记 Vim 怎么退出了?没关系 cheat vim 就可以显示 vim cheat sheet了,对于一些重要的,但是不常用的,经常搞忘的东西,特别有用,比如我最痛恨的 https + svn 搭建过程,第一次查资料弄好,然后忘了,半年后又要再弄时又得全部重新查找资料,然后又忘记了,有了这个就比较好办。
再比如 rsync 的用法,我就老记不住,man rsync 又是废话连篇不着重点,看它自带的 cheat 效率提高不少,注意时常更新,作者会不断添加 cheat sheet。
这显然比你查询网页开 evernote 效率来的快,使用环境变量 DEFAULT_CHEAT_DIR 可以设定 ~/.cheat 以外的个人 cheat 目录,一般很多人都会在 github 上建立一个个人配置文件的项目,里面放满自己的 vim / zsh / bash 等配置,现在可以把个人 cheat 文件也纳入这个项目的管理,这样你就比较方便的能在不同的机器上同步你自己建立的各种 cheat sheet 了。
随着你自定义了越来越多的 cheat sheet,你的工作效率会变得越来越高。
multitail:多重 tail
通常你不止一个日志文件要监控,怎么办?终端软件里开多个 tab 太占地方,可以试试这个工具:
上面演示了同时监控两个日志文件,有高亮显示不同内容,当然还可以同时监控更多日志:
也许你会问,这和 tmux + tail 有什么区别?区别大了,multitail 可以做太多 tmux + tail 做不了的事情了,比如:
- 日志色彩高亮
- 窗口自动管理,自动调整大小。
- 多个日志文件窗口可以合并到一个里面,就像一个 log 文件一样查看。
- 临时显示/隐藏某个日志文件窗口。
- 可以对所有日志文件进行同一关键字搜索。
- 日志过滤,外部正则表达式工具分析。
- 众多常见服务的日志高亮模板,如:tcpdump,apache,squid,strace
等等,自己到它主页看吧,比 tmux + tail 强多了,操作也比 tmux 方便。
bro:以用例为主的帮助系统
man 以外的帮助系统有很多,除去 cheat, tldr 外,还有一款有意思的帮助系统 — bro,它是以用例为主的帮助,所有用例都是由用户提供,并且由用户投票筛选出来的:
比如我们查看 cut 命令的帮助,就运行 “bro cut”,显示内容如图,查看按投票多少排序,你如果觉得哪条解释比较好,你可以投赞成票,或者反对票。
安装很简单,先安装 ruby 和 ruby-dev ,然后:
gem install bropages
即可,相比由某些官方写的帮助文档,这种知乎式的帮助筛选方法,更容易将最好的帮助信息筛选出来。
thefuck: https://github.com/nvbn/thefuck
用途是每次命令行打错了以后,打一句fuck就会自动更正命令。比如apt-get打成了aptget。fuck以后自动变成apt-get。但还是没加sudo。再fuck,成功!
又比如git branch打成了git brnch。fuck!更正成git branch。
又比如python打成了puthon。fuck!一秒变python。
而且关键是每次打命令和内心os完全一致,有种人机合一的快感。fuck!
更多:https://www.zhihu.com/question/59227720
本文:Linux: Shell 神器, 神器软件, 命令行软件