首页 > 其他分享 >JYB_Word_Week2-2

JYB_Word_Week2-2

时间:2023-03-27 11:31:44浏览次数:37  
标签:Word echo sh JYB 匹配 Week2 root declare rocky8

1 总结linux安全模型

三A认证,资源分配:

  • Authentication:认证,验证用户身份;
  • Authorization:授权,不同的用户设置不同的授权;
  • Accouting|Audition:审计。

1.1 Linux中每个用户通过User id(UID)做唯一标识

  • 管理员:root,o。权限最大,也意味着危险与不安全,慎用此账号;
  • 普通用户:1-60000自动分配
  • 系统用户:1-499(CentOS6以前),1-999(CentOS7以后),对守护进程获取资源进行权限分配;
  • 登录用户:500+(CentOS6以前),1000+(CentOS7以后)给用户进行交互式登录使用。
  • (Ubuntu又是如何?)

1.2 用户组

LInux可以将一个或多个加入到用户组中,用户组通过Group id(GID)做唯一标识。

  • 管理员组:root,0;
  • 普通组:
  • 系统组:1-499(CentOS6以前),1-999(CentOS7以后),对守护进程获取资源进行权限分配;
  • 登录组:500+(CentOS以前),1000+(CentOS7以后),给普通用户。

1.3 用户和组的关系

  • 用户的主要组(primary group,主组):用户必须有且仅有一个主组,默认创建用户时自动创建与用户名同名的用户组作为主组。由于词组只有一个用户,又称私有组。
  • 用户的附加组(supplementary group,附加组):一个用户可以有0个或多个附加组。

id USERNAME :查看用户所属

[10:44:57 root@rocky8 ~]#id root;id wang
 uid=0(root) gid=0(root) groups=0(root)
 uid=1000(wang) gid=1000(wang) groups=1000(wang)

1.4 安全上下文

Linux安全上下文Context:运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程运行者的身份。

比如:分别以root和普通用户(wang)的身份运行/etc/shadow,得到的结果不同。


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

程序访问文件时的权限,取决于次程序的发起者

  • 进程的发起者,同文件的属主,则应用文件属主权限
  • 进程的发起者,属于文件属组,则应用文件属组权限
  • 应用文件“其他”权限

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

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

打开文件:vim FILE。

打开文件后,按“esc”键(可选),转换到命令行模式,按“q”不保存退出或“q!”不保存强制退出。

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

按“esc”键,转换到命令行模式,按“q”不保存退出或“q!”不保存强制退出。

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

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

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


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

4.1 文本处理工具

cat [OPTION]... [FILE]... :查看文本内容

OPTION

解释

-E

显示行结束符$

-A

显示所有控制符

-n

对每行编序号

-b

对非空行编序号

-s

压缩连续的空行成一行

示例:

[16:20:12 root@rocky8 data]#cat -A a.txt
 line1 2^I3$
 line2$
 $
 $
 3$

tac:垂直反向查看文本内容,与cat相反

[16:17:02 root@rocky8 data]#tac a.txt
 3
 
 
 line2
 line1 2 3

rev:水平反向查看文本内容,与cat相反

[16:22:22 root@rocky8 data]#rev a.txt
 3       2 1enil
 2enil
 
 
 3

hexdump:查看非文本文件内容

[16:23:39 root@rocky8 data]#hexdump a.txt
 0000000 696c 656e 2031 0932 0a33 696c 656e 0a32
 0000010 0a0a 0a33
 0000014
 
 [16:25:02 root@rocky8 data]#hexdump /etc/shadow
 0000000 6f72 746f 243a 2436 6266 5676 7836 5a54
 0000010 416d 3957 3868 5477 5224 4136 6750 727a
 0000020 7454 4b36 5854 7944 ............
 [16:25:48 root@rocky8 data]#cat !*
 cat /etc/shadow
 root:$6$fbvV6xTZmAW9h8wT$R6APgzrTt6KTXDyFRrLVn0y1z96NC49rqHyeQNpvaIHEkDPir3xp62Qm5LKQoTAOT2cNFL/.OLt9M7ykhCCUN0::0:99999:7:::
 bin:*:19265:0:99999:7:::
 ..........

分页查看文本内容

more [options] <file>...:分页查看文本内容,可以配合管道

options

解释

-d

显示翻页及退出提示

窗口按键


回车

往下移动一行,移动到最后一行退出

b

往上翻页

less:分页查看文本内容,可以配合管道,移动到最后一行不会退出

窗口按键


上下方向键

上下移动

空格键

切换到下一个屏幕

b

退回到上一个屏幕

g

光标切换到文件开始

G

切换到最后一幕

/string

往下寻找对应字符串,配合n和N上下翻找

?string

往上寻找对应字符串,配合n和N上下翻找

head:默认输出文本内容前10行内容


5 总结文本处理的grep命令相关的基本正则和扩展正则表达式。(补示例)

grep

grep [OPTION]... PATTERN [FILE]... :打印文件匹配内容,PATTERN为正则表达式

OPTION


--color

对匹配的文本着色,已默认上色

-v

显示不匹配文本,即取反

-i

忽略大小写

-n

显示匹配文本的行号

-c

统计匹配的行数,不打印内容

-A #(-B -C同理)

显示匹配行及后面#行

-w

按单词匹配

-E

扩展正则表达式,相当于egrep

正则表达式

  • 使用一定特殊字符用来表示特定功能,这些字符叫元字符
  • 类似于通配符,但又与之不同,通配符处理文件名,正则表达式处理文本内容字符
  • 正则表达式有两种:标准正则表达式和扩展正则表达式
  • 正则表达式引擎:采用不同算法,检查处理正则表达式的软件模块,如:PCRE
  • 元字符分类:字符匹配,匹配次数,位置铆钉,分组
  • 帮助:man 7 regex
  • 应用广泛,其他语言也通用

标准正则表达式

字符匹配

字符

通常匹配数字,字符及其他字符

.

小数点。代表任意单个字符,甚至是汉字和其他国家的文字

[ ]

中括号。匹配阔号内任意单个字符

[^]

取反

[:blank:]

代表空格和TAB键制表符

[:graph:]

代表可打印非空百字符

[:print:]

代表可打印字符

[:punct:]

代表标点符号


数字和字母同通配符

次数匹配

次数


*

代表前面匹配的字符的出现任意次,包括0次

\?

代表前面匹配的字符最多出现了1次

\+

代表前面匹配的字符最少出现了1次

\{n\}

代表前面匹配的字符最多出现了n次

\{m,n\}

代表前面匹配的单个字符最少出现了m次,最多出现了n次

\{,n\}

代表前面匹配的单个字符最多出现了n次

\{m,\}

代表前面匹配的单个字符最少出现了m次

位置锚定

位置


^

行首

$

行尾

^PATTERN$

打印出匹配内容行

^$

打印匹配的空行

^[[:space:]]*$

空白行

\<或\b(词首)

词首锚定,用于匹配单词首内容

\>或\b(词尾)

词首锚定,用于匹配单词尾内容

\<PATTERN\>

单词锚定,打印匹配单词所在行

分组和逻辑处理

分组和逻辑


\( \)

相当于提取公因式

\


示例

查找ss开头,且第三个字符有可能包含甚至没有s的单词

[19:50:36 root@rocky8 data]#grep -n "ss"s*"" /etc/passwd
 14:dbus:x:81:81:System message bus:/:/sbin/nologin
 17:tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
 35:sssd:x:981:981:User for sssd:/:/sbin/nologin
 43:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

查找 /etc/fstab 内的home

[21:16:45 root@rocky8 data]#grep -n "\<home\>" /etc/fstab
 14:/dev/mapper/rl-home     /home                   xfs     defaults        0 0

扩展正则表达式

相当于去掉\转义符




匹配至少1次

+

匹配最多1次

{n}

匹配n次

{m,n}

匹配最多m次,最少n次

()

相当于提取公因式

|



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

6.1 变量是什么

表示命名的内存空间,将数据存放在内存中,通过变量名引用获取数据。

6.2 变量命名规则

基本命名要求

  • 以字母开头
  • 且只是用字母、数据和下划线“_”
  • 不能使用自带保留字和内置变量:if、for

命名习惯

  • 变量名大写
  • 局部变量名小写
  • 函数名小写
  • 大驼峰:多单词直接拼接,且单词首字母大写,其余小写,如:StudentFirstName
  • 小驼峰:多单词直接拼接,且次单词开始的单词首字母大写,其余小写:studentFirstName
  • 下划线:student_name
  • 使用英语单词:见名知义,并体现实际作用,不写如“ATM”的简写

6.3 变量的类型及其使用方式

环境变量,位置变量,只读变量,局部变量,状态变量

局部变量

定义:

只能在函数体内使用

使用:

声明并赋值:local name=value

范例:
[21:41:14 root@rocky8 script]#cat function_a.sh
 #!/bin/bash
 
 #定义函数
 function func(){
    local a=100
 }
 
 #调用函数
 func
 
 #输出结果,结果为空
 echo $a

环境变量

定义:
  • 生效范围为当前shell进程及其子进程
  • 子进程可以继承父进程的变量,但父进程无法使用子进程的变量
  • 子进程修改父进程传递的变量后,也会影响孙子进程
  • 一般只在系统配置文件使用,很少在脚本使用
使用:
  • 声明并赋值:local name=value或declare -r name=value
  • 变量引用:$name或${name}
  • 删除变量:unset name
  • 显示所有环境变量:env、printenv、export、declare -x
  • 查看指定进程的环境变量:cat /proc/$PID/environ
  • bash内建的环境变量:PATH、SHELL、USER、UID等

位置变量

定义:

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

使用:

在脚本后写上参数

  • $1、$2、.......$n:对应第1个、第2个等参数,shift [n]换位置
  • $0:命令本身,包括路径
  • $*:传递给脚本的所有参数,全部参数合为一个字符串
  • $@:传递给脚本的所有参数,每个参数为独立的字符串
  • $#:传递给脚本的参数个数
范例:
[20:11:39 root@rocky8 script]#cat arg.sh
 #!/bin/bash
 echo "1st arg is $1"
 echo "1st arg is $2"
 echo "1st arg is $3"
 echo "1st arg is ${10}"
 echo "1st arg is ${11}"
 
 echo "The number of arg is $#"
 echo "All args are $*"
 echo "All args are $@"
 echo "The scriptname is `basename $0`"  #必须加上basename
 
 [20:25:01 root@rocky8 script]#bash arg.sh {a..z}
 1st arg is a
 1st arg is b
 1st arg is c
 1st arg is j
 1st arg is k
 The number of arg is 26
 All args are a b c d e f g h i j k l m n o p q r s t u v w x y z
 All args are a b c d e f g h i j k l m n o p q r s t u v w x y z
 The scriptname is arg.sh

$*和$@的区别,$*合成一个字符串,$@不合成,就是独立的字符串

[21:04:22 root@rocky8 script]#cat f1.sh
 #!/bin/bash
 echo "f1.sh:all args are $@"
 echo "f1.sh:all args are $*"
 bash file.sh "$*"
 
 [21:04:46 root@rocky8 script]#cat f2.sh
 #!/bin/bash
 echo "f1.sh:all args are $@"
 echo "f1.sh:all args are $*"
 bash file.sh "$@"
 
 [21:04:50 root@rocky8 script]#cat file.sh
 #!/bin/bash
 echo "file.sh:1st arg is $1"
 
 [21:03:51 root@rocky8 script]#bash f1.sh a b c
 f1.sh:all args are a b c
 f1.sh:all args are a b c
 file.sh:1st arg is a b c
 
 [21:04:16 root@rocky8 script]#bash f2.sh a b c
 f1.sh:all args are a b c
 f1.sh:all args are a b c
 file.sh:1st arg is a

只读变量

定义

只能声明定义,不能删改,即常量

使用
  • 声明:readonly name或declare -r name
root@ubuntu2004:~# readonly PI=3.14159
 root@ubuntu2004:~# echo $PI
 3.14159
 
 root@ubuntu2004:~# declare -r C=10
 root@ubuntu2004:~# echo $C
 10
  • 查看:readonly [-p]或declare -r
root@ubuntu2004:~# declare -r
 declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath"
 declare -ar BASH_VERSINFO=([0]="5" [1]="0" [2]="17" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
 declare -r C="10"           #
 declare -ir EUID="0"
 declare -r PI="3.14159"     #
 declare -ir PPID="8403"
 declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
 declare -ir UID="0"
 
 
 root@ubuntu2004:~# readonly
 declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath"
 declare -ar BASH_VERSINFO=([0]="5" [1]="0" [2]="17" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
 declare -r C="10"           #
 declare -ir EUID="0"
 declare -r PI="3.14159"     #
 declare -ir PPID="8403"
 declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
 declare -ir UID="0"

状态/状态码变量

定义:

表示错误信息的数字,如浏览错误网页所提示的数字。

使用:

进程执行后,使用变量$?保存状态码,取值范围是0-255

  • $?值为0,表示成功;$?值为1-255.表示失败
  • 建议:可在脚本命令下定义退出状态码——exit [n]
  • 使用exit命令,脚本立马终止
  • 退出状态取决于命令所跟数字
  • 如果不指定状态码,那么脚本退出状态码取决于最后一条命令的状态码
范例:
[23:22:13 root@rocky8 ~]#curl -fs http://www.wangxiaochun.com >/dev/null
 [23:24:26 root@rocky8 ~]#echo $?
 0

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


结合编程的for循环,条件测试,条件组合,完成批量创建100个用户, 1)for遍历1..100 2)先id判断是否存在 3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

磁盘存储术语总结: head, track, sector, sylinder.

总结MBR,GPT结构。:

总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例 fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff

总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

完成不影响业务对LVM磁盘扩容及缩容示例。

标签:Word,echo,sh,JYB,匹配,Week2,root,declare,rocky8
From: https://blog.51cto.com/u_15983776/6151507

相关文章

  • word文档如何随意调整图片位置而不影响文本
    选中图片->右键->选择"其他布局选项"->文字环绕->选择"浮于文字上方"。ps1:制作简历时,一般将照片放在右上角,此时可以选择:"浮于文字上方"或者"穿越型"。ps2:图片过大时,可以......
  • wordpress 修改上传文件大小限制
    1.新建phpinfo.php文件,通过网页访问。<?phpphpinfo();?>2.在phpinfo网页上找到php.ini所在目录。3.用nano打开php.ini文件并找到下面配置字段,修改成你想要的数值。......
  • password
    用户名:代表账号 口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现......
  • 2024考研408Week2
    一、本周总结:使用时间:(目标45h,未达到)总计20h27min,数学9h2min,专业课2h,英语9h25min.去省行交流的第一周自己有点浮躁,学习效率甚至不如上一周,需要调整。二、存在问题:1.数学、......
  • 【Python】连接MySQL报错:RuntimeError 'cryptography' package is required for sha25
    ✨报错提示RuntimeError:'cryptography'packageisrequiredforsha256_passwordorcaching_sha2_passwordauthmethods✨解决方案pipinstallcryptography......
  • file文件分类工具,可将文件夹中的word和excel复制到指定文件夹
    packagecom.xxx.controller;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;/***@author3......
  • Wordbook:一个 GNOME 桌面的离线词典应用
    遇见Wordbook:一个GNOME桌面的离线词典应用。我们大多在谷歌、DDG或其他搜索引擎上搜索单词信息,如含义、同义词、反义词等。由于今天几乎每个人都有一个连接互......
  • 一个编辑器粘贴限制字数的方法保留样式和word格式
    没啥思路,就取编辑器内容html,dompase解析,然后递归循环截取traverse(curNode,curLen,limit,truncated,types){if(truncated){returncurLen;}......
  • Word论文排版
    Word论文排版页面布局--页面设置,设置页面边距按要求设置正文的文字格式和段落格式设置论文封面设置论文摘要设置一级、二级、三级标题样式,并应用,ctrl+f查看导航标题......
  • 关于word的行距导致图片显示不全的问题
       这里我其实是插入了图片但是现实不出来,或者只能显示一点点。原因:段落行距为固定值,改为单倍行距or其他行距即可 改为单倍行距后,图片可以现实完结撒花!!! ......