Linux 常用指令详解
Linux 操作系统中有大量强大的命令行工具,下面我将分类介绍一些最常用的指令及其用法。
## 文件与目录操作
### 1. ls - 列出目录内容
```
ls [选项] [目录名]
```
常用选项:
- `-l`:长格式显示(详细信息)
- `-a`:显示所有文件(包括隐藏文件)
- `-h`:人类可读的文件大小(配合 -l 使用)
- `-t`:按修改时间排序
- `-r`:反向排序
示例:
```bash
ls -lah /home # 显示/home目录下所有文件的详细信息
```
### 2. cd - 切换目录
```
cd [目录路径]
```
特殊路径:
- `cd ~` 或 `cd`:返回用户主目录
- `cd ..`:返回上级目录
- `cd -`:返回上一次所在的目录
### 3. pwd - 显示当前工作目录
```
pwd
```
### 4. mkdir - 创建目录
```
mkdir [选项] 目录名
```
常用选项:
- `-p`:递归创建所需目录结构
- `-m`:设置目录权限
示例:
```bash
mkdir -p project/{src,doc,bin} # 创建project目录及其子目录
```
### 5. cp - 复制文件/目录
```
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
```
常用选项:
- `-r`:递归复制目录
- `-i`:覆盖前提示
- `-u`:只复制更新的文件
- `-v`:显示复制过程
示例:
```bash
cp -r /home/user/documents /backup/ # 递归复制目录
```
### 6. mv - 移动/重命名文件
```
mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录
```
常用选项:
- `-i`:覆盖前提示
- `-v`:显示移动过程
示例:
```bash
mv oldname.txt newname.txt # 重命名文件
mv *.txt /target/dir/ # 移动所有txt文件
```
### 7. rm - 删除文件/目录
```
rm [选项] 文件...
```
常用选项:
- `-r`:递归删除目录
- `-f`:强制删除,不提示
- `-i`:删除前提示确认
示例:
```bash
rm -rf obsolete_dir/ # 强制递归删除目录(谨慎使用!)
```
### 8. find - 查找文件
```
find [路径] [表达式]
```
常用表达式:
- `-name "pattern"`:按名称查找
- `-type f/d`:查找文件/目录
- `-mtime +n`:查找n天前修改的文件
- `-size +10M`:查找大于10MB的文件
- `-exec command {} \;`:对找到的文件执行命令
示例:
```bash
find /home -name "*.txt" -type f # 查找/home下所有txt文件
find . -mtime -7 -exec ls -l {} \; # 查找7天内修改的文件并列出详细信息
```
### 9. grep - 文本搜索
```
grep [选项] 模式 [文件...]
```
常用选项:
- `-i`:忽略大小写
- `-r`:递归搜索目录
- `-n`:显示行号
- `-v`:反向匹配(不包含模式的行)
- `-l`:只显示包含匹配的文件名
- `-E`:使用扩展正则表达式
示例:
```bash
grep -rn "error" /var/log/ # 递归搜索/var/log/中包含"error"的行
ps aux | grep sshd # 过滤包含sshd的进程
```
## 文件内容查看与处理
### 10. cat - 连接并显示文件内容
```
cat [选项] [文件...]
```
常用选项:
- `-n`:显示行号
- `-b`:显示非空行行号
示例:
```bash
cat file1 file2 > combined # 合并文件
cat -n /etc/passwd # 显示带行号的文件内容
```
### 11. less/more - 分页查看文件
```
less [选项] 文件名
more [选项] 文件名
```
常用操作(less中):
- 空格:下一页
- b:上一页
- /pattern:搜索
- q:退出
### 12. head/tail - 查看文件开头/结尾
```
head [选项] 文件
tail [选项] 文件
```
常用选项:
- `-n NUM`:显示NUM行(默认10)
- `-f`:跟踪文件变化(常用于日志)
示例:
```bash
head -n 20 largefile.log # 显示文件前20行
tail -f /var/log/syslog # 实时查看日志更新
```
### 13. wc - 统计文件内容
```
wc [选项] 文件
```
常用选项:
- `-l`:行数
- `-w`:单词数
- `-c`:字节数
- `-m`:字符数
示例:
```bash
wc -l access.log # 统计文件行数
```
### 14. sort - 排序文件内容
```
sort [选项] 文件
```
常用选项:
- `-n`:按数值排序
- `-r`:逆序排序
- `-k N`:按第N列排序
- `-u`:去重
示例:
```bash
sort -nrk 3 data.txt # 按第三列数值逆序排序
```
### 15. uniq - 报告或忽略重复行
```
uniq [选项] [输入文件 [输出文件]]
```
常用选项:
- `-c`:统计重复次数
- `-d`:只显示重复行
- `-u`:只显示不重复行
通常与sort配合使用:
```bash
sort file.txt | uniq -c # 统计每行出现次数
```
### 16. cut - 提取文件列
```
cut [选项] 文件
```
常用选项:
- `-d DELIM`:指定分隔符(默认为制表符)
- `-f LIST`:选择指定字段
示例:
```bash
cut -d: -f1,7 /etc/passwd # 提取用户名和登录shell
```
### 17. sed - 流编辑器
```
sed [选项] '命令' 文件
```
常用命令:
- `s/pattern/replacement/`:替换
- `d`:删除行
- `p`:打印行
示例:
```bash
sed 's/foo/bar/g' file.txt # 全局替换foo为bar
sed -i.bak 's/old/new/' file # 直接修改文件并备份
```
### 18. awk - 文本处理工具
```
awk '模式 {动作}' 文件
```
常用变量:
- `$0`:整行
- `$1,$2,...`:第1,2,...字段
- `NF`:字段数
- `NR`:当前行号
示例:
```bash
awk -F: '{print $1, $7}' /etc/passwd # 同cut示例
awk '$3 > 100 {print $0}' data.txt # 打印第三列大于100的行
```
## 系统信息与进程管理
### 19. ps - 显示进程状态
```
ps [选项]
```
常用选项组合:
- `aux`:显示所有用户的所有进程
- `-ef`:全格式列表
示例:
```bash
ps aux | grep nginx # 查找nginx进程
```
### 20. top/htop - 动态显示进程信息
```
top
htop # 需要安装,功能更强大
```
常用操作:
- q:退出
- k:杀死进程(输入PID)
- M:按内存排序
- P:按CPU排序
### 21. kill - 终止进程
```
kill [选项] PID...
killall [选项] 进程名...
```
常用选项:
- `-9`:强制终止(SIGKILL)
- `-15`:正常终止(SIGTERM,默认)
示例:
```bash
kill -9 1234 # 强制终止PID为1234的进程
killall -u username # 终止某用户的所有进程
```
### 22. free - 显示内存使用情况
```
free [选项]
```
常用选项:
- `-h`:人类可读格式
- `-m`:以MB为单位
示例:
```bash
free -h # 显示易读的内存信息
```
### 23. df - 显示磁盘空间
```
df [选项] [文件...]
```
常用选项:
- `-h`:人类可读格式
- `-T`:显示文件系统类型
示例:
```bash
df -hT # 显示所有挂载点的磁盘使用情况
```
### 24. du - 估算文件/目录空间使用
```
du [选项] [文件...]
```
常用选项:
- `-h`:人类可读格式
- `-s`:只显示总计
- `--max-depth=N`:显示N级子目录
示例:
```bash
du -sh /var/log/ # 显示/var/log/的总大小
```
### 25. uname - 显示系统信息
```
uname [选项]
```
常用选项:
- `-a`:显示所有信息
- `-r`:内核版本
- `-m`:机器硬件名称
示例:
```bash
uname -a # 显示所有系统信息
```
### 26. uptime - 显示系统运行时间
```
uptime
```
输出示例:
```
10:30:45 up 15 days, 3:25, 2 users, load average: 0.15, 0.10, 0.05
```
## 网络相关
### 27. ifconfig/ip - 网络接口配置
```
ifconfig [接口] [选项] # 传统命令
ip addr show # 现代替代命令
```
示例:
```bash
ifconfig eth0 # 显示eth0接口信息
ip a # 显示所有接口信息
```
### 28. ping - 测试网络连通性
```
ping [选项] 主机名/IP
```
常用选项:
- `-c N`:发送N个包后停止
- `-i N`:设置间隔N秒
示例:
```bash
ping -c 4 google.com # 向google.com发送4个ping包
```
### 29. netstat/ss - 网络统计信息
```
netstat [选项] # 传统命令
ss [选项] # 现代替代命令
```
常用选项:
- `-t`:TCP连接
- `-u`:UDP连接
- `-l`:监听端口
- `-p`:显示进程信息
- `-n`:数字形式显示地址
示例:
```bash
ss -tulnp # 显示所有监听端口及相关进程
```
### 30. traceroute/tracepath - 跟踪路由路径
```
traceroute 主机名/IP
tracepath 主机名/IP # 不需要root权限
```
### 31. wget/curl - 下载工具
```
wget [选项] URL
curl [选项] URL
```
常用选项:
- `-O`:保存到文件(wget)
- `-o FILE`:保存到文件(curl)
- `-L`:跟随重定向
示例:
```bash
wget https://example.com/file.zip
curl -o file.zip https://example.com/file.zip
```
### 32. ssh - 安全远程登录
```
ssh [选项] 用户名@主机 [命令]
```
常用选项:
- `-p 端口`:指定端口
- `-i 密钥文件`:使用指定密钥
示例:
```bash
ssh user@example.com
ssh -p 2222 user@example.com 'ls -l /tmp'
```
## 权限管理
### 33. chmod - 更改文件权限
```
chmod [选项] 模式 文件...
```
模式格式:
- 数字模式:如 `755`
- 符号模式:如 `u+x,g-w,o=r`
示例:
```bash
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # 添加执行权限
```
### 34. chown - 更改文件所有者
```
chown [选项] 用户[:组] 文件...
```
常用选项:
- `-R`:递归更改
示例:
```bash
chown user:group file.txt # 更改所有者和组
chown -R www-data:www-data /var/www # 递归更改
```
### 35. passwd - 更改用户密码
```
passwd [用户名] # 无参数更改当前用户密码
```
## 压缩与归档
### 36. tar - 归档工具
```
tar [选项] 文件...
```
常用选项:
- `-c`:创建归档
- `-x`:提取归档
- `-v`:显示过程
- `-f FILE`:指定归档文件
- `-z`:gzip压缩/解压
- `-j`:bzip2压缩/解压
- `-J`:xz压缩/解压
示例:
```bash
tar -czvf archive.tar.gz dir/ # 创建gzip压缩的归档
tar -xzvf archive.tar.gz # 解压gzip归档
```
### 37. gzip/gunzip - 压缩/解压
```
gzip [选项] 文件...
gunzip [选项] 文件...
```
常用选项:
- `-d`:解压(gzip)
- `-k`:保留原文件
- `-9`:最大压缩
示例:
```bash
gzip -9 largefile.log # 最大压缩
gunzip largefile.log.gz # 解压
```
### 38. zip/unzip - ZIP压缩/解压
```
zip [选项] 压缩包名 文件...
unzip [选项] 压缩包名
```
常用选项:
- `-r`:递归压缩目录
- `-d 目录`:指定解压目录
示例:
```bash
zip -r archive.zip dir/
unzip archive.zip -d target_dir/
```
## 系统管理
### 39. sudo - 以超级用户权限执行命令
```
sudo [选项] 命令
```
常用选项:
- `-i`:切换到root shell
- `-u 用户`:以指定用户身份执行
### 40. su - 切换用户
```
su [选项] [用户名]
```
无参数时切换到root
### 41. useradd/userdel - 添加/删除用户
```
useradd [选项] 用户名
userdel [选项] 用户名
```
常用选项:
- `-m`:创建用户主目录
- `-G 组`:指定附加组
- `-r`:删除用户时同时删除主目录
示例:
```bash
useradd -m -G sudo newuser # 创建有sudo权限的用户
userdel -r olduser # 删除用户及其主目录
```
### 42. groupadd/groupdel - 添加/删除组
```
groupadd [选项] 组名
groupdel 组名
```
### 43. crontab - 定时任务管理
```
crontab [选项]
```
常用选项:
- `-e`:编辑当前用户的crontab
- `-l`:列出当前用户的crontab
- `-r`:删除当前用户的crontab
### 44. systemctl - 系统服务管理
```
systemctl [命令] [服务]
```
常用命令:
- `start`:启动服务
- `stop`:停止服务
- `restart`:重启服务
- `status`:查看服务状态
- `enable`:设置开机启动
- `disable`:禁止开机启动
示例:
```bash
systemctl status nginx # 查看nginx状态
systemctl restart apache2 # 重启apache
```
## 其他实用命令
### 45. alias - 创建命令别名
```
alias 别名='命令'
```
示例:
```bash
alias ll='ls -alF'
```
### 46. history - 查看命令历史
```
history [选项]
```
常用选项:
- `-c`:清除历史
- `-d N`:删除第N条历史
常用操作:
- `!N`:执行历史中第N条命令
- `!!`:执行上一条命令
- `!str`:执行最近以str开头的命令
### 47. which/whereis - 查找命令位置
```
which 命令
whereis [选项] 命令
```
whereis选项:
- `-b`:只查找二进制文件
- `-m`:只查找手册页
### 48. man - 查看命令手册
```
man [章节] 命令
```
常用章节:
- 1:用户命令
- 5:文件格式
- 8:管理员命令
### 49. ln - 创建链接
```
ln [选项] 源文件 目标文件
```
常用选项:
- `-s`:创建符号链接
- `-f`:强制创建
示例:
```bash
ln -s /path/to/file linkname # 创建符号链接
```
### 50. dd - 磁盘/文件转换与复制
```
dd [选项]
```
常用选项:
- `if=FILE`:输入文件
- `of=FILE`:输出文件
- `bs=N`:块大小
- `count=N`:复制N个块
示例:
```bash
dd if=/dev/sda of=disk.img bs=4M # 创建磁盘映像
dd if=/dev/zero of=/swapfile bs=1M count=1024 # 创建1GB交换文件
```
## 总结
以上是Linux中最常用的50个命令及其主要用法。掌握这些命令可以完成大多数日常系统管理任务。要深入了解每个命令,可以使用`man 命令名`查看完整手册。随着使用经验的积累,你会发现Linux命令行工具的强大和高效。