【Linux】Shell脚本学习总结篇
shell学习分为下面3个部分:
- shell基本命令回顾
- shell基本语法学习
- awk/sed 工具学习
关于shell的介绍之类的在这里不做赘述!
shell基本命令回顾
1.1 最基础的常用命令
(注:命令选项直接 man 查看,不做说明)
1.1.1 查看文件和目录的命令
ls : 列出目录下的清单;
cat: 连接显示文件内容
less/more: 分页显示文件内容,建议使用less,相比于more更方便;
head: 显示文件头部,可指定行数,默认显示10行;
tail: 显示文件尾部,可指定行数,默认显示10行;
file: 显示文件类型;
wc: 查看文件或统计信息;
find: 查找文件或目录(选项比较多,前面有博客专门介绍过)
部分演示:
1.1.2 操作文件和目录
touch:创建新文件(可以直接使用vim/vi/gredit等编辑器直接创建)
mkdir:创建目录,可以利用 -r选项递归创建
cp: 拷贝命令,拷贝目录时可以使用 -r 选项
ln: 创建链接命令,分为软连接和硬链接(有专门的文章介绍)
mv: 移动文件或者目录的命令,同时也是改名命令
rm: 删除命令,-r 删除目录, 谨慎使用;
1.1.3 管理文件或者目录的权限
ls -l : 可以列出文件和目录的权限信息;
chmod: 修改文件和目录的权限(需要了解字母及数字权限表示)
chown/chgrp: 改变属组和属主
setuid/setgid:设置用户或组权限位;
1.1.4 文本处理命令
sort : 文本排序
uniq : 文本去重
tr : 替换命令
grep : 查找字符串
diff: 文件对比,找出文件差异
部分演示:
解释: history 命令列出用户的历史使用命令,然后通过awk 过滤出第二列,因为第一列是文件的行数标号, 接着进行一个sort排序,将所有相同的命令都放在一起方便接下来的uniq -c命令去重并且统计出每个命令出现的次数,再然后是 sort -nr -n选项的意思是按照数字的大小即uniq统计出的次数进行排序 -r 则是反向的意思,即本来是正序变为逆序;然后取其前十,即最常用的前十个命令,最后用一下 tr 命令将小写字母替换为大写字母;
对于命令的选项,我一贯的思想都是记住命令和常用的选项即可,太多的选项不需要强行去记忆,用的时候 man 一下或者 –help 看一下即可;
1.1.5 其它常用的命令
hostname : 查看主机名
w, who : 列出系统登录的用户
uptime : 查看系统运行时间
uname : 查看系统信息
date : 显示和设置系统日期和时间
id : 显示用户属性
1.1.6 shell命令进阶
paster : 合并文本
dd : 备份和拷贝文件(和vim 和剪切命令一样)
tar : 打包和解包文件
mount, umount : 挂载和卸载存储介质
df : 报告文件系统磁盘空间利用率
du : 评估文件空间利用率
ps : 查看系统的进程
pidof : 列出进程的pid
top : 相当于 Linux 的任务管理器
& : 将作业后台运行
jobs : 查看作业
bg : 让挂起的进程在后台继续执行
fg : 将后台进程放入前台
fdisk: 查看系统的磁盘信息
部分演示:
前后台切换演示:
解释: 先执行 sleep 100 & 让这个进程在后台执行,然后我们先使用 ps 配合 grep 命令查看一下 sleep 进程的信息,接着 jobs 查看一下后台运行的作业, 使用 fg 命令使其继续在前台执行,我们可以看到显示了sleep 100 , 接着我们又不想让他继续执行了,使用 ctrl + z 使其挂起,我们用jobs查看,可以看出其处于 stopped 状态,接着使用 bg 命令使其继续在后台执行,查看状态, 处于running状态;
至此,shell的基本命令回顾完毕,这些都是脚本中常用的命令;
shell基本语法学习
这部分学习编写shell脚本的基本语法,估计篇幅比较长,因为要敲很多代码,所以,有瑕疵的地方请指出;
2.1 shell 语法篇
(这是回顾与复习的过程,所以不是小白教程,起码都吃过猪肉,看过猪跑)
2.1.1 shell 编程基础
1> 上面刚说过,得吃过猪肉,看过猪跑,那么最基本的shell脚本的编写格式应该知道;
#!/bin/bash
echo "hello world"
分析:还是 hello world 起步,第一行