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