Skip to content

Latest commit

 

History

History
251 lines (160 loc) · 9.87 KB

zsh.md

File metadata and controls

251 lines (160 loc) · 9.87 KB

所有 Zsh 相关的函数、配置(主要是对一些 Unix 函数的封装)都在 zsh-config 目录下

bssclient: 命令行的 ss 客户端

配置文件位于 ~/.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 工具。

bsfn:方便的查找文件名

如果你想查找文件夹内的某个文件,可以使用 find 命令,但默认的 find 命令并不支持表达,所以我在 personalized.sh 文件中封装了 bsfn 函数,它接受一个参数,可以精确匹配,也可以写正则表达式:

正则表达搜索文件

比如这里我们搜索所有以 BBA 开头,中间字符不限,以 Plugin 结尾的文件。

proxy: 方便的切换和展示系统代理

如果想使用 Charles 抓包,则输入 p on 即可将系统的 HTTP 和 HTTPS 代理设置为 127.0.0.1:8888

如果想使用 Shadowsocks 科学上网,则输入 p g 即可将系统的 socks 代理设置为 localhost:14179,需要自行修改端口号

如果不想使用代理,输入 p off 可以禁用所有代理,恢复默认设置。

输入 p s 可以查看当前的系统代理。

p 命令使用简介

bssize:快速查看文件夹和文件大小

bssize 后面的参数可以是文件名,表示查看这个文件的大小。也可以是文件夹名,表示查看文件夹大小和文件夹内各子目录的大小。

bssize . 表示查看当前目录大小和子目录大小,bssize / 表示查看系统磁盘的使用情况。具体效果如图所示:

realpath:显示绝对路径

安装脚本中已经通过 homebrew 安装了 coreutils,其中自带了 GNU 的 realpath 或者 readlink -f 命令:

realpath clean.sh
readlink -f clean.sh
# 输出结果都是 /Users/zxy/.macbootstrap/clean.sh

resolution: 显示图片的分辨率

resolution path_to_image.png
# 输出结果是:4096 x 2048

ssh: 依赖预先的配置

以登录搬瓦工为例,每次都需要输入端口号、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 记不住了,而且这个配置文件仅仅记录了秘钥的位置,并不会泄露出来、

show/hideFiles:显示(隐藏)文件

使用 showFiles 命令展示系统隐藏文件,hideFiles 命令恢复隐藏

encoded64 和 urltoool

这几个小命令可以快速实现一些编码和解码工作:

encode64 你好
# 5L2g5aW9

decode64 5L2g5aW9
# 你好%

urlencode https://baidu.com
# https%3A%2F%2Fbaidu.com

urldecode https%3A%2F%2Fbaidu.com
# https://baidu.com

ow 命令行中打开 Xcode 工程

如果当期目录下存在 xcodeproj 文件或者 xcworkspace 文件,可以用 ow 命令快速打开,如果要打开的工程在别的目录,则使用 ow path_to_project 的命令打开

如果 wcworkspace 和 Xcodeproj 文件同时存在,优先打开前者。

x 快速解压

使用命令 x 可以快速解压任何压缩文件

cal 终端日历

如果你的日历里没有,仅仅想查看日期,cal 这个命令就足够用了,它可以显示当前的日期、月份和星期。cal -3 可以显示当前月和前后一个月的日期,cal -y 可以显示当年的日期。

app2ipa 将 .app 转换为 .ipa

如果想把 xcodebuild 编译出来的 .app 文件转换成 .ipa,可以用这个命令:

app2ipa xxx.app
# /private/tmp/ipa/output.ipa

配合 ideviceinstaller 可以快速安装到手机上:

# brew install ideviceinstaller
app2ipa xxx.app | xargs ideviceinstaller -i

bsof 检查端口占用

可以通过系统的 lsof -i:port 来检查哪个程序占用了 port 端口,但有时候我们不想记参数,或者想查找某个程序占用了哪些端口,此时可以使用 bsof

比如查看 redis 进程占用了哪些端口,可以输入 bsof redis,查看哪些进程占用了 80 端口可以输入 bsof :80,如下图所示:

全局别名

  1. 如果只想看某个输出的前 3 行,可以用 cat xxx H 3,这是因为 H 被全局重命名为 | head -n
  2. 如果是看输出的后 3 行,可以用 cat xxx T 3,其中 T 被全局重命名为 | tail -n
  3. 如果是看输出的指定行数,比如第 1、3、7 行,可以用 cat xxx R 1 3 7, 其中 R 被全局重命名为 | row
  4. 如果要看某个输出的某几列,比如倒数第一列,可以用 cat xxx C -1,其中 C 被全局重命名为 | column
  5. 如果要在 less 中查看某个超长的输出,可以用 cat xxx L,其中 L 被全局重命名为 | L
  6. 如果要忽略某条命令的报错,可以用 command NE,其中 NE 被全局重命名为 2> /dev/null
  7. 如果要某个命令完全不输出内容,可以用 command NUL,其中 NUL被全局重命名为 > /dev/null 2>&1

ppjson 在终端中格式化 json

用法:

echo '{"hello": "world"}' | ppjson

bubu 更新 Homebrew 安装的所有软件并删除旧的版本

这个命令封装了一些列琐碎的操作,可以放到 crontab 里面定时执行

bsfilename

这个命令可以从完整的文件路径中获取不带后缀的文件名,比如

bsfilename ~/Desktop/test.py
# 输出结果: test

bszip

这个命令可以快速压缩文件,用法 bszip path_to_file,它会读取要压缩的文件(夹)名,然后在当前目录生成同名的 zip 文件

qn: 七牛图床上传工具

这个工具会自动把剪贴板里面的图片拷贝出来,存储为临时文件,上传后会自动删除。

使用这个工具前需要先配置七牛的 AK、SK,以及文件上传到哪个 Bucket 中,还有最终图床地址的前缀。

qnconf sk ak pictures http://images.bestswifter.com

以后每次截图完,只要输入命令 qn,图片就会自动上传并且把 Markdown 格式的地址拷贝到剪贴板中。

xcodepath

如果你当前运行了 Xcode 进程,输入此命令可以快速查看 Xcode 可执行文件的路径

bswhich

如果拿到别人的配置脚本,想自行定制。显然只知道定义是不够的,还得知道这个 alias 或者函数是在哪个文件里被定义的,这样才好去修改,此时建议使用我配置的 bswhich 命令:

bswhich ip
bswhich gg

终端 Finder 模拟器:r

系统的 Finder 其实并没那么好用,最大的问题在于没法和 Shell 有效的交互,比如复制移动文件、在当前文件夹位置打开终端都很不方便。

作为程序员,我推荐使用 Ranger 来浏览文件目录,它是一个使用 Vim 键位映射的文件管理工具。

使用快捷键 r 来打开 ranger,它的完整定义是:alias r='source ranger',这样做的好处在于当 Ranger 中目录发生变化时,可以改变外部 Shell 的路径。

在 Ranger 中,使用 j/k 来上下移动光标,h/l 来进行目录的前进和后退。

常用的操作有:

  1. zh:切换是否显示系统隐藏文件,按一次打开,再按一次关闭
  2. x:安全删除文件(放入垃圾箱中而不是 rm)
  3. yy:复制,dd:剪贴,pp:粘贴,空格键多选文件
  4. gh:进入用户目录($HOME)
  5. yn:复制文件名,yd 复制文件夹名,yp 复制完整路径名
  6. :j:和 autojump 一样,输入要跳转的地方
  7. <C-f>:利用 fzf 搜索文件
  8. f:当前目录内过滤文件名
  9. du:查看当前目录内各文件夹大小
  10. oo:在 Finder 中打开,op 或回车键:使用系统默认的程序打开,oc:使用 VSCode 打开(如果已经有 VSCode 进程,为了加快速度,则使用已存在的)
  11. m:添加书签,um:选择要删除的书签,```:展示书签

终端命令自动补全

输入快捷键 Ctrl + E 可以根据当前提示快速补全,快捷键 ; 可以补全并执行

fzf:模糊搜索神器

fzf 是一个模糊搜索神器,^t 是特定语义下的补全快捷键,^i 是默认快捷键,很少用到:

  1. 输入 kill 然后按下 ^t 键,就会打开 fzf 补全界面,通过输入进程名来获取到 PID
  2. 类似的还有输入 sshexportunsetunlias 等命令
  3. 按下 alt + c 可以列出当前目录下的文件夹,并快速进入
  4. 按下 ^g,会自动补全 autojump 的路径列表
  5. 按下 ^r 进入命令历史模式,此时也会自动打开 fzf 补全界面,自动补全命令
  6. 注意此时的补全并不会自动执行,只会把命令粘贴到命令行中,如果想要按下回车后自动执行,可以用快捷键 ^x^r 来触发

fzf 甚至还支持为自定义的命令添加补全,具体做法可以参考:Examples (completion)