第三周作業(yè)

1、定義一個(gè)對(duì)所有用戶都生效的命令別名,例如:lftps='lftp 172.168.0.1/pub'
2、顯示/etc/passwd文件中不以/bin/bash結(jié)尾的行
3、找出/etc/passwd文件中,包含二位數(shù)字或者三位數(shù)的行。
4、顯示/proc/meminfo文件中以大寫或小寫S開頭的行;用三種方式實(shí)現(xiàn)。
5、使用echo輸出一個(gè)絕對(duì)路徑,使用egrep取出路徑名,類型執(zhí)行dirname /etc/passwd 的結(jié)果。
6、找出ifconfig中的ip地址。要求結(jié)果只顯示IP地址。
7、vim定制自動(dòng)縮進(jìn)四個(gè)字符。
8、編寫腳本,實(shí)現(xiàn)自動(dòng)添加三個(gè)用戶,并計(jì)算這三個(gè)用戶的uid之和。
9、find用法以及常用用法的實(shí)例演示。

壹、定義一個(gè)對(duì)所有用戶都生效的命令別名,例如:lftps='lftp 172.168.0.1/pub'

可通過修改bash的配置文件實(shí)現(xiàn)所需功能:

bash的配置文件分為兩類:
①profile類:為交互式登錄的shell進(jìn)程提供配置
②bashrc類:為非交互式登錄的shell進(jìn)程提供配置
------登錄類型:
--①交互式登錄shell進(jìn)程:
直接通過某終端輸入賬號(hào)和密碼后登錄打開的shell進(jìn)程;
使用su命令:su - USERNAME, 或者使用
su -l USERNAME執(zhí)行的登錄切換;

--②非交互式登錄shell進(jìn)程:
su USERNAME執(zhí)行的登錄切換;
圖形界面下打開的終端;
運(yùn)行腳本

profile類:

    全局:對(duì)所有用戶都生效;
                /etc/profile 
                /etc/profile.d/*.sh     
    用戶個(gè)人:僅對(duì)當(dāng)前用戶有效;
                ~/.bash_profile
                
    功用:
            1、用于定義環(huán)境變量;
            2、運(yùn)行命令或腳本;      

bashrc類:

    全局:
        /etc/bashrc 
    用戶個(gè)人:
            ~/.bashrc
    功用:
        1、定義本地變量;
        2、定義命令別名;

注意:僅管理員可修改全局配置文件;

 讓通過配置文件定義的特性立即生效:
(1) 通過命令行重復(fù)定義一次;
(2) 讓shell進(jìn)程重讀配置文件;
    ~]# source /PATH/FROM/CONF_FILE
    ~]# .  /PATH/FROM/CONF_FILE

-以上需求可以按一下操作:
~]# vim /etc/bashrc   
   
編輯/etc/bashrc文件,在最后一行追加內(nèi)容   alias lftps='lftp 172.168.0.1/pub',保存后執(zhí)行 source /etc/bashrc


貳、顯示/etc/passwd文件中不以/bin/bash結(jié)尾的行

^:行首錨定;用于模式的最左側(cè);
$:行尾錨定;用于模式的最右側(cè);
^PATTERN$:用于PATTERN來匹配整行;
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行;
                    
單詞:非特殊字符組成的連續(xù)字符(字符串)都稱為單詞;
\< 或 \b:詞首錨定,用于單詞模式的左側(cè);
\> 或 \b:詞尾錨定,用于單詞模式的右側(cè);
\<PATTERN\>:匹配完整單詞;

基本正則表達(dá)式元字符:
字符匹配:
. :匹配任意單個(gè)字符;
[]:匹配指定范圍內(nèi)的任意單個(gè)字符;
[^]:匹配指定范圍外的任意單個(gè)字符;
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]

'egrep':
        
        支持?jǐn)U展的正則表達(dá)式實(shí)現(xiàn)類似于grep文本過濾功能;grep -E

分組及引用:
    ():分組;括號(hào)內(nèi)的模式匹配到的字符會(huì)被記錄于正則表達(dá)式引擎的內(nèi)部變量中;
    后向引用:\1, \2, ...
        或:
        a|b:a或者b;
        C|cat:C或cat
        (c|C)at:cat或Cat

grep命令
全面搜索正則表達(dá)式并把行打印出來

【選項(xiàng)】


-a 不要忽略二進(jìn)制數(shù)據(jù)。
-A<顯示列數(shù)> 除了顯示符合范本樣式的那一行之外,并顯示該行之后的內(nèi)容。
-b 在顯示符合范本樣式的那一行之外,并顯示該行之前的內(nèi)容。
-c 計(jì)算符合范本樣式的列數(shù)。
-C<顯示列數(shù)>或-<顯示列數(shù)>  除了顯示符合范本樣式的那一列之外,并顯示該列之前后的內(nèi)容。
-d<進(jìn)行動(dòng)作> 當(dāng)指定要查找的是目錄而非文件時(shí),必須使用這項(xiàng)參數(shù),否則grep命令將回報(bào)信息并停止動(dòng)作。
-e<范本樣式> 指定字符串作為查找文件內(nèi)容的范本樣式。
-E 將范本樣式為延伸的普通表示法來使用,意味著使用能使用擴(kuò)展正則表達(dá)式。
-f<范本文件> 指定范本文件,其內(nèi)容有一個(gè)或多個(gè)范本樣式,讓grep查找符合范本條件的文件內(nèi)容,格式為每一列的范本樣式。
-F 將范本樣式視為固定字符串的列表。
-G 將范本樣式視為普通的表示法來使用。
-h 在顯示符合范本樣式的那一列之前,不標(biāo)示該列所屬的文件名稱。
-H 在顯示符合范本樣式的那一列之前,標(biāo)示該列的文件名稱。
-i 忽略字符大小寫的差別。
-l 列出文件內(nèi)容符合指定的范本樣式的文件名稱。
-L 列出文件內(nèi)容不符合指定的范本樣式的文件名稱。
-n 在顯示符合范本樣式的那一列之前,標(biāo)示出該列的編號(hào)。
-q 不顯示任何信息。
-R/-r 此參數(shù)的效果和指定“-d recurse”參數(shù)相同。
-s 不顯示錯(cuò)誤信息。
-v 反轉(zhuǎn)查找。
-w 只顯示全字符合的列。
-x 只顯示全列符合的列。
-y 此參數(shù)效果跟“-i”相同。
-o 只輸出文件中匹配到的部分。

以上需求可用一下方法實(shí)現(xiàn):
'
~]# grep -v "/bin/bash$" /etc/passwd
'
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin


叁、找出/etc/passwd文件中,包含二位數(shù)字或者三位數(shù)的行。

匹配次數(shù):用在要指定其出現(xiàn)的次數(shù)的字符的后面,用于限制其前面字符出現(xiàn)的次數(shù);默認(rèn)工作于貪婪模式;
      *:匹配其前面的字符任意次;0,1,多次;
        例如:grep "x\+y"
                abxy
                aby
                xxxxxy
                yab
      .*:匹配任意長度的任意字符
      \?:匹配其前面的字符0次或1次;即其前面的字符是可有可無的;
      \+:匹配其前面的字符1次或多次;即其面的字符要出現(xiàn)至少1次;
      \{m\}:匹配其前面的字符m次;
            \{m,n\}:匹配其前面的字符至少m次,至多n次;
            \{0,n\}:至多n次
            \{m,\}:至少m次
                    
位置錨定:
    ^:行首錨定;用于模式的最左側(cè);
    $:行尾錨定;用于模式的最右側(cè);
    ^PATTERN$:用于PATTERN來匹配整行;
    ^$:空白行;
    ^[[:space:]]*$:空行或包含空白字符的行;
                    
單詞:非特殊字符組成的連續(xù)字符(字符串)都稱為單詞;
    \< 或 \b:詞首錨定,用于單詞模式的左側(cè);
    \> 或 \b:詞尾錨定,用于單詞模式的右側(cè);
    \<PATTERN\>:匹配完整單詞;

`~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
或者
~]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwd

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin

肆、顯示/proc/meminfo文件中以大寫或小寫S開頭的行;用三種方式實(shí)現(xiàn)。

 
~]# grep "^[Ss]" /proc/meminfo

~]# grep -i "^s" /proc/meminfo

~]# grep -E "^(S|s)" /proc/meminfo



伍、使用echo輸出一個(gè)絕對(duì)路徑,使用egrep取出路徑名,類型執(zhí)行dirname /etc/passwd 的結(jié)果。

]# echo /etc/passwd | egrep -o '^/.+/'


陸、找出ifconfig中的ip地址。要求結(jié)果只顯示IP地址。

ifconfig | grep -o "\<[1-2]\{,1\}[0-9]\{1,2\}\.[1-2]\{,1\}[0-9]\{1,2\}\.[1-2]\{,1\}[0-9]\{1,2\}\.[1-2]\{,1\}[0-9]\{1,2\}\>"

image.png

或者

~]# ifconfig | grep -o "\<[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\>"

image.png


柒、vim定制自動(dòng)縮進(jìn)四個(gè)字符。

打開設(shè)置文件:
vim /etc/vim/vimrc
啟用:set ai
添加一些設(shè)置
set expandtab
set tabstop=4


捌、編寫腳本,實(shí)現(xiàn)自動(dòng)添加三個(gè)用戶,并計(jì)算這三個(gè)用戶的uid之和。

#! /bin/bash

# creat 3users and sum of 3 users uid 
echo "Please enter 3 names for the new 3 users:"
read -p "the first user's name: " user1
read -p "the second user's name: " user2
read -p "the third user's name: " user3
echo "==================================================="
useradd $user1
echo "created user $user1"

useradd $user2
echo "created user $user2"

useradd $user3
echo "created user $user3"

echo "==================================================="
u1=`cat /etc/passwd |grep $user1 | cut -f3 -d ":"`
u2=`cat /etc/passwd |grep $user2 | cut -f3 -d ":"`
u3=`cat /etc/passwd |grep $user3 | cut -f3 -d ":"`

echo "$user1's uid is $u1"
echo "$user2's uid is $u2"
echo "$user3's uid is $u3"


echo "==================================================="
val=`expr $u1 + $u2 + $u3`

echo "The sum of 3 users uid is $val"



玖、find用法以及常用用法的實(shí)例演示。

find

用來在指定目錄下查找文件

[語法]

find(選項(xiàng))(參數(shù))

[選項(xiàng)]

-amin<分鐘>:查找在指定時(shí)間曾被存取過的文件或目錄,單位以分鐘計(jì)算;
-anewer<參考文件或目錄>:查找其存取時(shí)間較指定文件或目錄的存取時(shí)間更接近現(xiàn)在的文件或目錄;
-atime<24小時(shí)數(shù)>:查找在指定時(shí)間曾被存取過的文件或目錄,單位以24小時(shí)計(jì)算;
-cmin<分鐘>:查找在指定時(shí)間之時(shí)被更改過的文件或目錄;
-cnewer<參考文件或目錄>查找其更改時(shí)間較指定文件或目錄的更改時(shí)間更接近現(xiàn)在的文件或目錄;
-ctime<24小時(shí)數(shù)>:查找在指定時(shí)間之時(shí)被更改的文件或目錄,單位以24小時(shí)計(jì)算;
-daystart:從本日開始計(jì)算時(shí)間;
-depth:從指定目錄下最深層的子目錄開始查找;
-expty:尋找文件大小為0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄;
-exec<執(zhí)行指令>:假設(shè)find指令的回傳值為True,就執(zhí)行該指令;
-false:將find指令的回傳值皆設(shè)為False;
-fls<列表文件>:此參數(shù)的效果和指定“-ls”參數(shù)類似,但會(huì)把結(jié)果保存為指定的列表文件;
-follow:排除符號(hào)連接;
-fprint<列表文件>:此參數(shù)的效果和指定“-print”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fprint0<列表文件>:此參數(shù)的效果和指定“-print0”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fprintf<列表文件><輸出格式>:此參數(shù)的效果和指定“-printf”參數(shù)類似,但會(huì)把結(jié)果保存成指定的列表文件;
-fstype<文件系統(tǒng)類型>:只尋找該文件系統(tǒng)類型下的文件或目錄;
-gid<群組識(shí)別碼>:查找符合指定之群組識(shí)別碼的文件或目錄;
-group<群組名稱>:查找符合指定之群組名稱的文件或目錄;
-help或——help:在線幫助;
-ilname<范本樣式>:此參數(shù)的效果和指定“-lname”參數(shù)類似,但忽略字符大小寫的差別;
-iname<范本樣式>:此參數(shù)的效果和指定“-name”參數(shù)類似,但忽略字符大小寫的差別;
-inum<inode編號(hào)>:查找符合指定的inode編號(hào)的文件或目錄;
-ipath<范本樣式>:此參數(shù)的效果和指定“-path”參數(shù)類似,但忽略字符大小寫的差別;
-iregex<范本樣式>:此參數(shù)的效果和指定“-regexe”參數(shù)類似,但忽略字符大小寫的差別;
-links<連接數(shù)目>:查找符合指定的硬連接數(shù)目的文件或目錄;
-iname<范本樣式>:指定字符串作為尋找符號(hào)連接的范本樣式;
-ls:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出;
-maxdepth<目錄層級(jí)>:設(shè)置最大目錄層級(jí);
-mindepth<目錄層級(jí)>:設(shè)置最小目錄層級(jí);
-mmin<分鐘>:查找在指定時(shí)間曾被更改過的文件或目錄,單位以分鐘計(jì)算;
-mount:此參數(shù)的效果和指定“-xdev”相同;
-mtime<24小時(shí)數(shù)>:查找在指定時(shí)間曾被更改過的文件或目錄,單位以24小時(shí)計(jì)算;
-name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-newer<參考文件或目錄>:查找其更改時(shí)間較指定文件或目錄的更改時(shí)間更接近現(xiàn)在的文件或目錄;
-nogroup:找出不屬于本地主機(jī)群組識(shí)別碼的文件或目錄;
-noleaf:不去考慮目錄至少需擁有兩個(gè)硬連接存在;
-nouser:找出不屬于本地主機(jī)用戶識(shí)別碼的文件或目錄;
-ok<執(zhí)行指令>:此參數(shù)的效果和指定“-exec”類似,但在執(zhí)行指令之前會(huì)先詢問用戶,若回答“y”或“Y”,則放棄執(zhí)行命令;
-path<范本樣式>:指定字符串作為尋找目錄的范本樣式;
-perm<權(quán)限數(shù)值>:查找符合指定的權(quán)限數(shù)值的文件或目錄;
-print:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式為每列一個(gè)名稱,每個(gè)名稱前皆有“./”字符串;
-print0:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設(shè)find指令的回傳值為Ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出。格式可以自行指定;
-prune:不尋找字符串作為尋找文件或目錄的范本樣式;
-regex<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:將find指令的回傳值皆設(shè)為True;
-typ<文件類型>:只尋找符合指定的文件類型的文件;
-uid<用戶識(shí)別碼>:查找符合指定的用戶識(shí)別碼的文件或目錄;
-used<日數(shù)>:查找文件或目錄被更改之后在指定時(shí)間曾被存取過的文件或目錄,單位以日計(jì)算;
-user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
-version或——version:顯示版本信息;
-xdev:將范圍局限在先行的文件系統(tǒng)中;
-xtype<文件類型>:此參數(shù)的效果和指定“-type”參數(shù)類似,差別在于它針對(duì)符號(hào)連接檢查。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 01 “沈伊萊,班主任來了”沈伊萊眼剛瞇上,就被坐在前面的曹俊用手戳醒了,聽到他這句“班主任來了”,嚇的她馬上從書...
    朵壹閱讀 461評(píng)論 0 1
  • 今天喆喆早早起床了,我在下面儲(chǔ)藏室里烙餅,喆喆下來說媽媽我餓了,然后拿著兩根火腿腸讓我在電餅鐺里給她煎煎吃,這小家...
    劉欣喆閱讀 275評(píng)論 0 0
  • 昨天上午老師給我們發(fā)校服,還給我們新襪子,那個(gè)襪子很長,老師還說, 要買白色的鞋子,中午媽媽帶我去買鞋子,買鞋子的...
    紀(jì)承昊閱讀 121評(píng)論 0 0
  • 今天晚上,我表姐和他的朋友還有他的鄰居。來找我玩。想知道我們怎么玩么?就讓我給你講講吧! 我們?nèi)?..
    8d80ca5a9e93閱讀 131評(píng)論 0 1

友情鏈接更多精彩內(nèi)容