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第二課