引言

作为一名计算机专业的学生和Linux系统爱好者,我深深体会到命令行工具在开发和管理工作中的重要性。经过多年的使用和积累,我整理了一些最常用、最高效的Linux命令行工具,这些工具极大地提升了我的工作效率。本文将分享这些工具的使用技巧和应用场景。

1. 文件与目录操作

1.1 exa - ls的现代替代品

1
2
3
4
5
6
7
# 安装
sudo apt install exa # Ubuntu/Debian
sudo dnf install exa # Fedora

# 使用示例
exa -l --icons --git # 显示详细信息、图标和git状态
exa -T --level=2 # 树形显示目录结构

exa提供了更美观的输出、git集成和更好的颜色显示,是我日常替代ls的首选工具。

1.2 fzf - 模糊查找神器

1
2
3
4
5
6
7
8
# 安装
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

# 常用组合
vim $(fzf) # 模糊查找并打开文件
kill $(ps aux | fzf | awk '{print $2}') # 模糊查找并杀死进程
cd $(find * -type d | fzf) # 模糊查找并进入目录

fzf可以与几乎所有命令结合使用,提供交互式模糊查找功能。

2. 文本处理三剑客

2.1 grep进阶用法

1
2
3
grep -rni "keyword" .            # 递归搜索,显示行号,忽略大小写
grep --include="*.js" "function" # 只在js文件中搜索
grep -v "exclude" file # 反向匹配,排除包含"exclude"的行

2.2 awk实用技巧

1
2
3
4
5
6
7
8
# 提取特定列
ps aux | awk '{print $1, $4}' | sort -k2 -nr

# 统计代码行数
find . -name "*.py" | xargs wc -l | awk 'END{print}'

# 数据求和
awk '{sum+=$1} END {print sum}' data.txt

2.3 sed实战示例

1
2
3
4
5
6
7
8
# 批量替换文本
sed -i 's/old/new/g' *.txt

# 删除空白行
sed '/^$/d' file.txt

# 提取特定行
sed -n '10,20p' file.txt

3. 系统监控与性能分析

3.1 htop - 增强版top

1
2
3
4
5
6
7
# 安装
sudo apt install htop

# 使用技巧
F5 - 树形显示进程
F6 - 按列排序
F9 - 杀死进程

3.2 glances - 全能监控工具

1
2
3
4
5
6
7
# 安装
pip install glances

# 使用
glances # 本地监控
glances -w # 启动web服务器
glances -s # 启动服务器模式

glances可以监控CPU、内存、磁盘、网络、温度等几乎所有系统指标。

3.3 ncdu - 磁盘空间分析

1
2
3
4
5
6
# 安装
sudo apt install ncdu

# 使用
ncdu / # 分析根目录空间使用
ncdu -x /home # 不跨越文件系统边界

4. 网络工具

4.1 httpie - 现代curl替代品

1
2
3
4
5
6
7
# 安装
pip install httpie

# 使用示例
http GET https://api.github.com
http POST example.org name=John age:=30 # :=表示JSON数字
http -f POST example.org/form name='John' file@photo.jpg

4.2 mtr - ping+traceroute组合

1
2
3
4
5
6
# 安装
sudo apt install mtr

# 使用
mtr google.com # 实时网络诊断
mtr -c 100 -i 1 -n 8.8.8.8 # 发送100个包,间隔1秒,不解析主机名

4.3 ngrep - 网络层grep

1
2
3
4
5
# 安装
sudo apt install ngrep

# 抓取HTTP GET请求
ngrep -d eth0 '^GET' port 80

5. 开发辅助工具

5.1 jq - JSON处理利器

1
2
3
4
5
6
# 安装
sudo apt install jq

# 使用示例
curl -s https://api.github.com/users/octocat | jq '.login, .id'
cat config.json | jq '.config.database.host'

5.2 tmux - 终端复用器

1
2
3
4
5
6
7
8
9
10
# 基本操作
tmux new -s mysession # 新建会话
Ctrl+b d # 分离会话
tmux attach -t mysession # 重新连接

# 窗口管理
Ctrl+b c # 新建窗口
Ctrl+b , # 重命名窗口
Ctrl+b % # 垂直分割
Ctrl+b " # 水平分割

5.3 tldr - 简化版man

1
2
3
4
5
6
# 安装
npm install -g tldr

# 使用
tldr tar # 查看tar命令常用示例
tldr --update # 更新缓存

6. 实用小工具

6.1 bat - 带语法高亮的cat

1
2
3
4
5
6
# 安装
sudo apt install bat

# 使用
bat main.py # 查看代码
bat --list-languages # 查看支持的语言

6.2 fd - 更快的find替代品

1
2
3
4
5
6
# 安装
sudo apt install fd-find

# 使用
fd "\.py$" # 查找所有Python文件
fd -e md -x wc -l # 统计所有markdown文件行数

6.3 ripgrep (rg) - 超快代码搜索

1
2
3
4
5
6
# 安装
sudo apt install ripgrep

# 使用
rg "TODO" # 搜索所有TODO注释
rg -tpy "import" # 只在Python文件中搜索import

7. 我的.bashrc实用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 常用别名
alias ll='exa -l --icons --git'
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'

# 历史命令增强
shopt -s histappend
export HISTFILESIZE=1000000
export HISTSIZE=1000000
export HISTCONTROL=ignoreboth
export HISTIGNORE='ls:bg:fg:history'

# 快速目录跳转
shopt -s autocd
alias ..='cd ..'
alias ...='cd ../..'

# 提取任何压缩文件
extract() {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar e $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}

8. 终端美化

8.1 starship - 现代化提示符

1
2
3
4
5
# 安装
curl -sS https://starship.rs/install.sh | sh

# 添加到.bashrc
eval "$(starship init bash)"

8.2 lsd - 带图标和颜色的ls

1
2
3
4
5
# 安装
sudo apt install lsd

# 使用
lsd -l --icon=always

结语

掌握这些命令行工具可以极大提升Linux环境下的工作效率。建议初学者从最基础的grepawksed开始学习,逐步扩展到其他工具。记住,最好的学习方法就是实践——尝试在自己的日常工作中使用这些工具!