Windows安装、Linux内核、macOS操作系统、知名软件、常用工具、快捷键、终端命令行
综合/最新
操作系统、跨平台
苹果M系列笔记本电脑和华为鸿蒙笔记本电脑,均为 ARM 架构。
通用
烧录工具 - Rufus(分区类型全部用GPT)
字体 - Ubuntu、Debian等Linux发行版的默认中文字体是Noto Sans SC,Windows也已内置Noto Sans SC,Chrome默认字体Noto Sans SC;macOS 只自带了 Noto Sans Myanmar缅甸字体。
macOS是认证过的Unix,Linux则是类Unix。
echo $SHELL 在 macOS 中输出 /bin/zsh(封闭的苹果不愿遵守bash协议GPLv3/github actions中则自行安装了最新版bash),在 Linux 下输出 /bin/bash,同时支持 bash、sh 软链接。
家目录(也翻译为用户主目录):
所有操作系统均通过相同的命令行变量获取:echo $HOME
所有操作系统均存在桌面目录:echo $HOME/Desktop/
Windows C:\Users\<用户名>
Linux /home/<用户名>
macOS /Users/<用户名>
环境变量:
Linux和macOS通过 env 命令获取;Windows 则要用 ls env: 或 Get-ChildItem env:
固化:
Linux/macOS /etc/profile.d/my.sh 写入 export PATH="$HOME/.cargo/bin:$PATH"
仅macOS /etc/paths.d/my 写入 /opt/homebrew/bin/
死记:
含空格路径只能用双引号括住,否则 $HOME 不会展开 mkdir -p "$HOME/Library/Application Support/Godot/"
目标文件夹不存在,才会只移动内容物,否则作为子目录移动 mv Godot/ "$HOME/Library/Application Support/Godot/" 即 .../Godot/Godot/。
DNS:TTL老化时间通常为20分钟
查看域名对应IP - Linux(装dnsutils包)/Windows(内置)/macOS:
nslookup example.com
nslookup example.com 8.8.8.8
dig 命令已取代 nslookup。
DoH (DNS over HTTPS) 相比专用端口(853)的 DoT (DNS over TLS),特征不容易被检测,故平时应备一个自建 DoH 服务。
mDNS:TTL老化时间通常为20分钟
Windows 用 Resolve-DnsName device.local
Resolve-DnsName blog.kaciras.com -Server 114.114.114.114
软件工具:
QQ支持远程桌面功能,但微信没有。
Windows
微软 Windows 操作系统官方 下载 页面,首选不强制登录的 Windows 11 (multi-edition ISO)。
注意 - Win11_23H2_Chinese_Simplified_x64.iso 之后系统开始要求硬件必须支持 SSE4.2,强装则报"Fail Invalid parameter"无限重启。
查看 *.iso 操作系统版本信息 - 右键 H:\setup.exe 详细信息 或 dism /Get-WimInfo /WimFile:H:\sources\install.wim /index:1
硬件唯一标识符:
主板 - Get-WmiObject win32_baseboard | Format-List Product,SerialNumber
Windows新版本通常每年10月份发布。
宿主机安装 NVIDIA Windows GPU 驱动程序后,WSL 2 会感知到,就无需再安装 Linux 版本的 NVIDIA GPU 驱动了,但 CUDA 仍然需要,需要注意的是,必须勾掉 CUDA Toolkit 内置的 NVIDIA GPU 驱动。
Windows安装:
本地账号 - “改为域加入”。
KMS 用法图示 - slmgr 命令行方式无风险,除非运行了那些号称“一键激活”的软件工具。
密钥激活(终端管理员) - https://learn.microsoft.com/zh-cn/windows-server/get-started/kms-client-activation-keys#windows-11-and-windows-10-semi-annual-channel
slmgr /ipk <product-key>
slmgr -skms <kms.domain>
slmgr -ato
切换至带空格目录:
cd C:\Progra~1\ = C:\Program Files C:\Progra~2\ = C:\Program Files (x86)
注 - Program Files 和 C:\Windows\System32 存放当前架构的程序,后者名字中的32不再用于区分架构,对应的32位路径则为 Program Files (x86) 和 C:\Windows\SysWOW64。
存放当前用户安装程序目录 - C:\Users\pc\AppData\Local\Programs\
执行带空格命令行: & 'C:\Program Files\x.exe' 或转义 C:\空` 格\x\x.exe
PowerShell:已被 pwsh 命令取代,不再增加新功能。
命令和参数均不区分大小写,故 -Force 若跟 -Filter 冲突,可简写到第2个字母 -fo
家目录 - 跟Linux保持一致了:Convert-Path ~/
Get-Variable 在Name列前加个$符号即可取值:$HOME ${HOME} 输出 C:\Users\person
改名不影响编译时间(time date stamp字符后/部分程序为空/参数deterministic也会影响):
& "D:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\Hostx64\x64\dumpbin.exe" /HEADERS "C:\Program Files\dotnet\dotnet.exe"
或下载并查看Link date值 .\sigcheck.exe -q x.exe
非“管理员模式”下执行,多账户使用可追加个 /M 参数 - SETX ORG_GRADLE_PROJECT_OurMavenRepoPassword "[仓库密码]"
系统盘占用情况:
说明 - Windows操作系统重装后约占45GB,故系统盘至少80GiB,若装Android Studio则要160GiB。
C:\Windows\WinSxS\ 存储系统组件、Windows核心DLL等文件的多个副本,恢复分区不可用时来抽取重置系统,约7GiB≈13GiB;%systemroot%\WinSxS
$HOME\AppData\Local\Android\Sdk\system-images 各软件数据目录,约15GiB,即只保留2个模拟器系统。
$HOME\AppData\Roaming\Godot\export_templates 各软件同步用数据目录,约3.5GiB,即只保留2个导出模板。
$HOME\.android\avd\ Android缓存目录,约20GiB,即只保留2个模拟器镜像。
$HOME/.gradle Gradle缓存目录,约500MiB≈10GiB,若 Gradle toolchain 指定了其他 JDK,则每个 JDK 会在 C:\Users\pc\.gradle\jdks 中多占500MiB。
查看恢复分区文件:
分配盘符(用完必须移除盘符,避免误删文件) - https://www.disktool.cn/content-center/unhide-recovery-partition-2111.html
ls 列不出该分区文件,故应使用 Get-ChildItem -Force 查看;通常为 H:\Recovery\WindowsRE\Winre.wim。
NVIDIA 驱动 - NVIDIA App 已取代强制登陆的 GeForce Experience;https://www.nvidia.cn/geforce/drivers/
Linux
Arduino/OpenWRT/树莓派
新:
主流Linux已将/bin/ 统一为 /usr/bin/ 了;即 /{bin,sbin,lib}/ -> /usr/{bin,sbin,lib}/ 。
遇到 Daemons using outdated libraries(Which service should be restarted?) 弹窗,通常按 ESC 或 Tab 至 Cancel 回车即可。
发行版:
首选稳定的Debian,次选Debian 13衍生版Ubuntu 24.04 LTS;首选自定义用户名,而非root管理员账号,高权限时临时提升下即可。
Debian - 安装程序首选700MiB的CD版(即netinst CD/debian-*.*.*-amd64-netinst.iso),完全离线则装3.7GiB的DVD版本,两者均含图形界面,桌面环境为Gnome。
安装时若提示“缺失的固件文件是:ath10k/...”,说明需要额外的网卡驱动,可先“否”+“继续”跳过,虽缺失固件但WiFi还是能做到最基本的联网,软件源设置后似乎会自动安装上。
安装时会提示设置root密码,如果留空则说明不启用root账号;磁盘分区方法应选择“手动”,避免误删重要数据,若磁盘分区无“挂载点 / 和 swap 等”,应再次指定为“用于:Ext4”并挂载点为 / 和格式化;
自动分区的分区方案首选“放在同一个分区中”,即只分为 / 和 swap,用一段时间后,观察下实际占用,后续考虑其他方案,比如“将 /home 放在单独的分区”:/ 分区=16G(/root估计用不到1G)、swap 分区=10G(不要大于物理内存)、/home 分区=130G(剩余),如果用于服务器也可将 /var 分区独立出来。
安装时选择国内源列表,mirrors.tuna.tsinghua.edu.cn 比 mirrors.163.com 延迟低,官方源域名已被国内严重劣化,国内源下载只需3分钟,官方源则要3个多小时!若用于服务端应勾上“SSH Server”。
部分软件指定安装testing版本:debian与rpi通用;如果配置较少,可直接用软件包版本更高的ubuntu系统。
sudo vim.tiny /etc/apt/sources.list.d/our.list
deb https://deb.debian.org/debian testing main contrib non-free non-free-firmware
注意 - 添加后 testing 的(Pin-Priority: 500)会高于 bookworm(500)和 bookworm-backports(100),故降低下:
sudo vim.tiny /etc/apt/preferences.d/99-our- Package: *
Pin: release a=testing
Pin-Priority: 99
apt-cache policy claws-mail 查看 testing 的优先级数字
[可选] apt.conf.d 按 ASCII 值排序(数字优先于字母)执行和覆盖指令。
sudo vim.tiny /etc/apt/apt.conf.d/99-our
sudo apt-mark hold openssh-server # 避免ssh配置升级而无法登录
sudo apt-mark showhold
apt update
sudo apt -t testing search ^nginx$
sudo apt -t testing install nginx
硬件唯一标识符:
固定硬件通过设备树来传递至Linux内核,比如树莓派等 cat /proc/device-tree/serial-number
设备树 - 内核在启动时加载DTB文件,并解析其中的硬件资源描述,生成相应的设备节点。
硬件不固定的设备:
Intel 和 AMD CPU 为了防追踪而并不提供唯一标识符;退而求其次,可用主板代之。
Debian已内置解析 SMBIOS 3.0.0 的 sudo dmidecode 命令:
sudo dmidecode --string baseboard-serial-number
.A1B2C3D.CN123456789012.
等同 sudo cat /sys/class/dmi/id/board_serial
其他设备:通过命令生成 systemd-machine-id-setup 查看 cat /etc/machine-id
目录约定:
路径寻址时,应优先使用类 Unix(Unix-like)OS 均存在的 $HOME 环境变量,而非写死 /home/$USER。
XDG Base Directory Specification(XDG基准目录规范) - 用来解决类Unix家目录点文件(dotfiles)混乱问题 /home/username/.gradle/。
Environment variables: $XDG_DATA_HOME=$HOME/.local/share、$XDG_CACHE_HOME=$HOME/.cache、$XDG_CONFIG_DIRS=/etc/xdg(其中 /etc/xdg/autostart/*.desktop 支持自启)
亲测已遵循的发行版:Debian、树莓派;且均已内置 XDG 命令包 xdg-utils,支持 xdg-open 等命令。
/tmp 目录存放文件在开机时会被删除(10天自动清理),而 /var/tmp 里面的文件在重启后仍会保留(30天自动清理)。
Linux系统:
apt 功能已取代 aptitude,特别是用于系统大版本升级。
系统升级:
sudo vim.tiny /etc/apt/sources.list 将系统名 bookworm 改为 stable
sudo apt update
sudo apt full-upgrade
ELF:
Linux 程序头表 PT_INTERP 通常会写死 /lib64/ld-linux-x86-64.so.2 路径(可用 patchelf 改写),或用 LD_PRELOAD 手动指定(可能不兼容)。
ld-linux-*.so.2 会根据程序 ELF 依赖信息来动态加载所需库,比如 libc.so.6 等。
Linux命令:
命令行包括命令(command)+ 参数(parameters),参数又分为选项(options/可选项)和实参(arguments): command [-options] [arguments]
编程中,parameters为形参,arguments则为实参。
命令拼接至字符串(美元符+括号): echo $(uname -m)-linux-gnu 等同 dpkg-architecture -q DEB_HOST_GNU_TYPE 输出的 x86_64-linux-gnu
/bin/sh - 每个操作系统均存在,且符合POSIX,但没有 /bin/bash 功能多;若存在 $PATH 环境变量,则可简写为sh。
ifconfig命令包net-tools已停止开发,并被iproute2包取代了,对应命令为ip addr。
输出html网页 - wget通常内置,而curl则要额外安装; wget -O- localhost 等同 curl localhost 。
apt install dnsutils 包含 nslookup 和 dig 命令
拼接字符,换行免转义:
cat << EOF
Hi!
EOF
剔除左侧Tab符:
cat <<- EOF
Hi!
EOF
将控制台打印字符写入文件(cat参数位置可互换):
cat > x.txt <<- EOF
Hi!
EOF
管道提权写入(能提权的命令为数不多 tee、dd、cp /dev/stdin):
cat <<- EOF | sudo tee /tmp/x.txt
Hi!
EOF
中文输入法:
Debian启用fcitx中文输入法快捷键是“Ctrl+空格键”,英文输入法与fcitx中文拼音输入法之间切换键为“左Shift键”;需要点击“fcitx”图标激活下?
docker容器:安装配置
DKMS:
内核升级后,模块为了用上新内核的变动和修补,就要重新编译下。
模块 apt 包(nvidia-kernel-dkms等)安装时会执行钩子脚本,将包内源码目录注册至 DKMS 系统,当 dkms 监测到内核升级后,会根据注册的源码配置文件(dkms.conf)来重新构建和分发。
重新构建时,用的是 DKMS 的密钥(/var/lib/dkms/mok.key),因此需要将该目录的 mok.pub 导入 UEFI 公钥数据库:
sudo mokutil --import /var/lib/dkms/mok.pub 设个一次性密码(比如1),用于重启后作为当此的导入凭证,Enroll MOK -> 输入密码1。
sudo mokutil --test-key /var/lib/dkms/mok.pub 查看该公钥是否已登记。
sudo dkms status 应该输出 ...: installed,若输出 ...: Added,可能缺失 linux-headers。
[备忘/未使用]:
sudo apt install linux-image-6.12.32-amd64
命令 dkms install 依赖内核头:sudo apt install linux-headers-6.12.32-amd64
sudo dkms install nvidia-current/550.163.01 -k $(uname -r)
开机启动、DKMS 方式安装 NVIDIA 显卡
macOS
相关:Xcode+Swift
约定:
三个标准的应用程序存储位置: /Applications(对所有用户可用/最常用)、/Users/用户名/Applications(对拥有该文件夹的登录用户可用)、/Developer/Applications(对所有用户可用,用于Xcode软件)
应用程序数据目录 - ~/Library/Application Support/
[自用/可选] 个人文件均放在桌面目录 /main/ 中,比如 /main/game-dev/、/main/projects/。
常用:
iPhone传照片或文件 - 通过USB线插入macOS后,打开“照片”应用会让你勾选后“导入”,若提示‘关闭“iCloud 照片”’,需要先到iPhone的Apple账号->iCloud->照片 中关闭 “iCloud 照片”;
USB传Windows,插上就会弹出按月份分隔的照片目录(202505__),无需iTunes。
终端命令 - defaults help 查看命令用法 或 在macOS中弹出用法
开机启动 - Dock栏右键点击应用图标 -> 选项 -> 登陆时打开;或「系统设置」-「通用」-「登录项」-「登录时打开」(「允许在后台」);或 ~/Library/LaunchAgents/our-env.plist。
死记:
鼠标 - 滚轮方向正好相反,说是为了与iPhone达成统一。
键盘 - option(⌥)=Alt、command(⌘/风景名胜区/大部分Ctrl作用)=Super Key、control(⌃/使用率低)=Ctrl、shift(⇧)。
注意:部分游戏键盘可能会屏蔽Windows键,进而导致在macOS中也不识别,可尝试用FN+Gaming键来关闭。
显示桌面 - F11;Windows则为Win+D。
全角/半角切换 - Alt+Shift+H
运行/搜索 - Win+R、macOS则用 Command+Space,若想接着打开终端,按z即可。
鼠标点开或 open Godot_mono.app 均等同 ./Godot_mono.app/Contents/MacOS/Godot
快捷键 - Ctrl(macOS换用command)+c(复制/拷贝)、Ctrl(command)+v(粘贴)、全选 Ctrl(command)+A、查找 Ctrl(command)+F、截图 Shift-Command-5。
窗口快捷键 - Command+Option+M+H 快速隐藏所有窗口
窗口最大化 - Windows双击、macOS则是拖至最顶部,出预览框后释放即可,或窗口菜单->Windows->Fill填充;或悬停在绿色“全屏幕”按钮->填充图示。
「前往文件夹」 - Command + Shift + G 后输入“/”会感应常用目录。
文件夹路径层次关系 - 右键点击文件夹窗口名 或终端命令持续显示 defaults write com.apple.Finder _FXShowPosixPathInTitle -bool true 重启方生效 killall Finder
Finder 查看隐藏文件的文件夹(再按则隐藏) - Command (⌘) + Shift + . (句号)。
或终端命令显示 defaults write com.apple.Finder AppleShowAllFiles -bool true 重启方生效 killall Finder
重新命名 - 选中后按Enter,Windows则为选中后按F2。
浏览器 - 打开刚关页面 Ctrl(macOS换用command)+Shift+T;关闭标签页 Ctrl(command)+W;全屏 Control-Command-F;
Command + L: 快速输入网址;刷新 Command+R
浏览器:
Safari Technology Preview 可与系统内置 Safari 并存,但 Safari Beta 版则会直接替换,且不好降级。
点击❌并非关闭,而是最小化了,Dock任务栏(程序坞)下方用圆点来表示该程序仍在运行,顶条菜单“应用名”->“退出(Quit)”才会彻底停止。
创建快捷方式:右键点“制作替身”(Make Alias)就会添加至桌面一个快捷方式。
无法上网,可能是VPN工具误开了代理,退出时未还原:网络->以太网->详细信息->代理->去掉勾选:网页代理、安全网页代理、SOCKS代理。
<input type="file" /> 标签点开后粘贴路径,会识别并转到。
macOS软件后缀通常为app, dmg, pkg,且必须进行公证,否则提示“无法验证开发者”,安装就无法继续下去了。
安装后打开报“已损坏”解决: sudo spctl --master-disable 执行后应尽快到“设置”->隐私与安全性->允许以下来源:任意来源。
电池健康度: ioreg -rn AppleSmartBattery | grep -i capacity 输出后计算百分比 AppleRawMaxCapacity / DesignCapacity * 100
macOS电源管理:
说明 - Macmini m4默认息屏时间为无动作后10分钟。
通常由pmset命令管理,参数-c指外部供电模式,参数-b指内置电池模式。
powernap <0|1>:电能小憩(Power Nap) - 在睡眠模式(仅浅睡起效)下执行某些后台任务:更新同步等。
womp <0|1>:网络唤醒(Wake On LAN)。
sleep:睡眠 - 保持内存供电
standby:待机?
系统设置 -> 能源: “显示器关闭时,防止自动进入睡眠”指不论是自动还是主动关闭显示器,均永不睡眠;等同 sudo pmset -c sleep 0
新macOS系统中,hibernatemode不再是用户可以直接调节的,macOS会自动管理;该参数决定浅睡(睡眠)还是深睡(休眠)。
Mac mini无hibernatemode、autopoweroff参数。
Mac mini:
原则是不落盘,改错了恢复原貌 sudo pmset restoredefaults
// 内存供电,内存镜像不写入硬盘
sudo pmset -c hibernatemode 0
// 关闭 standby 模式
sudo pmset -c standby 0
远程桌面:
macOS连macOS - macOS内置“屏幕共享” Screen Sharing。
macOS连Windows - https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466
Windows连macOS - Remote Desktop Manager(Free edition)
安装后,首次启动会提示安装固定版本.NET 桌面运行时(可与最新版共存/SDK包含桌面运行时),并跳过(Skip)“选择数据源”;
支持mDNS主机名macdeMac-mini.local 用户名mac
亲测剪切板能拷贝文字,但不支持文件。
Macmini默认启用了"唤醒以供网络访问",故远程桌面一直可连。
Remote Desktop Manager - Windows远程桌面访问macOS设备,窗口显示模式首选“工作区屏幕(Work area screen)”。
Final Cut Pro - Mac系统知名视频编辑工具。
2025年初,苹果Swift Build开源,据称要支持Windows平台 - https://github.com/swiftlang/swift-build
其他
gzip的store算法和tar格式,均用于打包而不压缩的场景。