Skip to content
huazaiki's blog
Go back

上手配置一台新的服务器(二):终端美化与常用工具

Edit page

第一篇把安全基础搭好了,现在来装开发工具和终端环境。安装各种东西之前,有一件事得先处理:这台机器在国内,很多工具链(GitHub、raw.githubusercontent.com 等)的域名要么解析慢、要么直接超时。所以第一步不是装软件,而是让 DNS 先通。

DNS 前置配置:让 GitHub 可访问

后续要装的 Oh My Zsh、Homebrew 全都依赖 GitHub 和其 CDN。如果 curl 连接 raw.githubusercontent.com 直接报 Connection timed out,后面的步骤全白搭。

解决思路:手动查询这些域名对应的可用 IP,写入 /etc/hosts 跳过 DNS 污染。

查询可用 IP

ipaddress.com 逐个查询以下域名,记下测出的 IP 地址(选延迟最低的那个):

网站返回的 IP 示例(这些值会变,以你查询时的结果为准):

域名解析到的 IP(示例)
github.com140.82.113.4
raw.githubusercontent.com185.199.108.133
github.githubassets.com185.199.110.154

除了 ipaddress.com,也可以试试 itdog.cn 做 ping 测试,选一个对你服务器延迟最低的 IP。

写入 hosts

编辑 /etc/hosts,把你查到的 IP 追加上去:

sudo vim /etc/hosts
# GitHub 及相关 CDN(手动解析,绕过 DNS 污染)
140.82.113.4     github.com
185.199.108.133  raw.githubusercontent.com
185.199.110.154  github.githubassets.com

保存后验证一下:

ping -c 2 github.com                # 能通说明 hosts 生效
curl -sI https://raw.githubusercontent.com | head -1  # 应返回 200 或 301

现在 GitHub 资源可以正常访问了,后面安装 Oh My Zsh、Homebrew 都不会因为 DNS 问题卡住。

Homebrew:用户态的包管理

以前我在服务器上零散地混用 aptcurl | bash 来装各种 CLI 工具,时间长了根本记不清谁是谁装的、版本怎么更新。现在统一用 Homebrew——在 macOS 上它就是主力包管理器,在 Linux 上以 Linuxbrew 身份运行,所有工具装在一处、一条命令升级全部。

安装

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

装完后脚本会提示添加环境变量,按提示执行:

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew --version  # 验证

注意:上面这行写到 ~/.zshrc,等会儿我们才会把默认 shell 切成 zsh。如果当前还是 bash,这里先用 ~/.bashrc,切 zsh 后再补写到 ~/.zshrc。对应的,文章后续的 source 操作你根据当前实际 shell 调整。

用在哪

有了 brew 之后,后面的 CLI 工具原则上能用 brew 装的都用 brew。系统级服务走 apt,shell 本身也走 apt:

Shell 环境:zsh + Oh My Zsh

包管理器就位,DNS 也通了,现在把终端环境升级一下。Ubuntu 24.04 默认的 Bash 够用,但 zsh 的自动补全、命令纠错和历史搜索用起来顺畅得多,再搭配 Oh My Zsh 管理插件和主题,日常 SSH 进去操作体验提升明显。并且和我本地相似,让我无缝切换工作场景。

安装与切换

# zsh 本身走系统包管理
sudo apt install -y zsh

# Oh My Zsh 
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Oh My Zsh 安装脚本会询问是否将默认 shell 切换为 zsh,选 yes 即可。如果没有自动切换,手动执行:

chsh -s $(which zsh)

重新登录后 echo $SHELL 应该输出 /usr/bin/zsh,确认切换成功。

切成 zsh 后,检查 ~/.zshrc 里有没有前面 Homebrew 那一步的环境变量(brew shellenv),没有的话补上,不然 brew 命令会找不到。

主题与插件

Oh My Zsh 配置文件在 ~/.zshrc,在这里选主题和开插件:

vim ~/.zshrc

主题:我选择的是 spaceship 这款主题。还可以去 zsh 的 主题列表 里选择其他主题。

插件:推荐至少开这几个:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

后两个是第三方插件,克隆到 Oh My Zsh 的插件目录即可:

git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

改完 ~/.zshrcsource ~/.zshrc 让配置生效。

常用 CLI 工具

有了 Homebrew 和 zsh 环境,接下来装几个能大幅提升日常操作效率的命令行工具。它们都可以通过 brew install 一键安装。

zoxide:更智能的 cd

zoxide 会记录你访问过的目录,之后只需输入目录名的一部分就能跳转过去,不用再打完整路径。

brew install zoxide

~/.zshrc 中添加初始化代码:

eval "$(zoxide init zsh)"

source ~/.zshrc 后即可使用。比如你经常去 /var/www/blog,之后只要 z blog 就到了,z - 回到上一个目录。

eza:现代化的 ls

ezals 的现代替代品,支持彩色输出、图标、树形视图、git 状态等。

brew install eza

建议在 ~/.zshrc 中设置别名:

alias ls='eza'
alias ll='eza -l'
alias la='eza -la'
alias tree='eza --tree'

配置后 ll 就能看到带权限、大小、日期的彩色列表,tree 直接显示目录树。

fzf:模糊搜索神器

fzf 是一个通用的模糊搜索工具,可以搜索文件、命令历史、进程等等,配合 zsh 使用效果极佳。

brew install fzf

# 安装 fzf 的 shell 集成(自动补全、历史搜索绑定)
$(brew --prefix)/opt/fzf/install

安装脚本会问是否启用 key bindings 和 auto-completion,都选 yes。装完后:

fd:更快的 find

fdfind 的现代替代品,用法更直观、速度更快、输出带颜色。

brew install fd

常用示例:

fd nginx              # 递归查找包含 "nginx" 的文件名
fd -e md              # 查找所有 .md 文件
fd -x vim {}          # 找到后用 vim 打开(xargs 的替代)

对比 find . -name "*.md"fd -e md 少敲一多半键盘。

ripgrep (rg):更快的 grep

ripgrepgrep 的现代替代品,递归搜索时自动忽略 .gitignore 中的文件,速度极快。

brew install ripgrep

常用示例:

rg "pattern"              # 递归搜索当前目录
rg "import" src/          # 限定目录
rg -i "error"             # 忽略大小写
rg -l "TODO"              # 只列出包含匹配的文件名

rg 默认忽略隐藏文件和 .gitignore 中的内容,搜索结果干净很多。

收尾

现在终端环境已经好用了不少:

下一篇装运行环境——Node.js、pnpm 和 Nginx。


Edit page

Previous Post
上手配置一台新的服务器(三):运行环境与 Nginx
Next Post
上手配置一台新的服务器(一):SSH 与基础安全加固