首页 > 代码库 > 文件查找和压缩打包
文件查找和压缩打包
作业1
编写一个脚本/root/bin/createuser.sh,脚本的执行语法必须是:createuser.sh -u username -m password,选项与参数间可支持多空格,但不能顺序颠倒。
当未指定正确的选项或参数时,以错误输出方式提示“createuser.sh -u username -m password ”后退出脚本。
用户名必须以字母开头,可包括数字和_。否则不合法。以错误输出提示用户"用户名仅包含字母数据和下划线"
当用户名检测合法后,判断用户名是否已存在,若存在,再判断用户是否已设置过密码,若设置过密码,直接退出,未设置,则将密码设置为所指定的密码后以正确输出方式显示“username 密码已更新后退出”
当用户名不存在,则创建用户,并为该用户设置所指定的密码后以正确输出方式显示“用户username已创建并更新密码”
要求脚本执行过程中不能有非要求的其他输出结果出现。脚本在非正确方式退出时应反回给?参数非0值。
[ 4 -eq $# ] ||(echo 输入不合法,请输入createuser.sh -u username -m password ; exit 1)||exit 1
username=$2
[ -u == $1 ]&&[[ "$2" =~ ^[[:alpha:]][0-9a-z_]* ]]&&[ -m == $3 ]||(echo "输入不合法,用户名仅包括字母数字下划线";exit 1)||exit 1
mima=$4
id $2 &>/dev/null || (useradd $2 &&echo $4|passwd --stdin $2>/dev/null;echo "用户$2 已创建,密码为$4 ";set --;unset username mima;exit 1)||exit 0
id $2 &>/dev/null && (getent shadow $4 |egrep ‘\$‘[[:digit:]]‘\$‘ &>/dev/null && echo "用户名已存在且密码已创建 ";exit 2)
echo "$4" |passwd --stdin "$2">/dev/null
echo $2密码已更新
set --
unset username mima
exit 0
作业2
[ 4 -eq $# ] ||(echo 输入不合法,请输入createuser.sh -u username -m password ; exit 1)||exit 1
username=$2
[ -u == $1 ]&&[[ "$2" =~ ^[[:alpha:]][0-9a-z_]* ]]&&[ -m == $3 ]||(echo "输入不合法,用户名仅包括字母数字下划线";exit 1)||exit 1
mima=$4
id $2 &>/dev/null || (useradd $2 &&echo $4|passwd --stdin $2>/dev/null;echo "用户$2 已创建,密码为$4 ";set --;unset username mima;exit 1)||exit 0
id $2 &>/dev/null && (getent shadow $4 |egrep ‘\$‘[[:digit:]]‘\$‘ &>/dev/null && echo "用户名已存在且密码已创建 ";exit 2)
echo "$4" |passwd --stdin "$2">/dev/null
echo $2密码已更新
set --
unset username mima
exit 0
交互式登录(登录shell)
使用终端通过用户名密码登录、su - username
执行顺序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互登录 (非登录shell)
su username 、图形界面下打开终端、执行脚本、其他bash实例
执行顺序: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
常用文件查找命令
find
-maxdepth level 最大搜索深度
-minxdepth level 最小搜索深度
-name 基于名称的精确查找
-iname 基于名称忽略大小写的精确查找查找
-inum 基于inode查找
-samefile 基于相同inode号的查找(查找硬链接)
-links n 硬链接为n的文件
-regex 支持正则 默认为(emacs标准)
-regextype egrep -regex 支持egrep同标准的正则
-user 用户名 基于文件owner的查找
-group 组名 基于文件group的查找
-uid userid 基于文件uid的查找
-gid groupid 基于文件gid的查找
-nouser 查找没有owner的文件
-nogroup 查找没有group的文件
-type 基于文件类型的查找
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
-perm
mode:精确权限匹配
+mode[/mode] 任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰换为/
-mode 每一类对象都必须同时拥有指定权限,与关系0 表示不关注
-print 默认
-delete 直接删除所查找到的文件,不询问。
-ls 长列出所查找到的文件
-fls file 将查找到的文件长列出导入到指定文件。
> file
-ok command \; 对查找到的文件当做下一命令的参数去执行(交互式)
-exec command \; 对查找到的文件当做下一命令的参数去执行(非交互式)执行cp命令不需要询问
文件压缩命令
compress(unncompress)、gzip(gunzip)、bzip2(bunzip)、zip(unzip)、xz
-d 解压缩
-k 保留原文件
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
文件打包命令
tar
-cf 创建包名字 原文件(可以指定多个)
-tf 包名字 显示包中的文件名
-tvf 详细显示包中的文件名
-rf 包名字 新文件名(可以指定多个)
--delete -f 包名字 被删除的文件名(可以指定多个)
-xf 包名字 解出所有的文件到当前目录
-xf 包名字 文件名 解所指定的文件到当前目录
-C 解包到指定目录
-v 显示过程
-Jcf 创建包的名字(.tar.xz) 原文件(可以指定多个) 打包并用xz压缩
-jcf 创建包的名字(.tar.bz2) 原文件(可以指定多个) 打包并用bzip压缩
-zcf 创建包的名字(.tar.gz) 原文件(可以指定多个) 打包并用gzip压缩
-T 指定个列表,包含需要被打包的文件,以换行符为间隔
-X 指定个排除列表,以换行符为间隔
作业3
删除libc.so.6文件,并恢复。禁止用快照,重装。
重启虚拟机、快速按下ESC、选择CD光盘驱动、然后选择rescure installed systerm 救援模式(安装或升级所在的系统、安装系统用基本视频驱动、恢复安装的系统、从当地驱动器驱动、内存测试)选择语言、coutinue、然后有句话“chroot /mnt/sysimage”这句话的意思是你的系统将会被挂载到/mnt/sysimage目录下,选择OK就好了,接下来进入shall这时你进入的是光盘下的Linux,光盘中有一个完整的Linux系统,然后运行一条命令吧libc.so.6 复制到root下的lib64,注意此时的root是/mnt/sysimage
文件查找和压缩打包