1. Linux命令入门:为什么需要掌握这些基础?
作为一个从Windows转战Linux的老用户,我清楚地记得第一次面对黑色终端窗口时的茫然无措。与图形界面操作完全不同,Linux的精髓就在于命令行的高效与强大。经过多年的运维工作,我整理出这份最实用的命令手册,特别适合刚接触Linux的朋友快速上手。
Linux命令之所以重要,是因为它们能让你:
- 直接与系统内核对话,执行图形界面无法完成的底层操作
- 通过脚本实现自动化,把重复工作交给计算机
- 在服务器等无图形界面环境中游刃有余
- 深入理解计算机工作原理,提升故障排查能力
提示:学习命令时不要死记硬背,理解每个命令的设计逻辑更重要。比如"ls"代表list,"cd"代表change directory,这种命名规律能帮你更快掌握。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作命令精讲
2.1 基础导航命令
pwd (Print Working Directory)
bash复制$ pwd
/home/username
这个看似简单的命令能告诉你当前所在位置,特别是在多级目录操作时非常有用。我经常在复杂的目录结构中用它确认位置,避免误操作。
ls (List)
bash复制$ ls -lht
total 24K
drwxr-xr-x 2 user user 4.0K Jun 15 10:12 Documents
-rw-r--r-- 1 user user 245 Jun 14 09:30 notes.txt
常用参数组合:
-l长格式显示-h人类可读的文件大小-t按时间排序-a显示隐藏文件
cd (Change Directory)
bash复制$ cd /var/log # 绝对路径
$ cd ../.. # 相对路径
$ cd ~ # 返回家目录
$ cd - # 返回上一个目录
2.2 文件操作三剑客
cp (Copy)
bash复制$ cp source.txt destination/
$ cp -r dir1/ dir2/ # 递归复制目录
常见问题:复制大文件时可以用pv命令显示进度:
bash复制$ pv bigfile.iso > /backup/bigfile.iso
mv (Move/Rename)
bash复制$ mv oldname.txt newname.txt # 重命名
$ mv file.txt /tmp/ # 移动文件
rm (Remove)
bash复制$ rm file.txt
$ rm -rf directory/ # 强制递归删除
警告:rm -rf / 这样的命令会毁灭性删除系统文件,使用时务必确认路径!
2.3 文件查看与编辑
cat (Concatenate)
bash复制$ cat file.txt
$ cat file1.txt file2.txt > combined.txt
less (分页查看器)
bash复制$ less /var/log/syslog
操作技巧:
- 空格键:向下翻页
- b键:向上翻页
- /keyword:搜索
- q键:退出
nano (简单文本编辑器)
bash复制$ nano file.txt
新手友好,底部有常用快捷键提示。
vim (高级文本编辑器)
bash复制$ vim file.txt
基础操作:
- i键:进入插入模式
- ESC键:退出插入模式
- :wq 保存退出
- :q! 不保存强制退出
3. 系统信息与进程管理
3.1 系统状态监控
top (动态进程查看)
bash复制$ top
关键信息解读:
- load average:系统负载(1/5/15分钟)
- %CPU:CPU使用率
- %MEM:内存使用率
- PID:进程ID
htop (增强版top)
bash复制$ sudo apt install htop # Debian/Ubuntu
$ htop
功能更强大,支持鼠标操作和颜色标记。
free (内存使用情况)
bash复制$ free -h
total used free shared buff/cache available
Mem: 7.7G 2.1G 3.2G 345M 2.4G 5.0G
Swap: 2.0G 512M 1.5G
df (磁盘空间)
bash复制$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 15G 33G 32% /
3.2 进程管理
ps (Process Status)
bash复制$ ps aux | grep nginx
常用组合:
aux:显示所有用户进程-ef:完整格式列表
kill (终止进程)
bash复制$ kill -9 1234 # 强制终止PID为1234的进程
信号类型:
-1(HUP):重新加载配置-9(KILL):强制终止-15(TERM):正常终止
4. 网络相关命令实战
4.1 网络配置与诊断
ifconfig (接口配置)
bash复制$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
ip (新版网络工具)
bash复制$ ip addr show
$ ip route
ping (网络连通性测试)
bash复制$ ping -c 4 google.com # 发送4个包后停止
traceroute (路由追踪)
bash复制$ traceroute example.com
4.2 网络工具进阶
netstat (网络统计)
bash复制$ netstat -tulnp # 查看监听端口
ss (Socket Statistics)
bash复制$ ss -tulnp # netstat的现代替代品
wget/curl (网络下载)
bash复制$ wget https://example.com/file.zip
$ curl -O https://example.com/file.zip
5. 权限管理与用户操作
5.1 文件权限
chmod (修改权限)
bash复制$ chmod 755 script.sh # rwxr-xr-x
$ chmod +x script.sh # 添加执行权限
权限数字表示:
- 4:读(r)
- 2:写(w)
- 1:执行(x)
chown (修改所有者)
bash复制$ chown user:group file.txt
5.2 用户与组管理
sudo (超级用户权限)
bash复制$ sudo apt update
useradd/usermod (用户管理)
bash复制$ sudo useradd -m newuser # 创建用户并生成家目录
$ sudo usermod -aG sudo newuser # 添加到sudo组
passwd (修改密码)
bash复制$ passwd # 修改当前用户密码
$ sudo passwd username # 修改其他用户密码
6. 实用工具与技巧
6.1 文本处理三剑客
grep (文本搜索)
bash复制$ grep "error" /var/log/syslog
$ grep -r "function" /path/to/code/ # 递归搜索
awk (文本处理)
bash复制$ awk '{print $1}' access.log # 打印第一列
$ awk -F: '{print $1}' /etc/passwd # 以冒号分隔
sed (流编辑器)
bash复制$ sed 's/foo/bar/g' file.txt # 替换文本
$ sed -i.bak 's/old/new/' file.txt # 直接修改文件并备份
6.2 压缩与归档
tar (打包)
bash复制$ tar -czvf archive.tar.gz dir/ # 创建gzip压缩包
$ tar -xzvf archive.tar.gz # 解压
zip/unzip
bash复制$ zip -r archive.zip dir/
$ unzip archive.zip
6.3 查找命令
find (文件查找)
bash复制$ find / -name "*.conf" # 全盘查找.conf文件
$ find . -type f -mtime -7 # 查找7天内修改过的文件
locate (快速查找)
bash复制$ sudo updatedb # 更新数据库
$ locate nginx.conf
7. 系统管理与维护
7.1 包管理工具
Debian/Ubuntu (apt)
bash复制$ sudo apt update
$ sudo apt install package
$ sudo apt remove package
RHEL/CentOS (yum/dnf)
bash复制$ sudo yum install package
$ sudo dnf remove package
7.2 服务管理
systemctl (系统服务管理)
bash复制$ sudo systemctl start nginx
$ sudo systemctl enable nginx # 开机自启
$ sudo systemctl status nginx
7.3 日志查看
journalctl (系统日志)
bash复制$ journalctl -xe # 查看最新日志
$ journalctl -u nginx --since "2023-06-01" --until "2023-06-15"
tail (实时日志)
bash复制$ tail -f /var/log/nginx/access.log # 实时查看日志更新
8. 实战场景命令组合
8.1 服务器维护示例
查找大文件并清理:
bash复制$ find / -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh
$ sudo rm /var/log/largefile.log
检查磁盘inode使用:
bash复制$ df -i
$ find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
8.2 开发环境配置
创建Python虚拟环境:
bash复制$ python3 -m venv myenv
$ source myenv/bin/activate
安装项目依赖:
bash复制$ pip install -r requirements.txt
8.3 网络调试技巧
检查端口占用:
bash复制$ sudo lsof -i :80
$ sudo netstat -tulnp | grep :80
测试远程端口连通性:
bash复制$ nc -zv example.com 443
$ telnet example.com 80
9. 命令学习进阶建议
- 善用
--help参数:
bash复制$ ls --help
- 查阅man手册:
bash复制$ man ls
- 了解命令类型:
bash复制$ type ls
ls is aliased to `ls --color=auto'
- 查看命令路径:
bash复制$ which python
/usr/bin/python
- 学习Bash快捷键:
- Ctrl+A:行首
- Ctrl+E:行尾
- Ctrl+R:历史命令搜索
- Ctrl+U:删除到行首
- Ctrl+K:删除到行尾
我在实际工作中发现,把这些命令组合成脚本能极大提升效率。比如这个简单的备份脚本:
bash复制#!/bin/bash
# 备份网站目录
backup_dir="/backups/$(date +%Y%m%d)"
mkdir -p $backup_dir
tar -czf "$backup_dir/website.tar.gz" /var/www/html
find /backups/* -mtime +7 -exec rm {} \; # 删除7天前的备份
