Linux 下的一些常用工具

Mr.R0boter 于 2020-08-29 发布

为什么写这篇博文

一直以来,我都是两个系统掺杂着用。因为在 Linux 下确实有些体验赶不上 Windows,但 Windows 下的各种环境配置很麻烦,而且文件给我感觉还是有些杂乱,不太方便管理,尤其是像我这种对系统有点洁癖的人,往往为了删除某个软件,还得在各个犄角旮旯里翻找,更别说一不小心点到流氓软件后,还得到处找它写入的启动文件

所以,最近在不停的完善我在 Linux 下的各种配置,准备完全转入到 Linux ,以后可能就一些小工具或者 Windows 独占的扫描器需要开虚拟机了

为此,我开这篇博文用于记录一些,在 Linux 下日常使用的一些小工具(都是 CLI 工具,如果是图形界面的我觉得没有记录的必要吧)。所以这篇文章应该会时常变动吧。毕竟这些小工具也不是一天收集完的

WIFI 管理工具

wpa_supplicant:一款终端下的 WIFI 管理工具,大部分 Linux 内置的就是这个,其他图形界面的实际上后端也是用的这个工具。在 Archlinux 下不是预装软件,好像在安卓里也是用的这个来管理 WIFI 的

wpa_supplicant 下有三个命令工具:

  1. wpa_supplicant:wifi 启动工具,用于指定启动 wifi 的各种参数。常用方式:wpa_supplicant -B -i interface -c configfile's path
    • -B:用于指定以守护进程的方式在后台运行
    • -i:用于指定要使用的网卡
    • -c:用于指定 wpa_supplicant 的配置文件,默认是/etc/wpa_supplicant/wpa_supplicant.conf(这个默认文件在 Archlinux 上也是你自己生成的,其他 linux 发行版上可能会自动生成)
    • -D:指定驱动程序,有时候启动失败你可以同过此选项指定驱动。一般两个选择一个就行nl80211wext
  2. wpa_passphrase:wifi 配置文件生成工具。常用方式wpa_passphrase essid passphrase >> /etc/wpa_supplicant/wpa_supplicant.conf
    • essid:用于指定 WIFI 名,即你手机搜索的那个 WIFI 名称即可
    • passphrase:指定 WIFI 的连接密码
    • 最后面是shell下的管道符,用于将生成的配置直接追加到配置文件中,下次连接时可以直接使用配置文件,不用再去生成一遍
  3. wpa_cli:命令行下设置 wifi 的交互式工具
    • 使用此工具,必须wpa_supplicant服务先开启,才可以使用。用上面的wpa_supplicant命令开启服务,
    • 在启动wpa_cli时,你需要使用-i指定网卡接口,如果不指定则默认使用开启服务时指定的网卡
    • help:启动后可以使用此命令查看帮助,而且可以使用Tab键进行补全
    • scan:扫描附近的 AP(即 WIFI)
    • scan_results:查看扫描结果,会显示物理地址、加密方式和 WIFI 名,即 SSID
    • add_network [network_id]:添加一个网络,会要求你设置一个 network_id 用来标识这个网络,不设置则默认从 0 开始
    • set_network [network_id] ssid:设置添加的网络的 SSID
    • set_network [network_id] key_mgmt [Encryption]:设置添加的网络的加密方式,默认不设置用你指定的 WIFI 的加密方式,一般用于一个 WIFI 提供多种传输方式时选择
    • set_network [network_id] psk:如果该 WIFI 有密码,则输入密码,没有就不设置
    • enable_network [network_id]:开启网络,如果系统搜索到你设置好的网络就会自动连接
    • status:查看当前连接的网络状态
    • disable_network [network_id]:关闭指定的网络
    • save_config:保存你设置的网络配置
    • quit:退出交互模式

wpa_supplicant 的默认配置文件在/etc/wpa_supplicant/wpa_supplicant.conf这个位置


ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
fast_reauth=1
ap_scan=1
network={
	ssid="ChinaNet-xxxx"
	#psk="xxxxxx"
	psk=aa7dfaskhneltb3dc14dddd72e9b518fc11a251c58e364ce13c5db23d2e67f23
}

以上是一个官方的配置模板,前五行可以直接复制过去,具体解释请查看官方 WIKI

下面的 network 模块,是由wpa_passphrase生成的对应 WIFI 的配置,其中第二行 psk 可以直接删除,本身他也是被注释掉的,wpa_supplicant 在连接时默认优先使用经过加密后的 psk,如果你打算手写配置,那直接使用明文密码也是可以的

蓝牙管理工具

Archlinux 下使用蓝牙最基础的要安装蓝牙驱动包bluez和蓝牙基础工具包buez-utils

bluez-utils包中提供的终端下蓝牙管理工具是bluetoothctl,前端的话 gnome 和 kde 都有自己专用的管理工具,通用的蓝牙前端管理工具是Blueman。但我这里只说终端下的管理工具

使用蓝牙前需要先检查蓝牙是否被禁用了,使用rfkill命令可以查看蓝牙和网卡的禁用情况,正常情况下输出的最后两列 SOFT 和 HARD 应该都是 unblocked,表示没被禁用,如果是blocked可以使用命令rfkill unblock identifier开启,网卡也是一样,如果被禁用了也可以使用这个命令开启,其中的identifier可以是之前输出的ID字段的编号也可以是DEVICE设备名,如果要关闭设备可以使用rfkill block identifier

bluetoothctl是一个交互工具,输入后你会进入到一个交互界面对蓝牙进行管理。下面是一些常用命令,<ctrl>表示本机的蓝牙 MAC 地址,<dev>表示可以连接的蓝牙 MAC 地址

  1. list:显示本机可用的蓝牙控制器,如果你有多个蓝牙可以列出
  2. show <ctrl>:显示指定蓝牙控制器的信息
  3. select <ctrl>:选择要使用的蓝牙
  4. power <on/off>:开启或关闭蓝牙电源
  5. agent <on/off>:开启或关闭接口
  6. default-agent:选择接口功能,比如键盘输入,使用默认就行,详情看 Archlinux WIKI
  7. discoverable <on/off>:开启或关闭,蓝牙发现功能
  8. pairable <on/off>:开启或关闭,蓝牙的配对功能
  9. scan <on/off>:扫描蓝牙设备
  10. devices:列出扫描到的开启的蓝牙设备
  11. info <dev>:显示指定蓝牙设备的信息
  12. pair <dev>:配对指定的蓝牙设备,手机这种接下来会让你输入 PIN 码,键盘这种不需要 PIN 码
  13. trust <dev>:信任指定的蓝牙设备
  14. untrust <dev>:不信任指定的蓝牙设备
  15. connect <dev>:连接指定的蓝牙设备
  16. disconnect <dev>:断开连接
  17. remove <dev>:删除指定的蓝牙设备
  18. version:显示版本信息
  19. quit:退出

如果要使用蓝牙传输文件的话,可以将手机通过蓝牙挂载到电脑上,我一般只用于连接键盘,就暂不做记录了

声音管理工具

ALSA 是代替 OSS 的 Liunx 中提供声音设备驱动的内核组件,因此只需要安装 ALSA 工具包 alsa-utils 即可

alsa-utils工具提供了图形界面的声音设置工具alsamixer(当然也是在命令行下的图形界面),和声音设置命令amixer以及测试工具speaker-test和命令行工具alsactl

当前版本的 Linux 中 ALSA 默认所有声道都是静音,所以需要先手动解除

alsamixer的基础功能介绍:

  1. 使用左右健选择声道,上下或 j、k 键加减音量
  2. 使用 m 键开启或关闭声道,下方标有MM即是静音状态,00表示开启状态
  3. Master栏表示主音量
  4. Headphone表示耳机音量,一般调到最大,以后就通过调节Master栏来操控就行了
  5. Speaker:表示麦克风音量
  6. PCM:5.1 声道,这个和Master必须一起打开,不然没声音。其他不多做记录,详情查看 Wiki
  7. F6:选择声卡,电脑有多个声卡时,可以选择声卡,有时候会出现你默认声卡不对,导致始终没有声音,这时候先换个声卡试试
  8. F5:显示所有选项,默认情况下主界面只显示基础的一些声道,如果你要细调使用这个显示全部选项
  9. ESC:退出
  10. alsactl store:通过alsactl命令将你设置的音量保存到配置文件中,默认alsamixer不会持久保存你设置的音量,通过这个命令你下次开机后的音量设置就和保存时的一样了

amixer一般用于通过脚本绑定到按键上,让通过按键就可以调整音量

  1. amixer sset Master 5%+:声音增加 5% ,将此命令映射到XF86AudioRaiseVolume按键
  2. amixer sset Master 5%-:声音减小 5% ,将此命令映射到XF86AudioLowerVolume按键
  3. amixer sset Master toggle:切换禁音,将此命令映射到XF86AudioMute按键

speaker-test -c 2:测试声卡是否工作,数值根据声道调整,7.1 声道数值为 8,也可以使用使用-D参数知道设备

安卓调试工具

安卓调试工具使用的是adb,但初次使用要注意几个问题

首先,是用户组问题,根据谷歌 Android Studio 官网介绍,在 linux 下,要使用 adb 必须保证当前用户在plugdev组中

groupadd plugdev:添加组

usermod -aG plugdev $LOGNAME:将当前用户添加到 plugdev 组中

第二个问题是no permissions报错,无权限问题,这里需要使用另一个工具lsusb安装usbutils

连接手机,然后使用lsusb,列出的信息中,找到你的手机名,在该行中的ID字段后是用分号分隔的八位字符如:xxxx:xxxx取后四位,这是你手机的 usb 地址。

然后在/etc/udev/rules.d/目录下添加配置文件51-android.rules。数字一般写做安卓版本(默认惯例而已,可以随便写)

在配置文件中写入如下,其中ATTR{idProduct}==后面跟的就是你手机的 usb 地址

ATTR{idProduct}==”xxxx”, SYMLINK+=”android_adb”, MODE=”0660”, GROUP=”plugdev”, TAG+=”uaccess”, SYMLINK+=”android”

之后重新载入配置:udevadm control --reload-rules

重启 udev 服务:systemctl restart systemd-udevd.service

udev 从内核请求事件:udevadm trigger

最后重启 adb 就行了

常用命令

  1. adb devices:查看连接的设备,如果没有启动服务会自动启动服务
  2. adb shell:进入手机终端,如果不止一个设备需要指定设备名,只有一个设备则不用
  3. adb push LOCAL REMOTE:传送文件到设备
  4. adb pull REMOTE LOCAL:下载文件到本地
  5. adb install packagename:安装本地 app 文件到手机
  6. add uninstall packagename:卸载手机中指定的 app

##