资讯详情

Linux命令行基础与实用技巧全解析

📅 2026/10/30 5:39:52 | 华诺云谱 👁 阅读
Linux命令行基础与实用技巧全解析
1. Linux命令行基础概述作为一位长期与Linux打交道的系统管理员我深知命令行是Linux系统的灵魂所在。与图形界面相比命令行提供了更高效、更灵活的操作方式尤其适合批量处理、自动化任务和远程管理。对于初学者而言掌握基础命令就像学习一门新语言——开始时可能觉得陌生但一旦熟悉就会爱不释手。Linux命令行的核心是shell它是用户与内核交互的接口。常见的shell包括BashBourne Again Shell、Zsh等其中Bash是大多数Linux发行版的默认选择。每个命令本质上都是一个可执行程序通过特定的语法和参数组合我们能完成从文件管理到系统监控的各种任务。提示在终端中输入echo $SHELL可以查看当前使用的shell类型输入cat /etc/shells可查看系统安装的所有shell。2. 文件与目录操作命令2.1 导航与查看pwdPrint Working Directory是最基础也最常用的命令之一它显示当前所在目录的完整路径。当你在复杂的目录结构中迷失时这个命令就是你的指南针。ls命令用于列出目录内容但它的真正威力在于各种参数组合ls -l # 长格式显示包含权限、所有者、大小等信息 ls -a # 显示所有文件包括隐藏文件以.开头 ls -lh # 人类可读的文件大小显示KB/MB/GB ls -t # 按修改时间排序cd命令用于切换目录有几个特殊符号需要牢记cd ~ # 切换到用户主目录 cd - # 切换到上一个工作目录 cd .. # 切换到上级目录2.2 文件操作cp和mv命令分别用于复制和移动文件它们的常用格式非常相似cp source.txt destination/ # 复制文件 cp -r dir1/ dir2/ # 递归复制目录 mv oldname.txt newname.txt # 重命名文件 mv file.txt ~/backups/ # 移动文件rm命令用于删除文件但使用时要格外小心rm file.txt # 删除文件 rm -r directory/ # 递归删除目录 rm -f stubborn.txt # 强制删除不提示警告rm -rf /这样的命令会强制删除系统所有文件永远不要尝试建议新手使用-i参数让rm在删除前确认。3. 文本处理三剑客3.1 grep文本搜索利器grep是全局正则表达式打印工具的缩写它能快速在文件中搜索特定模式grep error log.txt # 在log.txt中查找包含error的行 grep -i warning *.log # 忽略大小写搜索所有.log文件 grep -r function ~/code/ # 递归搜索目录 grep -v debug output.txt # 显示不匹配的行 grep -A 3 -B 2 crash system.log # 显示匹配行及其前后几行3.2 sed流编辑器sed是一个强大的流编辑器特别适合批量替换文本sed s/old/new/g file.txt # 替换文件中所有old为new sed -i.bak s/foo/bar/ config.conf # 直接修改文件并创建备份 sed /pattern/d data.txt # 删除匹配的行 sed -n 10,20p longfile.log # 只打印10-20行3.3 awk文本处理语言awk不仅仅是一个命令更是一门编程语言特别适合处理结构化文本awk {print $1} data.txt # 打印每行第一个字段 awk -F: {print $1} /etc/passwd # 以冒号为分隔符打印第一列 awk $3 100 {print $0} sales.csv # 打印第三列大于100的行 awk BEGIN {sum0} {sum$1} END {print sum} numbers.txt # 计算第一列总和4. 系统监控与管理命令4.1 进程管理ps命令显示当前进程状态常用组合ps aux # 显示所有用户的所有进程详细信息 ps -ef # 标准格式显示所有进程 ps -u root # 显示root用户的进程top和htop提供实时系统监控top # 经典的系统监控工具 htop # 增强版的top支持颜色和鼠标操作kill命令用于终止进程kill -9 1234 # 强制终止PID为1234的进程 pkill -f pattern # 根据名称模式终止进程4.2 磁盘与内存df和du命令用于磁盘空间检查df -h # 人类可读的磁盘使用情况 du -sh * # 显示当前目录各文件/目录总大小 du -ah --max-depth1 /path # 显示目录下各项目大小free命令查看内存使用free -h # 以GB/MB显示内存和交换空间使用情况5. 网络相关命令5.1 连接与测试ping是最基础的网络测试工具ping example.com # 测试到example.com的连接 ping -c 4 8.8.8.8 # 只发送4个ping包traceroute或tracepath显示数据包路径traceroute google.com # 显示到google的网络路径5.2 网络配置与监控ifconfig或现代系统中的ip用于网络接口配置ifconfig # 显示网络接口信息 ip addr show # ip命令的现代替代方案netstat显示网络连接和统计信息netstat -tulnp # 显示所有监听端口及相关进程 netstat -rn # 显示路由表ss是netstat的现代替代品ss -tulnp # 更高效的连接查看工具6. 权限与用户管理6.1 文件权限chmod修改文件权限chmod 755 script.sh # 设置rwxr-xr-x权限 chmod x backup.sh # 添加执行权限 chmod -R 644 /var/www/ # 递归修改目录权限chown修改文件所有者chown user:group file.txt # 修改所有者和组 chown -R www-data:www-data /var/www/ # 递归修改6.2 用户与组useradd和usermod管理用户账户useradd -m -s /bin/bash newuser # 创建新用户 usermod -aG sudo username # 将用户添加到sudo组passwd设置密码passwd username # 为用户设置密码7. 实用技巧与高级用法7.1 命令组合与重定向Linux的强大之处在于命令的组合使用grep error log.txt | wc -l # 统计错误出现次数 cat access.log | awk {print $1} | sort | uniq -c | sort -nr # 统计访问IP频率重定向是另一个核心功能command output.txt # 标准输出重定向到文件 command 2 error.log # 标准错误重定向 command log.txt # 追加到文件 command input.txt # 从文件读取输入 command | tee output.txt # 同时输出到屏幕和文件7.2 定时任务cron是Linux的定时任务工具使用crontab命令管理crontab -e # 编辑当前用户的cron任务 crontab -l # 列出当前用户的cron任务典型的cron格式* * * * * command_to_run ┬ ┬ ┬ ┬ ┬ │ │ │ │ └─ 星期几 (0 - 6) (0是星期日) │ │ │ └─── 月份 (1 - 12) │ │ └───── 日 (1 - 31) │ └─────── 小时 (0 - 23) └───────── 分钟 (0 - 59)7.3 压缩与归档tar是最常用的归档工具tar -czvf archive.tar.gz dir/ # 创建gzip压缩包 tar -xzvf archive.tar.gz # 解压gzip包 tar -cjvf archive.tar.bz2 dir/ # 创建bzip2压缩包对于zip文件zip -r archive.zip dir/ # 创建zip压缩包 unzip archive.zip # 解压zip包8. 环境变量与别名8.1 环境变量管理查看和设置环境变量echo $PATH # 查看PATH变量 export MY_VARvalue # 设置临时环境变量要使变量永久生效可以添加到~/.bashrc或~/.bash_profileecho export JAVA_HOME/usr/lib/jvm/java-11-openjdk ~/.bashrc source ~/.bashrc # 使更改立即生效8.2 命令别名创建别名可以简化常用命令alias llls -alF alias grepgrep --colorauto alias updatesudo apt update sudo apt upgrade永久别名可以添加到~/.bashrc文件中。要查看所有已定义别名只需输入alias。9. 软件包管理不同Linux发行版使用不同的包管理工具9.1 Debian/Ubuntu (APT)sudo apt update # 更新软件包列表 sudo apt upgrade # 升级所有已安装包 sudo apt install package # 安装软件包 sudo apt remove package # 移除软件包 sudo apt search term # 搜索软件包9.2 RedHat/CentOS (YUM/DNF)sudo yum install package # 安装软件包 sudo yum update # 更新所有包 sudo yum search term # 搜索软件包9.3 Arch Linux (Pacman)sudo pacman -S package # 安装软件包 sudo pacman -Syu # 更新系统和所有包 sudo pacman -Ss term # 搜索软件包10. 终端多路复用器tmux和screen允许在单个终端会话中创建多个窗口和面板特别适合远程工作10.1 tmux基础用法tmux # 启动新会话 tmux new -s session_name # 创建命名会话 Ctrlb d # 分离会话 tmux attach -t session_name # 重新连接会话 tmux ls # 列出所有会话10.2 常用tmux快捷键Ctrlb c创建新窗口Ctrlb n下一个窗口Ctrlb p上一个窗口Ctrlb %垂直分割面板Ctrlb 水平分割面板Ctrlb 方向键在面板间切换11. SSH远程连接SSH是管理远程Linux服务器的标准工具ssh userhostname # 基本连接 ssh -p 2222 userhostname # 指定非标准端口 ssh -i ~/.ssh/key.pem userhostname # 使用密钥认证生成SSH密钥对ssh-keygen -t rsa -b 4096 # 创建RSA密钥对 ssh-copy-id userhostname # 将公钥复制到远程主机SSH配置文件~/.ssh/config可以简化连接Host myserver HostName server.example.com User myuser Port 2222 IdentityFile ~/.ssh/myserver_key配置后只需输入ssh myserver即可连接。12. 日志分析系统日志是故障排查的重要资源12.1 常见日志文件/var/log/syslog # 通用系统日志Debian/Ubuntu /var/log/messages # 通用系统日志RHEL/CentOS /var/log/auth.log # 认证日志 /var/log/nginx/* # Nginx日志 /var/log/apache2/* # Apache日志12.2 日志查看工具tail -f /var/log/syslog # 实时查看日志更新 journalctl -u nginx -f # systemd服务的日志使用-f实时查看 grep Failed password /var/log/auth.log # 查找认证失败记录13. 性能监控与优化13.1 实时监控工具vmstat 1 # 显示系统资源使用情况每秒刷新 iostat -xz 1 # 磁盘I/O统计 sar -n DEV 1 # 网络接口统计 dstat -cdlmnpsy # 综合性能监控13.2 历史性能数据sar -u -f /var/log/sa/sa10 # 查看某天的CPU使用历史 sar -r -f /var/log/sa/sa10 # 查看内存使用历史14. 安全相关命令14.1 防火墙管理sudo ufw status # 查看防火墙状态Ubuntu sudo ufw allow 22/tcp # 允许SSH连接 sudo firewall-cmd --list-all # 查看firewalld配置RHEL/CentOS14.2 文件完整性检查md5sum file.iso # 计算MD5校验和 sha256sum document.txt # 计算SHA256校验和14.3 特权管理sudo command # 以root权限执行命令 visudo # 安全地编辑sudoers文件15. Shell脚本基础15.1 脚本示例#!/bin/bash # 这是一个简单的备份脚本 BACKUP_DIR/backups TARGET_DIR$HOME/documents DATE$(date %Y%m%d) if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi tar -czf $BACKUP_DIR/backup_$DATE.tar.gz $TARGET_DIR if [ $? -eq 0 ]; then echo 备份成功完成: $BACKUP_DIR/backup_$DATE.tar.gz else echo 备份失败! 2 exit 1 fi15.2 脚本调试bash -x script.sh # 显示脚本执行过程 set -x # 在脚本中启用调试 set x # 关闭调试16. 实用小技巧16.1 命令历史history # 查看命令历史 !number # 执行历史中第number条命令 !! # 重复上一条命令 Ctrlr # 反向搜索历史命令16.2 快速导航cd /usr/share/doc ls # 组合命令 mkdir -p project/{src,test,doc} # 一次性创建多个目录16.3 进程管理技巧command # 在后台运行命令 jobs # 查看后台作业 fg %1 # 将作业1调到前台 bg %2 # 在后台继续运行作业2 nohup long_command # 退出终端后继续运行17. 终端美化与配置17.1 提示符定制在~/.bashrc中添加PS1\[\e[1;32m\]\u\h \[\e[1;34m\]\w \[\e[1;31m\]\$ \[\e[0m\]17.2 颜色支持ls --colorauto # 彩色显示文件列表 grep --colorauto # 彩色显示匹配结果17.3 终端多路复用screen -S session_name # 创建screen会话 screen -r session_name # 恢复会话18. 系统信息查询18.1 硬件信息lscpu # CPU信息 lsblk # 块设备信息 lspci # PCI设备信息 lsusb # USB设备信息 dmidecode # DMI/BIOS信息18.2 系统版本uname -a # 内核信息 cat /etc/os-release # 发行版信息 hostnamectl # 系统主机名和版本信息19. 文件查找与定位19.1 find命令find / -name *.conf -type f # 全盘查找.conf文件 find ~ -mtime -7 -type f # 查找7天内修改过的文件 find /var/log -size 10M # 查找大于10MB的文件19.2 locate命令updatedb # 更新locate数据库需要root locate nginx.conf # 快速查找文件20. 版本控制系统20.1 Git基础git init # 初始化仓库 git clone url # 克隆远程仓库 git status # 查看状态 git add file # 添加文件到暂存区 git commit -m msg # 提交更改 git push # 推送到远程仓库20.2 常用Git操作git log --oneline --graph --all # 简洁的提交历史图 git diff HEAD~1 # 比较当前与上一次提交 git branch new-feature # 创建新分支 git checkout branch-name # 切换分支 git merge other-branch # 合并分支
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑