学习Linux命令行工具不仅仅是操作技能的提升,更是解锁“系统魔法”的钥匙!很多时候,它们是你和系统沟通的唯一语言。掌握它们,你会发现自己像黑客电影里的高手一样,可以在屏幕上“指点江山”。所以,学习Linux命令行工具不仅是技能,更是一场奇妙的冒险。掌握它,你会变得高效、自信,而且始终“掌控全局”!
个人推荐
- 查看系统信息:x uname
- 查询 ip 地址:x ip
- 查看进程的实时信息:x btop
- 查看文件内容:x cat
- 查看当前目录下的文件:lsd
- 查看系统信息:macchina 或 fastfetch
- 增强docker功能:x-docker
- 装逼神器:genact
前置:安装X-CMD
安装
采用 curl 安装
eval "$(curl https://get.x-cmd.com)"采用 wget 安装
eval "$(wget -O- https://get.x-cmd.com)"
x cowsay
先写个“Hello, world!”
x cowsay "What can I say!"
磁盘使用监控
x df
以 TUI 的方式查看文件系统和磁盘空间使用情况
x df
x duf
df命令的现代化替代品, 用于查看磁盘空间使用情况和磁盘文件系统信息
x duf
x dua
交互式查看磁盘空间的使用情况
x dua
x dua i
网络相关
x ping
比默认的
ping更美观,且过程可视化
x ping -b www.baidu.com
x gping
基于 Rust 编写的开源工具,是增加了图表功能的
ping工具
安装
x env use gping使用,可以同时ping多个
gping www.baidu.com www.bilibli.com
dstp
dstp可以一键诊断网络问题,显示许多有用的信息
- 一键式诊断: 无需繁琐的命令,只需一个指令,即可完成 DNS 解析、Ping 测试、TLS/HTTPS 连接验证等多种网络测试。
- 全面检测: 从 DNS 解析到数据包传输,再到安全连接,dstp 覆盖了网络连接的各个环节,确保问题无处遁形。
- 自定义配置: 可以根据需要调整 Ping 数据包数量、超时时间、HTTPS 端口等参数,满足不同的测试需求。
- 多种输出格式: 支持纯文本和 JSON 格式输出,方便人工查看和脚本集成,灵活应对各种场景。
- 轻量高效: 命令行工具,占用资源少,运行速度快,随时随地都能进行网络诊断。
安装:
x install dstp或
brew install ycd/tap/dstp使用:
dstp www.baidu.com
x ip
替代
ifconfig,查询 ip 地址
x ip
nexttrace
开源可视化路线跟踪 CLI 工具
安装:
x env use nexttrace使用:
追踪访问指定 IP 地址或网站的路由路径并生成可视化路由路径图:
shellnexttrace 2.16.150.1 nexttrace www.bing.com # 指定输出模式 nexttrace --table www.bing.com nexttrace --json www.bing.com nexttrace --language en www.bing.com选择第三方 IP 数据库或使用离线数据库:
shell# 指定使用 IP-API.com 的 IP 数据库 nexttrace --data-provider ip-api.com www.bing.com # 对于离线库 IPInfoLocal,请自行下载并命名为 ipinfoLocal.mmdb # 下载地址:https://ipinfo.io/signup?ref=free-database-downloads # 默认搜索用户当前路径、程序所在路径、和 FHS 路径(Unix-like) # 如果需要自定义路径,请设置环境变量 export NEXTTRACE_IPINFOLOCALPATH=/xxx/yyy.mmdb使用自定义的 IP/DOMAIN 列表文件进行快速测试:
shellnexttrace --file /path/to/your/iplist.txt # 自定义的IP/DOMAIN列表文件格式 ## 一行一个IP/DOMAIN + 空格 + 描述信息(可选) ## 例如: ## 106.37.67.1 北京电信 ## 240e:928:101:31a::1 北京电信 ## bj.10086.cn 北京移动 ## 2409:8080:0:1::1 ## 223.5.5.5
效果:

nali
一个查询IP地理信息和CDN服务提供商的离线终端工具
安装:
x env use nali使用:
查询 IP 的地理信息:
shellnali 1.2.3.4 nali 1.2.3.4 4.3.2.1 123.23.3.0 echo IP 6.6.6.6 | nali搭配其他工具查询域名的地理信息和 CDN 服务提供商信息:
shelldig bing.com +short | nali nslookup bing.com | nali nslookup bing.com 8.8.8.8 | nali更新 IP 数据库:
shell# 查看本地 IP 数据库 nali info # 更新所有可以自动更新的本地数据库 nali update # 更新指定数据库 nali update --db qqwry,cdn
效果:

bmon
网络流量查看工具
x install bmonbmon
性能监控
x top
使用 htop 来查看进程的实时信息
x top
x htop
使用 htop 来查看进程的实时信息
x htop
x btop
使用 htop 来查看进程的实时信息
x btop
x btm
基于 Rust 开发的命令行工具,用于终端的可定制跨平台图形进程/系统监视器。
x btm
x btm --basic
x gotop
使用 GO 语言开发,下载二进制文件即可运行,无需安装其他依赖
x gotop
x gotop --color vice
系统功能增强
x cd
比
cd更高级的cd,具有更丰富的交互性
x cd
lsd
查看当前目录下的文件,比
ls的功能更丰富
查看文件:效果与ls一样,默认按文件名排列
lsd
树形查看文件:--depth 1:查看深度为1的文件
lsd --tree --depth 1 -S
组合命令:-S:按文件大小排列(默认按文件名排列)
-1:每行列出一个文件
-a:查看隐藏文件
lsd --tree --depth 1 -S -1 -a
添加alias别名:在环境配置文件中添加alias别名
alias ll='lsd --tree --depth 1 -1'
## alias ll='ls -la'##x exa
安装
x exa组合命令:
列出所有非隐藏文件
x exa ./ --tree --level=1 --long --icons -x -s name
列出所有文件夹
x exa ./ --tree --level=1 --icons -x -s name -a -D
元选项:
-?, --help显示命令行选项列表-v, --version显示exa的版本信息
显示选项:
-1, --oneline每行显示一个条目-l, --long显示文件的扩展元数据-G, --grid将条目显示为网格(默认)-x, --across按行排序网格,而不是按列-R, --recurse递归进入目录-T, --tree以树形结构递归进入目录-F, --classify在文件名后显示类型指示符--colo[u]r=WHEN使用终端颜色的时间(总是、自动、从不)--colo[u]r-scale根据文件大小级别突出显示--icons显示图标--no-icons不显示图标(总是覆盖--icons)
过滤和排序选项:
-a, --all显示隐藏文件和点文件-d, --list-dirs列出目录作为文件;不列出它们的内容-D, --only-dirs只列出目录-L, --level DEPTH限制递归深度-r, --reverse反转排序顺序-s, --sort SORT_FIELD排序字段,(choices: name, Name, size, extension, Extension, modified, changed, accessed, created, inode, type, none)--group-directories-first在其他文件之前列出目录-I, --ignore-glob GLOBS忽略文件的通配符模式(管道分隔)--git-ignore忽略.gitignore中提到的文件- 有效的排序字段 包括:名称、扩展名、大小、类型、修改时间、访问时间、创建时间、inode 和无。日期、时间和旧、新都指代修改时间。
长视图选项:
-b, --binary使用二进制前缀列出文件大小-B, --bytes以字节为单位列出文件大小,不带任何前缀-g, --group列出每个文件的组-h, --header为每列添加表头行-H, --links列出每个文件的硬链接数-i, --inode列出每个文件的inode号-m, --modified使用修改时间戳字段-n, --numeric列出数字用户和组ID-S, --blocks显示文件系统块的数量-t, --time FIELD要列出的时间戳字段(修改、访问、创建)-u, --accessed使用访问时间戳字段-U, --created使用创建时间戳字段--changed使用更改时间戳字段--time-style时间戳格式化方式(默认、ISO、长ISO、完整ISO)--no-permissions抑制权限字段--octal-permissions以八进制格式列出每个文件的权限--no-filesize抑制文件大小字段--no-user抑制用户字段--no-time抑制时间字段--git如果文件被跟踪或忽略,则列出其Git状态-@, --extended列出每个文件的扩展属性及其大小
x ll
一个可交互性的命令行文件管理器
x ll
x cat
查看文件内容,很好地解决了
cat的痛点
x cat
bat
是
x cat的另一种称呼
x install batx ascii
将 x-cmd 字符串转为 ASCII 艺术字
x ascii cfont HuangZexiao -g red,magenta -a center -s
趣味功能
x hua
查看古文诗词
x hua查看《唐诗三百》
x hua ts
x wttr
展示中山市天气的信息
x wttr zhongshan显示当前位置的天气和今日的天气预报
x wttr ?1
genact
安装genact
x env use genact生成伪随机的系统活动:
genact查看 genact 可用的活动模块
genact -lansible bootlog botnet bruteforce cargo cc composer cryptomining docker_build docker_image_rm download julia kernel_compile memdump mkinitcpio rkhunter simcity terraform weblog
指定要模仿破解密码的活动:
genact -m bruteforce设置 5 倍速并在 2 分钟后退出模拟活动:
genact -s 5 --exit-after-time 2min组合命令:
genact -m docker_build -s 5 --exit-after-time 1h20min30s
ascii-image-converter
安装
eval "$(curl https://get.x-cmd.com)" # 安装 x-cmd
x env use ascii-image-converter # 使用 x-cmd 安装 ascii-image-converter使用
将图像转为 ASCII 艺术照或盲文:
shellascii-image-converter <image> # ASCII 艺术照 ascii-image-converter <image> -b # 盲文启用颜色:
shellascii-image-converter <image> -C # 启用前景的颜色 ascii-image-converter <image> -C --color-bg # 启用背景和前景的颜色调整输出格式:
shellascii-image-converter <image> -d 40,20 # 调整宽高 ascii-image-converter <image> --save-img ./ # 将输出内容保存为 PNG 格式并放到当前目录下,生成的文件格式为 <image-name>-ascii-art.png ascii-image-converter <image> --save-gif ./ # 将输出内容保存为 GIF 格式
使用示例,我用一张图来举例:
原图:

ascii-image-converter 123.png
ascii-image-converter 123.png -b
ascii-image-converter 123.png -bC
ascii-image-converter 123.png -C
ascii-image-converter 123.png -C --color-bg
ascii-image-converter 123.png -bC --color-bg
系统信息查看工具
系统信息查看工具可以用于获取和显示系统硬件、软件和环境信息(如内核版本、内存使用情况、处理器负载等),通过这些工具可以在主流操作系统的运行中获取系统信息。
x uname
相比自带的
uname能看到更多信息,能通过终端命令查看电脑以及操作系统的相关信息
x uname
macchina
- 最小化:相比于
neofetch和fastfetch,macchina更加简单,更适合小型设备或资源受限的环境。 - 可定制化:提供主题系统,主题配置文件与主要配置文件是分开的,用户可以创建一堆主题并随时在它们之间切换。
安装
eval "$(curl https://get.x-cmd.com)" ## 安装 x-cmd
x env use macchina ## 使用 x-cmd 安装 macchina使用
获取和显示系统信息:
shellmacchina macchina -o machine macchina -o machine -o terminal -o shell定制 macchina:
存放配置文件的目录:
- Linux 和 BSD:
~/.config/macchina/或$XDG_CONFIG_HOME/macchina/ - macOS:
$HOME/.config/macchina/ - Windows:
%AppData%/macchina/
- Linux 和 BSD:
macchina.toml:macchina 的配置文件,用于调整 macchina 需要显示或隐藏的内容以及使用的主题。示例 - 自定义主题:
shellx touch "$HOME/.config/macchina/themes/" printf "%s
" \n 'hide_ascii = true' \n '[box]' \n 'border = "plain"' \n 'visible = true' > "$HOME/.config/macchina/themes/x.toml" macchina -l macchina -t x ```

neofetch
兼容性好,neofetch 基于bash,所以不需要编译,同时兼容性也好:
举个例子,main函数内部的cache_uname方法,就会使用 Linux 和 macOS 都有的命令:uname -srm
安装
## macOS
brew install neofetch
## Linux Debian/Ubuntu
sudo apt install neofetch
## Linux CentOS
sudo yum install neofetch安装完成,我们看看 Neofetch 的版本:
neofetch --version输出系统信息:
neofetch
扩展
如果细看 Neofetch 的脚本,会发现还有很多可选项,这些在 Neofetch 的 wiki 内也有记录:
接下来我们看看可选项有那些?
扩展使用
根据官方的 wiki,Neofetch 在安装后,会自动生成默认配置文件,配置文件的存放地址在:${HOME}/.config/neofetch/config.conf内。里面其实就是默认的输出内容定义:
复制
cat ${HOME}/.config/neofetch/config.conf
neofetch默认配置
可以看到,默认情况下打印的内容,就在配置文件内的 print_info 所定义。如果我们需要修改呢,有两种方法:
- 直接使用
vim等文本编辑器修改这个文件即可。 - 在运行
neofetch的时候,使用参数开启即可。
举个例子,默认情况,只显示内存,并没有显示内存使用的百分比;但是实际上在config.conf文件内是可以开启的,比如:
## 直接输出
neofetch --memory_percent on或者直接修改配置文件

修改配置文件,最后的结果:

显示内存比
项目归档
Neofetch完全基于bash,使其兼容性很不错;即使你的Debian从8已经到12,但是 Neofetch 版本一直没有更新,那么 Neofetch 的使用,也不会出现什么问题。
这也是为什么,Neofetch在归档前,已经三年没有更新,但使用起来也没有任何问题。可以预想到,未来很长一段时间也不会有任何问题。那些基础的命令free -m、uname -s等等,都是不会改变的。
但是,为什么 Neofetch 停止维护了呢? 或者说是项目归档了呢?

为什么停止维护呢?
其实,根据 reddit 上的两篇文章,可能可以略知一二:
- Neofetch development discontinued, repository archived
- Found a text file at work titled "Why should I quit my job and become a goat farmer? (written during my "on-call" week)"
大概就是作者换行了(回家开农场了,不过不清楚是否真的回去开农场?),项目维护者经常面临着巨大的工作量,包括但不限于代码更新、设备兼容考虑、错误修复、功能请求处理以及社区管理等等繁琐事物,加上作者自己从事的软件工作;作者在技术工作中感到厌倦和疲惫。而且即使从事的是技术,也需要考虑政治和不同人的立场,也需要站队。
综合上述的内容,他现在更倾向于追求他认为更简单、压力更小、更纯粹的生活方式。
自然而然地,项目就放弃维护了。
说实话,有点可惜;不过也确实为作者感到高兴,他找到了更好的生活。虽然不知道他是否真的是回去开设农场,但是应该是一个不错的新生活。
回到NeoFetch,其实也有很多继任者:
- hyfetch: Neofetch with LGBTQ+ pride flags!
- fastfetch: About An actively maintained, feature-rich and performance oriented, neofetch like system information tool.
接任者都是非常好用的项目;不过受限于篇幅,接下来,我们就取其中的 Fastfetch 来一起看看。
fastfetch
可替代性:通常情况下,可以把 FastFetch 当作 NeoFetch 使用。安装方式也是一样,FastFetch 已经在各个平台的软件包管理器发布。
可扩展性:相比于 NeoFetch 全部基于
bash的 shell 脚本,而 FastFetch 是基于C的。
安装
## macOS
brew install fastfetch
## Linux Debian/Ubuntu (Debian 13 or newer)
sudo apt install fastfetch
## Linux CentOS
sudo yum install fastfetch安装完成,我们看看 fastfetch的版本:
fastfetch --version输出系统信息:
neofetch
Docker增强
x docker
可以直接用 xd、x docker 来增强 docker,具体效果如下:

lazydocker
用 Go 语言开发的 Docker 和 docker-compose 的 Terminal UI 管理工具。它提供 docker 的终端图形界面,支持鼠标操作和键盘快捷键,能实时监控 docker 容器,并能简化一些常见的 dockcer 管理任务,如查看容器的状态、管理镜像和容器。
安装并启动 lazydocker:
eval "$(curl https://get.x-cmd.com)" # 安装 x-cmd
x env use lazydocker # 使用 x-cmd 安装 lazydocker
lazydocker # 启动 lazydocker UI配置 lazydocker
查看 lazydocker 当前使用的自然语言
lazydocker --config | grep "lang"修改 lazygit 配置文件,如将语言设置为中文
- OSX:
~/Library/Application Support/jesseduffield/lazydocker/config.yml - Linux:
~/.config/lazydocker/config.yml - Windows:
C:\\Users\\<User>\\AppData\\Roaming\\jesseduffield\\lazydocker\\config.yml(I think)
以Linux为例:
mkdir -p "$HOME/.config/lazydocker"printf "gui:language: zh " > "$HOME/.config/lazydocker/config.yml"常用快捷键:
x:打开当前功能区的菜单栏;(有啥不懂,可以直接看这个)p:(在容器功能区) 暂停选中的容器;s:(在容器功能区) 停止选中的容器;r:(在容器功能区) 重新启动选中的容器;d:删除选中的容器/镜像/卷/网络。esc:返回或取消 lazydocker 操作;enter:聚焦主面板;tab:上下切换到其他功能区面板;]/[:左右切换到其他选项卡;b:可选择内置的批量命令;q:退出 lazydocker 的 UI 界面;
ctop
实时监控 docker 容器的资源使用情况
非常好用的docker运维利器
x install ctoppocker
同样也是Docker 运维利器,告别繁琐命令,拥抱高效管理!
x install pockerducker
类似于
lazydocker的终端命令行docker管理工具
x install duckerducker代码托管
scc
scc(Sloc Cloc and Code) 是用 Go 开发的代码计数器,类似于 cloc、sloccount 和 tokei,支持复杂度计算和 COCOMO 估计。官方仓库:github.com/boyter
安装 scc
x env use scc计算当前目录文件中代码的行数
scc计算指定目录或文件代码的行数
scc <path>
设置输出格式,并输出到目录下:
scc -f json -o ~/outpu.json
scc -f csv -o ~/outpu.csvjson
scc -f html -o ~/outpu.html
lazygit
安装
x env use lazygit启动 lazygit UI
lazygit配置 lazygit
lazygit --config | grep "lang" # 查看 lazygit 当前使用的自然语言
lazygit -cd # 获取 lazygit 的配置文件目录修改 lazygit 配置文件,如将语言设置为中文
printf "gui:language: zh-CN " > "$(lazygit -cd)/config.yml"常用快捷键:
q:退出 lazygit 的 UI 界面;esc:取消 lazygit 操作;h/j:上下切换到其他功能区面板(如文件变更面板、分支管理);?:获取当前功能区面板的按键帮助;]/[:左右切换到其他选项卡[;p:git pull - 拉取远程仓库的代码;P:git push - 将本地仓库代码推送到远程仓库;<space>:(在文件变更面板)git add - 暂存选中的更改或取消暂存;c:(在文件变更面板)git commit - 为暂存的更改添加提交说明并存入本地仓库。

