为什么写这篇博文
一直以来,我都是两个系统掺杂着用。因为在 Linux 下确实有些体验赶不上 Windows,但 Windows 下的各种环境配置很麻烦,而且文件给我感觉还是有些杂乱,不太方便管理,尤其是像我这种对系统有点洁癖的人,往往为了删除某个软件,还得在各个犄角旮旯里翻找,更别说一不小心点到流氓软件后,还得到处找它写入的启动文件
所以,最近在不停的完善我在 Linux 下的各种配置,准备完全转入到 Linux ,以后可能就一些小工具或者 Windows 独占的扫描器需要开虚拟机了
为此,我开这篇博文用于记录一些,在 Linux 下日常使用的一些小工具(都是 CLI 工具,如果是图形界面的我觉得没有记录的必要吧)。所以这篇文章应该会时常变动吧。毕竟这些小工具也不是一天收集完的
WIFI 管理工具
wpa_supplicant:一款终端下的 WIFI 管理工具,大部分 Linux 内置的就是这个,其他图形界面的实际上后端也是用的这个工具。在 Archlinux 下不是预装软件,好像在安卓里也是用的这个来管理 WIFI 的
wpa_supplicant 下有三个命令工具:
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:指定驱动程序,有时候启动失败你可以同过此选项指定驱动。一般两个选择一个就行nl80211和wext
wpa_passphrase:wifi 配置文件生成工具。常用方式wpa_passphrase essid passphrase >> /etc/wpa_supplicant/wpa_supplicant.confessid:用于指定 WIFI 名,即你手机搜索的那个 WIFI 名称即可passphrase:指定 WIFI 的连接密码- 最后面是
shell下的管道符,用于将生成的配置直接追加到配置文件中,下次连接时可以直接使用配置文件,不用再去生成一遍
wpa_cli:命令行下设置 wifi 的交互式工具- 使用此工具,必须
wpa_supplicant服务先开启,才可以使用。用上面的wpa_supplicant命令开启服务, - 在启动
wpa_cli时,你需要使用-i指定网卡接口,如果不指定则默认使用开启服务时指定的网卡 help:启动后可以使用此命令查看帮助,而且可以使用Tab键进行补全scan:扫描附近的 AP(即 WIFI)scan_results:查看扫描结果,会显示物理地址、加密方式和 WIFI 名,即 SSIDadd_network [network_id]:添加一个网络,会要求你设置一个network_id用来标识这个网络,不设置则默认从 0 开始set_network [network_id] ssid:设置添加的网络的 SSIDset_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 地址
list:显示本机可用的蓝牙控制器,如果你有多个蓝牙可以列出show <ctrl>:显示指定蓝牙控制器的信息select <ctrl>:选择要使用的蓝牙power <on/off>:开启或关闭蓝牙电源agent <on/off>:开启或关闭接口default-agent:选择接口功能,比如键盘输入,使用默认就行,详情看 Archlinux WIKIdiscoverable <on/off>:开启或关闭,蓝牙发现功能pairable <on/off>:开启或关闭,蓝牙的配对功能scan <on/off>:扫描蓝牙设备devices:列出扫描到的开启的蓝牙设备info <dev>:显示指定蓝牙设备的信息pair <dev>:配对指定的蓝牙设备,手机这种接下来会让你输入 PIN 码,键盘这种不需要 PIN 码trust <dev>:信任指定的蓝牙设备untrust <dev>:不信任指定的蓝牙设备connect <dev>:连接指定的蓝牙设备disconnect <dev>:断开连接remove <dev>:删除指定的蓝牙设备version:显示版本信息quit:退出
如果要使用蓝牙传输文件的话,可以将手机通过蓝牙挂载到电脑上,我一般只用于连接键盘,就暂不做记录了
声音管理工具
ALSA 是代替 OSS 的 Liunx 中提供声音设备驱动的内核组件,因此只需要安装 ALSA 工具包 alsa-utils 即可
alsa-utils工具提供了图形界面的声音设置工具alsamixer(当然也是在命令行下的图形界面),和声音设置命令amixer以及测试工具speaker-test和命令行工具alsactl
当前版本的 Linux 中 ALSA 默认所有声道都是静音,所以需要先手动解除
alsamixer的基础功能介绍:
- 使用左右健选择声道,上下或 j、k 键加减音量
- 使用 m 键开启或关闭声道,下方标有
MM即是静音状态,00表示开启状态 Master栏表示主音量Headphone表示耳机音量,一般调到最大,以后就通过调节Master栏来操控就行了Speaker:表示麦克风音量PCM:5.1 声道,这个和Master必须一起打开,不然没声音。其他不多做记录,详情查看 WikiF6:选择声卡,电脑有多个声卡时,可以选择声卡,有时候会出现你默认声卡不对,导致始终没有声音,这时候先换个声卡试试F5:显示所有选项,默认情况下主界面只显示基础的一些声道,如果你要细调使用这个显示全部选项ESC:退出alsactl store:通过alsactl命令将你设置的音量保存到配置文件中,默认alsamixer不会持久保存你设置的音量,通过这个命令你下次开机后的音量设置就和保存时的一样了
amixer一般用于通过脚本绑定到按键上,让通过按键就可以调整音量
amixer sset Master 5%+:声音增加 5% ,将此命令映射到XF86AudioRaiseVolume按键amixer sset Master 5%-:声音减小 5% ,将此命令映射到XF86AudioLowerVolume按键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 就行了
常用命令
adb devices:查看连接的设备,如果没有启动服务会自动启动服务adb shell:进入手机终端,如果不止一个设备需要指定设备名,只有一个设备则不用adb push LOCAL REMOTE:传送文件到设备adb pull REMOTE LOCAL:下载文件到本地adb install packagename:安装本地 app 文件到手机add uninstall packagename:卸载手机中指定的 app
##