Linux命令行(Shell)是Linux系统的核心,也是程序员、运维人员必备的技能。掌握Linux命令行,能够让你更高效地管理服务器、处理文件、自动化任务。今天就来分享Linux命令行的完整指南。
一、基础命令
文件和目录操作:
ls:列出目录内容,ls -la显示详细信息和隐藏文件cd:切换目录,cd ~回家目录,cd -回上一次目录pwd:显示当前目录mkdir:创建目录,mkdir -p a/b/c递归创建rm:删除文件或目录,rm -rf强制递归删除(危险!)cp:复制文件,cp -r复制目录mv:移动或重命名文件touch:创建空文件或更新时间戳ln:创建链接,ln -s创建软链接
文件查看和编辑:
cat:查看文件内容more/less:分页查看文件(less更强大,支持上下翻页、搜索)head/tail:查看文件开头/结尾,tail -f实时跟踪文件变化grep:搜索文件内容,grep -r "keyword" .递归搜索,grep -i忽略大小写find:查找文件,find . -name "*.log"按名称查找vim/nano:文本编辑器
系统信息:
uname -a:显示系统信息df -h:显示磁盘使用情况du -sh:显示目录大小free -h:显示内存使用情况top/htop:实时显示进程和资源使用ps aux:显示所有进程uptime:显示系统运行时间和负载whoami:显示当前用户名date:显示当前时间
二、文件处理三剑客
grep(文本搜索):
grep "error" log.txt # 搜索包含error的行
grep -v "error" log.txt # 搜索不包含error的行
grep -c "error" log.txt # 统计匹配行数
grep -n "error" log.txt # 显示行号
grep -r "TODO" /var/www # 递归搜索目录
grep -E "error|warning" log # 正则表达式(或)
grep -i "error" log.txt # 忽略大小写sed(流编辑器):
sed 's/old/new/g' file.txt # 全局替换
sed 's/old/new/' file.txt # 替换每行第一个匹配
sed -i 's/old/new/g' file.txt # 直接修改文件
sed '2d' file.txt # 删除第2行
sed '2,5d' file.txt # 删除2-5行
sed -n '2,5p' file.txt # 显示2-5行
sed '/pattern/d' file.txt # 删除匹配行awk(文本处理):
awk '{print $1}' file.txt # 打印第一列
awk '{print $1, $3}' file.txt # 打印第一和第三列
awk -F: '{print $1}' /etc/passwd # 指定分隔符为冒号
awk '$3 > 1000 {print $1}' /etc/passwd # 条件过滤
awk '{sum += $1} END {print sum}' file.txt # 求和
awk '{print NR, $0}' file.txt # 带行号打印三、管道和重定向
管道(|):将前一个命令的输出作为后一个命令的输入
cat log.txt | grep "error" | wc -l # 统计error行数
ps aux | grep nginx # 查找nginx进程
ls -la | less # 分页查看
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head # IP访问统计重定向:
>:覆盖写入文件,echo "hello" > file.txt>>:追加写入文件,echo "world" >> file.txt<:从文件读取输入,wc -l < file.txt2>:重定向错误输出,command 2> error.log&>:重定向所有输出,command &> all.log2>&1:将错误输出重定向到标准输出
四、进程和服务管理
ps aux | grep process_name # 查找进程
kill PID # 终止进程
kill -9 PID # 强制终止进程
killall process_name # 按名称终止所有进程
# Systemd服务管理(CentOS 7+/Ubuntu 16.04+)
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重载配置
systemctl status nginx # 查看状态
systemctl enable nginx # 开机自启
systemctl disable nginx # 取消开机自启
systemctl list-units --type=service # 列出所有服务
# 后台运行
nohup command & # 后台运行,退出终端不终止
command & # 后台运行
jobs # 查看后台任务
fg %1 # 将后台任务调到前台
bg %1 # 将暂停的任务放到后台运行五、网络命令
ifconfig / ip addr # 查看网络接口信息
ping host # 测试网络连通性
curl URL # 发送HTTP请求
curl -I URL # 只看响应头
wget URL # 下载文件
netstat -tlnp # 查看监听端口
ss -tlnp # 查看监听端口(更现代)
lsof -i :80 # 查看占用80端口的进程
ssh user@host # 远程登录
scp file user@host:/path # 远程复制文件
rsync -avz src/ user@host:/dest/ # 远程同步(增量)
dig domain.com # DNS查询
nslookup domain.com # DNS查询
traceroute domain.com # 路由跟踪六、压缩和解压
# tar
tar -cvf archive.tar dir/ # 打包
tar -xvf archive.tar # 解包
tar -czvf archive.tar.gz dir/ # 打包并gzip压缩
tar -xzvf archive.tar.gz # 解压tar.gz
tar -cjvf archive.tar.bz2 dir/ # 打包并bzip2压缩
tar -xjvf archive.tar.bz2 # 解压tar.bz2
tar -tf archive.tar # 查看包内容
# zip/unzip
zip -r archive.zip dir/ # 压缩
unzip archive.zip # 解压
unzip -l archive.zip # 查看内容
# gzip
gzip file.txt # 压缩(生成file.txt.gz)
gunzip file.txt.gz # 解压七、权限管理
chmod 755 file.sh # 修改权限(rwxr-xr-x)
chmod +x file.sh # 添加执行权限
chmod -R 755 dir/ # 递归修改
chown user:group file.txt # 修改所有者和组
chown -R user:group dir/ # 递归修改
chgrp group file.txt # 修改所属组
# 权限数字说明
# 4=读(r), 2=写(w), 1=执行(x)
# 7=4+2+1=rwx, 5=4+1=r-x, 6=4+2=rw-
# 三位分别代表:所有者、所属组、其他用户八、实用技巧
1. 历史命令:
history:查看命令历史!n:执行第n条历史命令!!:执行上一条命令!keyword:执行最近一条以keyword开头的命令Ctrl+R:反向搜索历史命令
2. 快捷键:
Ctrl+C:终止当前命令Ctrl+Z:暂停当前命令(放到后台)Ctrl+D:退出当前Shell(EOF)Ctrl+L:清屏(相当于clear)Ctrl+A:光标移到行首Ctrl+E:光标移到行尾Ctrl+U:删除光标前所有字符Ctrl+K:删除光标后所有字符Tab:自动补全(命令、文件名、路径)
3. 别名(alias):
alias ll='ls -la'
alias gs='git status'
alias grep='grep --color=auto'
# 永久生效写入 ~/.bashrc 或 ~/.zshrc4. 变量和环境变量:
echo $PATH # 查看环境变量
export PATH=$PATH:/usr/local/bin # 添加环境变量
echo $HOME # 家目录
echo $USER # 当前用户5. 常用组合命令:
# 查找大文件
find / -type f -size +100M -exec ls -lh {} \;
# 清理日志
find /var/log -name "*.log" -mtime +30 -delete
# 批量重命名
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 统计代码行数
find . -name "*.php" | xargs wc -l
# 查看最常用的10条命令
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10总结
Linux命令行是一个强大而高效的工具,掌握它需要不断练习。本文介绍了基础命令、文本处理三剑客(grep/sed/awk)、管道重定向、进程管理、网络命令、压缩解压、权限管理和实用技巧。建议大家在实际工作中多使用命令行,熟能生巧,你会发现命令行比图形界面高效得多。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录