目录

  1. 哲学与核心概念 (Philosophy & Core Concepts)
    • 一切皆文件 (Everything is a File)
    • 管道 (|)、重定向 (>, >>, <)
    • 命令链 (&&, ||)
    • 通配符 (*, ?, [])
  2. 文件与目录管理 (File & Directory Management)
    • ls, cd, pwd, mkdir, rm, cp, mv, touch, find, ln
  3. 文本处理与查看 (Text Processing & Viewing)
    • cat, less, more, head, tail, grep, sed, awk, wc, diff
  4. 系统信息与监控 (System Information & Monitoring)
    • uname, df, du, free, top, htop, ps, uptime, lscpu, lsblk
  5. 进程管理 (Process Management)
    • ps, kill, pkill, killall, nice, renice, jobs, fg, bg
  6. 用户与权限管理 (User & Permission Management)
    • whoami, who, w, id, sudo, su, useradd, usermod, userdel, passwd, chmod, chown
  7. 网络工具 (Networking Tools)
    • ping, ip, ifconfig (旧), ss, netstat (旧), ssh, scp, rsync, curl, wget, dig, host
  8. 软件包管理 (Software Package Management)
    • apt (Debian/Ubuntu), dnf/yum (RHEL/CentOS/Fedora), pacman (Arch)
  9. 归档与压缩 (Archiving & Compression)
    • tar, gzip, gunzip, zip, unzip
  10. 系统管理与服务 (System Administration & Services)
    • systemctl, journalctl, cron, crontab, dmesg, lsof
  11. Shell 高级技巧 (Advanced Shell Skills)
    • history, alias, xargs, man, tldr, apropos

1. 哲学与核心概念 (Philosophy & Core Concepts)

理解这些概念比记住一百个孤立的命令更重要。

  • 一切皆文件 (Everything is a File): 在 Linux 中,硬件设备(如硬盘、键盘)、网络连接(套接字)、甚至进程信息都被抽象为文件,存放在文件系统中。这使得你可以用同样一套工具(如 cat, echo)来与它们交互。
  • 管道 (|): 将一个命令的 标准输出 (stdout) 连接到另一个命令的 标准输入 (stdin)。这是 Linux 命令行强大的组合能力的基石。
    • 示例: ps aux | grep nginx (列出所有进程,然后从中筛选出包含 “nginx” 的行)
  • 重定向 (>, >>, <):
    • >: 将命令的输出 覆盖写入 到一个文件。ls -l > file_list.txt
    • >>: 将命令的输出 追加 到一个文件的末尾。echo "New log entry" >> app.log
    • <: 将文件的内容作为命令的输入。sort < names.txt
    • 2>: 重定向 标准错误 (stderr)find / -name "secret" 2> /dev/null (查找文件,并将所有 “Permission denied” 等错误信息丢弃)
  • 命令链 (&&, ||):
    • &&: 逻辑与。只有前一个命令成功执行 (返回码为 0),后一个命令才会执行。
      • 示例: mkdir -p new_dir && cd new_dir (成功创建目录后,再进入该目录)
    • ||: 逻辑或。只有前一个命令执行失败 (返回码非 0),后一个命令才会执行。
      • 示例: ping -c 1 google.com || echo "Network is down" (如果 ping 不通,则提示网络故障)
  • 通配符 (Wildcards):
    • *: 匹配零个或多个任意字符。rm *.tmp (删除所有以 .tmp 结尾的文件)
    • ?: 匹配一个任意字符。ls ?.log (匹配 a.log, b.log 但不匹配 ab.log)
    • []: 匹配括号内的任意一个字符。ls [abc].txt (匹配 a.txt, b.txt, c.txt)

2. 文件与目录管理 (File & Directory Management)

命令 功能描述 核心选项 实用示例
ls 列出目录内容 -l (长格式), -a (所有文件), -h (人类可读大小), -t (按时间排序), -R (递归) ls -alh: 以易读方式列出包括隐藏文件在内的所有文件的详细信息。
cd 切换目录 ~ (家目录), . (当前目录), .. (上级目录), - (上一个工作目录) cd ~/Documents/work: 切换到家目录下的 Documents/work
pwd 显示当前工作目录 pwd: 显示 /home/user/project
mkdir 创建目录 -p: 递归创建父目录 mkdir -p project/src/main: 即使 projectsrc 不存在,也会一并创建。
rm 删除文件或目录 -r (递归删除), -f (强制删除,无提示), -i (交互式) rm -rf old_project: 极其危险! 强制递归删除整个目录。
cp 复制文件或目录 -r (递归复制目录), -p (保留属性) cp -r source_dir/ target_dir/: 将 source_dir 整个复制到 target_dir 下。
mv 移动或重命名文件/目录 mv old_name.txt new_name.txt: 重命名。mv file.txt ../backup/: 移动文件。
touch 创建空文件或更新时间戳 -a (只改访问时间), -m (只改修改时间) touch new_file.log: 创建一个空文件。
find 在目录中查找文件 -name, -type, -size, -mtime, -user, -exec find /var/log -name "*.log" -mtime -7: 查找 /var/log 下 7 天内修改过的 .log 文件。
find . -type f -name "*.py" -exec wc -l {} \;: 查找所有 .py 文件并计算行数。
ln 创建链接 -s: 创建符号链接(软链接) ln -s /var/log/app.log ~/app.log: 创建一个软链接,方便快速访问日志文件。

3. 文本处理与查看 (Text Processing & Viewing)

命令 功能描述 核心选项 实用示例
cat 查看、合并文件内容 -n: 显示行号 cat file1.txt file2.txt > merged.txt: 合并两个文件。
less 分页查看文件内容 (交互式): g (到头), G (到尾), / (搜索), q (退出) less /var/log/syslog: 交互式查看系统日志。
head 查看文件头部 -n [num]: 查看前 num head -n 20 large_file.csv: 查看 CSV 文件的前 20 行。
tail 查看文件尾部 -n [num]: 查看后 num 行, -f: 实时跟踪文件更新 tail -f /var/log/nginx/access.log: 实时监控 Nginx 访问日志。
grep 文本搜索 -i (忽略大小写), -r (递归), -v (反向匹配), -n (显示行号), -C [num] (上下文) grep -rin "error" /var/log/: 在 /var/log 目录中递归、不区分大小写地搜索 “error” 并显示行号。
sed 流编辑器,用于文本替换 s/old/new/g sed 's/localhost/127.0.0.1/g' config.txt: 将 config.txt 中的所有 “localhost” 替换为 “127.0.0.1”。
awk 强大的文本分析工具 -F (指定分隔符), print ps aux | awk '{print 2,11}': 打印出所有进程的 PID (第2列) 和命令名 (第11列)。
wc 统计字数、行数、字符数 -l (行数), -w (单词数), -c (字节数) wc -l file.txt: 统计文件行数。
diff 比较文件差异 -u (统一格式), -r (递归) diff -u old_config.conf new_config.conf: 以统一格式比较两个配置文件的差异。

4. 系统信息与监控 (System Information & Monitoring)

命令 功能描述 核心选项 实用示例
uname 显示系统信息 -a: 显示所有信息 uname -a: 显示内核名称、主机名、内核版本等。
df 显示磁盘空间使用情况 -h: 人类可读格式, -i: 显示 inode 信息 df -h: 查看各挂载点的空间使用情况。
du 显示目录或文件大小 -h: 人类可读格式, -s: 只显示总大小, --max-depth=N du -sh /var/log: 查看 /var/log 目录的总大小。
free 显示内存使用情况 -h: 人类可读格式, -g: 以 GB 为单位 free -h: 查看总内存、已用、可用内存等。
top 实时动态显示进程活动 (交互式): P (CPU排序), M (内存排序), k (杀进程) top: 打开一个实时监控系统状态的仪表盘。
htop top 的增强版,更友好 (交互式,功能更强) htop: 如果安装了,强烈推荐使用它代替 top
ps 显示当前进程的快照 aux (BSD风格), -ef (System V风格) ps aux | grep sshd: 查看所有 sshd 相关的进程。
uptime 显示系统运行时间及负载 uptime: 查看系统已运行多久,以及 1、5、15 分钟的平均负载。
lscpu 显示 CPU 架构信息 lscpu: 查看 CPU 型号、核心数、线程数、缓存等。
lsblk 列出块设备信息 lsblk: 查看硬盘及其分区信息,比 df 更底层。

5. 进程管理 (Process Management)

命令 功能描述 核心选项 实用示例
kill 向进程发送信号 -9 (SIGKILL, 强制), -15 (SIGTERM, 正常终止) kill 1234: 正常终止 PID 为 1234 的进程。
kill -9 1234: 强制杀死 PID 为 1234 的进程。
pkill 按名称或其他属性杀进程 -f: 匹配完整命令行 pkill -9 -f "python my_app.py": 强制杀死所有运行 “python my_app.py” 的进程。
killall 按进程名杀死所有同名进程 killall firefox: 杀死所有名为 firefox 的进程。
jobs 列出在后台运行的作业 jobs: 查看通过 Ctrl+Z& 放到后台的任务。
bg 将暂停的作业转到后台运行 bg %1: 将第一个作业(见jobs)放到后台继续运行。
fg 将后台作业转到前台运行 fg %1: 将第一个作业(见jobs)调回到前台。

6. 用户与权限管理 (User & Permission Management)

命令 功能描述 核心选项 实用示例
id 显示用户 ID 和组 ID id nginx: 查看 nginx 用户的 uid, gid 及所属用户组。
sudo 以其他用户(默认root)身份执行命令 -i (切换到root的shell), -u [user] sudo apt update: 以 root 权限更新软件包列表。
su 切换用户 --l: 切换用户并加载其环境 su - postgres: 切换到 postgres 用户并获得其完整的登录环境。
chmod 修改文件/目录权限 u (user), g (group), o (other), a (all), + (加), - (减), xwr (权限), -R (递归) chmod 755 script.sh: 设置脚本权限为 rwxr-xr-x
chmod u+x script.sh: 为文件所有者添加执行权限。
chmod -R 644 /var/www/html: 递归设置网站目录文件权限。
chown 修改文件/目录的所有者和组 -R (递归) chown www-data:www-data config.php: 将文件所有者和组都改为 www-data
chown -R user:group /data/project: 递归修改整个目录的所有权。

7. 网络工具 (Networking Tools)

命令 功能描述 核心选项 实用示例
ping 测试网络连通性 -c [count]: 发送次数 ping -c 4 8.8.8.8: 向谷歌 DNS 发送 4 个 ICMP 包。
ip 现代网络配置工具 addr, route, link ip addr show: 查看所有网络接口的 IP 地址。
ip route: 查看路由表。
ss 现代套接字统计工具 -t (TCP), -u (UDP), -l (监听), -n (数字地址), -p (进程) ss -tulnp: 显示所有正在监听的 TCP/UDP 端口及其对应的进程。
ssh 安全远程登录 -p [port], -i [keyfile] ssh user@remote_host: 登录到远程主机。
ssh -i ~/.ssh/id_rsa -p 2222 user@host: 使用指定密钥和端口登录。
scp 安全远程复制 -r (递归), -P [port] scp file.txt user@host:/remote/path/: 将本地文件复制到远程。
scp -r user@host:/remote/dir ./local/dir: 将远程目录复制到本地。
rsync 增量文件同步,更强大 -a (归档), -v (详细), -z (压缩), --delete rsync -avz --delete local_dir/ user@host:/remote/dir/: 将本地目录高效、增量同步到远程,并删除远程多余的文件。
curl URL 传输工具,功能强大 -I (头信息), -L (跟随重定向), -o (输出到文件) curl -L https://example.com: 获取网页内容。
curl -s 'http://api.service/user?id=123': 静默模式请求 API。
wget 网络下载器 -c (断点续传), -O (指定输出文件名) wget -c https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso: 下载大文件,支持续传。
dig DNS 查询工具 ANY, MX, A dig google.com: 查询 google.com 的 A 记录。
dig MX google.com: 查询谷歌的邮件交换记录。

8. 软件包管理 (Software Package Management)

系统 命令 常用操作
Debian/Ubuntu apt sudo apt update (更新列表)
sudo apt upgrade (升级已安装的包)
sudo apt install [pkg] (安装)
sudo apt remove [pkg] (卸载)
apt search [keyword] (搜索)
RHEL/CentOS/Fedora dnf (新) / yum (旧) sudo dnf check-update
sudo dnf upgrade
sudo dnf install [pkg]
sudo dnf remove [pkg]
dnf search [keyword]
Arch Linux pacman sudo pacman -Syu (更新系统)
sudo pacman -S [pkg] (安装)
sudo pacman -Rns [pkg] (卸载)
pacman -Ss [keyword] (搜索)

9. 归档与压缩 (Archiving & Compression)

命令 功能描述 核心选项 实用示例
tar 打包/解包 .tar 文件 c (创建), x (解压), v (详细), f (文件), z (gzip), j (bzip2) 打包: tar -czvf archive.tar.gz /path/to/dir
解包: tar -xzvf archive.tar.gz
gzip 压缩/解压 .gz 文件 -d: 解压 gzip file.txt: 压缩成 file.txt.gz
gunzip file.txt.gz: 解压。
zip 创建 .zip 压缩包 -r: 递归 zip -r archive.zip directory/
unzip 解压 .zip 压缩包 -d [dir]: 指定解压目录 unzip archive.zip -d /path/to/extract

10. 系统管理与服务 (System Administration & Services)

命令 功能描述 核心选项 实用示例
systemctl 管理 systemd 服务 start, stop, restart, status, enable, disable sudo systemctl status nginx: 查看 nginx 服务状态。
sudo systemctl enable --now sshd: 立即启动 sshd 并设置开机自启。
journalctl 查看 systemd 日志 -u [service], -f (跟踪), --since, --until journalctl -u nginx.service --since "1 hour ago": 查看 nginx 服务过去一小时的日志。
cron / crontab 定时任务 crontab -e (编辑), crontab -l (列表) crontab -e 然后添加 0 2 * * * /path/to/backup.sh (每天凌晨2点执行备份脚本)。
dmesg 显示内核环形缓冲区信息 -H (人类可读格式) dmesg -H | grep -i error: 查看内核启动信息中的错误。
lsof 列出打开的文件 -i (网络连接), -p [pid] sudo lsof -i :80: 查看哪个进程占用了 80 端口。

11. Shell 高级技巧 (Advanced Shell Skills)

  • history: 显示命令历史。
    • !N: 执行历史中第 N 条命令。
    • !!: 执行上一条命令 (sudo !! 非常常用)。
    • Ctrl+R: 反向搜索历史命令。
  • alias: 创建命令别名。
    • 示例: alias ll='ls -alh' (在 .bashrc.zshrc 中设置以永久生效)。
  • xargs: 从标准输入构建和执行命令行。
    • 示例: find . -name "*.log" | xargs rm: 查找所有 .log 文件并删除它们(比 -exec 更高效)。
  • man: 查看命令的详细手册页。 man ls
  • tldr: “Too Long; Didn’t Read.” 社区维护的、简化的 man pages,提供实用范例。 tldr tar
  • aproposman -k: 根据关键词搜索 man pages。 apropos "copy files"

最终建议 (Final Advice)

  1. 多用 Tab 键: 自动补全命令、文件名和路径,是效率的源泉。
  2. 不要害怕 man: man 手册是第一手、最权威的文档。
  3. 实践出真知: 在虚拟机或安全的测试环境中大胆尝试,尤其是 rm, chmod, chown 等命令。
  4. 组合命令: Linux 命令行的真正威力在于通过管道和重定向将简单的工具组合起来,完成复杂的任务。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。