📒 操作系统使用经验和技巧¶
macOS¶
初次从其他系统迁移¶
需要习惯以下几个点:
- 菜单栏(Menu Bar):所有软件的选项都在菜单栏中,不习惯的时候常常会觉得找不到软件的配置选项。
- 触摸板手势:基础手势已经很好用,在网上还可以找到教程开启更多手势,强烈推荐开启三指拖拽功能。
- Spotlight:按住 Cmd+Space 可以快速打开应用程序和文件。
- 键盘:
- macOS 的快捷键与其他系统有些许不同,比如 Cmd+X 不再能够剪切文件,而应当用 Cmd+C 复制文件,然后用 Cmd+Option+V 粘贴文件。可以在网上查找 macOS 常用快捷键的教程。
- MacBook 上的 Cmd 键基本替代了 Ctrl 的功能,而 Ctrl 在各种终端中仍能正常使用。
- 访达:
- 使用空格预览文件。
- 配置工具栏:在访达工具栏右键可以配置工具栏,加入如删除文件等常用按钮可以提升效率。
-
特殊文件属性:从网络上下载的文件会被 macOS 附加文件属性,阻止运行等,可以使用
xattr
命令解除。 -
设置默认应用程序:右键 - 显示简介 - 打开方式 - 全部更改。
Homebrew¶
几个概念:
tap
是一个 GitHub 仓库,当它被tapped
时就可以从该仓库安装软件包。cellar
是软件包安装在本地的位置。formula
是一个软件包或库,Homebrew 会保留其的多个版本。cask
是一个应用程序。
常用命令:
brew install <formula>
:安装软件包brew uninstall <formula>
:卸载软件包brew search <formula>
:搜索软件包brew list
:列出已安装的软件包brew update
:更新 Homebrewbrew 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-Content
和Out-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
,任何脚本都无法执行。
更多¶
常用的比较运算符,和 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
删除内置应用¶
- 可以在谷歌商店下载 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 等功能,手机系统处于无法动弹的状态。
以下是我的修复步骤:
- 电脑登录 小米云服务,解除对应设备的找回设备功能。
- 使用物理按键将手机重启至 Fastboot 模式,使用 MIUI 官方线刷工具,以保留数据的方式刷入系统镜像,以补上 MIUI 关键组件。
- 重启手机,此时仍处于锁定状态。连接网络,稍等一下,手机就自动解锁了(小米服务器向手机发送解绑指令)。
修复完成后,小米云服务不再可用,保留数据的线刷并不会还原云服务核心组件。