资讯动态

Linux Shell命令大全:从基础到高级使用指南

发布时间:2026/10/26 18:50:26 来源:尧图企业网站定制
1. Shell 命令基础概述Shell 是用户与操作系统内核交互的桥梁它接收用户输入的命令并解释执行。在 Linux/Unix 系统中Shell 既是命令解释器也是一种功能强大的脚本语言。常见的 Shell 包括 BashBourne Again Shell、Zsh、Ksh 等其中 Bash 是大多数 Linux 发行版的默认 Shell。提示在终端输入echo $SHELL可以查看当前使用的 Shell 类型输入cat /etc/shells可以查看系统安装的所有 Shell 类型。Shell 命令主要分为两大类内置命令Built-in Commands由 Shell 自身提供的命令如 cd、echo、history 等外部命令External Commands独立存在的可执行程序如 ls、grep、find 等可以通过type命令判断一个命令是内置还是外部命令type cd # 显示 cd is a shell builtin type ls # 显示 ls is /bin/ls1.1 Shell 命令基本语法Shell 命令通常遵循以下格式command [options] [arguments]command命令名称options选项通常以 - 或 -- 开头arguments参数命令操作的对象例如ls -l /home # 列出/home目录的详细信息其中ls是命令名称-l是选项长格式显示/home是参数要列出的目录2. 文件与目录操作命令2.1 基本文件操作ls- 列出目录内容ls # 列出当前目录内容 ls -a # 显示所有文件包括隐藏文件 ls -l # 长格式显示详细信息 ls -lh # 人类可读的文件大小KB/MB/GB ls -t # 按修改时间排序 ls -r # 反向排序cd- 切换目录cd # 切换到用户主目录 cd ~ # 同上 cd /path # 切换到绝对路径 cd .. # 切换到上级目录 cd - # 切换到上一个工作目录pwd- 显示当前工作目录pwd # 显示当前目录的绝对路径2.2 文件操作进阶cp- 复制文件/目录cp file1 file2 # 复制file1到file2 cp -r dir1 dir2 # 递归复制目录 cp -i file1 file2 # 覆盖前提示 cp -u file1 file2 # 仅当file1比file2新时复制mv- 移动/重命名文件mv file1 file2 # 重命名或移动文件 mv -i file1 file2 # 覆盖前提示 mv -u file1 file2 # 仅当file1比file2新时移动rm- 删除文件rm file # 删除文件 rm -r dir # 递归删除目录 rm -f file # 强制删除不提示 rm -i file # 删除前提示确认警告rm -rf /这样的命令会强制删除系统所有文件极其危险建议使用alias rmrm -i设置删除前提示。2.3 文件查看与编辑cat- 连接文件并打印到标准输出cat file # 显示文件内容 cat file1 file2 file3 # 合并文件 cat file # 从键盘输入创建文件CtrlD结束less/more- 分页查看文件less file # 可前后翻页查看 more file # 只能向下翻页查看head/tail- 查看文件开头/结尾head file # 显示文件前10行 head -n 5 file # 显示前5行 tail file # 显示文件最后10行 tail -n 5 file # 显示最后5行 tail -f file # 实时追踪文件新增内容常用于查看日志nano/vim- 文本编辑器nano file # 使用nano编辑器 vim file # 使用vim编辑器3. 系统管理与进程控制3.1 系统信息查询uname- 显示系统信息uname -a # 显示所有系统信息 uname -r # 显示内核版本 uname -m # 显示机器硬件名称df- 显示磁盘空间使用情况df -h # 人类可读格式显示磁盘使用 df -i # 显示inode使用情况du- 估算文件/目录空间使用du -sh dir # 显示目录总大小 du -h --max-depth1 # 显示当前目录下各子目录大小free- 显示内存使用情况free -h # 人类可读格式显示内存使用top/htop- 动态显示进程信息top # 显示进程动态信息 htop # 增强版top需安装3.2 进程管理ps- 显示当前进程状态ps aux # 显示所有用户的所有进程 ps -ef # 完整格式显示进程 ps -u username # 显示指定用户的进程kill- 终止进程kill PID # 终止指定PID的进程 kill -9 PID # 强制终止进程 killall process_name # 终止所有同名进程jobs/fg/bg- 作业控制command # 后台运行命令 jobs # 显示后台作业 fg %n # 将作业n调到前台 bg %n # 在后台继续运行作业nnohup- 忽略挂起信号运行命令nohup command # 退出终端后命令继续运行4. 文本处理与过滤4.1 文本搜索与过滤grep- 文本搜索grep pattern file # 在文件中搜索模式 grep -i pattern file # 忽略大小写 grep -v pattern file # 显示不匹配的行 grep -r pattern dir # 递归搜索目录 grep -n pattern file # 显示行号 grep -E regex file # 使用扩展正则表达式awk- 文本处理语言awk {print $1} file # 打印每行第一个字段 awk -F: {print $1} /etc/passwd # 以:为分隔符打印第一个字段 awk /pattern/ {print $0} file # 打印匹配模式的行sed- 流编辑器sed s/old/new/ file # 替换文本 sed s/old/new/g file # 全局替换 sed -i s/old/new/g file # 直接修改文件 sed /pattern/d file # 删除匹配行4.2 文本排序与统计sort- 排序文本sort file # 按字典序排序 sort -n file # 按数值排序 sort -r file # 逆序排序 sort -u file # 去重排序 sort -k2 file # 按第二个字段排序uniq- 报告或忽略重复行uniq file # 显示去重后的行 uniq -c file # 显示每行重复次数 uniq -d file # 只显示重复行wc- 统计行数、单词数、字节数wc file # 统计行数、单词数、字节数 wc -l file # 只统计行数 wc -w file # 只统计单词数 wc -c file # 只统计字节数5. 网络相关命令5.1 网络连接与测试ping- 测试网络连接ping example.com # 测试与主机的连通性 ping -c 4 example.com # 发送4个包后停止traceroute/tracepath- 显示数据包路径traceroute example.com # 显示到主机的路径 tracepath example.com # 类似traceroute但不需要root权限telnet- 远程登录工具telnet host port # 连接到指定主机的端口curl- 数据传输工具curl http://example.com # 获取网页内容 curl -o file URL # 下载文件保存为file curl -I URL # 只显示HTTP头信息wget- 网络下载工具wget URL # 下载文件 wget -c URL # 断点续传 wget -r URL # 递归下载5.2 网络配置与信息ifconfig/ip- 网络接口配置ifconfig # 显示网络接口信息较旧 ip addr # 显示IP地址信息推荐 ip route # 显示路由表netstat/ss- 网络统计信息netstat -tulnp # 显示监听端口和进程较旧 ss -tulnp # 同上但更快推荐ssh- 安全远程登录ssh userhost # 登录远程主机 ssh -p port userhost # 指定端口登录scp- 安全文件传输scp file userhost:path # 上传文件 scp userhost:file path # 下载文件 scp -r dir userhost:path # 递归传输目录6. Shell 脚本编程基础6.1 脚本基础结构Shell 脚本是以.sh结尾的文本文件第一行通常指定解释器#!/bin/bash # 这是一个注释 echo Hello, World!脚本执行方式chmod x script.sh # 添加执行权限 ./script.sh # 执行脚本 bash script.sh # 直接指定解释器执行6.2 变量与参数变量定义与使用nameJohn # 定义变量 echo $name # 使用变量 echo ${name} # 推荐使用大括号形式特殊变量$0 # 脚本名称 $1, $2, ..., $9 # 位置参数 $# # 参数个数 $* # 所有参数作为一个字符串 $ # 所有参数作为多个字符串 $? # 上一条命令的退出状态 $$ # 当前脚本的PID6.3 条件判断基本语法if [ condition ]; then commands elif [ condition ]; then commands else commands fi常用测试条件[ -f file ] # 文件存在且是普通文件 [ -d dir ] # 目录存在 [ -x file ] # 文件可执行 [ -z string ] # 字符串长度为0 [ -n string ] # 字符串长度非0 [ str1 str2 ] # 字符串相等 [ str1 ! str2 ] # 字符串不等 [ num1 -eq num2 ] # 数值相等 [ num1 -gt num2 ] # 大于 [ num1 -lt num2 ] # 小于6.4 循环结构for 循环for var in list; do commands donewhile 循环while [ condition ]; do commands doneuntil 循环until [ condition ]; do commands done6.5 函数定义函数定义与调用function_name() { commands [return value] } # 调用函数 function_name arg1 arg27. 实用技巧与高级特性7.1 命令组合与重定向管道|command1 | command2 # 将command1的输出作为command2的输入重定向command file # 标准输出重定向到文件覆盖 command file # 标准输出重定向到文件追加 command file # 从文件读取标准输入 command 2 file # 标准错误重定向到文件 command file # 标准输出和错误都重定向到文件命令替换$(command) # 执行命令并用输出替换 command # 同上较旧形式7.2 历史命令与补全历史命令history # 显示命令历史 !n # 执行历史中第n条命令 !! # 执行上一条命令 !string # 执行最近以string开头的命令Tab 补全输入命令或文件名的一部分后按 Tab 键可自动补全按两次 Tab 显示所有可能的补全选项7.3 别名与函数别名alias llls -alF # 创建别名 unalias ll # 删除别名7.4 调试脚本调试选项bash -x script.sh # 打印执行的每一条命令 bash -v script.sh # 打印脚本的每一行 bash -n script.sh # 只检查语法不执行在脚本中设置调试#!/bin/bash set -x # 开启调试 commands set x # 关闭调试7.5 实用小技巧快速返回之前目录cd - # 返回上一个工作目录清空文件内容 file # 快速清空文件创建长路径mkdir -p /path/to/dir # 自动创建所有不存在的父目录查看命令执行时间time command # 显示命令执行时间压缩和解压缩tar -czvf archive.tar.gz dir # 创建gzip压缩包 tar -xzvf archive.tar.gz # 解压gzip压缩包 zip -r archive.zip dir # 创建zip压缩包 unzip archive.zip # 解压zip文件8. 常见问题与解决方案8.1 命令找不到问题当遇到 command not found 错误时检查命令是否拼写错误检查命令是否安装which command # 查看命令路径 type command # 查看命令类型如果命令未安装使用包管理器安装sudo apt install package # Ubuntu/Debian sudo yum install package # CentOS/RHEL8.2 权限问题常见权限错误解决方案使用 sudo 执行需要 root 权限的命令sudo command修改文件权限chmod x file # 添加执行权限 chmod 755 file # 设置常用权限修改文件所有者sudo chown user:group file8.3 脚本执行问题脚本无法执行的可能原因没有执行权限 - 使用chmod x script.sh错误的解释器路径 - 检查 shebang 行#!/bin/bash行尾格式问题Windows vs Unix - 使用dos2unix转换语法错误 - 使用bash -n script.sh检查8.4 环境变量问题环境变量相关命令echo $PATH # 查看PATH环境变量 export VARvalue # 设置环境变量 unset VAR # 删除环境变量 env # 显示所有环境变量添加路径到 PATHexport PATH$PATH:/new/path # 永久生效可添加到 ~/.bashrc 或 ~/.bash_profile8.5 性能问题排查系统性能排查命令top # 查看系统资源使用情况 vmstat 1 # 查看系统整体状态 iostat 1 # 查看磁盘I/O状态 free -h # 查看内存使用情况 df -h # 查看磁盘空间查找高CPU进程ps aux --sort-%cpu | head查找高内存进程ps aux --sort-%mem | head

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑