1. 命令行操作基础认知
刚接触计算机操作系统的朋友,往往会对黑底白字的命令行界面感到陌生甚至畏惧。但命令行(Command Line Interface,CLI)实际上是所有操作系统最核心的交互方式,它就像是我们与计算机进行"深度对话"的专用语言。与图形界面相比,命令行操作具有几个不可替代的优势:执行效率高(无需加载图形元素)、资源占用低(特别适合老旧设备)、可脚本化(能批量执行复杂任务)以及远程管理便捷(通过SSH等协议)。
在Windows系统中,我们主要使用命令提示符(cmd.exe)和PowerShell;而在Linux/Unix/macOS等类Unix系统中,则主要使用Bash、Zsh等Shell环境。虽然不同系统的命令语法有所差异,但核心逻辑是相通的。掌握这些基础命令,就相当于获得了操作系统的"万能钥匙"。
提示:初学者常见误区是试图一次性记住所有命令参数。实际上,专业运维人员也经常需要查阅手册。关键是要理解命令的底层逻辑,具体参数可以在使用时通过
--help或man命令实时查询。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件系统导航与管理
2.1 目录切换与查看
pwd(Print Working Directory)是每个命令行会话的起点,它像GPS一样告诉你当前所处的目录位置。比如在Linux终端输入:
bash复制$ pwd
/home/username/projects
ls命令则是你的"电子眼",用于查看目录内容。加上-l参数可以显示详细信息,-a显示隐藏文件(以点开头的文件),-h让文件大小以易读格式显示:
bash复制$ ls -lah
total 24K
drwxr-xr-x 5 user user 4.0K Jun 15 10:30 .
drwxr-xr-x 18 user user 4.0K Jun 14 09:15 ..
-rw-r--r-- 1 user user 220 Jun 10 2022 .bash_logout
-rw-r--r-- 1 user user 3.7K Jun 10 2022 .bashrc
drwxrwxr-x 2 user user 4.0K Jun 12 14:20 documents
cd命令是导航核心,使用技巧包括:
cd ~返回用户主目录cd -返回上一个目录cd ../..向上移动两级目录- 使用Tab键自动补全路径名
2.2 文件操作四件套
cp(复制)、mv(移动/重命名)、rm(删除)和touch(创建空文件/更新时间戳)构成了文件操作的基础工具集。需要特别注意:
cp -r用于递归复制目录mv在同一个目录下使用就是重命名rm -rf是危险组合(强制递归删除),使用前务必确认路径touch常用于触发构建系统重新编译特定文件
示例:批量创建测试文件并归档
bash复制$ mkdir test_archive && cd test_archive
$ for i in {1..5}; do touch "report_${i}.txt"; done
$ ls
report_1.txt report_2.txt report_3.txt report_4.txt report_5.txt
$ tar -czvf reports.tar.gz *.txt
3. 文本处理与查看
3.1 基础文本查看命令
cat虽然简单,但在查看小型配置文件时非常高效。而more和less则是分页查看器,后者支持上下滚动和搜索(按/键开始搜索,n下一个匹配项)。
head和tail这对命令特别适合查看日志文件的开头或结尾。tail -f更是监控日志实时更新的神器:
bash复制$ tail -f /var/log/syslog
Jun 15 11:30:01 hostname systemd[1]: Started Daily apt upgrade and clean activities.
Jun 15 11:30:05 hostname dbus-daemon[1234]: [system] Successfully activated service 'org.freedesktop.PackageKit'
3.2 文本处理三剑客
grep、awk和sed构成了命令行文本处理的"三驾马车"。
grep基础用法:
bash复制# 查找包含"error"的行(忽略大小写)
$ grep -i "error" system.log
# 显示匹配行及前后3行上下文
$ grep -C 3 "critical" application.log
# 使用正则表达式匹配IP地址
$ grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" access.log
awk的典型字段处理:
bash复制# 打印passwd文件中所有用户的shell类型(第7列)
$ awk -F: '{print $7}' /etc/passwd | sort | uniq -c
# 计算CSV文件第二列的总和
$ awk -F, '{sum+=$2} END {print sum}' data.csv
sed的流编辑能力:
bash复制# 替换文件中所有旧字符串为新字符串(原地修改)
$ sed -i 's/old_string/new_string/g' config.ini
# 删除文件中的空行
$ sed '/^$/d' input.txt > cleaned.txt
4. 系统监控与进程管理
4.1 资源监控命令
top是实时系统监控的首选工具,其交互界面中:
- 按
M按内存排序 - 按
P按CPU排序 - 按
1显示所有CPU核心详情 - 按
q退出
htop是top的增强版,支持鼠标操作和彩色显示。df -h查看磁盘空间,free -h查看内存使用情况。
4.2 进程管理实践
ps命令的参数风格有BSD和UNIX两种,推荐使用ps aux查看所有进程:
bash复制$ ps aux | grep nginx
root 1234 0.0 0.5 12345 6789 ? Ss Jun14 0:15 nginx: master process
www-data 5678 0.0 0.3 23456 4321 ? S Jun14 0:05 nginx: worker process
进程管理常见操作:
bash复制# 优雅地停止进程(发送SIGTERM)
$ kill 1234
# 强制杀死进程(发送SIGKILL)
$ kill -9 1234
# 按名称杀死所有匹配进程
$ pkill -f "python script.py"
# 调整进程优先级(nice值范围-20到19)
$ nice -n 10 ./cpu_intensive_task.sh
5. 网络诊断与数据传输
5.1 网络状态检查
ping是最基础的网络连通性测试工具,但生产环境中更常用curl进行应用层检测:
bash复制# 检查HTTP服务是否正常(只显示响应头)
$ curl -I https://example.com
HTTP/2 200
content-type: text/html; charset=UTF-8
server: nginx
date: Thu, 15 Jun 2023 04:00:00 GMT
netstat或ss查看网络连接状态:
bash复制# 查看所有TCP监听端口
$ ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
5.2 安全文件传输
scp是加密文件传输的标准工具,基本语法:
bash复制# 本地→远程
$ scp backup.tar.gz user@remote:/path/to/dest
# 远程→本地
$ scp user@remote:/path/to/file ./local_dir
# 递归传输目录(-r)
$ scp -r project_dir user@remote:~/backups/
# 使用特定端口(-P)
$ scp -P 2222 config.ini user@remote:/etc/app/
对于大量小文件,rsync是更好的选择,它支持增量传输和断点续传:
bash复制$ rsync -avz --progress /local/path/ user@remote:/remote/path/
sending incremental file list
./
file1.txt
128 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=4/6)
file2.pdf
2.56M 100% 2.44MB/s 0:00:01
6. 权限管理与用户控制
6.1 文件权限详解
Linux权限系统使用chmod、chown和chgrp进行管理。理解权限表示法至关重要:
- 字母表示:u(user)、g(group)、o(other)、a(all)
- 运算符:+(添加)、-(移除)、=(设置)
- 权限:r(读)、w(写)、x(执行)
示例:
bash复制# 给所有者添加执行权限
$ chmod u+x script.sh
# 递归设置目录权限(所有者读写执行,组读执行,其他无权限)
$ chmod -R 750 /sensitive/data/
# 修改文件所有者和组
$ chown user:developers app_config.ini
6.2 用户与组管理
useradd和usermod用于用户管理,passwd设置密码:
bash复制# 创建系统用户(-r)并指定家目录(-d)和shell(-s)
$ useradd -r -d /opt/service -s /bin/false service_account
# 修改用户附加组(-aG表示追加,不加-a会覆盖原有组)
$ usermod -aG docker,developers username
# 设置密码(会提示输入)
$ passwd username
sudo配置是权限管理的核心,通过visudo命令安全编辑/etc/sudoers文件。典型配置示例:
code复制# 允许developers组成员无需密码执行特定命令
%developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/apt update
7. 实用技巧与高效工作流
7.1 命令组合与管道
管道(|)是命令行最强大的特性之一,它允许将一个命令的输出作为另一个命令的输入。典型用法:
bash复制# 统计当前目录下.py文件的行数总和
$ find . -name "*.py" | xargs wc -l | tail -n 1
# 查看占用内存最多的5个进程
$ ps aux | sort -nk +4 | tail -5
# 批量重命名文件(将空格替换为下划线)
$ for f in *\ *; do mv "$f" "${f// /_}"; done
7.2 历史命令与别名
history命令配合!调用历史命令:
!!重复上一条命令!$上条命令的最后一个参数!ssh执行最近以ssh开头的命令
alias可以创建快捷命令:
bash复制# 添加到~/.bashrc或~/.zshrc
alias ll='ls -alFh'
alias grep='grep --color=auto'
alias update='sudo apt update && sudo apt upgrade -y'
alias ports='netstat -tulnp | grep -i listen'
7.3 输入输出重定向
重定向操作符:
>覆盖输出到文件>>追加输出到文件2>重定向错误输出&>重定向所有输出
实用示例:
bash复制# 将命令输出和错误分别记录到不同文件
$ ./script.sh > output.log 2> error.log
# 将标准输出和错误合并重定向
$ make &> build.log
# 将文件内容作为命令输入
$ grep "pattern" < input.txt
8. 常见问题排查指南
8.1 命令找不到的解决方案
当遇到"command not found"错误时,排查步骤:
- 检查命令拼写是否正确
- 使用
which或type确认命令位置bash复制$ which python /usr/bin/python - 检查
$PATH环境变量是否包含命令所在目录bash复制$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - 对于脚本文件,确保有执行权限(
chmod +x)
8.2 权限被拒绝处理
遇到"Permission denied"时的检查清单:
- 当前用户对目标文件/目录是否有足够权限(
ls -l查看) - 如果是脚本,是否设置了可执行权限
- 如果是目录,是否设置了可执行权限(目录的执行权限代表可进入)
- SELinux/AppArmor等安全模块是否阻止了操作
bash复制# 检查SELinux状态 $ getenforce Enforcing
8.3 磁盘空间不足处理
快速定位大文件的几种方法:
bash复制# 查看磁盘总体使用情况
$ df -h
# 查找当前目录下大于100M的文件
$ find . -type f -size +100M -exec ls -lh {} \;
# 按大小排序显示目录占用空间
$ du -sh * | sort -h
# 特别有用的ncdu工具(需安装)
$ ncdu /
9. 进阶学习路径建议
掌握基础命令后,可以逐步学习以下进阶主题:
-
Shell脚本编程:变量、条件判断、循环、函数等
bash复制#!/bin/bash backup_dir="/var/backups" max_keep=7 [ ! -d "$backup_dir" ] && mkdir -p "$backup_dir" tar -czf "${backup_dir}/backup_$(date +%Y%m%d).tar.gz" /important/data find "$backup_dir" -name "backup_*.tar.gz" -type f -mtime +$max_keep -delete -
正则表达式:更强大的文本模式匹配能力
-
SSH高级用法:密钥认证、端口转发、配置管理
-
版本控制系统:Git命令行操作
-
容器化工具:Docker/Podman命令行接口
建议每天花10分钟练习几个命令的组合使用,遇到问题时优先尝试用命令行解决。随着时间的推移,这些命令会成为你的第二本能,极大提升工作效率。
