Skip to content

📒 操作系统使用经验和技巧

macOS

初次从其他系统迁移

需要习惯以下几个点:

  • 菜单栏(Menu Bar):所有软件的选项都在菜单栏中,不习惯的时候常常会觉得找不到软件的配置选项。
  • 触摸板手势:基础手势已经很好用,在网上还可以找到教程开启更多手势,强烈推荐开启三指拖拽功能。
  • Spotlight:按住 Cmd+Space 可以快速打开应用程序和文件。
  • 键盘
    • macOS 的快捷键与其他系统有些许不同,比如 Cmd+X 不再能够剪切文件,而应当用 Cmd+C 复制文件,然后用 Cmd+Option+V 粘贴文件。可以在网上查找 macOS 常用快捷键的教程。
    • MacBook 上的 Cmd 键基本替代了 Ctrl 的功能,而 Ctrl 在各种终端中仍能正常使用。
  • 访达
    • 使用空格预览文件
    • 配置工具栏:在访达工具栏右键可以配置工具栏,加入如删除文件等常用按钮可以提升效率。
  • 特殊文件属性:从网络上下载的文件会被 macOS 附加文件属性,阻止运行等,可以使用 xattr 命令解除。

    sudo xattr -l /path/to/file
    sudo xattr -rd com.apple.quarantine /path/to/file
    
  • 设置默认应用程序:右键 - 显示简介 - 打开方式 - 全部更改

Homebrew

几个概念:

  • tap 是一个 GitHub 仓库,当它被 tapped 时就可以从该仓库安装软件包。
  • cellar 是软件包安装在本地的位置。
  • formula 是一个软件包或库,Homebrew 会保留其的多个版本。
  • cask 是一个应用程序。

常用命令:

  • brew install <formula>:安装软件包
  • brew uninstall <formula>:卸载软件包
  • brew search <formula>:搜索软件包
  • brew list:列出已安装的软件包
  • brew update:更新 Homebrew
  • brew upgrade:更新已安装的软件包
  • brew cleanup:清理旧版本的软件包
  • brew tap <user>/<repo> <URL>:添加 tap

Linux

  • 桌面应用程序无脑选择 Flatkap。

其他问题:

遇到固件问题怎么办?

  • 首先,查看发行版的手册和 Wiki,寻找解决固件问题的办法。
  • 更新 BIOS 版本。
  • 更新 Linux 内核。
  • 使用驱动检查工具。
  • Debian 安装后无法启动,报错 hdaudio hdaudioC0D2: Unable to configure, disabling 等。
    • 原因:Debian 使用的 Linux 内核太老,无法识别新核芯显卡。
    • 解决方法:在 Grub 的内核命令行中添加 nomodeset。进入系统后,升级 Linux 内核到最新的可用版本。

OpenWRT

Windows

cmd.exe

作为 Windows 系统的远古命令解释器,只具有很少的命令,使用 help 就可以查看。

PowerShell

  • 格式:PowerShell 与其他 Shell 的一个显著区别是它的命令名称,一般为 Verb-Noun 格式,比如 Get-Command

  • 对象:在 PowerShell 中,命令的结果作为对象传递,比如 Get-Process 返回 System.Diagnostics.Process 对象。类型的成员的种类(MemberType)可以是属性(Property),也可以是方法(Method)。比如 Get-Service 返回的 System.ServiceProcess.ServiceController 具有 close() 方法,可以直接调用。

  • 管道:PowerShell 管道可以对对象进行很多操作,不过在 Linux 中我们最熟悉的是文本处理。可以使用 Get-ContentOut-File 来进行:

# 关机
Stop-Computer -Force -ComputerName localhost
# 帮助
Update-Help
Get-Verb
Get-Command -Name -Verb -Noun [pattern]
Get-Help
help -Full
# 需要找什么命令直接查询即可,比如服务相关就查 `Get-Command -Name Service`"
# 对象
Get-Member -MemberType
Select-Object -First n -Property Name, Source
Where-Object [condition]
(Get-Service -Name w32time).Stop()
# 创建一个 `PSCustomObject` 类型的变量,具有 `Name` 成员,属性为 `w32time`(这是一个字符串 `System.String`)。
$CustomObject = [pscustomobject]@{
 Name = 'w32time'
 }
# 管道
'Background', 'Windows' | Out-File -FilePath $env:TEMP\services.txt
Get-Content -Path .\LineNumbers.txt
Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

脚本执行权限

ExecutionPolicy 影响脚本能否执行,在客户端系统上一般都设置为 Restricted,任何脚本都无法执行。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

更多

常用的比较运算符,和 bash 差不多:

'PowerShell' -eq 'powershell'
-eq
-ceq #case sensitive
-gt

# 一个控制片段示例:
$number = Get-Random -Minimum 1 -Maximum 10
do {
  $guess = Read-Host -Prompt "What's your guess?"
  if ($guess -lt $number) {
    Write-Output 'Too low!'
  } elseif ($guess -gt $number) {
    Write-Output 'Too high!'
  }
}
while ($guess -ne $number)

Utilities

除了各 Shell 的内置命令,Windows 上还有一些实用工具:

  • 开关机:
    • shutdown
      • 立即关机:shutdown /p /f
      • 重启并自动登录并锁定:shutdown /sg
  • 系统管理:
    • chkdsk:检查磁盘
    • diskpart:磁盘分区
    • dism:Windows 映像管理工具
    • sfc:系统文件检查
  • 进程管理:
    • tasklist:列出进程
    • taskkill:结束进程
  • 网络:
    • ipconfig:网络配置
    • netstat:网络状态
    • net:网络配置
    • route:路由表

Android

ADB

  • adb devices
  • adb install/uninstall
  • adb reboot [bootloader|recovery|sideload|sideload-auto-reboot]
  • adb shell

进入 Shell 后有一些常用的工具,具体用法查看工具自带的帮助。

  • dumpsys 查询系统、服务状态。如 battery 等。
  • wm 窗口管理器,控制显示方面。
    • size [reset|WxH|WdpxHdp]
    • user-rotation [free|lock] [orientation]
  • settings 管理各项系统设置。
    • list [system|secure|global]
    • put NAMESPACE KEY VALUE
  • pm 包管理器
    • list packages

删除内置应用

adb shell # 连接手机终端
pm list packages # 列出应用包名
pm uninstall -k --user 0 NameOfPackage # 卸载应用包
  • 可以在谷歌商店下载 App Inspector 在手机上查阅每个应用的信息,知道包名是对应哪个应用。
  • Android 系统组件一定不能卸载,MIUI 系统核心组件替换时必须小心。
    • 如:com.android.provider. 开头的,大部分是 Android 系统 API 接口提供者,应当保留。com.android. 开头的部分软件被 UI 产商替换,可以尝试更改为自己需要的。但一定要注意备份。
    • com.android 系列软件删除前必须查看上面参考资料中的系统应用清单!!!确定不在不可删除的列表中再决定是否要删除!!!
    • com.android.phone 删除后将导致 SIM 卡无法使用,且由于其为 priv-app 中的应用,无法通过 ADB、保留数据的线刷恢复。小心!!!
    • 当你准备抛弃 MIUI 并使用 Google 套件替换系统功能时,请先退出小米账号,解除手机和小米账号的绑定,再卸载和小米云服务有关的组件。否则将面临手机被锁定且因为缺少服务组件无法解锁的窘境。
  • 只要你的手机 Bootloader 仍然保持解锁状态,就有无损修复的机会。

个人经历:卸载系统组件后无法进入系统

我删除了小米云服务、小米账号以及相关 SDK 后重启手机,手机即显示“Device Locked”,需要输入绑定的小米账号的密码才能解锁。可是,SDK 都被删除了,输入密码也无法登录,显示 RPC Error。而且,手机进入锁定状态会自动关闭 ADB 等功能,手机系统处于无法动弹的状态。

以下是我的修复步骤:

  1. 电脑登录 小米云服务,解除对应设备的找回设备功能。
  2. 使用物理按键将手机重启至 Fastboot 模式,使用 MIUI 官方线刷工具,以保留数据的方式刷入系统镜像,以补上 MIUI 关键组件。
  3. 重启手机,此时仍处于锁定状态。连接网络,稍等一下,手机就自动解锁了(小米服务器向手机发送解绑指令)。

修复完成后,小米云服务不再可用,保留数据的线刷并不会还原云服务核心组件。

参考资料