前言
作为一名开发者,掌握Linux命令是必备技能之一。无论你是刚接触Linux的新手,还是想要系统梳理命令知识的老司机,这篇文章都能为你提供实用的参考。我将结合实际工作场景,介绍那些真正高频使用的Linux命令。
文件和目录操作
基础导航命令
pwd - 显示当前工作目录
pwd
# 输出:/home/coldscholor/project
ls - 列出目录内容
ls -la # 详细列表,包含隐藏文件
ls -lh # 人性化显示文件大小
ls -lt # 按修改时间排序
cd - 切换目录
cd /path/to/directory # 绝对路径
cd ../ # 返回上级目录
cd ~ # 回到家目录
cd - # 返回上一个工作目录
文件操作命令
mkdir - 创建目录
mkdir newdir # 创建单个目录
mkdir -p path/to/newdir # 递归创建多级目录
mkdir {dir1,dir2,dir3} # 批量创建目录
cp - 复制文件或目录
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
cp -p file1 file2 # 保持原文件属性
mv - 移动或重命名文件
mv oldname newname # 重命名文件
mv file /path/to/dest/ # 移动文件到指定目录
rm - 删除文件或目录
rm file # 删除文件
rm -r directory # 递归删除目录
rm -f file # 强制删除,不提示
rm -rf directory # 强制递归删除(请谨慎使用!)
文件内容查看和编辑
查看文件内容
cat - 显示文件全部内容
cat file.txt
cat -n file.txt # 显示行号
less/more - 分页查看文件
less file.txt # 推荐使用less,功能更强大
# 在less中:空格键向下翻页,b键向上翻页,q键退出
head/tail - 查看文件开头或结尾
head -n 10 file.txt # 显示前10行
tail -n 20 file.txt # 显示后20行
tail -f log.txt # 实时监控文件变化(查看日志神器)
文本处理
grep - 文本搜索
grep "pattern" file.txt # 在文件中搜索模式
grep -r "pattern" directory/ # 递归搜索目录
grep -i "pattern" file.txt # 忽略大小写
grep -n "pattern" file.txt # 显示行号
grep -v "pattern" file.txt # 显示不匹配的行
sed - 流编辑器
sed 's/old/new/g' file.txt # 替换文本(不修改原文件)
sed -i 's/old/new/g' file.txt # 直接修改原文件
sed -n '1,10p' file.txt # 显示第1-10行
awk - 文本处理工具
awk '{print $1}' file.txt # 打印第一列
awk -F: '{print $1,$3}' /etc/passwd # 指定分隔符,打印第1和第3列
系统监控和进程管理
进程管理
ps - 查看进程
ps aux # 显示所有进程详细信息
ps -ef | grep process # 查找特定进程
top - 实时监控系统
top # 实时显示系统资源使用情况
htop # 更美观的top替代品(需要安装)
kill - 终止进程
kill PID # 正常终止进程
kill -9 PID # 强制终止进程
killall process_name # 根据进程名终止进程
系统信息
df - 查看磁盘使用情况
df -h # 人性化显示磁盘使用情况
df -i # 显示inode使用情况
du - 查看目录大小
du -sh directory # 显示目录总大小
du -h --max-depth=1 # 显示当前目录下各子目录大小
free - 查看内存使用
free -h # 人性化显示内存使用情况
uname - 系统信息
uname -a # 显示系统完整信息
网络和权限管理
网络相关
wget/curl - 下载文件
wget https://example.com/file.zip
curl -O https://example.com/file.zip
curl -s https://api.example.com/data | jq . # 配合jq处理JSON
ping - 网络连通性测试
ping -c 4 google.com # ping 4次后停止
netstat - 网络连接状态
netstat -tlnp # 查看监听端口
netstat -anp | grep :80 # 查看80端口使用情况
权限管理
chmod - 修改文件权限
chmod 755 file # 数字方式设置权限
chmod +x script.sh # 添加执行权限
chmod -R 644 directory/ # 递归修改目录权限
chown - 修改文件所有者
chown user:group file # 修改文件所有者和组
chown -R user directory/ # 递归修改目录所有者
sudo - 以管理员权限执行
sudo command # 以root权限执行命令
sudo -u user command # 以指定用户身份执行命令
压缩和归档
tar - 归档工具
tar -czf archive.tar.gz directory/ # 创建压缩归档
tar -xzf archive.tar.gz # 解压归档
tar -tzf archive.tar.gz # 查看归档内容
zip/unzip - ZIP压缩
zip -r archive.zip directory/ # 创建ZIP压缩包
unzip archive.zip # 解压ZIP文件
unzip -l archive.zip # 查看ZIP内容
实用技巧和组合命令
管道和重定向
# 管道:将一个命令的输出作为另一个命令的输入
ps aux | grep nginx | grep -v grep
# 重定向:将输出保存到文件
echo "Hello World" > file.txt # 覆盖写入
echo "New Line" >> file.txt # 追加写入
command 2> error.log # 重定向错误输出
command > output.log 2>&1 # 重定向所有输出
查找文件
find - 强大的文件查找工具
find /path -name "*.txt" # 按文件名查找
find /path -type f -size +100M # 查找大于100MB的文件
find /path -mtime -7 # 查找7天内修改的文件
find /path -name "*.log" -exec rm {} \; # 查找并删除日志文件
locate - 快速查找文件
locate filename # 在数据库中快速查找文件
updatedb # 更新locate数据库(需要root权限)
命令历史和别名
history # 查看命令历史
!123 # 执行历史中第123条命令
!! # 重复执行上一条命令
!string # 执行最近以string开头的命令
# 设置别名
alias ll='ls -la'
alias grep='grep --color=auto'
实际工作中的使用场景
日志分析
# 分析nginx访问日志
tail -f /var/log/nginx/access.log | grep "404"
# 统计IP访问次数
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 查看特定时间段的错误日志
grep "2024-01-15 14:" /var/log/error.log | grep "ERROR"
系统监控
# 监控磁盘使用率
df -h | awk '$5 > 80 {print $0}'
# 查找占用CPU最高的进程
ps aux --sort=-%cpu | head -10
# 监控内存使用
free -h && echo "---" && ps aux --sort=-%mem | head -5
总结
掌握这些Linux命令,基本上能应对日常开发和运维工作的大部分需求。记住,熟能生巧,多在实际工作中使用这些命令,才能真正掌握它们。Linux的命令行世界博大精深,这篇文章只是冰山一角。希望能为你的Linux学习之路提供一个良好的起点!