今天工作比较碎(日常):给大家分工时,还想着把项目工包统计一下(没来得及做);整理日报;分BUG,想着改7个BUG(没改呢);和产品经理沟通新项目,了解需求方案、讨论技术可实现性;还有辅助助我们组小同学在现场安装Node;其实node本身安装很简单,但前提需要掌握一些常用的shell命令。突发奇想,给大家整理一下吧,可做为日常学习;
大致归纳了一下,程序员需要掌握的shell命令分为:文件目录操作、文件本编辑查看、进程管理、网络调测、文件或目录权限管理、常用的开发工具类命令、系统资源查看信息、其它...
一、文件和目录操作
命令 | 作用 | 示例 |
|---|---|---|
ls | 列出目录内容 | ls -al (显示隐藏文件) |
cd | 切换目录 | cd /home/software |
pwd | 显示当前目录 | |
mkdir | 创建目录 | mkdir -p /data/software (递归创建) |
rm | 删除文件和目录 | rm -rf ./node_modules(删除当前路径下的node_modules,慎用删除,一定要确认) |
cp | 复制文件 | cp -r dir1 dir2 (递归复制) |
mv | 移动/重命名文件 | mv old.txt new.txt (如果在同一路径下就是重命名,如果不同路径是移动文件) |
find | 查找文件 | find -name "*.js" |
tar | 打包/解压文件 | 解压: tar -czvf archive.tar.gz dir tar -xJf node-v22.15.1-linux-x64.tar.xz 打包:排除特定文件- tar -czvf backup.tar.gz --exclude="*.log" --exclude="temp/" dir1 追加文件到已有tar包(仅适用于未压缩tar包) tar -rvf a.tar test.txt 分卷拆分 tar -czvf -dir1|split -b 100M - archive_part.tar.gz 【合并分卷 cat archive_part.tar.gz* | tar -xzvf -】 保留原始文件权限 tar -cpzvf backup.tar.gz /etc (-p 是保留原始权限) |

注:说一下几种压缩格式的压缩率:
二、 文本处理与查看
命令 | 作用 | 示例 |
|---|---|---|
cat | 显示文件内容 | cat zl.log |
grep | 文本搜索 | grep "error" app.log |
sed | 替换文本 | sed 's/foo/bar/g' zl.txt (s是替换操作,foo是要匹配的内容,bar 是替换后的内容,g是全局替换, zl.txt是要操作的目标文件) 支持正则匹配规则,特殊字符需\转义; sed -E 是指忽略大小写; sed -i.bak 是备份原文件 |
awk | 文本分析,逐行处理数据的工作 | awk '{print $1}' zl.csv (提取每一行的第一个字段,默认csv是以空格或制表符分隔); awk -F ',' '{print $1}' zl.csv,表示zl.csv以,分隔 '{$pirnt $0}' 表示整行,$1至$n对应名列 |
head | 显示文件头部 | head -n 10 zl.log |
tail | 显示文件尾部 | tail -f app.log (用的最多,实时追踪日志) |
vim/nano | 文件编辑 | vim application.yml |
三、进程管理
命令 | 作用 | 示例 |
|---|---|---|
ps | 查看进程状态 | ps -ef|grep java ps aux|grep java ( 结果更细) |
top | 实时进程监控 | top |
kill | 终止进程 | kill -9 1234 kill -SIGUSR1 39900(mongo 的进程号,可以将大日志不停服的按日期切分中,重新生成新日志,用于日志太大无法打开和查看) |
nohup | 后台运行程序 | nohup python app.py & 有些命令当前绘话运行,但如果希望退出绘话也可能远行,就可以用到这个后台运行的命令 |
四 网络与调试
命令 | 作用 | 示例 |
|---|---|---|
curl | http请求工具 | curl -X POST http://api.com curl -X POST -H "Content-Type: application/json" -d '{"type":"station","command":1,"duration":10,"playText":"","uids":[33810,1111],"system":"生产集控"}' http://127.0.0.1:8060/xxxx/sendCancelAlarm |
wget | 下载文件 | wget https://example.com/file.zip |
ssh | 远程登录 | ssh user@192.168.1.100 |
scp | 文件安全传输 | scp file.txt user@host:/path |
netstat | 网络状态查看 | netstat -antp netstat -tuln (查看监听端口) |
ping | 测试网络通否 | ping www.baidu.com |
telnet | 测试端口联通性 | telnet 192.168.1.1 8080 |
五、权限管理
命令 | 作用 | 示例 |
|---|---|---|
chmod | 修改文件权限 | chmod 777 script.sh |
chown | 修改文件所有者 | chown appuser:group nginx.conf |
sudo | 以管理员权限执行命令 | sudo mv a.txt /usr/local/a.txt |
su | 切换用户 | su - root |
六 系统信息
命令 | 作用 | 示例 |
|---|---|---|
df | 磁盘空间使用 | df -lh |
du | 目录空间占用 | du -sh * du -h --max-depth=1 /data |sort -hr |head -n 10 du -h:以G计算磁盘目录 --max-depth=1:限制只显示指定目录下的一级子目录大小(可以去掉这个参数) sort -hr:按G从大到小排序; head -n 10: 输出前10行 |
free | 内存使用情况 | free -m (MB单位) |
uname | 系统信息 | uname -a |
date | 显示/设置日期 | date "+%Y-%m-%d %H:%M:%S" |
七、其它
命令 | 作用 | 示例 |
|---|---|---|
| | 管道符(即前一个命令的输出做为后一个命令的输入) | cat app.log| grep "error" |wc -l (统计错误行数) |
>或>> | 重定向 | echo “hello” >zl.log (覆盖写入) echo "hello" >>(追加写入) |
history | 查看历史命令(偷学命令最佳典范) | history | grep nginx (查看历史执行过的nginx相关命令) |
python | 临时开一个端口 | python -m SimpleHTTPServer 8090(临时开一个端口,用于测试端口联通性) |
就这些吧,要下雨了,下班回家,想起来哪些好用的再补充给大家,希望对大家有所帮助