基础

  1. 我建议仔细看看 The Missing 的前几章,比较到位,免去了自己折腾之苦(本人亲身体会)。
  2. Linux ls -al 得到的结果代表什么意思?
  3. [Y/n] 可以直接回车表示确认。Y 大写表示默认。(ref)
  4. awk 是一门(图灵完备的)语言 (ref),但我从不用 awk。
  5. linux 可执行文件没有后缀;可以用 detect-it-easy-bin AUR 查看任意文件的类型。

Terminal shortcuts

<C-a> 代表 Ctrl + a.

按键 执行
<C-a> 移动光标到最前
<C-LEFT> & <C-LEFT> 移动光标到上 / 下一个单词
<C-w> 删除前一个单词
<C-u> 清空光标前输入

您还可以查看本文获取更多实用 shortcuts。

POSIX 指令

不是系统性描述,更多是一些 tricks 和踩坑;可能不是最简,欢迎指正。

sed

grep

find

通过这些例子,应该就能基本上手 find 了。

xargs

将管道前的值传入后面的语句的最后方。

sudo

文件系统(fs)

事实上文件系统的内容非常之大,这里主要还是偏向磁盘文件系统的应用方向的。

ext4 是许多 linux 的默认 fs,有的 archlinux 教程也使用 ext4,我使用 btrfs,除此之外常用的文件系统还有 zfs, xfs, bcachefs 等。这里着重讲 btrfs。(其他的我都没用过啊

有前辈说了一些 zfs 的优势。 xfs 比较适合数据库使用,并发写性能好 (ref)

btrfs

对于一个用惯 windows ntfs 的人来说,btrfs as well as 现代文件系统一定能让他眼前一亮。(文章参考 external 1.)

  1. CoW (写时复制)
  2. 透明压缩
  3. 快照
  4. 只有 btrfs 能 online shrink (ref)

目前 btrfs 比起其他现代文件系统,缺的只是 raid5/6 支持和加密;但是其使用难度比很多其他 fs 低多了。

使用 btrfs 有一些坑需要注意:

  1. 由于 CoW,使用 du 查看磁盘空间可能不准确,需要使用:btrfs fi usage /.
  2. 由于 CoW + 快照,操作数据库的时候需要小心,尽可能不要将数据库加入快照备份区(可以使用其他子卷存放)。

常用指令

工具

互操作

互操作能极大提升多系统使用体验。ext4 从 windows 访问根本没啥好用工具

众所周知 windows 默认使用它那 ntfs 已经很久了,并且默认没有 btrfs 支持。而双系统经常需要进行文件的互访问。linux 默认可读 ntfs,写入则只需安装 ntfs-3g 即可。而 windows 访问 btrfs 也非常简单。

  1. 安装 Winbtrfs
  2. 此时已经可以在资源管理器中访问了。
  3. 默认挂载是读写的,我比较建议改为只读,降低出现问题的概率。在这里可以进行一些设置,重启生效。

事实上,winbtrfs 与 ntfs-3g 都不能保证一定不会出问题(有一些群友被坑过)。所以建议都只读不写。

还有,windows 蓝屏可能会炸硬盘,导致 windows 能读,linux 挂不上。ntfs 炸了就无脑用 chkdsk 修就行。

链接

分为硬链接和软链接。硬链接文件共享相同的 inode 值,指向同一份文件,因此是同步更新。软链接就是快捷方式。

软链接和快捷方式本质是相同的,但还有一些细微的差别,比如 lnk 还会存 description, icon...

git 内添加链接指向的文件需要手动 git add -f。

调整大小

我们日常使用中可能会遇到需要调整分区大小的情况。实际上我们的意思一般是“调整分区和其上的 fs 大小,并保持调整后它们的大小仍然相等”。由于 fs 在分区上层,一般来说,我们需要:

否则会发生数据丢失。

还有一个注意点是分区的对齐。由于 fs 的元数据(superblock)一般在分区最前面,缩小 fs 和分区默认都是从后方缩小,可能缩小腾出的空间并没有办法给前方分区使用。

对于 btrfs,我们可以很方便地在线调整 fs 大小,无需使用启动盘 mount。搜索 btrfs fi resize 获取教程。调整大小前建议先清理一下快照,跑一次 balance。

混成器

混成器是向实际屏幕绘制的抽象层,提供了接口供 UI 软件调用。更多混成器相关知识可以看 farseerfc 的两篇博文 (1 2)。

目前广泛使用的 linux 混成器有 X11 和 Wayland,其中 X11 已宣布停止维护。

为什么我不使用 Wayland?

现在谈到混成器,Wayland 几乎成为了“政治正确”的代言,许多发行版也将默认混成器换为 Wayland(例如 Fedora)。但是我一直都是坚定的 X11 人。

服务

与 windows service 的概念相通。

老版 init.d 内容

虽然我这里说不用看,但是还是有一些傻逼发行版,比如 OpenWRT 会用。而且还带了很多坑。

基本概念

每个服务是一个 .service 文件,存放在不同位置:

杂:

常用指令

systemctl <operation> <service_name>,无需打 .service 全名。

WSL2

WSL2(ArchWSL) 由于不从 systemd 启动,导致无法使用 systemctl 管理服务。

解法是有一个 python 实现的 docker-systemctl-replacement,可以代替(?) systemctl 的功能。(ref)

sh
sudo curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl3.py -o /usr/bin/systemctl
sudo python /usr/bin/systemctl <command>

日志

.desktop

许多软件安装后可以在 krunner 中直接运行,实际上就是读取了 .desktop file。

软件的 .desktop file 一般保存在 ~/.local/share/applications。

.desktop file 理解为启动脚本。只要随便打开看一个就懂了。

toml
[Desktop Entry]
Name=evince
Comment=evince pdf reader
Type=Application
Exec=evince -o
Terminal=false

这里提供一个较小的 .desktop file 示例,若软件不自带,可以考虑自己写个。

文件传输

rsync 用于主机之间的文件传输,带有断点恢复等功能,吊打 scp 等。

我比较推荐 rsync -aviuzP ...。具体什么意思,这里不赘述(RTFM)。

external

  1. 了解一下 btrfs(注意时效):Linux Btrfs 文件系统使用指南
  2. Linux fontconfig 的字体匹配机制
  3. btrfs 元数据满了怎么办
  4. A chapter of PKGBUILD-cookbook
  5. ZFS ── 瑞士军刀般的文件系统
  6. 使用 btrfs 提升 HDF5 透明压缩百倍性能
  7. 深入原理:Btrfs vs ZFS 实现 snapshot 的差异