Kane BlueriverKane Blueriver

常用 CLI 应用

HomeBrew & HomeBrew Cask

Homebrew 是 Mac 下最好用的包管理器,推荐所有控制台应用都尽可能使用 brew 管理。

安装 Homebrew

ruby -e $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)

Homebrew Cask 是 Homebrew 的插件,作为 Homebrew 在 GUI 应用上的补充。

安装 HomeBrew Cask

brew install caskroom/cask/brew-cask

检查程序的状态:brew info <app_name>

安装了多个版本时切换激活版本:

brew switch [app_name>] [version]

安装特定版本

  1. 先 tap 历史仓库:brew tap homebrew/versions
  2. 列出可安装版本:输入 brew install homebrew/versions/<app_name> 后按 TAB 键
  3. 安装:brew install homebrew/versions/<app_name><version>

或者在 Homebrew-versions 仓库中找到特定 Formula 的特定版本,然后直接安装:https://github.com/Homebrew/homebrew-versions

zsh & oh-my-zsh! & p10k

被称为终极 shell 也没什么问题。Mac 已经预装了 zsh ,只需要安装 oh-my-zsh! 即可:

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

或者:

wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh

Ubuntu 中需要先注册 zsh 可用:

command -v zsh | sudo tee -a /etc/shells
chsh -s "$(command -v zsh)" "${USER}"

切换 sh 之后可能需要重新登录才能生效。

配置 agnoster 主题

效果预览:

最后,安装 p10k

tree

显示目录的树状图

常用命令 tree -L2 这样的命令显示最对两级目录内容。

autojump & z & zoxide

autojump 帮助你在常用目录间快速跳转,命令是 j 目录部分名称,使用 jo 替代 j 可以打开目录。jo 仅支持 Mac ,可以迅速打开文件夹。

zzoxide 都是类似的工具,都是用来搜索文件的,但是 z 更加强大,支持搜索多个目录,比如 z . 可以搜索当前目录,z . -r 可以搜索当前目录及子目录。

现代 CLI

  • ag:文件查找命令,类似于 ack
  • bat:替代 cat
  • fd:替代 find
  • ripgrep:替代 grep
  • ripgrep-all:替代 grep
  • exa:替代 ls
  • lsd:替代 ls
  • nnn:终端文件管理器
  • ncdu:磁盘空间占用显示 & 分析。
  • dust:替代 du
  • duf:替代 df
  • broot:替代 tree
  • htop:替代 top
  • btop++:替代 top
  • ctop:替代 docker top
  • sampler:终端版的 grafana
  • dog:替代 dig,更加强大的 DNS 查询工具。
  • fzf:模糊匹配/查找
  • delta:替代 diff
  • difftastic:替代 diff,基于语法结构进行 diff。
  • jq:shell 中的 JSON 查询工具,配合管道使用非常方便
  • yq:jq 的 YAML 版本,支持 JSON、YAML、XML
  • hyperfine:bentchmark 工具
  • lazygit:git 的 TUI
  • tig:git 的 TUI
  • tldr + TealDeer:终端命令的说明文档
  • gping:替代 ping
  • procs:替代 ps
  • mtr:网络分析工具
  • iperf3:网络测速工具
  • xh:网络请求工具,HTTPie 的 Rust 版本。
  • curlie:替代 curl
  • viddy:替代 watch,支持 Time Machine 和 pager

文本格式化工具

git

最流行的分布式代码管理工具。Mac 自带了 git ,不过还是推荐通过 brew 来安装最新的 git 程序和插件。

git 教程:小猫都能学会的 git 教程

node.js 相关

  • yarn
  • pnpm
  • npx:现在已经是 npm 的一部分了

Python 开发相关

  • [virtualenv] 提供了 Python 虚拟环境的隔离,但是命令复杂,目录的管理也比较混乱,VirtualEnvWrapper 基于它提供了更简易的命令和操作。
  • pip-tools
  • pyenv
  • poetry:Python 开发环境的配置工具,支持 Python 3.6+。
  • pipx:npx 的 Python 版本
  • IPython & Jupyter notebook 目前最强大的 Python REPL 环境。

tmux

控制台中的标签页管理工具以及分屏管理工具。

neofetch

没啥用,就是炫酷:

neofetch

NeoVim

aria2

aira2 是 OS X 和 Linux 下通用的下载工具,可以安装在路由器、NAS 等 Linux 机器上。

目前主要在 NAS 上配合 AriaNg 使用。

终端录制工具 asciinema

asciinema 是一个终端录制及分享工具,支持 Mac 和 Linux 操作系统。Mac 下可以使用 HomeBrew 进行安装:brew install asciinema

asciinema 的使用也非常简单,输入下面的命令将开启一个 tty 开始录制:

asciinema rec

其使用方式和本地的 shell 环境基本一致。按下组合键 Ctrl+d 可以退出录制环境,并自动上传。

安装 asciinema 时会在本地生成一个独一无二的认证 token,在官网注册好帐号后,输入 asciinema auth 可以将自己的帐号和 token 相关联,并加以管理。

官网的注册方式是基于 email 的认证,会自动获取 gavatar 头像作为你站内的头像。关联成功后的页面如下:

asciinema 关联成功

transfer.sh

transfer.sh 是一个提供文件临时存储的网络服务,可以使用终端直接上传文件: curl --upload-file ./hello.txt https://transfer.sh/hello.txt https://transfer.sh/66nb8/hello.txt,当然使用 shell 函数会更加方便,可以将下面代码存入 .bashrc 或者 .zshrc 中获得 transfer 命令:

# transfer.sh
transfer() {
    if [ $# -eq 0 ];
    then echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md";
        return 1;
    fi
    tmpfile=$( mktemp -t transferXXX );
    if tty -s;
    then
        basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g');
        curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile;
    else curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ;
    fi;
    cat $tmpfile;
    rm -f $tmpfile;
}