8-27 Study
1. 学习命令总结:(word写的,格式可能上传时出了点问题)
1.1cut:针对字符串切片操作 sort:排序操作 uniq:去重操作
cut命令:
格式:cutOPTION... [FILE]...
-b:只查找位
-c:只查找字节
-d:设定间隔符
-f:设定选择显示文件项
单文件#;
游离多文件#,#
连续多文件#-#
-n: 不分割复合字符串
sort命令:
格式:sort[OPTION]... [FILE]...
-b:忽略空白行
-d:只排列字符串空白行
-f:忽略大小写
-g:根据文件值来排序
-i:只排序字符串,不包括空白行
-n:根据字符串数值大小比较
-R:根据hash值排序
-r:逆序
uniq命令:
格式:uniq[OPTION]... [INPUT [OUTPUT]]
-c:统计行数
-d:只打印输出重复行,每行只输出一次
-D:
-i:忽略大小写
-s:跳过多少字符进行比较
-u:只显示出现一次的行
例子:
列出当前系统上所有已经登录的用户,多次出现的只显示一次:
取出当前shell中被使用最多的shell,并显示取用次数:
将/etc/passwd中第三个字符段中数值最大的后10个用户信息全部改为大写后保存至/tmp/test/newpasswd中:
1.2alias命令别名:
由于易用性考虑命令执行最好默认带上一些参数,alias可设置命令别名实现此功能,alias查看全部命令别名,unalias 取消命令别名:
截图如下:
alias显示全部命令别名:
alias设定命令别名:
取消命令别名:
1.3bash支持三种引用模式:
强引用:’’ 强引用中出现的字符只会原意出现
弱引用:”” “” 弱引用中出现变量名会引用其实际值
命令引用:`COMMAND` $(COMMAND) 调用命令产生结果
1.4:文件通配符:
?:表示任意一个字符
*:表示任意数量任意字符
[]表示范围
[^]:表示范围取反
[:upper:]全部大写字符 [:lower:]全部小写字符 [:digit:]全部数字字符
[:alpha:]全部字母字符 [:alnum:]数字字母字符 [:punct:]符号字符
[:space:]空白字符
查找目录一定要加ls –d /tmp/x*
1.5 文件权限
文件权限主要分为rwx三种,对文件和目录而言三种权限作用不同
对文件而言:
r:读取文件信息
w:更改文件内容
x:将文件提交内核执行权限
对目录而言:
r:读取目录下的文件及子目录信息,不可以使用ls -l
w:创建删除此目录中的文件信息
x:能否进入该目录的权限及ls–l该目录的权限
1.6:用户权限,组权限及其他权限
useradd 用户添加命令 groupadd 用户添加命令 usermod用户属性修改命令
groupmod 组权限修改命令 userdel 用户删除命令 groupdel 组删除命令
useradd 用户添加命令:
格式: useradd [options] LOGIN
-u 指明uid
-g 指明gid 需事先存在
-G 修改附加组,-a –G为追加附加组
-D 设定默认添加用户设定
-m 强制创建家目录
-M 强制不让创建家目录
-r 指明添加用户为系统用户
groupadd组添加命令:
格式: groupadd [options] group
-g 指明gid
-h 显示帮组
-p 设定组密码
-r 创建系统组
usermod 用户属性修改命令:
格式: usermod [options] LOGIN
-a–G 追加附加组
-c 修改注释信息
-s 修改用户指定shell
-d 修改用户指定家目录
-g 修改用户从属组
-G 修改用户附加组
-u 修改用户UID
-L 锁定用户
-U 解锁用户
-l 修改登录名
groupmod 用户组信息修改命令:
格式: groupmod [options] GROUP
-g 修改GID
-h 显示帮助
-p 设定组密码
-n 修改组名字
userdel–r 删除用户时强制删除其家目录
groupdel 有用户从属于该组则不可以删除
id可查看用户信息
Id –u仅显示UID
-g仅显示GID
-G显示groups
-n 显示名字而非id
例子:创建用户slackware,其id为2002,基本组为distro,附加组为peguin
修改slackware默认shell为/bin/tcsh
为其新增附加组admins:
为slackware添加密码,密码最短使用时间3天,最长180天,警告时间为3天
使用非交互式命令添加用户openstack并添加密码
1.7:chown 修改用户权限命令
chown主要用于修改文件rwx权限
格式: chown[OPTION]... [OWNER][:[GROUP]] FILE...
-R 迭代修改
--reference设定文件权限参考
chown [-R][--reference] [USER][:GROUP] FILE
更改[属主]属组
:GROUP只改属组
用chown修改权限注意不要让文件拥有x权限,这是一件为危险的事
chmod--reference=/tmp/test/new /tmp/test/fstab
参考项 按参考项修改属性
[[email protected] test]# chmod u=rwx,go=rw fstab
[[email protected] test]# ll -d fstab
-rwxrw-rw-. 1 root root 501 Aug 10 06:30 fstab
[[email protected] test]# chmod u-w,g-w,o-w fstab
[[email protected] test]# ll -d fstab
-r-xr--r--. 1 root root 501 Aug 10 06:30 fstab
[[email protected] test]# chmod a+w fstab
[[email protected] test]# ll -d fstab
-rwxrw-rw-. 1 root root 501 Aug 10 06:30 fstab
[[email protected] test]# chmod -x fstab
[[email protected] test]# ll -d fstab
-rw-rw-rw-. 1 root root 501 Aug 10 06:30 fstab
[[email protected] test]# ls -l
total 8
-rw-rw-rw-. 1 root root 501 Aug 10 06:30 fstab
-rw-r--r--. 1 root root 501 Aug 10 06:40 new ///显示原文件属性信息
[[email protected]]# chmod --reference=/tmp/test/new /tmp/test/fstab //按参考文件修改属性
[[email protected] test]# ls -l
total 8
-rw-r--r--. 1 root root 501 Aug 10 06:30 fstab
-rw-r--r--. 1 root root 501 Aug 10 06:40 new
1.8:umask 遮罩码
umask遮罩码:
文件:666-umask
注意:如果减的结果存在执行权限(umask中存在x权限),则让对应用户权限+1
目录:777-umask
umask NUMBER 设置遮罩码 只对当前shell有效
1.9:正则表达式与扩展正则表达式:
正则表达式:
字数匹配:
.任意单个字符
[]匹配范围内的任意一个字符
[^]匹配范围外的任意一个字符
次数匹配:
*任意个*之前的字符
\{m,n\}:之前字符至少出现m次,至多出现n次
\?:出现0次或1次
\+:至少出现1次
位置锚定:
^行首锚定
$行尾锚定
\<单词词首锚定 \b也可以
\>单词词尾锚定 \b也可以
\(\)分组:
分组模式中匹配到的具体字符可以被grep记忆,(保存于内置变量中,可以被/1,/2,/3引用)
例: grep “\(a.b\).*\1”:可以查找amb helloamb 不能查找amb hello anb
扩展正则表达式:
扩张正则表达式与正则表达式不同点:
次数匹配:
?表0或1次
+表1或多次
{m}精确匹配m次 即扩张正则表达式不需要转义了
分组()也不需要转义
支持或者 a|b abc|Cba abc或者Cba
2.作业:
显示/etc/passwd文件中以bash结尾的行
显示/etc/passwd文件中的两位数或三位数
显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
找出ifconfig命令执行结果中1-255之间的数字
问题:
找出ifconfig命令执行结果中1-255之间的数字,采取如下方式为什么取不出127.192等三位数
使用echo输出一个路径,取出其路径名:未完成,还得理下思路