文件查找和壓縮打包
作業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
文件查找和壓縮打包