命令執(zhí)行機(jī)制
輸入命令后回車(chē):提請(qǐng)shell程序找到鍵入命令所對(duì)應(yīng)的可執(zhí)行程序或代碼,分析后提交給內(nèi)核分配資源使其得以運(yùn)行
????內(nèi)部命令:shell自帶,集成在/bin/bash文件中,可用enable????或help查看,內(nèi)存存儲(chǔ)
????????????? enable -n命令名:禁用該內(nèi)部命令
????????????? enable命令名:?jiǎn)⒂迷搩?nèi)部命令
????????????? enable -n:查看所有被禁用的命令
????外部命令:文件路徑下對(duì)應(yīng)的可執(zhí)行程序文件,磁盤(pán)存儲(chǔ)
????????????? which命令名:查看命令所在路徑
????????????? whereis命令名:查看命令所在路徑及其幫助文檔所在路徑
? ? *可用type+命令名判斷命令是否是內(nèi)部命令(例如:pwd is a ????????shell builtin)
????Hash緩存表(有效提升命令執(zhí)行效率):? ??????
? ? ? ? ? ? ? *緩存(cache):將剛使用的硬盤(pán)數(shù)據(jù)存放在內(nèi)存中,下次使用是內(nèi)存取出無(wú)需硬盤(pán)查找,hash是緩存的一種表現(xiàn)形式
? ? ? ? ? ? ? *Cache is King!(緩存為王)->redis,memcached等
? ? ? ? ? ? ? hash:顯示hash緩存(hash -l)
? ? ? ? ? ? ? hash -p path name:將命令全路徑path起別名為name
? ? ? ? ? ? ? hash -t name:打印name路徑
? ? ? ? ? ? ? hash -d name:清除name緩存
? ? ? ? ? ? ? hash -r:清除所有緩存
????命令別名:
?????????? alias:顯示當(dāng)前shell進(jìn)程所有可用的命令別名
?????? ????aliasname=‘value‘:臨時(shí)定義別名name,其相當(dāng)于執(zhí)行命令value
?????? ????配置文件中別名定義:永久有效(~/.bashrc->當(dāng)前用戶,/etc/bashrc->所有用戶)
?????? ????*文件修改后使用source ~/.bashrc或. ~/.bashrc生效
? ? ? ? ? ?unaliasname:取消name別名
?????? ????*別名出現(xiàn)與原命令同名的情況時(shí),可以通過(guò)\aliasname,”aliasname”,’aliasname’,commandaliasname,/path/aliasname(只針對(duì)外部命令)等執(zhí)行原命令
系統(tǒng)初始hash表為空,外部命令執(zhí)行時(shí),默認(rèn)從$PATH路徑下尋找該命令,找到后執(zhí)行并記錄到hash表(內(nèi)存存儲(chǔ))中,再次使用時(shí)shell首先查看hash表,存在直接執(zhí)行,不存在再去$PATH路徑下尋找
命令尋找過(guò)程:alias->內(nèi)部->hash表(記錄外部命令的路徑)->$PATH變量對(duì)應(yīng)路徑查找
Linux幫助
?????? whatis:
????????????? 顯示命令的簡(jiǎn)短描述
????????????? 剛安裝完系統(tǒng)無(wú)法使用
????????????? 基于數(shù)據(jù)庫(kù)(makewhatis:centos6創(chuàng)建,mandb:centos7創(chuàng)建)
????????????? 等同于man –f
?????? 內(nèi)部命令:help command 或man bash
?????? 外部命令:command --help(-h),man command,info command 或相關(guān)文檔
?????? man命令:
????????????? 手冊(cè)頁(yè)存放在/usr/share/man
????????????? 幾乎每個(gè)命令都有man頁(yè)面
????????????? Man頁(yè)面分組稱為章節(jié)(例如man 5 passwd)

????????????? 配置文件:/etc/man.config /etc/man_db.conf?
?????? info:
????????????? man常用與命令參考,GNU工具info適用于文檔參考
????????????? 沒(méi)有參數(shù),列出所有頁(yè)面
????????????? Info頁(yè)面結(jié)構(gòu)類(lèi)似與網(wǎng)站
????????????? 每一頁(yè)分為“節(jié)點(diǎn)“(*)
