RHEL6入门系列之十一,内/外部命令、重定向、管道
前面一口氣介紹了18個(gè)命令,可能大家都已經(jīng)有些暈了。學(xué)習(xí)Linux就是這樣,它不像Windows那樣的傻瓜式操作,要想學(xué)好Linux是必須要下苦功的。所以,Linux本身就不是一個(gè)面向普通用戶的桌面操作系統(tǒng),而是面向?qū)I(yè)運(yùn)維人員的服務(wù)器操作系統(tǒng)。不過(guò)大家也沒(méi)必要把Linux中的所有命令都一口氣全學(xué)完,其實(shí)只要掌握了前面這18個(gè)命令,就可以說(shuō)已經(jīng)通過(guò)了Linux入門(mén)的第一關(guān),就已經(jīng)可以來(lái)做一些基本操作了。關(guān)鍵還在于要反復(fù)練習(xí),把基礎(chǔ)打好。
今天主要介紹幾個(gè)在Bash中經(jīng)常用到的基本概念和功能。
一、內(nèi)部命令和外部命令 內(nèi)部命令,指的是集成在Shell里的命令,屬于shell的一部分,系統(tǒng)中沒(méi)有與命令單獨(dú)對(duì)應(yīng)的程序文件。只要shell被執(zhí)行,內(nèi)部命令就自動(dòng)載入內(nèi)存,用戶可以直接使用。如cd命令等。 外部命令,考慮到運(yùn)行效率等原因,不可能把所有的命令都集成在shell里,更多的Linux命令是獨(dú)立于shell之外的,這些就稱為外部命令。每個(gè)外部命令都對(duì)應(yīng)了系統(tǒng)中的一個(gè)文件,而Linux系統(tǒng)必須要知道外部命令對(duì)應(yīng)的程序文件所在的位置,才能由shell加載并執(zhí)行這些命令。如cp、ls等都屬于外部命令。 外部命令的程序文件大都存放在/bin、/sbin、/usr/bin……這些目錄里,Linux系統(tǒng)會(huì)默認(rèn)將這些路徑添加到一個(gè)名為PATH的變量里,執(zhí)行“echo $PATH”命令可以顯示出PATH變量里的保存的目錄路徑(路徑之間用“:”間隔)。 [root@localhost ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 每當(dāng)要執(zhí)行一個(gè)外部命令時(shí),Linux系統(tǒng)就會(huì)先從PATH變量所保存的這些路徑里去尋找命令所對(duì)應(yīng)的的程序文件,只有找到了程序文件才能正確地去執(zhí)行外部命令。這也就意味著,如果把一個(gè)外部命令所對(duì)應(yīng)的程序文件刪了,或者是存放外部命令程序文件的目錄沒(méi)有添加到PATH變量里,這些都會(huì)導(dǎo)致外部命令無(wú)法正常執(zhí)行,這點(diǎn)我們?cè)谝院筮€會(huì)再提到。當(dāng)然對(duì)于我們目前而言,并不需要知道這些外部命令的具體位置,甚至不用刻意地去分辨一個(gè)命令到底是內(nèi)部還是外部命令,因?yàn)樗鼈兊氖褂梅椒ǘ际腔绢愃频摹? 明白了內(nèi)部命令和外部命令的區(qū)別之后,下面介紹幾個(gè)相關(guān)的命令。 1、which命令——查找外部命令所對(duì)應(yīng)的程序文件 which命令用于查找Linux外部命令所對(duì)應(yīng)的程序文件,其搜索范圍由環(huán)境變量PATH決定。 如,查找ls命令所對(duì)應(yīng)的程序文件。 [root@localhost ~]# which ls alias ls='ls --color=auto' /bin/ls 執(zhí)行命令后,首先顯示出系統(tǒng)中所設(shè)置的ls命令的別名,然后是ls命令的程序文件“/bin/ls”。 如果要查找的是一個(gè)內(nèi)部命令,那將找不到任何對(duì)應(yīng)的程序文件。 [root@localhost ~]# which cd /usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) 2、help命令——查看內(nèi)部命令的幫助信息 help命令只能查看內(nèi)部命令的幫助信息。 如,查看pwd命令的幫助信息。?當(dāng)用help查看外部命令的幫助信息時(shí)則會(huì)報(bào)錯(cuò)。
[root@localhost ~]# help ls
-bash: help: no help topics match `ls'.?Try `help help' or `man -k ls' or `info ls'.
3、man命令——查看命令的幫助手冊(cè)
help命令查看的幫助信息較為簡(jiǎn)略,如果要查看更為詳盡的幫助信息,可以使用man命令查看指定命令的幫助手冊(cè)。 如,查看ls命令的幫助手冊(cè)。 [root@localhost ~]# man ls 執(zhí)行man命令后將進(jìn)入閱讀環(huán)境,按q鍵可以退出。 無(wú)論內(nèi)部命令還是外部命令,都可以使用man命令查看其幫助手冊(cè)。 二、重定向 Linux系統(tǒng)中標(biāo)準(zhǔn)的輸入設(shè)備為鍵盤(pán),標(biāo)準(zhǔn)輸出設(shè)備為屏幕,但在某些情況下,我們希望能從鍵盤(pán)以外的其他輸入設(shè)備讀取數(shù)據(jù),或者將數(shù)據(jù)送到屏幕外的其他輸出設(shè)備,這種情況稱為重定向。Shell中輸入輸出重定向主要依靠重定向符號(hào)來(lái)實(shí)現(xiàn),重定向的目標(biāo)通常是一個(gè)文件。 1. 輸入重定向 輸入重定向就是將命令中接收輸入的途徑由默認(rèn)的鍵盤(pán)重定向?yàn)橹付ǖ奈募?#xff0c;需要使用“<”重定向操作符。如命令“wc < f1”就表示將f1文件的信息作為wc命令的輸入。 輸入重定向并不常使用,所以這里就不過(guò)多介紹了。 2. 輸出重定向 輸出重定向是將命令的輸出結(jié)果重定向到一個(gè)文件中,而不是顯示在屏幕上。輸出重定向使用“>”或“>>”操作符,分別用于覆蓋、追加文件。 “>”重定向符后面指定的文件如果不存在,在命令執(zhí)行中將建立該文件,并保存命令結(jié)果到文件中。“>”重定向符后面指定的文件如果存在,命令執(zhí)行時(shí)將清空文件的內(nèi)容并保存命令結(jié)果到文件中。 如,查看/etc/passwd文件的內(nèi)容,并將輸出結(jié)果保存到pass.txt文件中。 [root@localhost ~]# cat /etc/passwd > pass.txt 執(zhí)行該命令后,會(huì)在當(dāng)前目錄下生成一個(gè)名為pass.txt的文件,文件中的內(nèi)容就是“cat /etc/passwd”命令執(zhí)行的結(jié)果。 “>>”重定向操作符可以將命令執(zhí)行的結(jié)果重定向并追加到指定文件的末尾保存,而不覆蓋文件中原有的內(nèi)容。 如,查看/etc/shadow文件的后3行內(nèi)容,并將輸出結(jié)果追加保存到pass.txt文件中。 [root@localhost ~]# tail -3 /etc/shadow >> pass.txt 三、管道符“|” 通過(guò)管道符“|”,可以把多個(gè)簡(jiǎn)單的命令連接起來(lái)實(shí)現(xiàn)更加復(fù)雜的功能。 管道符“|”用于連接左右兩個(gè)命令,將“|”左邊命令的執(zhí)行結(jié)果作為“|”右邊命令的輸入,這樣“|”就像一根管道一樣連接著左右兩條命令,并在管道中實(shí)現(xiàn)數(shù)據(jù)從左至右的傳輸。 如ls命令與more命令使用管道符組合使用便可以實(shí)現(xiàn)目錄列表分頁(yè)顯示的功能。 如,分頁(yè)顯示/etc目錄下所有文件和子目錄的詳細(xì)信息。 [root@localhost ~]# ls -lh /etc | more ls命令與grep命令使用管道符組合使用可以只顯示目錄列表中包含特定關(guān)鍵字的列表項(xiàng)。 如,顯示/etc目錄下包含有“net”關(guān)鍵字的所有文件和子目錄的詳細(xì)信息。 [root@localhost ~]# ls -lh /etc | grep net -rwxr-xr-x.?1 root root 1.3K 4月10 2012 auto.net -rw-r--r--.?1 root root74 5月31 2012 issue.net -rw-r--r--.?1 root root?767 11月30 2009 netconfig -rw-r--r--.?1 root root58 5月23 2012 networks drwxr-xr-x.?2 root root 4.0K 1月8 19:14 xinetd.d 如,統(tǒng)計(jì)一下/etc目錄下所有以“.conf”結(jié)尾的文件的個(gè)數(shù)。 [root@localhost ~]# ls -l /etc/*.conf | wc –l 44 如,查看/etc/httpd/conf/httpd.conf文件中除了以“#”開(kāi)頭的行和空行以外的內(nèi)容。 [root@localhost ~]# grep -v “^#” /etc/httpd/conf/httpd.conf | gerp –v “^$”總結(jié)
以上是生活随笔為你收集整理的RHEL6入门系列之十一,内/外部命令、重定向、管道的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: StringFarmat控制字符串居中显
- 下一篇: .NET中颜色的转换方法总结