Linux管理員秘技:用快捷命令一招制勝
Linux的命令行方式有著強(qiáng)大的功能,對(duì)于熟練的Linux系統(tǒng)管理員來說,往往只需要通過各種技巧,組合構(gòu)成一條復(fù)雜的命令,從而完成用戶任務(wù)。
那么一條復(fù)雜的Linux命令怎樣構(gòu)成呢?下面來介紹幾個(gè)技巧。
利用輸入/輸出重定向
在Linux命令行模式中,如果命令所需的輸出不是來自鍵盤,而是來自指定的文件,這就是輸入重定向。同理,命令的輸出也可以不顯示在屏幕上,而是寫入到指定文件中,這就是輸出重定向。接下來看看標(biāo)準(zhǔn)輸入/輸出重定向在構(gòu)造一條Linux命令中的實(shí)際應(yīng)用。
1.輸入重定向和輸出重定向
# wc home.txt
第一條命令將文件aa.txt作為wc命令的輸入,統(tǒng)計(jì)出aa.txt的行數(shù)、單詞數(shù)和字符數(shù)。第二條命令將ls命令的輸出保存在一個(gè)名為home.txt的文件中。如果>符號(hào)后邊的文件已存在,那么這個(gè)文件將被重寫。
2.同時(shí)使用輸入和輸出重定向
# iconv -f gb18030 -t utf-8 new-aa.txt
這條命令里同時(shí)用到了輸入重定向(new-aa.txt)。aa.txt實(shí)際是一個(gè)gb18030編碼的文件,而new-aa.txt則是將aa.txt的內(nèi)容轉(zhuǎn)換成utf-8格式的新文件。
利用管道
利用Linux所提供的管道符“|”將兩個(gè)命令隔開,管道符左邊命令的輸出就會(huì)作為管道符右邊命令的輸入。連續(xù)使用管道意味著第一個(gè)命令的輸出會(huì)作為第二個(gè)命令的輸入,第二個(gè)命令的輸出又會(huì)作為第三個(gè)命令的輸入,依此類推。下面來看看管道是如何在構(gòu)造一條Linux命令中得到應(yīng)用的。
1.利用一個(gè)管道
# rpm -qa|grep licq
這條命令使用一個(gè)管道符“|”建立了一個(gè)管道。管道將rpm -qa命令的輸出(包括系統(tǒng)中所有安裝的RPM包)作為grep命令的輸入,從而列出帶有l(wèi)icq字符的RPM包來。轉(zhuǎn)
2.利用多個(gè)管道
# cat /etc/passwd | grep /bin/bash | wc -l
這條命令使用了兩個(gè)管道,利用第一個(gè)管道將cat命令(顯示passwd文件的內(nèi)容)的輸出送給grep命令,grep命令找出含有“/bin/bash”的所有行;第二個(gè)管道將grep的輸入送給wc命令,wc命令統(tǒng)計(jì)出輸入中的行數(shù)。這個(gè)命令的功能在于找出系統(tǒng)中有多少個(gè)用戶使用bash。
利用命令替換
在Linux命令行模式下,當(dāng)遇到一對(duì)“`” (上分割符)時(shí),將首先執(zhí)行“`”中間包含的命令,然后將其輸出結(jié)果作為參數(shù)代入命令行中,這就是命令替換了。它類似于輸入輸出的重定向功能,但區(qū)別在于命令替換是將一個(gè)命令的輸出作為另外一個(gè)命令的參數(shù)。下面來看它的實(shí)際應(yīng)用。
1.使用命令替換
# touch `date +%Y%m%d%k%M%S`.txt
該命令使用了一次命令替換,date +%Y%m%d%k%M%S命令將首先執(zhí)行,它將按指定格式輸出當(dāng)前的時(shí)間。然后,這個(gè)時(shí)間將被作為touch命令的參數(shù),其結(jié)果是建立了一個(gè)以當(dāng)前時(shí)間為文件名的文件。
2.使用命令替換
# kill `/sbin/pidof smbd`
該命令將殺掉sshd的所有進(jìn)程。這里用pidof這個(gè)命令給出進(jìn)程號(hào),因?yàn)閗ill是針對(duì)進(jìn)程號(hào)進(jìn)行操作的。兩者通過命令替換,實(shí)現(xiàn)了只用一條命令就殺掉sshd所有進(jìn)程的功能。