diff --git a/content/linux-1-command.md b/content/linux-1-command.md new file mode 100644 index 0000000..82c0b79 --- /dev/null +++ b/content/linux-1-command.md @@ -0,0 +1,360 @@ ++++ +title = "Linux下的命令行操控" +date = 2023-07-20 + +[taxonomies] +tags = ["Linux"] ++++ + +前言 本文基于常见发行版(systemd + NetworkManager + PipeWire/ PulseAudio / ALSA),目标是把常见的桌面/笔记本硬件(Wi-Fi、蓝牙、亮度、音量)通过命令行可复现、可理解地组织起来。 + + + +# Wifi 控制 + +现代桌面大多使用 NetworkManager 管理网络,`nmcli` 是其命令行接口。`nmcli` 能列出可用网络、连接/断开、创建配置文件(包括 WPA/WPA2/PSK、enterprise)等。相比直接编辑 wpa_supplicant 配置,`nmcli` 更安全、统一,能与 GUI 保持一致。 + +### 常用命令 + +列出接口及设备状态: + +```bash +nmcli device status +``` + +列出附近 Wi-Fi(SSID、信号强度、安全类型): + +```bash +nmcli device wifi list +``` + +交互式连接(会提示输入密码): + +```bash +nmcli device wifi connect "wifi-2.4G" --ask +``` + +不交互式连接(将密码放在命令里 — 注意安全风险): + +```bash +nmcli device wifi connect "wifi-2.4G" password "your_password" +``` + +基于已有配置文件连接(例如创建一个保存的 connection 名称): + +```bash +# 创建连接(自动选择设备) +nmcli connection add type wifi ifname wlan0 con-name my-home ssid "wifi-2.4G" \ + wifi-sec.key-mgmt wpa-psk wifi-sec.psk "your_password" + +# 启用连接 +nmcli connection up my-home +``` + +断开或禁用接口: + +```bash +# 断开当前连接 +nmcli device disconnect wlan0 + +# 禁用设备(软禁用) +nmcli device set wlan0 managed no +``` + +查看连接详情: + +```bash +nmcli -f all connection show my-home +nmcli device show wlan0 +``` + +--- + +# 蓝牙控制 + +Linux 上常见蓝牙栈为 BlueZ(蓝牙守护 `bluetoothd`),`bluetoothctl` 提供交互式 CLI。音频设备通常通过 BlueZ + PulseAudio(或 PipeWire)进行音频路由;配对/信任步骤必须完成才能稳定连接音频/键盘/鼠标等设备。 + +### 一、蓝牙服务与模块启用/禁用 + +启用蓝牙服务(systemd): + +```bash +sudo systemctl enable --now bluetooth.service +``` + +打开蓝牙适配器电源: + +```bash +bluetoothctl power on +``` + +打开配对代理(用于交互式配对)并设置为默认: + +```bash +bluetoothctl agent on +bluetoothctl default-agent +``` + +开启可发现(让其它设备能扫描到): + +```bash +bluetoothctl discoverable on +``` + +重启蓝牙服务(排错常用): + +```bash +sudo systemctl restart bluetooth +sudo journalctl -u bluetooth -f +``` + +> 注意:某些发行版在使用 PipeWire 做音频时还需要 `pipewire` / `wireplumber` 正确运行,否则音频通道(A2DP/HFP)无法建立。 + +### 二、查看设备与状态 + +```bash +# 列出本机所有蓝牙适配器 +bluetoothctl list + +# 查看本地适配器详细状态 +bluetoothctl show + +# 查看已配对设备 +bluetoothctl paired-devices + +# 查看某个设备详情(包括 UUID、已连接服务) +bluetoothctl info AA:BB:CC:DD:EE:FF +``` + +### 三、交互式配对与连接 + +交互式步骤(在 `bluetoothctl` 提示符下): + +```text +$ bluetoothctl +[bluetooth]# power on +[bluetooth]# agent on +[bluetooth]# default-agent +[bluetooth]# scan on +# 等待几秒,看到目标设备(并记录 MAC) +[bluetooth]# pair AA:BB:CC:DD:EE:FF +# 如果是需要 PIN 的设备,会提示配对码;确认或输入即可 +[bluetooth]# trust AA:BB:CC:DD:EE:FF # 使系统信任设备(开机后自动连接) +[bluetooth]# connect AA:BB:CC:DD:EE:FF +[bluetooth]# exit +``` + +### 四、断开与删除设备 + +断开连接: + +```bash +bluetoothctl disconnect AA:BB:CC:DD:EE:FF +``` + +删除配对信息(“忘记设备”): + +```bash +bluetoothctl remove AA:BB:CC:DD:EE:FF +``` + +### 五、蓝牙软/硬封锁 + +查看封锁状态: + +```bash +rfkill list bluetooth +``` + +封锁(禁用): + +```bash +sudo rfkill block bluetooth +``` + +解封(启用): + +```bash +sudo rfkill unblock bluetooth +``` + +如果设备被**硬封锁**(硬件开关),软件方法无效,需要物理开关或 BIOS 设置。 + + +### 六、音频输出切换 + +* 现代发行版多用 PipeWire 替代 PulseAudio,但 PipeWire 提供兼容接口,因此 `pactl`(PulseAudio 控制工具)在很多系统仍然可用。 +* 蓝牙设备会在连接后生成类似 `bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink` 的 sink 名称;有时名称会略有差异,建议先查询。 + +列出 sinks(输出设备): + +```bash +pactl list short sinks +``` + +设置默认输出为蓝牙耳机(示例): + +```bash +pactl set-default-sink bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink +``` + +把当前正在播放的流移动到蓝牙设备: + +```bash +pactl list short sink-inputs # 找到输入编号 +pactl move-sink-input <输入编号> bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink +``` + +如果使用 PipeWire,遇到连接但没有声音的问题: + +* 确保 `wireplumber` 或 `pipewire-media-session` 正常运行。 +* 检查 profile(A2DP vs HFP):A2DP 提供高音质但不可通话,HFP 可通话但质量较低。可通过 `pactl list cards` / `pactl set-card-profile` 调整。 + +--- + +# 亮度控制 + +笔记本屏幕亮度通常由内核暴露的 SysFS 接口 `/sys/class/backlight/*/brightness` 提供,写入该文件需要 root 权限或合适的权限(udev 规则)。桌面显示器、USB 显卡或 Wayland(特别是 wlroots)环境可能不会使用该接口,需要使用专门工具(如 `light`、`brightnessctl`、或 DE/Compositor 提供的接口)。 + +### 一、SysFS(多数笔记本适用) + +查看最大亮度值与当前亮度: + +```bash +cat /sys/class/backlight/*/max_brightness +cat /sys/class/backlight/*/brightness +``` + +设置亮度(需要 root): + +```bash +# 写入数值(0~max_brightness) +echo 5 | sudo tee /sys/class/backlight/*/brightness + +# 或者重定向(注意 sudo 的作用域) +sudo sh -c 'echo 5 > /sys/class/backlight/*/brightness' +``` + +如果遇到 “权限被拒绝”: + +* 使用 `sudo tee` 或 `sudo sh -c`;或添加 udev 规则给某个用户写权限。 +* 在某些内核/驱动下,背光接口名称可能不同(`intel_backlight`、`amdgpu_bl0` 等)。 + +### 二、brightnessctl + +`brightnessctl` 是一个用户友好、支持百分比与设备选择的工具。 + +安装: + +* Debian/Ubuntu: + +```bash +sudo apt install brightnessctl +``` + +* Arch: + +```bash +sudo pacman -S brightnessctl +``` + +用法示例: + +```bash +brightnessctl info # 显示当前设备信息 +brightnessctl get # 当前亮度 +brightnessctl max # 最大亮度 +brightnessctl set +10% # 增加 10% +brightnessctl set 50% # 设为 50% +``` + +--- + + +# 音量控制 + +Linux 下有几层音量控制:硬件(ALSA)、中间层(PulseAudio / PipeWire)、用户层(桌面音量控制器)。常用命令行工具:`pactl`(PulseAudio / PipeWire)、`pamixer`(PulseAudio 前端)、`amixer`(ALSA 原生)。 + + +### 一、pactl(PulseAudio / PipeWire) + +查看 sinks: + +```bash +pactl list short sinks +``` + +查看默认 sink: + +```bash +pactl info | grep 'Default Sink' +``` + +设置默认音量: + +```bash +pactl set-sink-volume @DEFAULT_SINK@ 50% +``` + +增量调节: + +```bash +pactl set-sink-volume @DEFAULT_SINK@ +5% +pactl set-sink-volume @DEFAULT_SINK@ -5% +``` + +静音/取消静音/切换: + +```bash +pactl set-sink-mute @DEFAULT_SINK@ 1 +pactl set-sink-mute @DEFAULT_SINK@ 0 +pactl set-sink-mute @DEFAULT_SINK@ toggle +``` + +移动播放流(见蓝牙章节): + +```bash +pactl list short sink-inputs +pactl move-sink-input <输入编号> <目标-sink> +``` + +### 二、amixer(ALSA) + +列出通道与当前值: + +```bash +amixer sget Master +``` + +设置音量(绝对 / 相对): + +```bash +amixer sset Master 50% # 绝对值 +amixer sset Master 5%+ # 增加 +amixer sset Master 5%- # 减少 +``` + +静音: + +```bash +amixer set Master mute +amixer set Master unmute +amixer set Master toggle +``` + +> 当使用 PipeWire/PulseAudio 时,`amixer` 仍然可以操作底层硬件,但用户可听到的效果可能被上层音量(PulseWire/PulseAudio)覆盖。 + +### 三、pamixer(PulseAudio) + +简洁的命令行前端,适合脚本: + +```bash +pamixer --get-volume +pamixer --set-volume 40 +pamixer --increase 5 +pamixer --decrease 5 +pamixer --toggle-mute +``` + +--- +**Done.** \ No newline at end of file diff --git a/public/archive/index.html b/public/archive/index.html index 4390c1d..755a821 100644 --- a/public/archive/index.html +++ b/public/archive/index.html @@ -568,6 +568,16 @@ :: #综合工程 + +
  • + + + :: Linux下的命令行操控 + + + :: + +
  • diff --git a/public/atom.xml b/public/atom.xml index bb90bcb..3198d93 100644 --- a/public/atom.xml +++ b/public/atom.xml @@ -1281,4 +1281,23 @@ <p>前言 linux搭建安卓虚拟机有Waydroid,QEMU和Docker三种方案,各有不同。</p> + + Linux下的命令行操控 + 2023-07-20T00:00:00+00:00 + 2023-07-20T00:00:00+00:00 + + + + + Unknown + + + + + + https://blog.dich.bid/linux-1-command/ + + <p>前言 本文基于常见发行版(systemd + NetworkManager + PipeWire/ PulseAudio / ALSA),目标是把常见的桌面/笔记本硬件(Wi-Fi、蓝牙、亮度、音量)通过命令行可复现、可理解地组织起来。</p> + + \ No newline at end of file diff --git a/public/awesome-vm-android/index.html b/public/awesome-vm-android/index.html index 3660c44..97119ca 100644 --- a/public/awesome-vm-android/index.html +++ b/public/awesome-vm-android/index.html @@ -418,6 +418,13 @@
    + + +   + Linux下的命令行操控 + + + diff --git a/public/linux-1-command/index.html b/public/linux-1-command/index.html new file mode 100644 index 0000000..b8a367e --- /dev/null +++ b/public/linux-1-command/index.html @@ -0,0 +1,384 @@ + + + + + Dich's Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + +
    + + +
    + +
    + +

    Linux下的命令行操控

    + + + + + + +
    +

    前言 本文基于常见发行版(systemd + NetworkManager + PipeWire/ PulseAudio / ALSA),目标是把常见的桌面/笔记本硬件(Wi-Fi、蓝牙、亮度、音量)通过命令行可复现、可理解地组织起来。

    +

    Wifi 控制

    +

    现代桌面大多使用 NetworkManager 管理网络,nmcli 是其命令行接口。nmcli 能列出可用网络、连接/断开、创建配置文件(包括 WPA/WPA2/PSK、enterprise)等。相比直接编辑 wpa_supplicant 配置,nmcli 更安全、统一,能与 GUI 保持一致。

    +

    常用命令

    +

    列出接口及设备状态:

    +
    nmcli device status
    +
    +

    列出附近 Wi-Fi(SSID、信号强度、安全类型):

    +
    nmcli device wifi list
    +
    +

    交互式连接(会提示输入密码):

    +
    nmcli device wifi connect "wifi-2.4G" --ask
    +
    +

    不交互式连接(将密码放在命令里 — 注意安全风险):

    +
    nmcli device wifi connect "wifi-2.4G" password "your_password"
    +
    +

    基于已有配置文件连接(例如创建一个保存的 connection 名称):

    +
    # 创建连接(自动选择设备)
    +nmcli connection add type wifi ifname wlan0 con-name my-home ssid "wifi-2.4G" \
    +  wifi-sec.key-mgmt wpa-psk wifi-sec.psk "your_password"
    +
    +# 启用连接
    +nmcli connection up my-home
    +
    +

    断开或禁用接口:

    +
    # 断开当前连接
    +nmcli device disconnect wlan0
    +
    +# 禁用设备(软禁用)
    +nmcli device set wlan0 managed no
    +
    +

    查看连接详情:

    +
    nmcli -f all connection show my-home
    +nmcli device show wlan0
    +
    +
    +

    蓝牙控制

    +

    Linux 上常见蓝牙栈为 BlueZ(蓝牙守护 bluetoothd),bluetoothctl 提供交互式 CLI。音频设备通常通过 BlueZ + PulseAudio(或 PipeWire)进行音频路由;配对/信任步骤必须完成才能稳定连接音频/键盘/鼠标等设备。

    +

    一、蓝牙服务与模块启用/禁用

    +

    启用蓝牙服务(systemd):

    +
    sudo systemctl enable --now bluetooth.service
    +
    +

    打开蓝牙适配器电源:

    +
    bluetoothctl power on
    +
    +

    打开配对代理(用于交互式配对)并设置为默认:

    +
    bluetoothctl agent on
    +bluetoothctl default-agent
    +
    +

    开启可发现(让其它设备能扫描到):

    +
    bluetoothctl discoverable on
    +
    +

    重启蓝牙服务(排错常用):

    +
    sudo systemctl restart bluetooth
    +sudo journalctl -u bluetooth -f
    +
    +
    +

    注意:某些发行版在使用 PipeWire 做音频时还需要 pipewire / wireplumber 正确运行,否则音频通道(A2DP/HFP)无法建立。

    +
    +

    二、查看设备与状态

    +
    # 列出本机所有蓝牙适配器
    +bluetoothctl list
    +
    +# 查看本地适配器详细状态
    +bluetoothctl show
    +
    +# 查看已配对设备
    +bluetoothctl paired-devices
    +
    +# 查看某个设备详情(包括 UUID、已连接服务)
    +bluetoothctl info AA:BB:CC:DD:EE:FF
    +
    +

    三、交互式配对与连接

    +

    交互式步骤(在 bluetoothctl 提示符下):

    +
    $ bluetoothctl
    +[bluetooth]# power on
    +[bluetooth]# agent on
    +[bluetooth]# default-agent
    +[bluetooth]# scan on
    +# 等待几秒,看到目标设备(并记录 MAC)
    +[bluetooth]# pair AA:BB:CC:DD:EE:FF
    +# 如果是需要 PIN 的设备,会提示配对码;确认或输入即可
    +[bluetooth]# trust AA:BB:CC:DD:EE:FF    # 使系统信任设备(开机后自动连接)
    +[bluetooth]# connect AA:BB:CC:DD:EE:FF
    +[bluetooth]# exit
    +
    +

    四、断开与删除设备

    +

    断开连接:

    +
    bluetoothctl disconnect AA:BB:CC:DD:EE:FF
    +
    +

    删除配对信息(“忘记设备”):

    +
    bluetoothctl remove AA:BB:CC:DD:EE:FF
    +
    +

    五、蓝牙软/硬封锁

    +

    查看封锁状态:

    +
    rfkill list bluetooth
    +
    +

    封锁(禁用):

    +
    sudo rfkill block bluetooth
    +
    +

    解封(启用):

    +
    sudo rfkill unblock bluetooth
    +
    +

    如果设备被硬封锁(硬件开关),软件方法无效,需要物理开关或 BIOS 设置。

    +

    六、音频输出切换

    +
      +
    • 现代发行版多用 PipeWire 替代 PulseAudio,但 PipeWire 提供兼容接口,因此 pactl(PulseAudio 控制工具)在很多系统仍然可用。
    • +
    • 蓝牙设备会在连接后生成类似 bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink 的 sink 名称;有时名称会略有差异,建议先查询。
    • +
    +

    列出 sinks(输出设备):

    +
    pactl list short sinks
    +
    +

    设置默认输出为蓝牙耳机(示例):

    +
    pactl set-default-sink bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink
    +
    +

    把当前正在播放的流移动到蓝牙设备:

    +
    pactl list short sink-inputs         # 找到输入编号
    +pactl move-sink-input <输入编号> bluez_output.XX_XX_XX_XX_XX_XX.a2dp_sink
    +
    +

    如果使用 PipeWire,遇到连接但没有声音的问题:

    +
      +
    • 确保 wireplumberpipewire-media-session 正常运行。
    • +
    • 检查 profile(A2DP vs HFP):A2DP 提供高音质但不可通话,HFP 可通话但质量较低。可通过 pactl list cards / pactl set-card-profile 调整。
    • +
    +
    +

    亮度控制

    +

    笔记本屏幕亮度通常由内核暴露的 SysFS 接口 /sys/class/backlight/*/brightness 提供,写入该文件需要 root 权限或合适的权限(udev 规则)。桌面显示器、USB 显卡或 Wayland(特别是 wlroots)环境可能不会使用该接口,需要使用专门工具(如 lightbrightnessctl、或 DE/Compositor 提供的接口)。

    +

    一、SysFS(多数笔记本适用)

    +

    查看最大亮度值与当前亮度:

    +
    cat /sys/class/backlight/*/max_brightness
    +cat /sys/class/backlight/*/brightness
    +
    +

    设置亮度(需要 root):

    +
    # 写入数值(0~max_brightness)
    +echo 5 | sudo tee /sys/class/backlight/*/brightness
    +
    +# 或者重定向(注意 sudo 的作用域)
    +sudo sh -c 'echo 5 > /sys/class/backlight/*/brightness'
    +
    +

    如果遇到 “权限被拒绝”:

    +
      +
    • 使用 sudo teesudo sh -c;或添加 udev 规则给某个用户写权限。
    • +
    • 在某些内核/驱动下,背光接口名称可能不同(intel_backlightamdgpu_bl0 等)。
    • +
    +

    二、brightnessctl

    +

    brightnessctl 是一个用户友好、支持百分比与设备选择的工具。

    +

    安装:

    +
      +
    • Debian/Ubuntu:
    • +
    +
    sudo apt install brightnessctl
    +
    +
      +
    • Arch:
    • +
    +
    sudo pacman -S brightnessctl
    +
    +

    用法示例:

    +
    brightnessctl info       # 显示当前设备信息
    +brightnessctl get        # 当前亮度
    +brightnessctl max        # 最大亮度
    +brightnessctl set +10%   # 增加 10%
    +brightnessctl set 50%    # 设为 50%
    +
    +
    +

    音量控制

    +

    Linux 下有几层音量控制:硬件(ALSA)、中间层(PulseAudio / PipeWire)、用户层(桌面音量控制器)。常用命令行工具:pactl(PulseAudio / PipeWire)、pamixer(PulseAudio 前端)、amixer(ALSA 原生)。

    +

    一、pactl(PulseAudio / PipeWire)

    +

    查看 sinks:

    +
    pactl list short sinks
    +
    +

    查看默认 sink:

    +
    pactl info | grep 'Default Sink'
    +
    +

    设置默认音量:

    +
    pactl set-sink-volume @DEFAULT_SINK@ 50%
    +
    +

    增量调节:

    +
    pactl set-sink-volume @DEFAULT_SINK@ +5%
    +pactl set-sink-volume @DEFAULT_SINK@ -5%
    +
    +

    静音/取消静音/切换:

    +
    pactl set-sink-mute @DEFAULT_SINK@ 1
    +pactl set-sink-mute @DEFAULT_SINK@ 0
    +pactl set-sink-mute @DEFAULT_SINK@ toggle
    +
    +

    移动播放流(见蓝牙章节):

    +
    pactl list short sink-inputs
    +pactl move-sink-input <输入编号> <目标-sink>
    +
    +

    二、amixer(ALSA)

    +

    列出通道与当前值:

    +
    amixer sget Master
    +
    +

    设置音量(绝对 / 相对):

    +
    amixer sset Master 50%     # 绝对值
    +amixer sset Master 5%+     # 增加
    +amixer sset Master 5%-     # 减少
    +
    +

    静音:

    +
    amixer set Master mute
    +amixer set Master unmute
    +amixer set Master toggle
    +
    +
    +

    当使用 PipeWire/PulseAudio 时,amixer 仍然可以操作底层硬件,但用户可听到的效果可能被上层音量(PulseWire/PulseAudio)覆盖。

    +
    +

    三、pamixer(PulseAudio)

    +

    简洁的命令行前端,适合脚本:

    +
    pamixer --get-volume
    +pamixer --set-volume 40
    +pamixer --increase 5
    +pamixer --decrease 5
    +pamixer --toggle-mute
    +
    +
    +

    Done.

    + +
    + + + + +
    + +
    + + + + +
    + + + diff --git a/public/page/10/index.html b/public/page/10/index.html index 3df20cc..c93ccd5 100644 --- a/public/page/10/index.html +++ b/public/page/10/index.html @@ -136,6 +136,39 @@
    + + +
    + +

    Linux下的命令行操控

    +
    + + + +
    + + + + :: tags:  + + + + + +
    +

    前言 本文基于常见发行版(systemd + NetworkManager + PipeWire/ PulseAudio / ALSA),目标是把常见的桌面/笔记本硬件(Wi-Fi、蓝牙、亮度、音量)通过命令行可复现、可理解地组织起来。

    +
    +
    + + + Read more  + ↩︎ + +
    + +