N90-上海-谭锦熙 (第二周)

1、总结学过的权限,属性及ACL相关命令及选项,示例。

在linux系统中,一切皆文件;

对于整个系统中大致可分为三类角色,分别是属主、属组、以及其他用户;

对于这三类角色对文件又有三种权限,分别是读、写、执行;

三种角色:

角色字符表示
属主:即所有者u
属组:即属于哪个组g
其他用户:即不是所有者也不属于组o

三种权限:

权限字符表示
读权限r (八进制表示为  4  )
写权限w(八进制表示为  2  )
执行权限x(八进制表示为   1  )

特殊权限:

特殊权限分别是:SUID、SGID、Sticky,这三种特殊权限独立与rwx权限体系。

SUID :作用于二进制可执行文件上,用户将继承此程序所有者的权限;
SGID :作用于二进制可执行文件上,用户将继承此程序所有组的权限;
             作用于目录上,此目录中新建的文件的所属组将自动从此目录继承;
STICKY :作用于目录上,此目录中的文件只能由所有者自已来删除;

chmod命令:常用的针对修改文件权限的命令

常用赋值写法 :  +   增加某些权限、 -    删除某些权限、=   只保留某些权限,覆盖写法

例如:u+x:意为属主增加写权限、g-r:意为属组删除读权限、ug=rw:意为属主和属组改为读和写权限、o=0:意为其他用户无任何权限等等等

示范:

或者也可用数字进行赋值

示范:

ACL命令:

setfacl 可设置ACL权限、getfacl 可查看设置的ACL权限

示范:使tom无读写执权限

恢复tom读写执权限

2、结合vim几种模式,学会使用vim几个常见操作。

1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。

退出文件:shift    +  : 并输入wq推出编辑模式

2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

进入文件后(命令模式)按i(在光标处输入)、I(在当前光标首行输入)、a(在光标所在处后面输入)、A(在光标所在行的行尾输入)、o(在当前光标所在行的下方打开一个新行)、O(在当前光标所在行的上方打开一个新行)都可进入插入模式,再按  ESC 键即可退出插入模式,回到命令模式。

3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

4)使用cat命令验证文件内容,是刚刚自己写的内容。

5)命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。

3. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。

cat命令:可以查看文本内容

nl命令:显示行号,相当于cat  -b

tac命令:你想显示文本内容,行倒叙显示

rev命令:将同一行的内容逆向显示,同一行倒叙

more命令:可以实现分页查看文件,可以匹配管道实现输出信息的分页

less命令less 也可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器

head命令:可以显示文件或标准输入的前面行

范例:

tail命令tail head 相反,查看文件或标准输入的倒数行

cut命令cut 命令可以提取文本文件或STDIN数据的指定列

paste命令合并多个文件同行号的行到一行

grep命令文本搜索工具,根据用户指定的模式对目标文本逐行进行匹配检查;打印匹配到的行

标准输入:

处理文件:

管道:

标准输入重定向:

取前两行:

取反,取不匹配的行:

不区分大小写:

显示行号:

显示匹配的行数:

仅显示匹配到的内容:

只显示匹配到的文件的文件名,不显示具体内容

sed命令:行编辑器

标准输入,默认直接输出:

默认输出内容:

输出第一、二行:

输出最后一行:

正则匹配,输出包含root的行:

正则匹配,输出root开头的行:

正则匹配:输出以bash结尾的行:

正则匹配,显示注释行行号:

命令展开:

搜索替换:

awk命令

常用的内置变量

范例FS

范例RS

范例OFS

范例ORS

范例NF

范例NR

范例FNR

范例ARGC

动作printf:可以实现格式化输出

说明:
必须指定 FORMAT
不会自动换行,需要显式给出换行控制符 \n
FORMAT 中需要分别为后面每个 item 指定格式符

4. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。

基本正则

字符匹配:

.    #匹配任意单个字符(除了\n),可以是一个汉字或者其他国家的文字

 在[ ]内代表本身(自己)、\也代表本身,中括号外就代表任意单个字符

[ ]  #匹配指定范围内的任意单个字符,示例:[wang]   [0-9]

[^]  #匹配指定范围外的任意单个字符,示例:[^wang]

匹配次数:

*          #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配

*        #任意长度的任意字符

\?        #匹配其前面的字符出现0次或1次,即:可有可无

\+        #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次

\{n\}     #匹配前面的字符n次

\{m,n\} #匹配前面的字符至少m次,至多n次
\{,n\}    #匹配前面的字符至多n次,<=n
\{n,\}    #匹配前面的字符至少n次

位置锚定:位置锚定可以用于定位出现的位置

^ #行首锚定, 用于模式的最左侧
$ #行尾锚定,用于模式的最右侧
^PATTERN$ #用于模式匹配整行
^$ #空行
^[[:space:]]*$ #空白行
\< 或 \b     #词首锚定,用于单词模式的左侧
\> 或 \b         #词尾锚定,用于单词模式的右侧
\<PATTERN\>       #匹配整个单词 #注意: 单词是由字母,数字,下划线组成

分组其他

分组: () 将多个字符捆绑在一起,当作一个整体处理,如: (root)+
后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名 方式为: \1, \2, \3, ...
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
注意 : \0 表示正则表达式匹配的所有字符

扩展正则表达式

字符匹配:

匹配次数:

*        #匹配前面字符任意次

?      #0次或一次

+        #1次或多次

{ n }    #匹配n次

{m,n}  #至少m次,至多n次

位置锚定:

^ #行首         $ #行尾         \<, \b #词首        \>, \b #词尾

分组其它:

() 分组      #后向引用:\1, \2, ... 注意: \0 表示正则表达式匹配的所有字符
|                #或者
a|b            #a或b
C|cat         #C或cat
(C|c)at       #Cat或cat

链接练习:

1、删除文件每行的第一个字符

2、删除文件每行的最后一个字符

3、删除文件每行的第二个字符

4、删除文件每行的倒数第二个字符

5、删除文件每行的第二个单词

6、删除文件每行的倒数第二个单词

7、交换每行的第一个字符和第二个字符

8、交换每行的第一个单词和第二个单词

9、打印Linux系统的"IP地址,系统版本,CPU核心,内存大小

总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用

变量命名规则:

要区分大小写、不能使用程序中的保留字和内置变量,如:if、for

只能使用数字、字母及下划线,且不能数字开头,不支持短横线“-”

命名习惯:

见名知义,用英文单词命名,并体现出实际作用,不要用简写,如: ATM
变量名大写
局部变量小写
函数名小写
大驼峰 StudentFirstName ,由多个单词组成,且每个单词的首字母是大写,其它小写
小驼峰 studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母
是大写,其它小写
下划线 : student_first_name

环境变量:

可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程
一般只在系统配置文件中使用,在脚本中较少使用

只读变量:

只能声明定义,但后续不能修改和删除,即常量

位置变量:

位置变量:在 bash shell 中内置的变量 , 在脚本代码中调用通过命令行传递给脚本的参数

状态变量:

$?   表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常
成功 失败

$0  表示当前执行的脚本或程序的名称     当前脚本的名字

通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

参考例题

结合编程的for循环,条件测试,条件组合,完成批量创建100个用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值