六、網(wǎng)絡(luò)管理與相關(guān)應(yīng)用;
七、vi/vim編輯器;
八、Shell編程
六、網(wǎng)絡(luò)管理與相關(guān)應(yīng)用
# arp -a | awk '{print $4}' //得到網(wǎng)卡的 MAC地址
# dd if=/dev/zero bs=4096 count=1048576 | ssh [user@ip](mailto:user@ip) 'cat > /dev/null' //不浪費(fèi)磁盤的情況下測試網(wǎng)絡(luò)速度(通過 ssh 發(fā)送 4 GB 數(shù)據(jù)到遠(yuǎn)程主機(jī),但不會(huì)占用任何磁盤空間)
# dmesg | grep eth //顯示每個(gè)網(wǎng)卡的硬件配置信息
# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all //關(guān)閉ping
# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all //重啟ping
# ethtool eth0 //顯示或改變網(wǎng)卡設(shè)置(參考:man ethtool)
# ifconfig //查看當(dāng)前有效網(wǎng)絡(luò)接口信息
# ifconfig -a //查看當(dāng)前所有網(wǎng)絡(luò)接口信息
# ifconfig eth0 //查看指定網(wǎng)絡(luò)接口eth0信息
# ifconfig eth0 192.168.1.11 //設(shè)置eth0接口IP地址(標(biāo)準(zhǔn)掩碼)(相當(dāng)于動(dòng)態(tài)修改IP)
# ifconfig eth0 192.168.1.11 netmask 255.255.255.128 //設(shè)置eth0接口IP地址及子網(wǎng)掩碼
# ifconfig eth0 hw ether 000C1254D321 //更改網(wǎng)卡物理地址
# ifconfig lo //查看lo狀態(tài)
# ifdown eth0 //禁用eth0網(wǎng)絡(luò)接口
# ifdown lo //關(guān)閉本地回環(huán)網(wǎng)絡(luò)接口
# ifup eth0 //啟用eth0網(wǎng)絡(luò)接口
# ifup lo //啟動(dòng)本地回環(huán)網(wǎng)絡(luò)接口# ip ad sh //顯示IP地址等信息
# iptables -L // 查看防火墻設(shè)置
# iptraf //可交互式IP網(wǎng)絡(luò)監(jiān)控工具# mii-tool -v //查看網(wǎng)卡有關(guān)信息
# netconfig //設(shè)置網(wǎng)絡(luò)環(huán)境
# netstat -antp // 查看所有已經(jīng)建立的連接
# netstat -apt //顯示所有TCP應(yīng)用程序所使用的端口號(hào),并顯示使用此端口號(hào)的進(jìn)程
# netstat -lntp // 查看所有監(jiān)聽端口
# netstat -s // 查看網(wǎng)絡(luò)統(tǒng)計(jì)信息
# netstat -tulnp //目前系統(tǒng)上已在監(jiān)聽的網(wǎng)絡(luò)連接及其PID
# ping 10.52.19.187 //檢測到10.52.19.187之間是否連通
# ping -c 5 10.52.19.187 //向10.52.19.187發(fā)送5個(gè)分組報(bào)文
# ping -s 6553 -c 5 10.52.19.187 //向10.52.19.187發(fā)送5個(gè)分組、每組大小為6553字節(jié)的報(bào)文(注:最大分組報(bào)文不能超過65507字節(jié))
# ping -c 8 -i 3 -s 1024 -t 25 10.52.19.187 //向10.52.19.187以3秒間隔、包大小1024字節(jié)、IP生存期25、8個(gè)包發(fā)送報(bào)文
# route -n // 查看路由表
# tracepath 10.52.19.189 //顯示連接到10.52.19.189的路由
# traceroute -n 10.52.19.190 //對(duì)到達(dá)10.52.19.190的路由進(jìn)行跟蹤,且使用IP地址表示每一跳主機(jī)
# ss //顯示網(wǎng)絡(luò)套接字信息,它允許顯示類似netstat一樣的信息
# wget 192.168.20.148 //從網(wǎng)站192.168.20.148下載資料
動(dòng)態(tài)增加IP
# traceroute 211.148.192.136 //檢測到目的IP經(jīng)過的路由信息
# hostname //查看主機(jī)名稱
# hostname luo //設(shè)置主機(jī)名稱為 luo
# ping 192.168.1.10 //Ping主機(jī)192.168.1.10
# ifconfig eth0 add 10.52.19.147
# ifconfig eth0:0 broadcast 10.52.19.255
DNS域名
# nslookup 待解析域名(或IP)
# nslookup 211.148.192.136 //反向解析IP---域名
# nslookup [www.163.com](http://blog.chinaunix.net/link.php?url=http://www.163.com%2F) //解析指定的域名---IP
# route add default gw 192.168.1.1 //添加默認(rèn)網(wǎng)關(guān)為192.168.1.1
# route del default gw 192.168.1.1 //刪除默認(rèn)網(wǎng)關(guān)為192.168.1.1
NFS服務(wù)
# exportfs -auv //停止輸出所有共享目錄
# exportfs -av //輸出啟用所有共享目錄
# exportfs -rv //重新輸出共享目錄
# mount -t nfs 192.168.2.10:/luo /wei //在客戶機(jī)上掛載共享目錄到/wei
# service iptables stop //關(guān)閉防火墻
# service nfs start //啟動(dòng)nfs服務(wù)
# service portmap start //啟動(dòng)portmap服務(wù)
# showmount -a //顯示NFS服務(wù)器的客戶與被掛載目錄
# showmount -d //顯示NFS服務(wù)器被掛載的目錄
# vi /etc/exports //修改共享配置文件(加共享目錄)
showmount -e 192.168.2.10 6 //在客戶上查看服務(wù)器共享目錄
配置文件
vi /etc/hosts vi /etc/network //修改主機(jī)名稱配置文件
vi /etc/rc.local //修改mac地址配置文件
vi /etc/resolv.conf //修改DNS配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0 //修改網(wǎng)卡配置文件
vi /var/spool/cron/username //修改cron任務(wù)配置文件
vi /var/spool/mail //修改郵件配置文件
七、vi/vim編輯器
也可建立vi到vim的符號(hào)連接(即實(shí)際調(diào)用的是vim)
# mv /bin/vi /bin/vi.bak
# ln -s /usr/bin/vim /bin/vi
進(jìn)入vi的命令:
vi 直接進(jìn)入編輯并創(chuàng)建新文件
vi filename 編輯文件(不存在則創(chuàng)建文件),并將光標(biāo)置于第一行首
vi +n filename 打開文件,并將光標(biāo)置于第n行首
vi + filename 打開文件,并將光標(biāo)置于最后一行首
vi +/pattern filename 打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename 在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)文件
vi file1....filen 打開多個(gè)文件,依次進(jìn)行編輯
vi -o aaa bbb 水平窗口打開aaa,bbb兩個(gè)文件
vi -O aaa bbb 垂直窗口打開aaa,bbb兩個(gè)文件(Ctrl+W兩次可在多個(gè)文件間切換)多文本編輯的按鍵::n 編輯下一個(gè)文件:N 編輯上一個(gè)文件:files 列出目前這個(gè)vi的打開的所有文件多窗口情況下的按鍵功能::sp [filename] 打開一個(gè)新窗口,如果有加filename,表示在新窗口打開一個(gè)新文件,否則表示兩個(gè)窗口為同一個(gè)文件內(nèi)容(同步顯示)
[ctrl]+w+j[ctrl]+w+↓ 按鍵的按法是:先按下[ctrl]不放,再按下w后放開所有的按鍵,然后再按下j(或向下箭頭鍵),則光標(biāo)可移動(dòng)到下方的窗口[ctrl]+w+k[ctrl]+w+↑ 同上,不過光標(biāo)移動(dòng)到上面的窗口[ctrl]+w+q 其實(shí)就是:q結(jié)束離開。例如,想要結(jié)束下方的窗口,那么利用[ctrl]+w+↓移動(dòng)到下方窗口后,按下:q即可離開,也可以按下[ctrl]+w+q
塊選擇的按鍵意義:v 字符選擇,將光標(biāo)經(jīng)過的地方反白選擇
V 行選擇,將光標(biāo)經(jīng)過的行反白選擇
Ctrl + v 塊選擇,可以用長方形的方式選擇數(shù)據(jù)
y 將反白的地方復(fù)制起來
d 將反白的地方刪除
恢復(fù)命令:
u 恢復(fù)最后一個(gè)指令之前的結(jié)果. 繼續(xù)最后一個(gè)指令的執(zhí)行結(jié)果
ctrl+r 撤銷恢復(fù)
U 恢復(fù)光標(biāo)該行之所有改變
移動(dòng)光標(biāo)命令:
h 光標(biāo)左移一個(gè)字符
l 光標(biāo)右移一個(gè)字符
space 光標(biāo)右移一個(gè)字符
Backspace 光標(biāo)左移一個(gè)字符
k或Ctrl+p 光標(biāo)上移一行
j或Ctrl+n 光標(biāo)下移一行
Enter 光標(biāo)下移一行
w或W 光標(biāo)右移一個(gè)字至字首
b或B 光標(biāo)左移一個(gè)字至字首
e或E 光標(biāo)右移一個(gè)字至字尾
) 光標(biāo)移至句尾
( 光標(biāo)移至句首
} 光標(biāo)移至段落開頭
{ 光標(biāo)移至段落結(jié)尾
nG 光標(biāo)移至第n行首
n+ 光標(biāo)下移n行
n- 光標(biāo)上移n行
n$ 光標(biāo)移至第n行尾
H 光標(biāo)移至屏幕頂行
M 光標(biāo)移至屏幕中間行
L 光標(biāo)移至屏幕最后行
0 (注意是數(shù)字零)光標(biāo)移至當(dāng)前行首
$ 光標(biāo)移至當(dāng)前行尾
翻屏命令:
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部
插入文本、復(fù)制與粘貼:
i 在光標(biāo)前插入
I 在當(dāng)前行首插入
a 在光標(biāo)后插入
A 在當(dāng)前行尾插入
o 在當(dāng)前行之下新開一行
O 在當(dāng)前行之上新開一行
r 替換當(dāng)前字符
R 替換當(dāng)前字符及其后的字符,直至按ESC鍵
s 從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符
S 刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW 修改指定數(shù)目的字
nCC 修改指定數(shù)目的行
yy p 復(fù)制當(dāng)前行,并粘貼到下一行nyy n為數(shù)字。復(fù)制光標(biāo)所在的向下n行,例如20yy,則是復(fù)制20行y1G 復(fù)制光標(biāo)所在行到第一行的所有數(shù)據(jù)yG 復(fù)制光標(biāo)所在行到最后一行的所有數(shù)據(jù)y0 復(fù)制光標(biāo)所在的那個(gè)字符到該行行首的所有數(shù)據(jù)y$ 復(fù)制光標(biāo)所在的那個(gè)字符到該行行尾的所有數(shù)據(jù)
shift + i 在該行之首插入字符
shift + a 在該行末尾輸入字符
shift + r 改寫自光標(biāo)位置及后面的所有內(nèi)容
shift +o 在光標(biāo)之上新增一行輸入字符
刪除命令:
ndw或ndW 刪除光標(biāo)處開始及其后的n-1個(gè)字
d0 刪至行首(為數(shù)字0)
d$ 刪至行尾shift + d 剪切至行尾
dd 刪除一行
ndd 刪除自光標(biāo)開始的n行
s 刪除光標(biāo)所在之字符,并進(jìn)入輸入模式直到《ESC》
S 刪除光標(biāo)所在之該行資料,并進(jìn)入輸入模式直到《ESC》
x或X 刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的 nx n為數(shù)字,連續(xù)向后刪除n個(gè)字符。如,要連續(xù)刪除10個(gè)字符,則:“10x”
Ctrl+u 刪除輸入方式下所輸入的文本
搜索及替換命令:
/pattern 從光標(biāo)開始處向文件尾搜索pattern
?pattern 從光標(biāo)開始處向文件首搜索pattern
n 在同一方向重復(fù)上一次搜索命令
N 在反方向上重復(fù)上一次搜索命令
:s/p1/p2/ 替換當(dāng)前行第一個(gè)p1為p2
:s/p1/p2/g 將當(dāng)前行中所有p1均用p2替代
:n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 將文件中所有p1均用p2替換
: 1,$s/old/new/g 將文件中所有的『old』改成『new』: 1,$s/old/new/gc 將文件中所有的『old』改成『new』,并在改前提示用戶確認(rèn)
: 10,20s/^/ / 將第10行至第20行資料的最前面插入5個(gè)空格
: %s/^m//g 刪除文件中所有的^M符號(hào)
選項(xiàng)設(shè)置:
all 列出所有選項(xiàng)設(shè)置情況
term 設(shè)置終端類型
ignorance 在搜索中忽略大小寫
list 顯示制表位(Ctrl+I)和行尾標(biāo)志($)
number 顯示行號(hào)
report 顯示由面向行的命令修改過的數(shù)目
terse 顯示簡短的警告信息
warn 在轉(zhuǎn)到別的文件時(shí)若沒保存當(dāng)前文件則顯示NO write信息
nomagic 允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan 禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開始
mesg 允許vi顯示其他用戶用write寫到自己終端上的信息
最后行方式命令:
:n1,n2 co n3 將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3 將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d 將n1行到n2行之間的內(nèi)容刪除
:e filename 打開文件filename進(jìn)行編輯
:e! dd 強(qiáng)制關(guān)閉當(dāng)前文件(不保存)打開新文件dd
: e! 放棄修改重新編輯
:q! 不保存文件并退出vi
:r fff 在當(dāng)前位置讀入fff文件
:set nonu 不顯示行號(hào)
:set nu 顯示行號(hào)
:w 保存輸入的內(nèi)容到當(dāng)前文件
:w eee 另存為eee文件
:wq 保存并退出
:x 保存當(dāng)前文件并退出
:n1,n2 w eee 將文件中n1行至n2行的內(nèi)容保存成eee文件:!command 暫時(shí)離開vi到命令行模式下執(zhí)行command的顯示結(jié)果。例如,“:! ls /home”即可在vi當(dāng)中查看/home下面以ls輸出的文件信息
寄存器操作:
"?nyy 將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyw 將當(dāng)前行及其下n個(gè)字保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyl 將當(dāng)前行及其下n個(gè)字符保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?p 取出寄存器?中的內(nèi)容并將其放到光標(biāo)位置處。這里?可以是一個(gè)字母,也可以是一個(gè)數(shù)字
ndd 將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號(hào)刪除寄存器中vim操作環(huán)境(不建議修改/etc/vimrc文件;建議手動(dòng)修改~/.vimrc文件)

vim常用指令示意圖

vim常用指令示意圖
八、shell編程
# grep $LOGNAME /etc/passwd //顯示當(dāng)前登錄用戶使用的shell
# sh //啟動(dòng)bsh(為Bourne Shell的簡稱---伯恩shell)
# bash //啟動(dòng)bash(為Bourne Again Shell的簡稱)
# csh //啟動(dòng)C Shell
# type [-tpa] name //bash shell的內(nèi)置命令。
type:不加任何參數(shù)時(shí),type會(huì)顯示出name是外部命令還是bash內(nèi)置命令
-t :當(dāng)加入-t參數(shù)時(shí),type會(huì)將name以下面這些字眼顯示出它的意義:
file:表示為外部命令
alias:表示該命令為命令別名所設(shè)置的名稱;
builtin:表示該命令為bash內(nèi)置的命令功能。
-p :如果后面接的name為外部命令時(shí),才會(huì)顯示完整文件名;
-a :會(huì)由PATH變量定義的路徑中,將所有含name的命令都列出來,包含alias
# cp/var/spool/mail/root /etc/crontab \> /etc/fstab /root
//將三個(gè)文件復(fù)制到root目錄下(如果命令串太長的話,可以用兩行來輸出)。
“\[Enter]”為轉(zhuǎn)義符,
“>”為系統(tǒng)自動(dòng)出現(xiàn)的,不需要輸入。
# source ~/.bashrc //將主文件夾的~/.bashrc的設(shè)置讀入目前的bash環(huán)境中
# . ~/.bashrc //將主文件夾的~/.bashrc的設(shè)置讀入目前的bash環(huán)境中
# ll -d/etc/cron* //找出/etc/下面以cron為開頭的文件名
# ll -d/etc/????? //找出/etc/下面文件名剛好是五個(gè)字母的文件名
# ll -d/etc/*[0-9]* //找出/etc/下面文件名含有數(shù)字的文件名
# ll -d/etc/[^a-z]* //找出/etc/下面文件名開頭非為小寫字母的文件名
# cp -a /etc/[^a-z]*/tmp //將上例找到的文件復(fù)制到 /tmp中
# last | cut -d ' ' -f1 | sort //將輸出的數(shù)據(jù)僅取賬號(hào),并加以排序
# last | cut -d ' ' -f1 | sort | uniq //將輸出的數(shù)據(jù)僅取賬號(hào),排序后僅取出一位
# last | cut -d ' ' -f1 | sort | uniq -c
//將輸出的數(shù)據(jù)僅取賬號(hào),排序后僅取出一位并顯示每個(gè)賬號(hào)登錄的總次數(shù)
# last | grep [a-zA-Z]| grep -v ‘wtmp’| wc -l //顯示登錄系統(tǒng)的總?cè)藬?shù)
# last | tee last.list | cut -d “ “ -f1 //將last的輸出存一份到last.list文件中
# ls -l/home | tee ~/homefile | more
//將ls的數(shù)據(jù)存一份到~/homefile,同時(shí)屏幕也有輸出信息
# ls -l/ | tee -a ~/homefile | more //加上-a參數(shù)則能將信息累加
# cp/etc/passwd /root/passwd &&unix2dos /root/passwd
# file/etc/passwd /root/passwd
# cat/root/passwd | tr -d ‘\r’ > /root/passwd.linux
# ll /etc/passwd /root/passwd*
//將/etc/passwd轉(zhuǎn)存成dos斷行到/root/passwd中,再將^M 符號(hào)刪除。\r指的是dos的斷行字符 ^M
# cat -A /etc/man.config
# cat/etc/man.config | col -x | cat -A | more
//利用cat -A 顯示所有特殊按鍵,最后以 col將[tab]轉(zhuǎn)成空白。
//上面看到的^I符號(hào)就是tab,如此一來,[tab]按鍵會(huì)被替換成為空格鍵,輸出就美觀多了
# mancol > /root/col.man
# vi/root/col.man
# mancol | col -b > /root/col.man //將col的man page轉(zhuǎn)存成為/root/col.man的純文本文件
通配符與特殊符號(hào) 意義
* 代表『 0 個(gè)到無窮多個(gè)』任意字符
? 代表『一定有一個(gè)』任意字符
[ ] 同樣代表『一定有一個(gè)在括號(hào)內(nèi)』的字符(非任意字符)。
例如 [abcd] 代表『一定有一個(gè)字符, 可能是 a, b, c, d 這四個(gè)任何一個(gè)』
[ - ] 若有減號(hào)在中括號(hào)內(nèi)時(shí),代表『在編碼順序內(nèi)的所有字符』。
例如 [0-9] 代表 0 到 9 之間的所有數(shù)字,因?yàn)閿?shù)字的語系編碼是連續(xù)的!
[^ ] 若中括號(hào)內(nèi)的第一個(gè)字符為指數(shù)符號(hào) (^) ,那表示『反向選擇』,
例如 [^abc] 代表 一定有一個(gè)字符,只要是非 a, b, c 的其他字符就接受的意思。
bash 環(huán)境中的特殊符號(hào) 內(nèi)容
# 批注符號(hào):這個(gè)最常被使用在 script 當(dāng)中,視為說明!在后的數(shù)據(jù)均不運(yùn)行
\ 跳脫符號(hào):將『特殊字符或通配符』還原成一般字符
| 管線 (pipe):分隔兩個(gè)管線命令的界定(后兩節(jié)介紹);
; 連續(xù)命令下達(dá)分隔符:連續(xù)性命令的界定 (注意!與管線命令并不相同)
~ 用戶的家目錄$ 取用變量前導(dǎo)符:亦即是變量之前需要加的變量取代值
& 工作控制 (job control):將命令變成背景下工作
! 邏輯運(yùn)算意義上的『非』 not 的意思!
/ 目錄符號(hào):路徑分隔的符號(hào)
>, >> 數(shù)據(jù)流重導(dǎo)向:輸出導(dǎo)向,分別是『取代』與『累加』
<, << 數(shù)據(jù)流重導(dǎo)向:輸入導(dǎo)向
' ' 單引號(hào),不具有變量置換的功能
" " 具有變量置換的功能!
` ` 兩個(gè)『 ` 』中間為可以先運(yùn)行的命令,亦可使用 $( )
( ) 在中間為子 shell 的起始與結(jié)束
{ } 在中間為命令區(qū)塊的組合!
基礎(chǔ)正則表達(dá)式字符 (characters)
^word意義:待查找的字符串(word)在行首范例:查找行首為 # 開始的那一行,并列出行號(hào)
grep -n '^#' regular_express.txt word$ 意義:待查找的字符串(word)在行尾范例:將行尾為 ! 的那一行列印出來,并列出行號(hào)
grep -n '!$' regular_express.txt . 意義:代表一定有一個(gè)任意字符的字符范例:查找的字符串可以是 (eve) (eae) (eee) (e e), 但不能僅有 (ee),亦即 e 與 e 中間“一定”僅有一個(gè)字符,而空格符也是字符
grep -n 'e.e' regular_express.txt \ 意義:轉(zhuǎn)義字符,將特殊符號(hào)的特殊意義去除范例:查找含有單引號(hào) ' 的那一行
grep -n \' regular_express.txt * 意義:重復(fù)零個(gè)到無窮多個(gè)的前一個(gè) RE(regular)字符范例:找出含有 (es) (ess) (esss) 等等的字符串,注意,因?yàn)?* 可以是 0 個(gè),所以 es 也是符合帶查找字符串。
另外,因?yàn)?* 為重復(fù)“前一個(gè) RE 字符”的符號(hào), 因此,在 * 之前必須要緊接著一個(gè) RE 字符喔。例如任意字符則為 “.*”
grep -n 'ess*' regular_express.txt [list] 意義:從字符集合的 RE 字符里面找出想要選取的字符范例:查找含有 (gl) 或 (gd) 的那一行,需要特別留意的是,在 [] 當(dāng)中代表一個(gè)待查找的字符,
例如“ a[afl]y ”代表查找的字符串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思
grep -n 'g[ld]' regular_express.txt [n1-n2] 意義:從字符集合的 RE 字符里面找出想要選取的字符范圍范例:查找含有任意數(shù)字的那一行。
需特別留意,在字符集合 [] 中的減號(hào) - 是有特殊意義的,他代表兩個(gè)字符之間的所有連續(xù)字符。但這個(gè)連續(xù)與否與 ASCII 編碼有關(guān),因此,你的編碼需要配置正確(在 bash 當(dāng)中,需要確定 LANG 與 LANGUAGE 的變量是否正確)。
例如所有大寫字符則為 [A-Z] grep -n '[A-Z]'
regular_express.txt [^list] 意義:從字符集合的 RE 字符里面找出不要的字符串或范圍范例:查找的字符串可以是 (oog) (ood) 但不能是 (oot) ,那個(gè) ^ 在 [] 內(nèi)時(shí),代表的意義是“反向選擇”的意思。
例如,我不要大寫字符,則為 [^A-Z]。
但是,需要特別注意的是,如果以 grep -n [^A-Z] regular_express.txt 來查找,卻發(fā)現(xiàn)該文件內(nèi)的所有行都被列出,為什么?因?yàn)檫@個(gè) [^A-Z] 是“非大寫字符”的意思, 因?yàn)槊恳恍芯蟹谴髮懽址?例如第一行的 "Open Source" 就有 p,e,n,o等小寫字符
grep -n 'oo[^t]' regular_express.txt \{n,m\} 意義:連續(xù) n 到 m 個(gè)的前一個(gè) RE 字符,若為 \{n\} 則是連續(xù) n 個(gè)的前一個(gè) RE 字符,若是 \{n,\} 則是連續(xù) n 個(gè)以上的前一個(gè) RE 字符范例:在 g 與 g 之間有2個(gè)到3個(gè)的o存在的字符串,亦即 (goog)(gooog)
grep -n 'go\{2,3\}g' regular_express.txt
# dmesg | grep -n -color=auto‘eth’
//用dmesg列出內(nèi)核信息,
//再以grep找出內(nèi)含eth的那些行,并顯色、加上行號(hào)
# dmesg | grep -n -A3 -B2 -color=auto ‘eth’
//承上,在關(guān)鍵字所在行的前兩行與后三行也一起找出來顯示
# test -e /pa/lamprj && echo "exist" || echo "Not exist"
//檢查/pa/lamprj目錄是否存在
文件測試的標(biāo)志與意義:
關(guān)於某個(gè)文件名的“文件類型”判斷,
如 test -e filename 表示存在否
-e 該文件名是否存在?(常用)
-f 該文件名是否存在且為文件(file)(常用)
-d 該文件名是否存在且為目錄(directory)(常用)
-b 該文件名是否存在且為一個(gè) block device 設(shè)備
-c 該文件名是否存在且為一個(gè) character device 設(shè)備
-S 該文件名是否存在且為一個(gè) Socket 文件
-p 該文件名是否存在且為一個(gè) FIFO (pipe) 文件
-L 該文件名是否存在且為一個(gè)連結(jié)文件關(guān)於文件的權(quán)限檢測,
如 test -r filename 表示可讀否 (但 root 權(quán)限常有例外)
-r 檢測該文件名是否存在且具有“可讀”的權(quán)限
-w 檢測該文件名是否存在且具有“可寫”的權(quán)限
-x 檢測該文件名是否存在且具有“可執(zhí)行”的權(quán)限
-u 檢測該文件名是否存在且具有“SUID”的屬性
-g 檢測該文件名是否存在且具有“SGID”的屬性
-k 檢測該文件名是否存在且具有“Sticky bit”的屬性
-s 檢測該文件名是否存在且為“非空白文件” 兩個(gè)文件之間的比較,
如:test file1 -nt file2
-nt (newer than)判斷 file1 是否比 file2 新
-ot (older than)判斷 file1 是否比 file2 舊
-ef 判斷 file1 與 file2 是否為同一文件,可用在判斷 hard link 的判定上。
主要意義在判定兩個(gè)文件是否均指向同一個(gè) inode 關(guān)於兩個(gè)整數(shù)之間的判定,
例如 test n1 -eq n2 -eq 兩數(shù)值相等 (equal)
-ne 兩數(shù)值不等 (not equal)
-gt n1 大於 n2 (greater than)
-lt n1 小於 n2 (less than)
-ge n1 大於等於 n2 (greater than or equal)
-le n1 小於等於 n2 (less than or equal) 判定字串的數(shù)據(jù)
test -z string 判定字串是否為 0,若 string 為空字串,則為 true
test -n string 判定字串是否非為0,若 string 為空字串,則為 false
注:-n 亦可省略 test str1 = str2 判定 str1 是否等於 str2 ,若相等,則回傳 true
test str1 != str2 判定 str1 是否不等於 str2 ,若相等,則回傳 false
多重條件判定,
例如:test -r filename -a -x filename -a 兩個(gè)條件同時(shí)成立!
例如 test -r file -a -x file,則 file 同時(shí)具有 r 與 x 權(quán)限時(shí),才回傳 true
-o 任何一個(gè)條件成立!
例如 test -r file -o -x file,則 file 具有 r 或 x 權(quán)限時(shí),就可回傳 true !
反相狀態(tài),
如 test ! -x file ,當(dāng) file 不具有 x 時(shí),回傳 true