1. Linux核心命令解析
1.1 文件系统操作命令
在Linux系统中,文件操作是最基础也是最重要的技能。ls命令的-l参数可以显示详细文件信息,包括权限、所有者、大小和修改时间。我习惯使用ls -alh组合,其中-a显示隐藏文件,-h以人类可读格式显示文件大小。cd命令切换目录时,使用~代表家目录,-返回上次目录,这些小技巧能显著提升操作效率。
cp和mv命令都支持通配符操作,比如cp *.txt ~/backup/。但要注意mv在跨设备移动大文件时实际是复制+删除操作,会消耗更多时间。rm命令务必谨慎使用,特别是-r和-f参数组合,建议先使用-i交互模式确认。
重要提示:执行
rm前可先用echo测试匹配文件,例如echo *.log确认无误后再替换为rm
1.2 文本处理三剑客
grep、awk和sed构成了Linux文本处理的黄金组合。grep -n "error" log.txt可以显示匹配行号,-v参数反向选择。我常用grep -E启用扩展正则表达式,比基本正则更强大。
awk特别适合处理结构化文本,比如awk -F',' '{print $2}' data.csv提取CSV第二列。更复杂的逻辑可以写在awk脚本中,比如计算列平均值:
bash复制awk '{sum+=$3; count++} END {print sum/count}' data.txt
sed则擅长流式编辑,sed -i 's/old/new/g' file.txt实现全局替换。记住-i.bak可以同时创建备份文件,防止误操作。
1.3 系统监控与进程管理
top命令是实时监控的首选,按M按内存排序,P按CPU排序。我更推荐htop,它提供彩色界面和鼠标操作。ps aux显示所有进程,配合grep过滤特定进程:
bash复制ps aux | grep nginx
kill发送信号时,-9是最后手段,应先尝试-15(SIGTERM)优雅终止。nohup和&组合可以让命令在后台持续运行:
bash复制nohup python script.py > output.log 2>&1 &
2. Vim高效编辑指南
2.1 基础模式与导航
Vim的三种基本模式需要熟练掌握:
- 普通模式(Normal):执行命令和导航
- 插入模式(Insert):输入文本
- 可视模式(Visual):选择文本
我建议新手先记住这些核心导航命令:
h/j/k/l:左/下/上/右w/b:向前/后跳单词0/$:行首/行尾gg/G:文件开头/结尾Ctrl+d/u:向下/上翻半页
2.2 高效编辑技巧
.命令重复上次修改是Vim最强大的特性之一。比如你使用cw修改一个单词后,移动到下一个单词按.就能快速重复修改。f{char}查找字符并跳转,结合;重复查找,,反向查找。
多文件编辑时,:e filename打开新文件,:bn和:bp在缓冲区切换。分屏操作也很实用:
:vsp垂直分屏:sp水平分屏Ctrl+w加方向键切换窗口
2.3 高级配置与插件
在~/.vimrc中添加基础配置能大幅提升效率:
vim复制set number " 显示行号
set tabstop=4 " Tab显示宽度
set expandtab " 将Tab转为空格
set hlsearch " 高亮搜索结果
syntax on " 语法高亮
插件管理推荐使用vim-plug,安装后可以方便地添加如NERDTree(文件树)、coc.nvim(代码补全)等流行插件:
vim复制call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
3. 命令组合与脚本编写
3.1 管道与重定向
管道|将前一个命令的输出作为后一个命令的输入。例如统计日志中错误出现的次数:
bash复制grep -i "error" system.log | wc -l
重定向中>覆盖输出,>>追加输出。2>&1将标准错误重定向到标准输出。一个实用的例子是将命令输出和错误都记录到文件:
bash复制python script.py > output.log 2>&1
3.2 实用脚本编写
Shell脚本开头必须指定解释器:
bash复制#!/bin/bash
变量使用时注意等号两边不能有空格:
bash复制name="value"
echo $name
条件判断使用[],注意内部空格:
bash复制if [ -f "/path/to/file" ]; then
echo "File exists"
fi
循环处理文件是常见场景:
bash复制for file in *.txt; do
echo "Processing $file"
mv "$file" "${file%.txt}.bak"
done
4. 常见问题排查
4.1 权限问题处理
Permission denied错误通常通过ls -l检查文件权限。chmod修改权限,chown修改所有者。我常用这些权限组合:
755:可执行程序644:普通文件700:私有目录
sudo提权时,-i切换到root环境,-u指定用户执行:
bash复制sudo -u wwwstat cat /var/log/nginx/error.log
4.2 环境变量配置
echo $PATH查看当前路径设置。临时添加路径:
bash复制export PATH=$PATH:/new/path
永久生效需要写入~/.bashrc或/etc/profile。调试时可以用env查看所有环境变量。
4.3 性能问题诊断
free -h查看内存使用,df -h检查磁盘空间。iostat和vmstat监控IO和CPU:
bash复制vmstat 1 5 # 每秒1次,共5次
网络连接检查用netstat -tulnp或ss -tulnp,lsof -i :80查看80端口占用。
5. 进阶技巧与工具
5.1 正则表达式深度应用
grep -P启用Perl正则,支持更强大的特性如:
\d匹配数字\s匹配空白{n,m}量词指定重复次数
例如匹配IP地址:
bash复制grep -P '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' access.log
5.2 SSH高级用法
~/.ssh/config文件可以保存常用SSH配置:
code复制Host myserver
HostName server.example.com
User myname
Port 2222
IdentityFile ~/.ssh/id_rsa_myserver
之后只需ssh myserver即可连接。ssh -L创建本地隧道:
bash复制ssh -L 3306:localhost:3306 user@remote
5.3 版本控制集成
在Vim中集成Git可以实时查看修改状态。安装vim-fugitive插件后:
:Gstatus查看状态:Gblame查看逐行修改历史:Gdiff比较工作区和版本库差异
我习惯在.vimrc中添加快捷键:
vim复制nnoremap <leader>gs :Gstatus<CR>
nnoremap <leader>gc :Gcommit<CR>
6. 个人效率工作流
6.1 终端复用器tmux
tmux允许在单个终端中管理多个会话。基本操作:
tmux new -s session_name创建新会话Ctrl+b d分离会话tmux attach -t session_name重新连接
分屏操作快捷键:
Ctrl+b %垂直分割Ctrl+b "水平分割Ctrl+b 方向键切换面板
6.2 命令行历史优化
在~/.bashrc中添加这些配置提升历史记录实用性:
bash复制HISTSIZE=10000
HISTFILESIZE=20000
HISTTIMEFORMAT="%F %T "
shopt -s histappend
Ctrl+r反向搜索历史命令,history | grep keyword查找特定命令。
6.3 自定义命令别名
.bashrc中添加别名可以节省大量时间:
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias hg='history | grep'
对于复杂操作,可以定义函数:
bash复制function mkcd() {
mkdir -p "$1" && cd "$1"
}