溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

4FHS和bash

發(fā)布時間:2020-06-09 11:39:25 來源:網(wǎng)絡(luò) 閱讀:347 作者:Ailu0li 欄目:系統(tǒng)運維

 

1FHS的基本概念

       FHS文件系統(tǒng)層級結(jié)構(gòu)標準,我們?yōu)槭裁匆欢ㄒ饛倪@個標準,為啥windows沒這個標準?因為windows有注冊列表這個東西,可以幫助windows定位程序的位置。而linux沒有注冊列表,那我們怎么找到我們的運行程序。嗯,我們定義一個標準的安裝程序的目錄,程序的各個部件的安放位置。

       怎么定義呢?

/boot                                        安放引導(dǎo)程序

/lib                                           安放32位的庫文件

/lib64                                       安裝64位的庫文件

/bin                                          可執(zhí)行文件

/etc                                           配置文件的目錄

/dev                                                 設(shè)備文件的位置

/usr                                          一些大的程序安放位置

       /usr/local                          一般用來放編譯程序

       /usr/bin                            可執(zhí)行文件

       /usr/share/man               man文檔

/var                                           系統(tǒng)運行的臨時文件和日志和部分程序數(shù)據(jù)存放位置

/srv                                           服務(wù)程序的數(shù)據(jù)文件

/proc                                        偽文件,內(nèi)存把可配置的部分模擬成文件

/sys                                          新的內(nèi)存模擬文件

/tmp                                         垃圾文件

這比windows那種安放文件更適合系統(tǒng)管理員,這樣文件的權(quán)限更好管理,因為類似的文件在同一目錄下,最大程度把同種屬性的文件放在了同一目錄下了,更方便權(quán)限限定。

Note:微服務(wù)盛行的今天,個人感覺windows管理文件的方式更加適合服務(wù)器,因為每個服務(wù)器只運行一個服務(wù),這個服我們更有可能編譯安裝軟件,最大程度壓榨計算機的計算資源,編譯安裝就有一個特點了,程序所需要的文件都會在同一目錄下。

2bash與人機交互特性

1)bash使用命令的流程

在命令行里我敲一個命令,為什么會那么快回復(fù)我們結(jié)果,bash是怎么找到命令的?我介紹一下bash查找到命令的過程。

首先我們要明白一個道理,bash運行時他已經(jīng)全部了內(nèi)存中。這時,當(dāng)bash接受到一個命令,bash就像一個人一樣,首先看自己人有沒有符合條件的查看自己中內(nèi)嵌的函數(shù),有就調(diào)用沒有再去找那些非自己人的人;這時外部命令開始競爭這個位置,人那么多我們選哪一個,當(dāng)然選和我們關(guān)系比較近的,好,我們在$PATH定義和我親疏關(guān)系,不在親疏關(guān)系中的人,堅決不能用,萬一老宋來到我們身邊多么危險。

親疏關(guān)系一般都分為好幾層吧,嗯,我們定義了$PATH多個選人路徑,執(zhí)行如下命令查看$PATH的調(diào)用順序,優(yōu)先級是從前到后調(diào)用:

# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

還有alias,這個更了不得了,就像黨校校長一定是下一代領(lǐng)導(dǎo)人。它的優(yōu)先級比內(nèi)部命令還要高??偨Y(jié)一下,命令執(zhí)行時的順序是alias->內(nèi)建命令->外部命令。

2Hash命令路徑緩存

富二代總是圍繞在我們周圍,官二代更是NB,人家根本不和在等級中,天生清華北大已經(jīng)為他們留下了位置,既然我們不可能是二代了,那我們就開宗立派成為一代目。Linux也是這樣,linux中有一個hash機制,當(dāng)我們執(zhí)行過一個命令后,bash就會把我們執(zhí)行程序的路徑保存下來。

執(zhí)行bash命令查看已經(jīng)緩存的命令:

# hash

hits command

   1      /usr/bin/tty

   1      /usr/bin/abrt-cli

   1      /usr/bin/date

   1      /usr/bin/mv

   1      /usr/bin/mkdir

這個命令的執(zhí)行結(jié)果每個人可能不一樣,以上是我執(zhí)行hash命令的結(jié)果。既然是緩存,那么就會有問題,為啥?因為緩解矛盾后矛盾還是存在,只是被包上糖衣,糖吃到一半一定會劃到嘴。

當(dāng)我執(zhí)行的命令變了位置,而緩存沒有變,就會找不到命令,怎么辦,涼拌。自己手動刪除緩存。

hash –d Name                  刪除一條緩存

hash –r  Name                  清除緩存

Note:這里的Name是命令的別名.

3history命令歷史

       現(xiàn)在很多瀏覽器都會記錄瀏覽記錄,還有更過分的,可以聯(lián)網(wǎng)查找自己更早的歷史記錄,這就很可怕了,我們的行為都被記錄了,我們還刪除不了。Google的人工智能就用這些數(shù)據(jù)訓(xùn)練機器,現(xiàn)在走在人工智能最前列的不是搞了alphagogoogle,而是ibm,當(dāng)alphago還在努力賺足眼球的時候,ibm的沃森已經(jīng)幫騰訊賺了好幾筆錢了,每年世界杯騰訊都有沃森對每場比賽進行分析,合理的投放廣告,會員收費。NBA大家都很熟悉吧,有家機構(gòu)開始使用沃森安排每個球員每天的訓(xùn)練量。舉個例子詹姆斯的一天,詹姆斯今天需要回家看望奶奶,沃森就會幫詹姆斯買的飛機和車票,然后根據(jù)詹姆斯肌肉狀態(tài)和今天的運動的類型安排他的三餐,并且給詹姆斯安排起程前需要做的訓(xùn)練都有哪些,然后評估詹姆斯回家這幾天,鍛煉量可能會下降,就會安排一個教練隨行以保證它的訓(xùn)練量還有一下球員比賽之后必須要做某些運動才有繼續(xù)訓(xùn)練的動力,這也被列入沃森的計算中,并且規(guī)定可以去的范圍,最大程度保護球員的安全,23333。要不球員不比賽后大多都很快破產(chǎn),因為沃森沒了(陰謀論一波)。Linux中也有個人工智能history。

       直接執(zhí)行history命令就會顯示當(dāng)前系統(tǒng)全部的命令歷史

       假如我們沒有正常退出終端History不會保存我們的命令歷史,因為我們執(zhí)行命令時,命令歷史會默認保存在內(nèi)存中,并且在$HISTSIZE中設(shè)定內(nèi)存保存命令歷史的條數(shù),在$HISTFILESIZE指定命令保存文件中保留的條數(shù)。

       有了命令歷史,我們就可以輕易調(diào)用上一條命令:

       ??!                      執(zhí)行上一條命令

       !#                      執(zhí)行第#條命令

       History–c          清空命令歷史

       History–a           把命令歷史中的命令保存到文件中

       除此之外,我們在用戶家目錄中.history定義保存歷史的格式

       HISTSIZE:命令歷史記錄的條數(shù)

HISTFILE:指定歷史文件,默認為~/.bash_history

HISTFILESIZE:命令歷史文件記錄歷史的條數(shù)

HISTTIMEFORMAT=“%F%T“ 顯示時間

HISTIGNORE=“str1:str2:…“ 忽略string1,string2歷史,這里支持glob

控制命令歷史的記錄方式:

環(huán)境變量: HISTCONTROL

ignoredups 默認,忽略重復(fù)的命令,連續(xù)且相同為重復(fù)

ignorespace 忽略所有以空白開頭的命令

ignorebothignoredups, ignorespace

erasedups 刪除重復(fù)命令

4bash的一下常用的快捷鍵

       有事沒事按table,按按更健康。

       Ctrl+c           強行打斷命令的執(zhí)行

       Ctrl+d          打斷命令執(zhí)行

       Ctrl+l           清屏

       Ctrl+z           把命令進程放到后臺執(zhí)行

       Ctrl+a          把光標移至行首

       Ctrl+e          把光標移至行尾

Ctrl+k          刪除光標后面的字符

Ctrl+u          刪除光標前的字符

3總結(jié)

       bash調(diào)用命令順序alias->內(nèi)建命令->外部命令。Bashhash緩存命令執(zhí)行路徑,用history記錄命令歷史,命令歷史是保存內(nèi)存中的,我們退出終端時命令歷史保存到文件中,bash還有一些快捷鍵。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI