1. Linux Bash 常用操作命令概述作为一个在Linux系统下工作多年的开发者我深刻体会到掌握Bash命令的重要性。Bash(Bourne-Again SHell)是大多数Linux发行版的默认shell它不仅是用户与操作系统交互的界面更是自动化任务的强大工具。Bash命令可以分为几个主要类别文件与目录操作文本处理系统监控进程管理网络操作权限管理2. 基础文件与目录操作命令2.1 目录导航与查看pwd命令是最基础的命令之一它显示当前工作目录的完整路径。这个命令看似简单但在复杂的目录结构中工作时特别有用。$ pwd /home/username/projectsls命令用于列出目录内容它有多个常用选项-l长格式显示包含权限、所有者、大小等信息-a显示所有文件包括隐藏文件(以.开头的文件)-h以人类可读的格式显示文件大小$ ls -lah total 12K drwxr-xr-x 3 username username 4.0K Mar 15 10:00 . drwxr-xr-x 18 username username 4.0K Mar 14 09:00 .. -rw-r--r-- 1 username username 220 Mar 15 09:30 .bashrccd命令用于切换目录有几个特殊符号需要记住..上级目录~用户主目录-前一个工作目录2.2 文件操作touch命令用于创建空文件或更新文件时间戳$ touch newfile.txtcp命令复制文件-r选项用于递归复制目录$ cp file1.txt file2.txt $ cp -r dir1 dir2mv命令用于移动或重命名文件$ mv oldname.txt newname.txt $ mv file.txt /target/directory/rm命令删除文件-r选项删除目录及其内容使用时需特别小心$ rm file.txt $ rm -r directory/警告rm -rf /这样的命令会删除系统所有文件绝对不要尝试3. 文本处理与查看命令3.1 查看文件内容cat命令是最简单的查看文件内容的方式$ cat file.txtless和more命令更适合查看大文件支持分页浏览$ less largefile.loghead和tail命令分别显示文件开头和结尾部分默认显示10行$ head -n 20 file.log # 显示前20行 $ tail -f app.log # 实时跟踪日志文件变化3.2 文本搜索与处理grep是强大的文本搜索工具常用选项-i忽略大小写-v反向匹配-r递归搜索目录$ grep error *.log $ grep -r function_name /path/to/code/awk是强大的文本处理工具可以提取和处理列数据$ awk {print $1} data.txt # 打印第一列 $ awk -F, {print $2} csvfile.csv # 以逗号分隔打印第二列sed是流编辑器常用于文本替换$ sed s/old/new/g file.txt # 全局替换 $ sed -i.bak s/old/new/ file.txt # 直接修改文件并创建备份4. 系统监控与进程管理4.1 系统资源监控top命令提供实时系统监控显示CPU、内存使用情况和运行中的进程$ tophtop是top的增强版提供更友好的界面和更多功能$ htopfree命令显示内存使用情况-h选项以人类可读格式显示$ free -h total used free shared buff/cache available Mem: 15Gi 4.2Gi 8.4Gi 512Mi 2.8Gi 10Gi Swap: 2.0Gi 0.0Ki 2.0Gidf命令显示磁盘空间使用情况$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 30G 70G 30% /4.2 进程管理ps命令显示当前进程状态常用组合$ ps aux # 显示所有用户的所有进程kill命令用于终止进程常用信号SIGTERM(15)正常终止(默认)SIGKILL(9)强制终止$ kill 1234 # 发送SIGTERM $ kill -9 1234 # 发送SIGKILLnohup命令让进程在用户退出后继续运行$ nohup ./long_running_script.sh 5. 网络相关命令5.1 网络连接与测试ping命令测试网络连通性$ ping google.comcurl和wget用于从网络下载内容$ curl -O https://example.com/file.zip $ wget https://example.com/file.zipnetstat或ss命令显示网络连接信息$ netstat -tulnp # 显示监听端口和对应进程 $ ss -tulnp # 更现代的替代方案5.2 SSH相关命令SSH是远程管理Linux系统的标准工具$ ssh usernameremote_hostSCP命令通过SSH安全地复制文件$ scp local_file usernameremote_host:/remote/directory/ $ scp usernameremote_host:/remote/file /local/directory/6. 权限与用户管理6.1 文件权限chmod命令修改文件权限可以使用数字或符号模式$ chmod 755 script.sh # 所有者rwx组和其他rx $ chmod x script.sh # 添加执行权限chown命令修改文件所有者$ chown username:group file.txt6.2 用户与组管理sudo命令以超级用户权限执行命令$ sudo apt updateuseradd和usermod管理用户账户$ sudo useradd newuser $ sudo usermod -aG sudo newuser # 添加到sudo组passwd命令修改用户密码$ passwd # 修改当前用户密码 $ sudo passwd username # 修改其他用户密码7. 实用技巧与组合命令7.1 命令组合与管道管道(|)是Bash最强大的特性之一它允许将一个命令的输出作为另一个命令的输入$ ps aux | grep python # 查找所有Python进程 $ cat access.log | awk {print $1} | sort | uniq -c | sort -nr # 统计访问日志IP出现次数7.2 后台与作业控制符号让命令在后台运行$ long_running_command jobs查看后台作业fg和bg控制作业前后台切换$ jobs $ fg %1 # 将作业1切换到前台 $ bg %2 # 将作业2切换到后台7.3 命令历史与快捷操作history命令查看命令历史$ history | grep ssh # 查找过去使用过的ssh命令快捷键CtrlR反向搜索命令历史CtrlA/CtrlE移动到行首/行尾CtrlU/CtrlK删除到行首/行尾8. 常见问题排查与调试8.1 命令执行问题当命令执行失败时检查以下几点命令是否存在which command是否有执行权限ls -l /path/to/command环境变量是否正确echo $PATH8.2 脚本调试技巧在脚本开头添加set -x启用调试模式#!/bin/bash set -x # 脚本内容检查命令退出状态$ some_command $ echo $? # 0表示成功非0表示失败8.3 日志分析技巧分析日志文件时常用组合$ grep ERROR app.log | awk {print $5} | sort | uniq -c | sort -nr # 统计错误类型 $ tail -n 100 app.log | grep -A 10 -B 10 critical # 查看关键错误上下文9. 进阶命令与脚本编写9.1 正则表达式应用grep支持基本正则表达式(BRE)和扩展正则表达式(ERE)$ grep -E [0-9]{3}-[0-9]{4} contacts.txt # 查找电话号码9.2 变量与条件判断Bash脚本中的变量使用#!/bin/bash nameJohn echo Hello, $name条件判断示例if [ -f /path/to/file ]; then echo File exists elif [ -d /path/to/dir ]; then echo Directory exists else echo Neither exists fi9.3 循环结构for循环示例for file in *.txt; do echo Processing $file # 处理每个txt文件 donewhile循环示例while read line; do echo Line: $line done input.txt10. 实用命令组合示例10.1 批量重命名文件for file in *.jpg; do mv $file vacation_${file} done10.2 查找并删除旧文件find /path/to/files -type f -mtime 30 -name *.log -exec rm {} \;10.3 监控目录变化while inotifywait -r -e modify,create,delete /path/to/watch; do echo Directory changed, running build... # 执行构建命令 done掌握这些Bash命令和技巧可以显著提高在Linux环境下的工作效率。建议从基础命令开始逐步尝试更复杂的组合和脚本编写。在实际工作中将这些命令组合使用往往能解决大多数日常任务。