Linux 基础入门命令:介绍 · 参数 · 示例

本文聚焦最常用的“基础入门”命令,按“命令介绍 → 参数含义 → 使用示例”的结构编排,默认使用 bash,如需 root 权限的操作,将以 sudo 开头。

目录与导航

pwd(打印当前工作目录)

  • 命令介绍
    • 显示当前工作目录的绝对路径。
  • 参数含义
    • -L:显示逻辑路径(默认,可能包含符号链接)。
    • -P:显示物理路径(解析符号链接)。
  • 使用实例
  1. pwd # 输出当前目录
  2. pwd -P # 展示真实物理路径(解析软链)
bash复制

ls(列出目录内容)

  • 命令介绍
    • 列出目录中的文件与子目录。
  • 参数含义
    • -a:包含隐藏文件(以 . 开头)。
    • -l:长列表格式(权限、属主、大小、时间)。
    • -h:人类可读的大小(与 -l 联用)。
    • -t:按修改时间排序;-r:反序。
    • -S:按大小排序;
    • -R:递归子目录。
  • 使用实例
  1. ls # 简单列出
  2. ls -alh # 含隐藏、长列表、人类可读大小
  3. ls -ltrh # 按时间倒序(最近修改在底部)
  4. ls -R src # 递归展示 src 下内容
bash复制

cd(切换目录)

  • 命令介绍
    • 切换当前工作目录(Shell 内建命令)。
  • 参数含义
    • 无固定短参;常用特殊路径:-(上一次目录),~(用户主目录),.(当前),..(上一级)。
  • 使用实例
  1. cd /var/log # 切到指定目录
  2. cd - # 返回上一次所在目录
  3. cd ~ # 回到主目录
  4. cd .. # 上一级
bash复制

tree(目录树)

  • 命令介绍
    • 以树形结构显示目录;
    • 如未安装:
      • Ubuntu/Debian:sudo apt install tree;
      • macOS:brew install tree。
  • 参数含义
    • -L N:限制层级深度。
    • -a:显示隐藏文件;-d:仅显示目录。
    • -I PATTERN:忽略匹配的文件/目录(支持通配)。
  • 使用实例
  1. tree -L 2 # 展示两级结构
  2. tree -a -I 'node_modules' # 显示隐藏并忽略 node_modules
  3. tree -d # 仅显示目录
bash复制

文件与目录

touch(创建文件/更新时间戳)

  • 命令介绍
    • 创建空文件或更新文件的访问/修改时间。
  • 参数含义
    • -a:仅更新访问时间;
    • -m:仅更新修改时间。
    • -t [[CC]YY]MMDDhhmm[.ss]:设置时间(GNU/BSD 支持略有差异)。
    • -d 'STRING':按字符串指定时间(GNU)。
  • 使用实例
  1. touch a.text # 创建(或更新时间戳)
  2. touch -a file # 仅更改访问时间
  3. touch -t 202501011230 a.txt # 设置为 2025-01-01 12:30
bash复制

mkdir(创建目录)

  • 命令介绍
    • 创建新目录。
  • 参数含义
    • -p:级联创建(父目录不存在时一并创建)。
    • -m MODE:指定新目录权限(如 755)。
  • 使用实例
  1. mkdir logs
  2. mkdir -p data/images/2025/08
  3. mkdir -m 755 uploads
bash复制

cp(复制文件/目录)

  • 命令介绍
    • 复制文件或目录。
  • 参数含义
    • -r/-R:递归复制目录。
    • -a:归档(尽量保留权限、时间戳、链接等,GNU 推荐)。
    • -i:覆盖前询问;
    • -n:不覆盖已存在;
    • -v:显示过程。
  • 使用实例
  1. cp file.txt /tmp/
  2. cp -r src/ dst/ # 复制目录
  3. cp -av app/ /opt/app_backup # 归档复制,保留属性并显示过程
  4. cp -in config.json config.bak.json # 仅当不存在时复制
bash复制

mv(移动/重命名)

  • 命令介绍
    • 移动文件/目录或重命名。
  • 参数含义
    • -i:覆盖前询问;
    • -n:不覆盖已存在;
    • -v:显示过程。
  • 使用实例
  1. mv old.txt new.txt
  2. mv ./build/* /var/www/app/
  3. mv -iv settings.json settings.backup.json
bash复制

rm(删除)

  • 命令介绍
    • 删除文件或目录(危险操作,务必确认路径与通配)。
  • 参数含义
    • -r/-R:递归删除目录;
    • -f:强制不询问;
    • -v:显示过程。
    • 使用 -- 终止选项解析,避免以 - 开头的文件名被当作参数。
  • 使用实例
  1. rm file.tmp
  2. rm -rf -- cache/* # 强制递归删除(高危)
  3. rm -ri data/ # 递归逐个确认(更安全)
bash复制

ln(链接:硬链接/软链接)

  • 命令介绍
    • 创建硬链接或符号链接(软链接)。硬链接指向同一 inode;软链接是指向路径的快捷方式。
  • 参数含义
    • -s:创建符号链接(软连接)。
    • -f:覆盖已存在目标;
    • -n:把已存在的符号链接视为普通文件(避免穿透)。
  • 使用实例
  1. ln src.bin dst.bin # 硬链接(同一 inode,跨分区不可用)
  2. ln -s /opt/app/bin/app /usr/local/bin/app # 软链接到 PATH 目录
  3. ln -sfn ./config.prod.json ./config.json # 覆盖更新软链
bash复制

查看与阅读文件

cat(连接与输出文件)

  • 命令介绍
    • 将文件内容输出到标准输出,或将多个文件串接输出。
  • 参数含义
    • -n:为所有输出行编号;
    • -b:为非空行编号。
    • -A:显示不可见字符(GNU,等价 -vET)。
  • 使用实例
  1. cat README.md
  2. cat -n file.txt | sed -n '1,10p' # 编号并只看前10行
  3. cat part1.txt part2.txt > all.txt # 拼接输出到新文件
bash复制

less(分页查看)

  • 命令介绍
    • 交互式分页查看大文件,支持搜索与跳转。
  • 参数含义
    • -N:显示行号;
    • -S:长行不换行;
    • -R:保留 ANSI 颜色。
    • 常用按键:/ 搜索,n 下一个,g/G 首/尾,q 退出。
  • 使用实例
  1. less -N app.log
  2. less -SR build.log # 保留颜色并不折行
bash复制

head / tail(文件头/尾)

  • 命令介绍
    • head 显示文件前若干行;
    • tail 显示文件末尾若干行或持续追踪。
  • 参数含义
    • -n N:指定行数;
    • tail -f:跟随追加;
    • tail -F:稳健跟随(文件被轮转也继续)。
  • 使用实例
  1. head -n 20 access.log
  2. tail -n 50 error.log
  3. tail -F /var/log/nginx/access.log | grep --line-buffered -E "(ERROR|WARN)"
bash复制

wc(字数/行数统计)

  • 命令介绍
    • 统计文本的行数、单词数与字节/字符数。
  • 参数含义
    • -l 行数;
    • -w 单词数;
    • -c 字节数;
    • -m 字符数(多字节字符时有差异)。
  • 使用实例
  1. wc -l access.log # 行数
  2. wc -w article.txt # 单词数
  3. cat big.txt | wc -lc # 行与字节统计
bash复制

重定向与管道

重定向(> >> 2> 2>&1)

  • 命令介绍
    • 将标准输出/错误输出重定向到文件或合并输出。
  • 参数含义
    • > 覆盖写入;
    • >> 追加写入。
    • 2> 重定向标准错误;
    • 2>&1 将错误合并到标准输出。
  • 使用实例
  1. echo "build ok" > build.log # 覆盖写入
  2. echo "append" >> build.log # 追加写入
  3. make > out.log 2> err.log # 分开记录 stdout/stderr
  4. make > all.log 2>&1 # 合并输出到同一文件
bash复制

管道与 tee(| tee)

  • 命令介绍
    • 通过 | 将前一命令的输出作为后一命令的输入;
    • tee 可将数据同时写入文件与标准输出。
  • 参数含义
    • tee -a:追加写入;
    • tee 默认为覆盖写入。
  • 使用实例
  1. ps aux | grep nginx | grep -v grep
  2. du -sh * | sort -h | tail -n 20 | tee top20.txt
  3. tail -F app.log | grep --line-buffered "ERROR" | tee -a errors.log
bash复制

网络与连接

ping(测试网络连通性与延迟)

  • 命令介绍
    • 向目标发送 ICMP 回显请求,检测连通性、丢包与往返延迟(RTT)。
  • 参数含义
    • -c N:发送 N 个数据包后退出(Linux/macOS)。
    • -i SEC:发送间隔秒(需要权限时可能受限)。
    • -W TIMEOUT:等待每个响应的超时(Linux 以秒;macOS 以毫秒)。
    • -s SIZE:自定义负载字节数。
  • 使用实例
  1. ping -c 4 8.8.8.8 # 发送 4 个包测试连通性
  2. ping -c 5 -i 0.2 example.com # 0.2s 间隔连发 5 个包
  3. # macOS 超时单位为毫秒,如 -W 2000 表示 2 秒
  4. ping -c 3 -W 2 github.com # Linux:每个包等待 2 秒
bash复制

telnet(测试 TCP 端口连通)

  • 命令介绍
    • 建立到指定主机端口的 TCP 连接,常用于排查端口可达性。
  • 参数含义
    • 语法:telnet HOST PORT(多数平台无复杂短参)。
    • 交互指令:连接后按 Ctrl+] 进入命令模式,输入 quit 退出。
  • 使用实例
  1. telnet example.com 80 # 测试 80 端口
  2. telnet 192.168.1.10 22 # 测试 SSH 端口
bash复制
  • 提示:macOS 较新系统可能无 telnet,可使用:
    • brew install telnet 安装

curl(HTTP(S) 请求与调试)

  • 命令介绍
    • 强大的命令行客户端,支持多协议;常用于接口调试、下载与脚本化请求。
  • 参数含义
    • -I:仅获取响应头;
    • -v:详尽调试信息;
    • -s 静默;
    • -S 显示错误;
    • -L 跟随跳转;
    • -f 遇 HTTP 错误码退出非 0。
    • -X:指定方法;
    • -d:发送数据(默认 application/x-www-form-urlencoded)。
    • -H:设置请求头;
    • -H 'Content-Type: application/json' 配合 -d 发送 JSON;
    • -F 表单上传;
    • -o/-O 输出到文件;
    • --retry N 重试;
    • --connect-timeout 秒 连接超时。
  • 使用实例
  1. # 仅看响应头,确认状态码、缓存与跳转等
  2. curl -I https://example.com
  3. # 静默、失败非零、跟随跳转并保存到文件
  4. curl -fsSL https://example.com/install.sh -o install.sh
  5. # 发送 JSON 请求体
  6. curl -X POST -H 'Content-Type: application/json' \
  7. -d '{"name":"jinbo"}' https://api.example.com/users
  8. # 自定义请求头与查询参数
  9. curl -H 'Accept: application/json' 'https://api.example.com/items?page=1'
  10. # -L 跟随跳转;-O 以原文件名保存
  11. curl -LO https://releases.example.com/app.tar.gz
bash复制

查找与进程

find(按条件查找并对结果执行操作)

  • 命令介绍
    • 基于名称、类型、大小、时间等在目录树中查找文件,并可配合 -exec/xargs 进行批处理。
  • 参数含义
    • -name/-iname PATTERN:按名称/忽略大小写匹配(支持通配 * ? )。
    • -type f|d:按文件/目录过滤;
    • -size +100M:按大小过滤;
    • -mtime +/-N:按修改时间(天)。
    • -maxdepth N:限制搜索深度;
    • -path 与 -prune:排除路径;
    • -print0:以 NUL 分隔输出,便于配合 xargs -0。
    • -exec CMD {} ; 对每个结果执行;-exec CMD {} + 批量执行。
  • 使用实例
  1. # 删除 7 天前且超过 10MB 的日志(谨慎)
  2. find . -name "*.log" -type f -mtime +7 -size +10M -delete
  3. # 排除 node_modules,查找所有 .js 文件
  4. find . -path "./node_modules" -prune -o -name "*.js" -print
  5. # 安全处理包含空格的文件名
  6. find /var/www -type f -iname "*.png" -print0 | xargs -0 -I{} mv {} /backup/img/
  7. # 对查到的目录逐个执行 du -sh
  8. find . -maxdepth 2 -type d -name "dist" -exec du -sh {} \;
bash复制

ps(查看进程)

  • 命令介绍
    • 列出系统中的进程信息,可按用户、TTY、CPU/内存等筛选与排序;常与 grep 配合定位目标进程。
  • 参数含义
    • 常见格式(GNU/BSD 通用):
      • ps aux:显示所有进程(a: 所有终端,u: 用户格式,x: 无控制终端)。
      • ps -ef:SysV 风格全量列表(在多数系统同样可用)。
    • -o COLS:自定义输出列(pid,ppid,user,pcpu,pmem,etime,cmd 等)。
    • --sort KEY:排序(如 --sort=-%cpu 或 --sort=-rss)。
  • 使用实例
  1. # 查找包含 nginx 的进程,正则写法避免匹配到自身的 grep 进程
  2. ps aux | grep '[n]ginx'
  3. # 自定义列并按 CPU 使用率倒序
  4. ps -eo pid,ppid,user,%cpu,%mem,etime,cmd --sort=-%cpu | head
  5. # 查看当前用户最占内存的进程
  6. ps -u $USER -o pid,%cpu,%mem,cmd --sort=-%mem | head
bash复制
编程笔记 & 随笔杂谈