前言 #
Ubuntu 作为一个流行的 Linux 发行版本,对比其他 Linux 发行版,有较好的生态支持。最主要的体现就是:当你遇到问题的时候 Ubuntu 能够搜到的教程更多。
这篇文章主要针对带有 GUI 的个人版 Ubuntu 系统,服务器专用的 Ubuntu 系统操作取决于你的实际业务,云服务器搭建这篇文章可以作为一个参考。
Ubuntu安装 #
非常久远之前就安装好了,故不做记录了。如有需要,请自行搜索“移动硬盘安装 Ubuntu”等关键词。这里放一个较新的链接:移动硬盘安装Ubuntu
安装过程已经不可考究了,现状就是我将 Ubuntu 系统安装在一个移动硬盘中,随插随用。
使用的时候就可以在开机之前把硬盘插上,点击电源按钮之后快速点击某个按键进入 BIOS 引导界面,把优先级提升到最高然后保存退出就可以正常进入 Ubuntu 系统了。
不想使用的时候直接不插上硬盘就可以了,正常开机,不需要任何的操作就可以直接进入 Windows 系统,非常地方便。
界面美化 #
我个人比较喜欢苹果风格的界面,因此特地找了一款苹果风格的主题:WhiteSur
安装过程非常简单:
git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git --depth=1
cd WhiteSur-gtk-theme
./install.sh # 运行安装脚本
具体的配置操作请见 Github 官网上的说明
至于如何升级,官方没有说明,估计是默认用户都知道:
git pull # 拉取最新的代码
./install.sh # 重新运行安装脚本即可
文本编辑 #
此处的文本编辑特指的是在命令行中的文本编辑,在专门的文本编辑器中的文本编辑实在是太直观简单了,根本不用学。而且绝大多数情况下,我们也不用在命令行中进行文本编辑。
然而有些时候你不得不在命令行中编辑文本:服务器上连 GUI 都没有😢虽然可以通过 VS Code 的插件在服务器上运行 GUI 编辑界面,但是当你只想改一个配置文件,启动如此"重量级"的编辑器实属牛刀杀鸡了🤔
如果你只是想创建一个文件,然后用别的编辑器进行编辑,那么简单一行命令即可:
# 碰一下就会出现😉
touch file_name.md
nano #
这个命令行编辑器是 Umbundu 系统自带的命令行文本编辑器,不用专门下载。
想要编辑文件的话也非常简单:
nano file_name
进入 nano 之后就有几行提示,标出了相关的快捷键,按照提示进行操作就行了,属于是非常简单的命令行文本编辑器了。
vim #
我很早就听说过这个"传奇上古"编辑器的大名,并且听说了它所拥有的各种各样的优点:手指不离开键盘有助于思维输出、习惯之后就戒不掉了、简洁轻量化能够高度自定义、牛逼的程序员都用vim……
然而我几经尝试后得出结论:vim 很好,但我真的很懒😢我真的不想花几个星期去和各种各样的组合键进行磨合
这里我只记录一些最最最常用的操作,适合偶尔使用 vim 进行轻量编辑的同志,看完下面这些操作你就可以对外宣称你会用 vim 了😋
i # 进入插入模式
<ESC> # 返回正常模式
: # 进入命令模式
:q! # 退出不保存
:wq # 退出保存
y6w # 复制6个词
p # 粘贴
dd # 删除行
dw # 删除一个词
Fcitx 5 #
主要参考:在 Ubuntu 安装配置 Fcitx 5 中文输入法;之前有考虑过使用搜狗输入法,但是看到官方给的安装流程就头大,而且也需要安装 Fcitx 5,所以不如直接用 Fcitx5 了
其实一开始我是拒绝 Fcitx 的🥲因为它的界面实在是"朴素"得令人难以接受,相信上面那篇博客的作者应该和我深有同感👆
使用Windows上的字体 #
思路:将 Windows 中的字体文件拷贝到 Ubuntu 专用的字体文件夹中,然后给予适当的权限,然后刷新 Ubuntu 的字体缓存,加载新的字体。
# Windows上的字体文件夹:C:/Windows/Fonts
sudo cp /mnt/C/Windows/Fonts/LXGWWenKai-Regular.ttf /usr/share/fonts/custom/LXGWWenKai-Regular.ttf
# 提高权限
sudo chmod u+rwx /usr/share/fonts/custom/*
# 进入字体文件夹
cd /usr/share/fonts/custom/
# 建立字体缓存
sudo mkfontscale
# 刷新缓存
sudo fc-cache -fv
当然,你也可以直接从网上下一个新的 .ttf
文件然后再复制到指定文件夹中。而且如果你使用的是带有 GUI 界面的 Ubuntu 系统,下载文件之后你可以直接双击字体文件来安装🥰
挂载硬盘 #
由于我的 Ubuntu 系统安装在移动硬盘上,因此这里主要解决的问题是:如何在 Ubuntu 上访问 Winodws 中的盘区。因此不涉及对于分区的具体处理,如果需要对分区进行格式化等等操作,详见:如何在Ubuntu系统中进行磁盘的分区与挂载
# 查看磁盘及其分区,sudo提权不可省略
sudo fdisk -l
# 创建挂载位点,其实就是建一个文件夹
# mnt中的子文件夹之所以取名为E是,因为这里准备挂载E盘
sudo mkdir /mnt/E
# 直接挂载新分区
sudo mount /dev/vdb /mnt/E
# 设置开机自动挂载
# 查看分区的UUID
sudo blkid
# 编辑特定文件
vim /etc/fstab
# 在文件末尾追加
UUID=xxxxxxxx /mnt/E ntfs defaults 0 2
- 上面的 UUID 请替换为
blkid
命令获取的内容,ntfs
处也替换为相应的文件系统类型(常见的如ntfs
ext4
) defaults
:这是一个组合选项,包含一组默认挂载选项,如rw(读写)、relatime(减少inode访问时间更新次数)等- 0和2:这些值分别控制是否需要备份和文件系统检查顺序。通常第一个值为 0(不备份),第二个值为1或2(1用于根文件系统,其他文件系统用2)
测试方法:
# 运行后如果没有报错则说明配置正确
sudo mount -a
创建快捷方式 #
常见的一个操作:我想在桌面放一个常用文件夹的快速链接,方便快速进入对应文件夹
# 在Desktop文件夹中放置一个指向/target/dir文件夹的链接
# 请替换为你的目标文件夹
ln -s /target/dir ~/桌面
# 测试,如果能cd进去那么就没问题
cd ~/桌面/dir
系统信息 #
在没有 UI 界面的时候,就需要用命令行来查看系统的相关信息
# 系统信息概要
hostnamectl
# CPU详细信息
lscpu
# 查看 CPU 使用情况
top
# 分区使用情况
df -h
配置Git #
Linux 的一大特色就是极致的简洁,因此使用命令行来操纵 Git 是 Linux 用户的首选😃Ubuntu 自带 Git 所以说不用自行安装了,如果想要升级的话见下:
git --version # 查看git版本
sudo add-apt-repository ppa:git-core/ppa # 添加官方源
sudo apt update && sudo apt upgrade # 如果能的话则执行更新
GitHub-SSH #
当然你也可以直接使用 HTTPS,但是缺点就是每次都要输入密码。而且随着 GitHub 的安全措施升级,密码也不见得是你的账号密码,而是专门的 token🥲
如此麻烦的操作是 Linux 上无法忍受的,我宁愿进行繁琐的配置,但是我一定不要每次都输入那一长串 token
这里主要参考:设置 Git 默认推送不需要输入账号和密码【Ubuntu、SSH】
git config --global user.name 'xx' # 配置全局用户名
git config --global user.email 'xxx@qq.com' # 配置全局邮箱账号
# 生成shh密钥对,然后我选择一路回车到底
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 启动 SSH 代理并将私钥加载到代理
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
# 查看并复制公钥内容
cat ~/.ssh/id_rsa.pub
# 在GitHub上添加这个新的ssh密钥就行
# 将现有https链接的仓库改为ssh链接
git remote rm origin
git remote add origin git@github.com:username/repository.git
安装管理软件 #
在 Ubuntu 上安装软件的方式大致分为以下几种;
- 通过自带的 snap 安装
- 通过 apt 安装
- 通过 deb 压缩包安装
- 通过 curl 安装
不同的安装方式有不同的管理方案,其中通过 curl 安装的管理最为不便,其他的都可以通过相应的包管理工具轻松管理
snap #
直接打开 snap 商店就可以直接看到,轻松便捷,但是其中的软件包往往较为落后
apt #
# 软件源的相关操作在桌面版中可以在"软件与更新"中进行图形化操作
# 添加软件源
sudo add-apt-repository ppa:libreoffice/ppa && sudo apt update
# 移除软件源
sudo add-apt-repository --remove ppa:libreoffice/ppa
# 安装软件
sudo apt install xxx
# 升级软件包
sudo apt update # 同步远程仓库的软件包信息,但不会实际升级任何软件
apt list --upgradable # 查看可升级的软件包
# 升级所有可用的包,但不会处理依赖关系变更(如删除旧包或安装新依赖)
sudo apt upgrade
sudo apt full-upgrade # 完全升级
sudo do-release-upgrade # 跨ubuntu大版本升级
# 查看软件包
sudo apt-cache search wps # 搜索所有包含wps的软件包及其描述信息
sudo apt-cache pkgnames | grep -i wps # 查看包含关键字wps的软件包名字
# 移除软件包
sudo apt remove xxx
sudo apt autoremove # 清理残留
如果出现网络访问异常,可能是 apt 的代理设置需要手动指定。apt 默认不使用系统的代理设置,需要在 /etc/apt/apt.conf.d/99proxy
文件中明确写入代理设置。
# 查看系统的代理设置
env | grep -i proxy
# 进入配置文件
sudo nano /etc/apt/apt.conf.d/99proxy
# 写入代理设置,请根据系统代理设置填写
Acquire::http::Proxy "http://127.0.0.1:7890/";
Acquire::https::Proxy "http://127.0.0.1:7890/";
deb #
从浏览器上下载 deb 压缩包之后,直接双击即可直接安装。其内部执行的命令其实就是 apt 安装,因此管理方式也是与 apt 相同的。
# 通过双击安装
# 通过apt卸载
sudo apt remove xxx
sudo apt autoremove # 清理残留
AppImage #
AppImage 是一种用于 Linux 系统的便携式软件打包格式,旨在简化应用程序的分发和运行。它的核心思想是“一个应用 = 一个文件”,用户无需安装或管理员权限即可直接运行应用程序。
在较新的 Ubuntu 版本中,直接运行该文件会出现报错,需要额外安装 libfuse2
,使用如下命令即可:
sudo apt install libfuse2
然后对软件包提权:
chmod +x file_name.AppImage
然后双击软件包就能启动了😃
如果你想卸载软件的话,也非常方便:直接把软件包删除就行了。当然,如果你和我一样有"洁癖",可以去检查下面的这些目录,彻底清除残留:
ls ~/.config -a # 查看配置文件
ls ~/.local/share -a # 查看共享配置文件
ls ~/.cache -a # 查看缓存
du -sh ~/.cache/* | sort -h -r # 查看.cache目录下各个文件夹的磁盘占用
curl #
通过 curl 命令直接从目标网址下载安装脚本,然后执行这个脚本。通过 curl 安装的软件可管理性较差,原因在于:实际的安装过程是通过脚本执行的,这个过程难以监控
# 以zed编辑器的安装为例
curl -f https://zed.dev/install.sh | sh
# 如果想要卸载,一般都是难以卸载干净的
# 首先获取安装脚本文件
curl -f https://zed.dev/install.sh -o install.sh
# 把这个脚本文件丢给AI解析一下
# 然后按照AI的指令手动进行卸载
大版本更新 #
进行大版本的更新对于服务器 OS 来说是完全没有必要的,因为相关套件一般都还没有跟上,追逐"最新版本"并不明智。但是对于桌面版用户来说还是很有用的,毕竟更新之后就能体验最新的系统特性,说白了就是好玩儿🤓
这部分主要参考微信公众号:如何从 Ubuntu 24.04 升级到 Ubuntu 25.04
数据备份 #
这一步是非常有必要的,虽然说可能会占用好几十个 G 的硬盘空间,但毕竟大版本更新还是一个有风险的操作,不怕一万就怕万一😅升级成功后再删除备份,释放空间也行啊
# 安装备份工具
sudo apt install deja-dup
# 直接运行
deja-dup
更新软件包 #
确保系统处于最新状态可以最大程度上减少兼容性问题,逐条运行下面命令即可:
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
sudo apt autoclean
sudo reboot # 重启系统
版本更新 #
逻辑很直接:把旧版本相关软件源指向新版本对应的软件源就行,下面罗列一些相关文件,如有修改就需要改这些文件:
- 升级策略文件:
/etc/update-manager/release-upgrades
- 软件源配置文件:
/etc/apt/sources.list.d/ubuntu.sources
如果你想从 LTS 版本升级为非 LTS 版本,那么就需要更改策略文件。策略文件中其实也只有一行,改成下面的样子就行:
Prompt=normal
接下来修改软件源配置文件,运行如下命令:
sudo sed -i 's/noble/oracular/g' /etc/apt/sources.list.d/ubuntu.sources
文件修改完成之后:
# 刷新索引并执行完整更新,包括内核、驱动和所有软件包
sudo apt update && sudo apt full-upgrade -y
-y
选项是"自动确认"的意思,如果你想手动输入 yes 的话可以不加😃我反正不想
升级完成后:
sudo reboot # 重启系统应用更改
lsb_release -a # 验证系统版本
Office套件 #
众所周知,Microsoft Office 是没法直接在 Linux 上直接运行的😅但是查看和编辑 doc
文档又是无法避免的。
因此这里推荐一个 Linux 上的 Office 平替:LibreOffice,安装方式如下:
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt update
sudo apt install libreoffice
在安装 LibreOffice 之前也尝试过使用 WPS 来编辑 Office 文件,但是不知为何总是会引起系统报错,索性就直接弃用了
存储清理 #
常见清理项 #
# 清理孤立依赖包
sudo apt autoremove
# 清理apt缓存
sudo du -sh /var/cache/apt # 查看apt缓存大小
sudo apt autoclean # 自动清理
sudo apt clean # 完全清理
# 清理系统日志
journalctl --disk-usage # 查看系统日志代大小
sudo journalctl --vacuum-time=3d # 清除三天前的日志
# 清理.cache
du -sh ~/.cache/* | sort -h -r # 查看缓存文件大小
rm -r folder_name # 直接删除即可
# 清理snap旧版本
snap list --all # 查看所有snap包
# 罗列出所有被禁用的包(下面是一行命令)
echo -e "\033[1m已禁用的 Snap 包及其占用空间:\033[0m" && snap list --all | awk '/disabled|已禁用/{print $1}' | while read -r pkg; do size=$(snap info "$pkg" | awk '/installed:/ {print $4}'); printf "%-30s %10s\n" "$pkg" "$size"; done | sort -k2 -h
# 移除所有被禁用的snap包(下面是一行命令)
snap list --all | awk '/disabled|已禁用/{print $1, $3}' | while read snapname revision; do sudo snap remove "$snapname" --revision="$revision"; done
# 清理内核
sudo dpkg --list | grep linux-image # 列出所有内核
sudo apt autoremove --purge # 自动清除不需要的内核
开机自动清理 #
每次都要手动检查上面这些可清理项实在是麻烦,一个聪明的电脑需要学会自己清理自己😋
首先运行命令:
sudo nano /usr/local/bin/system-clean-up.sh
然后把下面的文件内容粘贴进去:
#!/bin/bash
set -e
echo "[1] Running apt autoremove..."
apt autoremove -y
echo "[2] Running apt autoclean..."
apt autoclean -y
echo "[3] Cleaning journal logs older than 2 days..."
journalctl --vacuum-time=2d
echo "[4] Removing disabled snap revisions..."
snap list --all | awk '/disabled|已禁用/ {print $1, $3}' | while read snapname revision; do
echo "Removing snap: $snapname revision $revision"
snap remove "$snapname" --revision="$revision"
done
echo "[5] Cleaning ~/.cache/ directories larger than 200MB..."
for userdir in /home/*; do
cache_root="$userdir/.cache"
[ -d "$cache_root" ] || continue
for dir in "$cache_root"/*; do
if [ -d "$dir" ]; then
size_kb=$(du -s "$dir" | awk '{print $1}')
if [ "$size_kb" -gt 204800 ]; then
echo "Removing large cache directory: $dir ($(($size_kb / 1024)) MB)"
rm -rf "$dir"
fi
fi
done
done
echo "[Done] Clean-up finished."
这个脚本中包含了五个可以安全地自动进行的清理项:
apt autoremove
apt autoclean
- 清理超过两天的系统日志
- 清理已经被禁用的 snap 包
- 清理
.cache
中大于 200 MB 的缓存文件
写完了 .sh
脚本文件之后还需要赋予其可执行权限:
sudo chmod +x /usr/local/bin/system-clean-up.sh
然后是配置开机自启动:在目录 /etc/systemd/system
中存放着开机自动运行的服务脚本,后缀都是 .service
。
为了实现开机自动清理,我们可在该目录下创建一个 clean-up.service
文件:
sudo nano /etc/systemd/system/clean-up.service
写入内容如下所示:
[Unit]
Description=Clean up system caches, logs, and snaps at boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/system-clean-up.sh
User=root
[Install]
WantedBy=multi-user.target
编辑完成后,运行如下命令来启用这个服务脚本,这样下次开机就会自动运行一次,但不会立即运行:
sudo systemctl daemon-reexec && sudo systemctl enable clean-up.service
配置完成后可以立即启动一次,检验脚本是否正确执行:
# 立即运行一次
sudo systemctl start clean-up.service
# 查看系统日志
sudo journalctl -u clean-up.service
自动清理配置脚本 #
如果你觉得上述脚本配置过程过于麻烦,这里也提供一个一键自动化配置的脚本,运行一次之后即可删除。
在任意一个目录下创建一个 setup-cleanup.sh
文件,写入下面的内容👇
#!/bin/bash
set -e
echo "🚀 正在创建清理脚本 /usr/local/bin/system-clean-up.sh ..."
cat << 'EOF' | sudo tee /usr/local/bin/system-clean-up.sh > /dev/null
#!/bin/bash
set -e
echo "[1] Running apt autoremove..."
apt autoremove -y
echo "[2] Running apt autoclean..."
apt autoclean -y
echo "[3] Cleaning journal logs older than 2 days..."
journalctl --vacuum-time=2d
echo "[4] Removing disabled snap revisions..."
snap list --all | awk '/disabled|已禁用/ {print $1, $3}' | while read snapname revision; do
echo "Removing snap: $snapname revision $revision"
snap remove "$snapname" --revision="$revision"
done
echo "[5] Cleaning ~/.cache/ directories larger than 200MB..."
for userdir in /home/*; do
cache_root="$userdir/.cache"
[ -d "$cache_root" ] || continue
for dir in "$cache_root"/*; do
if [ -d "$dir" ]; then
size_kb=$(du -s "$dir" | awk '{print $1}')
if [ "$size_kb" -gt 204800 ]; then
echo "Removing large cache directory: $dir ($(($size_kb / 1024)) MB)"
rm -rf "$dir"
fi
fi
done
done
echo "[Done] Clean-up finished."
EOF
sudo chmod +x /usr/local/bin/system-clean-up.sh
echo "✅ 清理脚本创建完成"
echo "🚀 正在创建 systemd 服务 clean-up.service ..."
cat << EOF | sudo tee /etc/systemd/system/clean-up.service > /dev/null
[Unit]
Description=Clean up system caches, logs, and snaps at boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/system-clean-up.sh
User=root
[Install]
WantedBy=multi-user.target
EOF
echo "✅ 服务文件创建完成"
echo "🔄 重新加载 systemd..."
sudo systemctl daemon-reexec
echo "✅ systemd 重新加载完成"
echo "🧩 启用开机启动 clean-up.service ..."
sudo systemctl enable clean-up.service
echo "✅ 已启用"
echo "⚙️ 现在运行一次清理任务 ..."
sudo systemctl start clean-up.service
echo "✅ 清理完成,你可以使用 sudo journalctl -u clean-up.service 查看日志。"
然后在这个目录下运行安装命令:
sudo chmod +x setup-cleanup.sh && sudo ./setup-cleanup.sh
安装Nodejs #
Node.js 是一个常用的环境依赖,并且常常会占用大量的硬盘空间,如果对其安装逻辑不清楚,很容易残留大量的无用文件。
我对于这种基础环境依赖的态度一直都是:如不了解,绝不安装。
从官方网站可以查询到标准的安装命令:
# 下载并安装nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# 当前终端重新加载nvm
\. "$HOME/.nvm/nvm.sh"
# 下载并安装 Node.js:
nvm install 22
# 检查 Node.js 版本:
node -v # 应该是 "v22.16.0".
nvm current # 应该是 "v22.16.0".
# 检查 npm 版本:
npm -v # 应该是 "10.9.2".
# 可选,如果需要安装pnpm才执行👇
# 下载并安装 pnpm:
corepack enable pnpm
# 检查 pnpm 版本:
pnpm -v
首先第一条命令就是使用 curl 下载 nvm 管理器,这个工具用于管理 Node.js 的版本。这个工具会被下载到 ~/.nvm
目录下。具体的使用方法后文会有介绍。
第二条命令用于在当前命令行中加载 nvm,让 nvm 命令被有效识别。重载操作也可以不用命令进行,把命令行窗口关掉重开也行。
第三条命令就是使用 nvm 安装 Node.js。node 主要的程序包会被放置在 ~/.nvm/versions/node/
目录中,例如 22.16.0
版本会被放在 ~/.nvm/versions/node/v22.16.0/
目录中。
使用 nvm 安装 node 的时候会默认安装对应版本的 npm,因此不用特地去安装 npm🤗
pnpm 需要加一条指令才能够安装,如上所示。一些基本的 pnpm 的简介见后文:pnpm简介
nvm简介 #
和其他包管理工具类似,nvm 本身的使用并不复杂,其目的就是稳定忠实地完成最基本的管理工作。下面是最最常见的命令表:
功能 | 命令示例 |
---|---|
安装 Node | nvm install 22 |
使用某个版本 | nvm use 18 |
设置默认版本 | nvm alias default 18 |
查看已装版本 | nvm ls |
查看可用版本 | nvm ls-remote |
卸载某个版本 | nvm uninstall 16.20.2 |
如果还有其他特殊的需求,可以去 nvm 的官方 GitHub 中查看:nvm
npm简介 #
npm 是 Node.js 的一个包管理工具,用于管理项目中的 node 依赖包。
在实际项目开发过程中,我们会使用 npm 来安装某些依赖,这些依赖包会占用大量的硬盘空间。下面是主要的清理项:
##### 第一项,项目根目录中的node_modules #####
# 在对应根目录运行👇查看空间占用
du -sh node_modules
# 清理方法简单粗暴(按需清理)
rm -r node_modules
##### 第二项,全局依赖 #####
# 查询全局依赖位置
npm root -g
# 查看全局占用大小
du -sh $(npm root -g)
# 清理方法简单粗暴(按需清理)
rm -r module_name
##### 第三项,下载缓存 #####
# 查看缓存位置
npm config get cache
# 查看缓存大小
du -sh $(npm config get cache)
# 清理缓存
npm cache clean --force
pnpm简介 #
pnpm
也是一个 Node.js 包管理工具,与 npm
和 yarn
类似,但它在性能、磁盘空间占用和依赖管理方面更高效。
特性 | 说明 |
---|---|
✅ 节省磁盘空间 | 使用 内容寻址(content-addressable) 方式,把依赖存放在共享存储中,避免重复安装 |
⚡ 安装速度快 | 依赖项软链接,不复制,减少 IO 操作 |
✅ 保证依赖隔离 | 使用严格的 node_modules 结构,防止隐式依赖 |
✅ 与 npm/yarn 兼容 | 支持大多数 npm/yarn 脚本和命令 |
常见命令表格,包含了与 npm 命令的对比:
操作 | npm 命令 |
pnpm 替代 |
---|---|---|
初始化项目 | npm init |
pnpm init |
安装依赖 | npm install |
pnpm install |
添加依赖 | npm install axios |
pnpm add axios |
移除依赖 | npm uninstall foo |
pnpm remove foo |
全局安装 | npm install -g |
pnpm add -g |
清除缓存 | npm cache clean |
pnpm store prune |
相比 npm,pnpm 对于空间的管理更干净,下面是一些关键目录:
位置 | 作用 |
---|---|
node_modules/ |
使用硬链接构造的虚拟依赖树 |
~/.pnpm-store/ |
所有依赖包的真实文件存储位置 |
由于 pnpm 在 node_modules
中并不存放实际文件,因此也就无所谓全局与局部缓存一说。只需要一行命令就能够清理所有能够清理的依赖:
# 清理缓存
pnpm store prune
pnpm 会扫描所有用过的项目中的 .pnpm-lock.yaml
,找出未再使用的版本并清理对应缓存。需要的话这行命令可以直接加入开机自动清理中
其他 #
这里包含了一些简单而常用的命令
系统控制 #
-
立刻关机:
shutdown now
-
立即重启:
sudo reboot
解压 #
命令根据你需要解压的文件格式而变动
# 解压zip文件
unzip file.zip -d /target/directory
# 解压.tar文件
tar -xvf file.tar
# 解压.tar.gz文件
tar -xzvf file.tar.gz
临时环境变量 #
有时即便开启了 VPN 代理,终端仍然无法正常访问外网,这时很有可能就是终端无法自动识别代理端口号导致的。解决方法就是更改环境变量即可,可以永久修改(写入文件),也可以临时修改,如下:
# Windows中的powershell终端中使用
$env:HTTPS_PROXY="http://127.0.0.1:7890"
# bash或cmd终端中使用
set HTTPS_PROXY=http://127.0.0.1:7890
临时查看文件 #
一般的文件直接用对应的编辑器打开就行了。但是有一些特殊文件,例如超大的 csv 文件,只想快速查看一小部分数据。这个时候就可以使用 head
命令:
# 读取your_file文件的前10行并显示(不会读取完整文件)
head -n 10 your_file.csv
如果出现乱码,一定是编码格式出错了,可以使用 iconv
进行转换:
# 从gbk转为utf-8
head -n 10 "your_file.csv" | iconv -f gbk -t utf-8
如果你不清楚到底是什么编码转什么编码,可以直接把乱码丢给 AI,简单方便😋