所有 Zsh 相关的函数、配置(主要是对一些 Unix 函数的封装)都在 zsh-config
目录下
配置文件位于 ~/.macbootstrap/config/shadowsocks.conf
,格式如下:
{
"server":"server_ip",
"server_port":443,
"local_port":local_port,
"password":"PSW",
"timeout":600,
"method":"aes-256-cfb"
}
用户需要自行修改服务器 IP、密码、本地和远程端口以及加密方式即可。然后运行 bssclient
即可后台运行。从此摆脱各种花哨的 GUI 工具。
如果你想查找文件夹内的某个文件,可以使用 find
命令,但默认的 find
命令并不支持表达,所以我在 personalized.sh
文件中封装了 bsfn
函数,它接受一个参数,可以精确匹配,也可以写正则表达式:
比如这里我们搜索所有以 BBA 开头,中间字符不限,以 Plugin 结尾的文件。
如果想使用 Charles 抓包,则输入 p on
即可将系统的 HTTP 和 HTTPS 代理设置为 127.0.0.1:8888
如果想使用 Shadowsocks 科学上网,则输入 p g
即可将系统的 socks 代理设置为 localhost:14179,需要自行修改端口号
如果不想使用代理,输入 p off
可以禁用所有代理,恢复默认设置。
输入 p s
可以查看当前的系统代理。
bssize 后面的参数可以是文件名,表示查看这个文件的大小。也可以是文件夹名,表示查看文件夹大小和文件夹内各子目录的大小。
bssize .
表示查看当前目录大小和子目录大小,bssize /
表示查看系统磁盘的使用情况。具体效果如图所示:
安装脚本中已经通过 homebrew 安装了 coreutils
,其中自带了 GNU 的 realpath
或者 readlink -f
命令:
realpath clean.sh
readlink -f clean.sh
# 输出结果都是 /Users/zxy/.macbootstrap/clean.sh
resolution path_to_image.png
# 输出结果是:4096 x 2048
以登录搬瓦工为例,每次都需要输入端口号、IP 地址和 root 密码是一件效率极低的事,首先需要把我们的公钥复制到远程服务器上:
brew install ssh-copy-id # 如果用了我的这份配置,这个工具是已经安装过的
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] -p 12345
端口和 IP 地址需要自己填写,这里将是你最后一次接触到 Root 密码的地方,今后再用 ssh 登录时就不需要密码。然而每次还要记忆端和 IP 地址依然是一件麻烦的事情,得益于 ~/.ssh/config
文件中的配置:
Host bwh
HostName 172.96.215.73
User root
Port 27850
IdentityFile ~/.ssh/id_rsa
只要简单的输入 ssh bwh
就可以登录了,再也不用担心多个 VPS 记不住了,而且这个配置文件仅仅记录了秘钥的位置,并不会泄露出来、
使用 showFiles
命令展示系统隐藏文件,hideFiles
命令恢复隐藏
这几个小命令可以快速实现一些编码和解码工作:
encode64 你好
# 5L2g5aW9
decode64 5L2g5aW9
# 你好%
urlencode https://baidu.com
# https%3A%2F%2Fbaidu.com
urldecode https%3A%2F%2Fbaidu.com
# https://baidu.com
如果当期目录下存在 xcodeproj 文件或者 xcworkspace 文件,可以用 ow 命令快速打开,如果要打开的工程在别的目录,则使用 ow path_to_project
的命令打开
如果 wcworkspace 和 Xcodeproj 文件同时存在,优先打开前者。
使用命令 x
可以快速解压任何压缩文件
如果你的日历里没有,仅仅想查看日期,cal
这个命令就足够用了,它可以显示当前的日期、月份和星期。cal -3
可以显示当前月和前后一个月的日期,cal -y
可以显示当年的日期。
如果想把 xcodebuild 编译出来的 .app 文件转换成 .ipa,可以用这个命令:
app2ipa xxx.app
# /private/tmp/ipa/output.ipa
配合 ideviceinstaller
可以快速安装到手机上:
# brew install ideviceinstaller
app2ipa xxx.app | xargs ideviceinstaller -i
可以通过系统的 lsof -i:port
来检查哪个程序占用了 port
端口,但有时候我们不想记参数,或者想查找某个程序占用了哪些端口,此时可以使用 bsof
。
比如查看 redis
进程占用了哪些端口,可以输入 bsof redis
,查看哪些进程占用了 80 端口可以输入 bsof :80
,如下图所示:
- 如果只想看某个输出的前 3 行,可以用
cat xxx H 3
,这是因为 H 被全局重命名为| head -n
- 如果是看输出的后 3 行,可以用
cat xxx T 3
,其中 T 被全局重命名为| tail -n
- 如果是看输出的指定行数,比如第 1、3、7 行,可以用
cat xxx R 1 3 7
, 其中 R 被全局重命名为| row
- 如果要看某个输出的某几列,比如倒数第一列,可以用
cat xxx C -1
,其中 C 被全局重命名为| column
- 如果要在 less 中查看某个超长的输出,可以用
cat xxx L
,其中 L 被全局重命名为| L
- 如果要忽略某条命令的报错,可以用
command NE
,其中 NE 被全局重命名为2> /dev/null
- 如果要某个命令完全不输出内容,可以用
command NUL
,其中 NUL被全局重命名为> /dev/null 2>&1
用法:
echo '{"hello": "world"}' | ppjson
这个命令封装了一些列琐碎的操作,可以放到 crontab 里面定时执行
这个命令可以从完整的文件路径中获取不带后缀的文件名,比如
bsfilename ~/Desktop/test.py
# 输出结果: test
这个命令可以快速压缩文件,用法 bszip path_to_file
,它会读取要压缩的文件(夹)名,然后在当前目录生成同名的 zip 文件
这个工具会自动把剪贴板里面的图片拷贝出来,存储为临时文件,上传后会自动删除。
使用这个工具前需要先配置七牛的 AK、SK,以及文件上传到哪个 Bucket 中,还有最终图床地址的前缀。
qnconf sk ak pictures http://images.bestswifter.com
以后每次截图完,只要输入命令 qn
,图片就会自动上传并且把 Markdown 格式的地址拷贝到剪贴板中。
如果你当前运行了 Xcode 进程,输入此命令可以快速查看 Xcode 可执行文件的路径
如果拿到别人的配置脚本,想自行定制。显然只知道定义是不够的,还得知道这个 alias 或者函数是在哪个文件里被定义的,这样才好去修改,此时建议使用我配置的 bswhich
命令:
bswhich ip
bswhich gg
系统的 Finder 其实并没那么好用,最大的问题在于没法和 Shell 有效的交互,比如复制移动文件、在当前文件夹位置打开终端都很不方便。
作为程序员,我推荐使用 Ranger 来浏览文件目录,它是一个使用 Vim 键位映射的文件管理工具。
使用快捷键 r
来打开 ranger,它的完整定义是:alias r='source ranger'
,这样做的好处在于当 Ranger 中目录发生变化时,可以改变外部 Shell 的路径。
在 Ranger 中,使用 j/k
来上下移动光标,h/l
来进行目录的前进和后退。
常用的操作有:
- zh:切换是否显示系统隐藏文件,按一次打开,再按一次关闭
- x:安全删除文件(放入垃圾箱中而不是 rm)
- yy:复制,dd:剪贴,pp:粘贴,空格键多选文件
- gh:进入用户目录($HOME)
- yn:复制文件名,yd 复制文件夹名,yp 复制完整路径名
- :j:和 autojump 一样,输入要跳转的地方
- <C-f>:利用 fzf 搜索文件
- f:当前目录内过滤文件名
- du:查看当前目录内各文件夹大小
- oo:在 Finder 中打开,op 或回车键:使用系统默认的程序打开,oc:使用 VSCode 打开(如果已经有 VSCode 进程,为了加快速度,则使用已存在的)
- m:添加书签,um:选择要删除的书签,```:展示书签
输入快捷键 Ctrl + E
可以根据当前提示快速补全,快捷键 ;
可以补全并执行
fzf 是一个模糊搜索神器,^t
是特定语义下的补全快捷键,^i
是默认快捷键,很少用到:
- 输入
kill
然后按下^t
键,就会打开 fzf 补全界面,通过输入进程名来获取到 PID - 类似的还有输入
ssh
、export
、unset
、unlias
等命令 - 按下
alt + c
可以列出当前目录下的文件夹,并快速进入 - 按下
^g
,会自动补全 autojump 的路径列表 - 按下
^r
进入命令历史模式,此时也会自动打开 fzf 补全界面,自动补全命令 - 注意此时的补全并不会自动执行,只会把命令粘贴到命令行中,如果想要按下回车后自动执行,可以用快捷键
^x^r
来触发
fzf 甚至还支持为自定义的命令添加补全,具体做法可以参考:Examples (completion)