linux命令的執(zhí)行

1. 命令的概念

  • 命令的執(zhí)行過程

系統(tǒng)第一次執(zhí)行外部命令時(shí)Hash緩存表為空叫确,系統(tǒng)會先從PTAH路徑下尋找命令,找到后會將路徑加入到Hasa緩存中膀钠,當(dāng)再次執(zhí)行此命令時(shí)會直接從Hash的路徑下執(zhí)行掏湾,如果存在直接執(zhí)行,如果不存在將繼續(xù)從PATH下的路徑繼續(xù)查找肿嘲,Hash表可以提高命令的調(diào)用速率融击。

  • 命令的優(yōu)先級

alias -------------------------------------別名
??builtin------------------------------內(nèi)部命令
????hash-------------------------緩存表
??????$PATH---------------可執(zhí)行程序或腳本(外部命令)

  • 內(nèi)部命令與外部命令

內(nèi)部命令是shell自帶的
外部命令是安裝系統(tǒng)時(shí)默認(rèn)安裝的,并且在文件系統(tǒng)下有對應(yīng)的路徑

  • 查看命令是內(nèi)部命令還是外部命令type [commnd]
[root@centos6 ~]# type cat                  #判斷cat命令雳窟,外部命令顯示文件路徑
cat is /bin/cat
[root@centos6 ~]# type cd                   #判斷cd命令
cd is a shell builtin

2.命令的別名

命名別名只在當(dāng)前進(jìn)程中有效
如果想永久有效尊浪,要定義在配置文件中
??僅對當(dāng)前用戶:~/.bashrc
??對所有用戶有效:/etc/bashrc

  • 查看進(jìn)程中所有的別名 alias
[root@centos6 ~]#alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
......
  • 定義別名 alias NAME="VALUE"
[root@centos6 ~]#alias aubin=cat
[root@centos6 ~]#aubin test
hello world
  • 刪除別名
[root@centos6 ~]#unalias aubin
[root@centos6 ~]#aubin test
-bash: aubin: command not found
  • 定義對當(dāng)前用戶永久生效的別名
[root@centos6 ~]#vim .bashrc 
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias aubin=cat                                # <<<-----此處定義別名
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
[root@centos6 ~]#. .bash                       #立即生效
  • 定義指定用戶生效的別名
[root@centos6 ~]#cd ~ li
[root@centos6 li]#vim .bashrc                 #編輯用戶目錄下的.bashrc
  • 定義所有用戶生效的別名
[root@centos6 ~]#vim /etc/bashrc
alias aubin=cat                                # <<<-----加入定義別名
[root@centos6 ~]#. /etc/bashrc                 #立即生效

3.內(nèi)部命令

shell程序找到鍵入命令所對應(yīng)的可執(zhí)行程序或代碼,由shell分析后提交給內(nèi)核分配資源并將其運(yùn)行起來封救。

  • 查看所有的內(nèi)部命令
[root@centos6 ~]#help
[root@centos6 ~]#enable
enable .
enable :
enable [
enable alias
enable bg
enable bind
......
  • 內(nèi)部命令的禁用與啟用enable
[root@centos6 li]#enable -n cd                 #禁用內(nèi)部命令
[root@centos6 li]#enable cd                    #啟用內(nèi)部命令
  • 禁用內(nèi)部命令失效
[root@centos6 li]#enable -n pwd
[root@centos6 li]#enable -n                    #查看禁用的內(nèi)部命令或如下圖用help
enable -n pwd

也可以help查已經(jīng)被禁用的命令【命令前的*代表命令已經(jīng)用】

黃色方框 中命令前的*代表命令已禁用

禁用內(nèi)部命令enable -n pwd后依然可以使用

[root@centos6 li]#pwd
/home/li

使用which查看命令的執(zhí)行文件

[root@centos6 li]#which pwd
/bin/pwd

當(dāng)內(nèi)部命令禁用后拇涤,按照bash優(yōu)先級繼續(xù)搜索Hash表、$PATH誉结。直到在$PATH中發(fā)現(xiàn)/bin/pwd的可執(zhí)行文件則將其運(yùn)行鹅士。

  • 查看禁用的內(nèi)部命令
[root@centos6 li]#enable -n
enable -n cd
enable -n pwd

或者如上圖所示使用help命令查看


4.HASH緩存表

用來顯示和清除哈希表,執(zhí)行命令的時(shí)候惩坑,系統(tǒng)將先查詢哈希表掉盅。

  • 查看命令的緩存 hash
[root@centos6 ~]# hash
  hits  command
   3    /usr/bin/cal
   1    /usr/bin/yum
[root@centos6 ~]# 查看詳細(xì)的Hash表
[root@centos6 ~]#hash -l
builtin hash -p /bin/dd dd
builtin hash -p /usr/bin/yum yum
  • 向Hash表中增加內(nèi)容 hash -p path command
[root@centos6 ~]#將cat定義一個(gè)別名存在hash表
[root@centos6 ~]#hash -p /bin/cat aubin  
[root@centos6 ~]#aubin test
hello world
  • 打印Hash表中命令的路徑 hash -t command
[root@centos6 ~]#hash -t aubin
/bin/cat
  • 刪除Hash表中指定命令 hash -d command
[root@centos6 ~]#hash -d aubin
  • 刪除Hash表中所有命令hash -r
[root@centos6 ~]# hash -r
  • 查看命令的路徑 which
[root@centos6 ~]# which cat            #查看命令的路徑,以第一個(gè)路徑為準(zhǔn)
/bin/cat
[root@centos6 ~]# which -a cat         #查看命令所有路徑以舒,一個(gè)命令可能有多個(gè)路徑
/bin/cat
/usr/local/bin/cat

5.外部命令

外部命令就是一個(gè)可執(zhí)行文件趾痘,當(dāng)執(zhí)行外部命令時(shí),系統(tǒng)會去執(zhí)行在文件目錄下對應(yīng)的可執(zhí)行文件蔓钟。

  • 列出命令的路徑
[root@centos6 /]#which echo                    #列出命令的路徑
/bin/echo
[root@centos6 /]#which cp                      #which列出文件路徑會顯示別名
alias cp='cp -i'
        /bin/cp
[root@centos6 /]#which --skip-alias cp         #列出文件路徑而不顯示別名
/bin/cp
  • 列出命令所有路徑永票,多個(gè)bash有相同命令時(shí),則命令有多個(gè)路徑奋刽。
[root@centos6 /]#which -a echo              
/bin/echo
  • 列出命令與幫助手冊的路徑
[root@centos6 /]#whereis echo
echo: /bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓦侮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子佣谐,更是在濱河造成了極大的恐慌肚吏,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狭魂,死亡現(xiàn)場離奇詭異罚攀,居然都是意外死亡党觅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門斋泄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杯瞻,“玉大人,你說我怎么就攤上這事炫掐】颍” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵募胃,是天一觀的道長旗唁。 經(jīng)常有香客問我,道長痹束,這世上最難降的妖魔是什么检疫? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮祷嘶,結(jié)果婚禮上屎媳,老公的妹妹穿的比我還像新娘。我一直安慰自己论巍,他們只是感情好烛谊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著环壤,像睡著了一般晒来。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上郑现,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音荧降,去河邊找鬼接箫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛朵诫,可吹牛的內(nèi)容都是我干的辛友。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼剪返,長吁一口氣:“原來是場噩夢啊……” “哼废累!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脱盲,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤邑滨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后钱反,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掖看,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匣距,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哎壳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毅待。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖归榕,靈堂內(nèi)的尸體忽然破棺而出尸红,到底是詐尸還是另有隱情,我是刑警寧澤刹泄,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布驶乾,位于F島的核電站,受9級特大地震影響循签,放射性物質(zhì)發(fā)生泄漏级乐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一县匠、第九天 我趴在偏房一處隱蔽的房頂上張望风科。 院中可真熱鬧,春花似錦乞旦、人聲如沸贼穆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽故痊。三九已至,卻和暖如春玖姑,著一層夾襖步出監(jiān)牢的瞬間愕秫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工焰络, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戴甩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓闪彼,卻偏偏與公主長得像甜孤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子畏腕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Linux學(xué)習(xí)任重道遠(yuǎn)缴川,對于初學(xué)者來說,看到多如繁星的命令描馅,就讓人望而卻步把夸,接下來就說說Linux命令的一些入門學(xué)...
    靜默閱讀 397評論 0 0
  • Linux基礎(chǔ)命令學(xué)習(xí)總結(jié),隨著學(xué)習(xí)的前進(jìn)流昏,將不斷完善扎即。網(wǎng)友們吞获,有錯(cuò)誤之處,請給我留言改正喔谚鄙,謝謝各拷! 基礎(chǔ)操作 <...
    zhuenbiao閱讀 1,745評論 0 2
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,146評論 2 34
  • 社群是個(gè)夢,看起來很美闷营,社群是個(gè)坑烤黍,去年伊始開始在國內(nèi)火爆的社群,真正做成功并順便變現(xiàn)的社群卻寥寥無幾傻盟。如...
    三易如水1閱讀 720評論 0 0
  • 沙漠公路 沒有什么能夠阻擋 你對自由地向往 天馬行空的生涯 你的心了無牽掛 穿過幽暗地歲月 也曾感到彷徨 當(dāng)你低頭...
    浪哩嘎浪閱讀 343評論 1 0