1. 程式人生 > >linux第二課

linux第二課

grep linux

文件名的通配符:

[0-9]\[a-z]\[[:digit:]]\[[:alpha:]]\[[:alnum]]\[[:upper:]]\[[:lower:]]\[[:black:]]

rename重命名

# rename .txt .xsl /app

tree

查看結構 -d -L

tr

# ifconfig eth0 |tr a-z A-Z >ip.txt 要先轉換再導出,才能保存
# echo ‘error!!!‘ |tr a-z A-Z >error.txt 1>&2  
正確的輸出結果是1.錯誤是2,這個是將正確的轉換成錯誤的輸出,正確的輸出error!!!已經被導入了error.txt,所以不應該展示,但現在展示是因為正確的轉成了錯誤的輸出

df 磁盤

mail發郵件

# mail "hi" |mail -s "hello" [email protected]

tee可以將命令保存一份下來

# echo hello |tee /app/test.txt |tr a-z A-Z

重定向

# tr a-z A-Z < /etc/issue > /tmp/issue.out

做個題

1到100的和

# echo {1..100} |tr " " "+" |bc      bc為運算

chage

chage -l user1 查詢密碼
chage user1 交互式設置策略 -d yyyy-mm-dd指定密碼的上次修改時間
-E yyyy-mm-dd 設置密碼過期時間
-I天數 密碼過期多少天後賬戶過期
-m 天數 密碼最小存活期
-M 天數 密碼最大存活期
-W 天數 密碼過期前多少天提醒用戶

useradd 查詢id +username

-u 指定uid
-g 指定gid
-c 註釋
-d 指定家目錄 要先存在上級目錄,家目錄不存在

gpasswd

groupname 設置密碼給組
-a user group添加用戶到附加組
-d user group 將用戶從組內踢掉

umask 抹去什麽權限

在umask是002的時候,如下解釋
默認權限,directory是777 ,file 是666
那麽創建directory時,就會減去002,就是775 rwxrwxr-x
   創建file時,就會減去002,就是664 rw-rw-r--
直接修改umask   umask 064
umask但凡是奇數時,必有x,目錄權限是偶數的話,相減時,就得加1

1、tr 轉換和刪除

 -s  將重復字符合並  
    tr -s  [[:blank:]] :將多個space合成一個,轉換成‘:’ 老鐵們,blank不帶換行,space帶換行
-d  刪除選定內容
    tr -d [a-zA-Z]

2、head 取首

-n 獲取前多少行 
-c 獲取前多少字符

3、tail 取尾

-f顯示追加的新內容,多用於監控日誌

4、cut 抽取

-d 指定分隔符是什麽   cut -d:則是以冒號為分隔符,多配合-f使用
-f  取第幾個字段      -f 2,5,取2和5    -f 2-5 ,取2到5
-c  按字符切割   cut -c 1-4 /etc/passwd   取passwd 前四個字符

5、wc 收集文本統計數據

wc 等同於-l-w-c全部
-l 計數行數
-w 計數單詞數
-c 計數字節數
-m 計數字符數

6、sort 排序

-n 按數字排序
-r 倒序
-f 選項忽略(fold)字符串中的字符大小寫
-u 選項(獨特,unique)刪除輸出中的重復行   
-t c 以c作為字段界定符   sort -t: /etc/passwd 配合-k
-k n 以c之後的第n個字段進行排序

7、uniq去重

uniq 
-c: 顯示每行重復出現的次數 
-d: 僅顯示重復過的行 
-u: 僅顯示不曾重復的行 連續且完全相同方為重復

8、grep搜索

grep=grep--color
-v顯示不被匹配到的行  grep -v  root /etc/passwd
-i: 忽略字符大小寫        grep -i root /etc/passwd 
-n:顯示匹配的行號      grep -n root /etc/passwd
-c: 統計匹配的行數        grep -c root /etc/passwd
-o: 僅顯示匹配到的字符串  grep -o root /etc/passwd
-q: 靜默模式,不輸出任何信息  grep -q root /etc/passwd >/app/123.txt
-A #: after, 後#行  grep -2 root /etc/passwd
-B #: before, 前#行 grep -2 root /etc/passwd
-C #:context, 前後各#行 grep -2 root /etc/passwd
-e:實現多個選項間的邏輯or關系 grep –e ‘root‘ -e ‘guanjunhou‘  /etc/passwd 
-w:匹配整個單詞 grep -w root /etc/passwd
-E:使用ERE 
-F:相當於fgrep,不支持正則表達式

9、字符匹配、通配符(符號匹配一大片~)

 .   匹配任意單個字符 
 []  匹配指定範圍內的任意單個字符 
 [^] 匹配指定範圍外的任意單個字符
 [:alnum:] 字母和數字 
 [:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z 
 [:lower:] 小寫字母 
 [:upper:] 大寫字母 
 [:blank:] 空白字符(空格和制表符) 
 [:space:] 水平和垂直的空白字符(比[:blank:]包含的範圍廣) 
 [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴...) 
 [:digit:] 十進制數字 
 [:xdigit:]十六進制數字 
 [:graph:] 可打印的非空白字符 
 [:print:] 可打印字符 
 [:punct:] 標點符號

匹配次數

 * 匹配前面的字符任意次,包括0次 貪婪模式:盡可能長的匹配 grep root*
 .* 任意長度的任意字符 
 \? 匹配其前面的字符0或1次 
 \+ 匹配其前面的字符至少1次 
 \{n\} 匹配前面的字符n次 
 \{m,n\} 匹配前面的字符至少m次,至多n次 
 \{,n\} 匹配前面的字符至多n次 
 \{n,\} 匹配前面的字符至少n次


位置錨定:定位出現的位置

 ^ 行首錨定,用於模式的最左側 
 $ 行尾錨定,用於模式的最右側 
 ^PATTERN$  用於模式匹配整行 
 ^$  空行 
 ^[[:space:]]*$  空白行 
 \< 或 \b 詞首錨定,用於單詞模式的左側 
 \> 或 \b 詞尾錨定;用於單詞模式的右側 
 \<PATTERN\> 匹配整個單詞

練習題:

* 1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址

# ifconfig eth0 |head -2 |tail -1 |cut -d: -f2 |cut -d" " -f1

* 2、查出分區空間使用率的最大百分比值

#df -h |tr -s " " % |cut -d% -f5 |sort -nr |head -1

* 3、查出用戶UID最大值的用戶名、UID及shell類型

# cat /etc/passwd |cut -d: -f1,3,7 |sort -t: -k2 -n |tail -1

* 4、查出/tmp的權限,以數字方式顯示

# stat /tmp | head -4 |tail -1 | cut -d ‘(‘ -f 2 | cut -d ‘/‘ -f 1
# stat -c %a /tmp/

* 5、統計當前連接本機的每個遠程主機IP的連接數,並按從大到小

# netstat -nt | tr -s ‘ ‘ | cut -d ‘ ‘ -f5 |grep -v "Add\|server" |cut -d: -f1 |sort |uniq -c
 練習題:head tail cat cut
1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址 
2、查出分區空間使用率的最大百分比值
3、查出用戶UID最大值的用戶名、UID及shell類型
4、查出/tmp的權限,以數字方式顯示
5、統計當前連接本機的每個遠程主機IP的連接數,並按從大 到小排序
# ifconfig eth0 |head -2|tail -1|cut -d: -f2|tr -d [a-zA-Z]
# df |tr -s " " :|cut -d: -f5|head -2|tail -1
# cat /etc/passwd |sort -nt: -k3|tail -1|cut -d: -f1,3,7
# stat /tmp|head -4|tail -1|cut -d‘(‘ -f2 |cut -d"/" -f1
# netstat -nt |tr -s ‘ ‘ :|sort -nrt: -k3|head -1|cut -d: -f5

練習題:grep

1、顯示/proc/meminfo文件中以大小s開頭的行(要求:使用兩 種方法)
2、顯示/etc/passwd文件中不以/bin/bash結尾的行
3、顯示用戶rpc默認的shell程序
4、找出/etc/passwd中的兩位或三位數
5、顯示CentOS7的/etc/grub2.cfg文件中,至少以一個空白 字符開頭的且後面存非空白字符的行 
6、找出“netstat -tan”命令的結果中以‘LISTEN’後跟任意多 個空白字符結尾的行 
7、顯示CentOS7上所有系統用戶的用戶名和UID
8、添加用戶bash、testbash、basher、sh、nologin(其shell 為/sbin/nologin),找出/etc/passwd用戶名同shell名的行

# grep "^[sS]" /proc/meminfo
# grep -i "^s" /proc/meminfo
# grep "^S\|^s" /proc/meminfo
# grep -e ^s -e ^S  /proc/meminfo
# grep -v "/bin/bash$" /etc/passwd
# grep "^rpc\>" etc/passwd |cut -d: -f7
# grep "[[:digit:]]\{2,3\}" /etc/passwd
# cat grub.conf |grep "^[[:space:]]\+[^[:space:]]
# netstat -tan |grep "LISTEN[[:space:]]\+"
# cat /etc/passwd | cut -d ‘:‘ -f 1,3 | grep "\<[1-4]\?[0-9]\?[0-9]\>"
# cat /etc/passwd |grep "\(^.*\)\>.*\<\1$"
# cat /etc/passwd |egrep "(^.*)\>.*/\1$"


練習題:

1. Linux文件權限一共10位長度,分成四段,第三段表示的內容是: C

A 文件類型 B 文件所有者的權限 
C 文件所有者所在組的權限 D 其他用戶的權限
# stat /app/123.txt       (-rw-r--r--)

2. 一個文件名字為rr.Z,可以用來解壓縮的命令是:C

A tar B gzip C compress D uncompress

3. 在shell中變量的賦值有四種方法,其中,采用name=12的方法稱:A

A 直接賦值 B使用read命令 
C 使用命令行參數 D使用命令的輸出

4. 哪個命令可以從文本文件的每一行中截取指定內容的數據: D

A cp B dd C fmt D cut 
# cut -d: -f7 /etc/passwd

5. Linux有三個查看文件的命令,若希望在查看文件內容過程中可以用光標上下移動來查看文件內容,應使用哪個命令: C

A cat B more C less D menu 
# cat\|more\|less etc/passwd

6. 對名為fido的文件用chmod 551 fido 進行了修改,則它的許可權是:D

A -rwxr-xr-x B -rwxr–r– C -r–r–r– D -r-xr-x--x  
-r-xr-x--x  (rwx=421)

7. 用ls –al 命令列出下面的文件列表, 哪個文件是符號連接文件: D

A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello 
B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey 
C drwxr–r– 1 hel users 1024 Sep 10 08:10 zhang
D lrwxr–r– 1 hel users 2024 Sep 12 08:12 cheng 
軟連接前帶l,索引還是1,硬鏈接索引+1

8. 在重新啟動Linux系統的同時把內存中的信息寫入硬盤,應使用哪個命令實現:D

A # reboot 
B # halt 
C # init 3 
D # shutdown –r now

9. 關閉linux系統(不重新啟動)可使用哪個命令:B

A Ctrl Alt Del B halt C shutdown -r now D reboot

10.在vi編輯器中的命令模式下,鍵入哪個可在光標當前所在行下添加一新行:B

A 〈a〉; B 〈o〉; C 〈I〉; D A

11.在vi編輯器中的命令模式下,刪除當前光標處的字符使用哪個命令:A

A 〈x〉; B 〈d〉;〈w〉; C 〈D〉; D 〈d〉;〈d〉;

12.在vi編輯器中的命令模式下,重復上一次對編輯的文本進行的操作,可使用哪個命令:C

A 上箭頭 B 下箭頭 C 〈.〉; D 〈*〉;

13.用命令ls -al顯示出文件ff的描述如下所示,由此可知文件ff的類型為 : A

-rwxr-xr– 1 root root 599 Cec 10 17:12 ff 
A 普通文件 B 硬鏈接 C 目錄 D 符號鏈接  (-普通文件d目錄l“小寫L”連接)

14.刪除文件命令為:D

A mkdir B rmdir C mv D rm

15對文件進行歸檔的命令為:D

A dd B cpio C gzip D tar

16.改變文件所有者的命令為:C

A chmod 
B touch 
C chown 
D cat

17.在給定文件中查找與設定條件相符字符串的命令為:A

A grep 
B gzip 
C find 
D sort

18.建立一個新的空文件可以使用的命令為:D

A chmod 
B more 
C cp 
D touch

19.在下列命令中,不能顯示文本文件內容的命令是:D

A more 
B less 
C tail 
D join

20. 設超級用戶root當前所在目錄為:/usr/local,鍵入cd命令後,用戶當前所在目錄為 : B

A /home 
B /root 
C /home/root 
D /usr/local

21. 將光盤CD-ROM(hdc)安裝到文件系統的/mnt/cdrom目錄下的命令是:C

A mount /mnt/cdrom 
B mount /mnt/cdrom /dev/hdc 
C mount /dev/hdc /mnt/cdrom 
D mount /dev/hdc

22.將光盤/dev/hdc卸載的命令是:A

A umount /dev/hdc 
B unmount /dev/hdc 
C umount /mnt/cdrom /dev/hdc 
D unmount /mnt/cdrom /dev/hdc

23.在/home/stud1/wang目錄下有一文件file,使用以下哪個可實現在後臺執行命令,此命令將file文件中的內容輸出到file.copy文件中:C

A cat file 〉;file.copy 
B cat 〉;file.copy 
C cat file > file.copy & 
D cat file 〉;file.copy &


本文出自 “13277682” 博客,謝絕轉載!

linux第二課