一、 总结学过的权限,属性及ACL相关命令及选项,示例。
文件的权限主要针对三类对象进行定义:
owner 属主, u
group 属组, g
other 其他, o
每个文件针对每类访问者都定义了三种权限
r Readable 4
w Writable 2
x eXcutable 1
Linux文件系统上的特殊权限
SUID 作用于二进制可执行文件上,用户将继承此程序所有者的权限
SGID 作用于二进制可执行文件上,用户将继承此程序所有组的权限上,作于于目录上, 此目录中新建的文件的所属组将自动从此目录继承
STICKY 作用于目录上,此目录中的文件只能由所有者自已来删除
设定文件特殊属性
lsattr 显示特定属性
chattr +a file 只能追加内容,不能删除,改名
chattr +i file 不能删除,改名,更改
修改文件权限chmod
chmod [OPTION]... MODE[,MODE]... FILE...
ACL相关命令
setfacl 可设置ACL权限
getfacl 可查看设置的ACL权限
二、 结合vim几种模式,学会使用vim几个常见操作。
1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
4)使用cat命令验证文件内容,是刚刚自己写的内容。
5)命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
1)
2)按i进入插入模式,按ESC回到命令模式,按wq!保存并退出文件
3)
4)
5)光标移动:前后移动:按 h(左移),l(右移)
上下移动:按 j(下移),k(上移)
单词跳转:向前跳到下一个单词:按w 向后跳到上一个单词:按 b
行复制粘贴:复制当前行:按 yy
粘贴:按 p 将复制的行粘贴到当前行的下方,或按 P 粘贴到当前行的上方
删除行:按 dd 删除当前行
三、 总结学过的文本处理工具,文件查找工具的相关命令及选项,示例。
查看文本文件内容
1.cat 可以查看文本内容
2.nl 显示行号,相当于cat -b
3.tac 逆向显示文本内容
4.rev 将同一行的内容逆向显示
分页查看文件内容
more 可以实现分页查看文件,可以配合管道实现输出信息的分页
less 可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器
显示文本前面或后面的行内容
head 可以显示文件或标准输入的前面行
tail 查看文件或标准输入的倒数行
cut 命令可以提取文本文件或STDIN数据的指定列
paste 合并多个文件同行号的列到一行
分析文本的工具
wc 命令可用于统计文件的行总数、单词总数、字节总数和字符总数
常用选项
-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度
文本排序 sort
常用选项
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t c 选项使用c做为字段界定符
-k # 选项按照使用c字符分隔的 # 列来整理能够使用多
uniq命令 从输入中删除前后相接的重复的行
常用选项
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
四、 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
. 匹配任意单个字符(除了\n)
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
-
#匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* #任意长度的任意字符
? #匹配其前面的字符出现0次或1次,即:可有可无
+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
{n} #匹配前面的字符n次
{m,n} #匹配前面的字符至少m次,至多n次
{,n} #匹配前面的字符至多n次,<=n
{n,} #匹配前面的字符至少n次
^ #行首锚定, 用于模式的最左侧
$ #行尾锚定,用于模式的最右侧
^PATTERN$ #用于模式匹配整行
^$ #空行
[1]*$ #空白行
< 或 \b #词首锚定,用于单词模式的左侧
> 或 \b #词尾锚定,用于单词模式的右侧
<PATTERN> #匹配整个单词
分组:() 将多个字符捆绑在一起,当作一个整体处理,如:(root)+
或者:|
五、 sed将文件test中第50行中的helloworld改为nihao
七、在每一行后增加一空行 (测试文件为cp /etc/passwd ~/,不要直接修改passwd文件)
八、删除文件每行的第一个字符。
九、删除文件每行的第二个字符
十、删除文件每行的最后一个字符
十一、删除文件每行的倒数第二个字符
十二、 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
命名规则
1.命名要求
·区分大小写
·不能使用程序中的保留字和内置变量;如:if for
·只能使用数字、字母及下划线,且不能以数字开头,注意不支持短横线“-”,和主机名相反。
2.命名习惯
·见名知义,用英文单词命名,并体现实际作用,不用简写,如:ATM
·变量名大写
·局部变量小写
·函数名小写
·大驼峰StudentFirstName,由多个单词组成,且每个单词的首字母是大写,其它小写
·小驼峰studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母是大写,其它小写
·下划线: student_name
环境变量
·可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
·一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程
·一般只在系统配置文件中使用,在脚本中较少使用
输入pstree -p显示正在运行的进程树 并显示每个进程的ID
输入cat /proc//environ 查看此进程的环境变量
位置变量
在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数
示例:
只读变量
定义:只能声明定义,但后续不能修改和删除,即常量
十三、通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
vim rabbit_chook.sh
!bin/bash
HEAD=$1
FOOT=$2
RABBIT=$(((FOOT-HEAD-HEAD)/2))
CHOOK=$[HEAD-RABBIT]
echo RABBIT:$RABBIT
echo CHOOK:$CHOOK
bash rabbit_chook.sh 30 80
RABBIT:10
CHOOK:20
十四、结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
[:space:] ↩︎