前面已經(jīng)介紹了不少 Linux 系統(tǒng)下的命令了蚤霞,但是命令這個(gè)概念還是比較模糊酗失,有時(shí)叫命令,有時(shí)又叫可執(zhí)行程序昧绣,有時(shí)叫軟件规肴,那到底有什么區(qū)別呢?還有許多命令還有復(fù)雜而神秘的命令行參數(shù)夜畴,加上參數(shù)后得到的結(jié)果和不加參數(shù)是不一樣的拖刃。今天我們就再進(jìn)一步學(xué)習(xí)一下命令,學(xué)會(huì)真正使用 Linux 命令贪绘。
今天要分享的內(nèi)容如下:
- type:命令的簡(jiǎn)單說(shuō)明
- which:顯示會(huì)執(zhí)行哪個(gè)可執(zhí)行程序
- man:顯示命令手冊(cè)頁(yè)
- apropos:顯示一系列適合的命令(等價(jià)于:
man -k
) - info:顯示命令信息
- whatis:顯示一個(gè)命令的簡(jiǎn)潔描述
- alias:創(chuàng)建命令別名
1. 到底什么是命令
命令有一下四種形式:
- 是一個(gè)可執(zhí)行程序兑牡,
/usr/bin
目錄下存儲(chǔ)的文件就是可執(zhí)行程序。 這些可執(zhí)行程序都是不同編程語(yǔ)言開(kāi)發(fā)出來(lái)的税灌。 - 是一個(gè)內(nèi)建于 shell 自身的命令均函。Ubuntu 18.04 默認(rèn)的 shell 是 Bash,Bash 有若干個(gè)內(nèi)建的命令菱涤,如:cd 命令苞也。
- 配置在環(huán)境變量中的 shell 函數(shù),這里先不要管什么是 shell 函數(shù)粘秆,后面我們學(xué)習(xí) shell 編程的時(shí)候就會(huì)明白了如迟。
- 由 alias 創(chuàng)建的命令別名,其實(shí)我們之前一直使用的 ls 就是這樣的一個(gè)命令攻走,在 Ubuntu 18.04 上殷勘,我們執(zhí)行 ls 命令,其實(shí)執(zhí)行的是:
ls --color=auto
陋气。
那我們使用一個(gè)命令的時(shí)候,到底是上述四種命令中的哪一類呢引润?我們可以使用 type 來(lái)查看巩趁,用法是:type command
。下圖是一些例子:
2. which
在 Linux 系統(tǒng)中,我們安裝的軟件有時(shí)不止一個(gè)版本议慰,可能安裝了好幾個(gè)版本蠢古,那我們要運(yùn)行這個(gè)軟件的時(shí)候到底執(zhí)行的是哪一個(gè)版本呢?這時(shí)候我們可以使用 which 命令來(lái)查看别凹,用法是:which command
草讶,下圖是一些例子:
不知大家有沒(méi)有注意到,which cd
沒(méi)有任何輸出結(jié)果炉菲,在 Ubuntu 18.04 中堕战,如果 which 后面跟的不是一個(gè)可執(zhí)行程序,則不會(huì)返回任何信息拍霜。其實(shí) which 只對(duì)可執(zhí)行程序有效嘱丢,不包括內(nèi)建命令和命令別名,別名是真正的可執(zhí)行程序的替代物祠饺。 當(dāng)我們?cè)囍褂?shell 內(nèi)建命令時(shí)越驻,例如:cd ,就不會(huì)有任何返回道偷。
3. 獲取命令幫助文檔
知道了什么是命令缀旁,我們?cè)賮?lái)看看怎么查看命令的幫助文檔,也就相當(dāng)于說(shuō)明書(shū)啦勺鸦,我們不知道怎么使用一個(gè)命令的時(shí)候并巍,看看說(shuō)明書(shū)是很有必要的。
3.1. help
help 是用來(lái)得到 shell 內(nèi)建命令的幫助文檔祝旷,用法:help command
履澳。例如:help cd
chaojun@ubuntu:~/file/code/alavening/ALD_A113X$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
上面的內(nèi)容我刪除了一些,留下部分用來(lái)說(shuō)明問(wèn)題怀跛,[] 中的表示可選項(xiàng)距贷,這里我們先不討論 -L、-P吻谋、-e 的含義忠蝗;| 表示互斥,比如選擇了 -L 就不能在選擇 -P漓拾。雖然 cd 命令的幫助文檔很簡(jiǎn)潔準(zhǔn)確阁最,但它決不是教程。正如我們所看到的骇两,它似乎提到了許多 我們還沒(méi)有談?wù)摰降臇|西速种!不要擔(dān)心,我們會(huì)學(xué)到的低千。
3.2. --help
許多可執(zhí)行程序支持一個(gè) --help 選項(xiàng)配阵,這個(gè)選項(xiàng)是顯示命令所支持的語(yǔ)法和選項(xiàng)說(shuō)明。例如:
chaojun@ubuntu:~/file/code/alavening/ALD_A113X$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'
chaojun@ubuntu:~/file/code/alavening/ALD_A113X$
上面是 mkdir 命令的幫助信息,但并不是所有的命令都有 --help 幫助信息棋傍。
3.3. man 手冊(cè)
許多希望被命令行使用的可執(zhí)行程序救拉,提供了一個(gè)正式的文檔,叫做手冊(cè)或手冊(cè)(man page)瘫拣。一個(gè)特殊的叫做 man 的分頁(yè)程序亿絮,可用來(lái)瀏覽他們。用法:man program
麸拄。
使用 man 手冊(cè)查看幫助信息的時(shí)候派昧,man 的輸出信息會(huì)被重定向到 less 這個(gè)軟件中,所以我們查看 man 手冊(cè)的時(shí)候如何上下翻頁(yè)使用的是 less 的快捷鍵感帅,如果你忘記了 less 的快捷鍵斗锭,建議回頭看看 一些對(duì)使用 Linux 系統(tǒng)有幫助的命令。
man 所顯示的參考手冊(cè)失球,被分成幾個(gè)章節(jié)岖是,它們不僅僅包括用戶命令,也包括系統(tǒng)管理員命令实苞、程序接口豺撑、文件格式等等。下面是每個(gè)章節(jié)的具體含義:
- 1:用戶命令
- 2:程序接口內(nèi)核系統(tǒng)調(diào)用
- 3:C 庫(kù)函數(shù)程序接口
- 4:特殊文件黔牵,比如說(shuō)設(shè)備結(jié)點(diǎn)和驅(qū)動(dòng)程序
- 5:文件格式
- 6:游戲娛樂(lè)聪轿,如屏幕保護(hù)程序
- 7:其他方面
- 8:系統(tǒng)管理員命令
有時(shí)候,我們需要查看參考手冊(cè)的特定章節(jié)猾浦,從而找到我們需要的信息陆错。 比如我們要查找一種文件格式,而同時(shí)它也是一個(gè)命令名時(shí)金赦,這種情況尤其需要指定章節(jié)號(hào)音瓷。沒(méi)有指定章節(jié)號(hào),我們總是得到第一個(gè)匹配項(xiàng)夹抗,可能在第一章節(jié)绳慎。指定章節(jié)號(hào)的用法是:man [1-8] program
。
4. apropos
當(dāng)我們需要某種功能的命令或者可執(zhí)行程序的時(shí)候漠烧,我們不知道有什么命令或者程序或者函數(shù)可以滿足杏愤,這時(shí)候我們就可以使用 apropos 來(lái)模糊搜索匹配的命令或可執(zhí)行程序或者函數(shù),雖然很粗暴已脓,但有時(shí)還是很有用的珊楼。
比如,我們要知道和 TCP 相關(guān)的信息度液,我們就可以 apropos tcp
厕宗,如下圖是返回結(jié)果:
5. whatis
whatis 程序用來(lái)顯示匹配特定關(guān)鍵字的手冊(cè)頁(yè)的名字和一行命令說(shuō)明邓了,例如:whatis ls
。man 手冊(cè)其實(shí)是很多而且晦澀難懂的媳瞪,所以有時(shí)候我們可以使用 whatis 命令查看一下某個(gè)命令的簡(jiǎn)單描述。
6. info
GNU 項(xiàng)目提供了一個(gè)命令程序手冊(cè)頁(yè)的替代物照宝,稱為 "info"蛇受。info 內(nèi)容可通過(guò) info 閱讀器程序讀取。info 頁(yè)是超級(jí)鏈接形式的厕鹃,和網(wǎng)頁(yè)很相似兢仰。下面是一個(gè)例子:
看上去是不是很復(fù)雜,還要學(xué)習(xí)怎么使用 info 查看工具的快捷鍵剂碴,我看到就頭大了把将,我是不想去了解了,放后面吧忆矛,如果其他幫助信息都找不到說(shuō)明的時(shí)候再來(lái)看吧察蹲,當(dāng)然如果你感興趣可以先自己去找資料學(xué)習(xí)哦。
7. README 和其它程序文檔
許多安裝在你系統(tǒng)中的軟件催训,都有自己的文檔文件洽议,這些文件位于 /usr/share/doc
目錄下。 這些文件大多數(shù)是以文本文件的形式存儲(chǔ)的漫拭,可用 less 閱讀器來(lái)瀏覽亚兄。一些文件是 HTML 格式, 可用網(wǎng)頁(yè)瀏覽器來(lái)閱讀采驻。我們可能遇到許多以 ".gz" 結(jié)尾的文件审胚。這表示 gzip 壓縮程序 已經(jīng)壓縮了這些文件。gzip 軟件包包括一個(gè)特殊的 less 版本礼旅,叫做 zless膳叨,zless 可以顯示由 gzip 壓縮的文本文件的內(nèi)容。
8. 用別名(alias)創(chuàng)建你自己的命令
現(xiàn)在是時(shí)候各淀,感受第一次編程經(jīng)歷了懒鉴!我們將用 alias 命令創(chuàng)建我們自己的命令。但在開(kāi)始之前碎浇,我們需要展示一個(gè)命令行小技巧临谱。可以把多個(gè)命令放在同一行上奴璃,命令之間 用”;”分開(kāi)悉默。例如:
cd /usr; ls; cd -
正如我們看到的,我們?cè)谝恍猩下?lián)合了三個(gè)命令苟穆。首先更改目錄到 /usr抄课,然后列出目錄 內(nèi)容唱星,最后回到原始目錄(用命令 cd -
),結(jié)束在開(kāi)始的地方。現(xiàn)在跟磨,通過(guò) alias 命令 把這一串命令轉(zhuǎn)變?yōu)橐粋€(gè)命令间聊。我們要做的第一件事就是為我們的新命令構(gòu)想一個(gè)名字。 比方說(shuō) "test" 抵拘。在使用 "test" 之前哎榴,查明是否 "test" 命令名已經(jīng)存在系統(tǒng)中,為了查清此事僵蛛,可以使用 type 命令:type test
尚蝌,返回結(jié)果是:test is a shell builtin
,噢哦充尉,不行飘言,那我們換一個(gè)吧,type foo
驼侠,返回:bash: type: foo: not found
姿鸿,可以,foo 沒(méi)有被占用倒源,然后我們創(chuàng)建命令別名:alias foo='cd /usr; ls; cd -'
般妙,現(xiàn)在我們就可以使用 foo 代替 cd /usr; ls; cd -
了。
如果不需要某個(gè)別名了相速,我們可以使用 unalias 刪除碟渺,例如:unalias foo
。
注意:上面的操作知識(shí)臨時(shí)生效的突诬,終端模擬器關(guān)閉后就不生效了苫拍,后面的文章會(huì)介紹如何讓它永久生效。
好了今天就分享到這里吧旺隙,內(nèi)容比較多绒极,希望大家不要為了閱讀而閱讀,而是要親自去實(shí)踐蔬捷。即使你跟不上我更新的節(jié)奏垄提,那也沒(méi)關(guān)系,文章都可以永久免費(fèi)閱讀的周拐,你慢慢挨著學(xué)習(xí)铡俐,相信你以后一定都能學(xué)會(huì)的。
歡迎關(guān)注微信公眾號(hào):eglinux妥粟,最新文章會(huì)在這個(gè)公眾號(hào)首發(fā)审丘,免費(fèi)提供 CSDN 下載服務(wù)。