FHS文件系統層級結構標準,我們為什么一定要尊從這個標準,為啥windows沒這個標準?因為windows有注冊列表這個東西,可以幫助windows定位程序的位置。而linux沒有注冊列表,那我們怎么找到我們的運行程序。嗯,我們定義一個標準的安裝程序的目錄,程序的各個部件的安放位置。
怎么定義呢?
/boot 安放引導程序
/lib 安放32位的庫文件
/lib64 安裝64位的庫文件
/bin 可執行文件
/etc 配置文件的目錄
/dev 設備文件的位置
/usr 一些大的程序安放位置
/usr/local 一般用來放編譯程序
/usr/bin 可執行文件
/usr/share/man man文檔
/var 系統運行的臨時文件和日志和部分程序數據存放位置
/srv 服務程序的數據文件
/proc 偽文件,內存把可配置的部分模擬成文件
/sys 新的內存模擬文件
/tmp 垃圾文件
這比windows那種安放文件更適合系統管理員,這樣文件的權限更好管理,因為類似的文件在同一目錄下,最大程度把同種屬性的文件放在了同一目錄下了,更方便權限限定。
Note:微服務盛行的今天,個人感覺windows管理文件的方式更加適合服務器,因為每個服務器只運行一個服務,這個服我們更有可能編譯安裝軟件,最大程度壓榨計算機的計算資源,編譯安裝就有一個特點了,程序所需要的文件都會在同一目錄下。
在命令行里我敲一個命令,為什么會那么快回復我們結果,bash是怎么找到命令的?我介紹一下bash查找到命令的過程。
首先我們要明白一個道理,bash運行時他已經全部了內存中。這時,當bash接受到一個命令,bash就像一個人一樣,首先看自己人有沒有符合條件的查看自己中內嵌的函數,有就調用沒有再去找那些非自己人的人;這時外部命令開始競爭這個位置,人那么多我們選哪一個,當然選和我們關系比較近的,好,我們在$PATH定義和我親疏關系,不在親疏關系中的人,堅決不能用,萬一老宋來到我們身邊多么危險。
親疏關系一般都分為好幾層吧,嗯,我們定義了$PATH多個選人路徑,執行如下命令查看$PATH的調用順序,優先級是從前到后調用:
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
還有alias,這個更了不得了,就像黨校校長一定是下一代領導人。它的優先級比內部命令還要高??偨Y一下,命令執行時的順序是alias->內建命令->外部命令。
富二代總是圍繞在我們周圍,官二代更是NB,人家根本不和在等級中,天生清華北大已經為他們留下了位置,既然我們不可能是二代了,那我們就開宗立派成為一代目。Linux也是這樣,linux中有一個hash機制,當我們執行過一個命令后,bash就會把我們執行程序的路徑保存下來。
執行bash命令查看已經緩存的命令:
# hash
hits command
1 /usr/bin/tty
1 /usr/bin/abrt-cli
1 /usr/bin/date
1 /usr/bin/mv
1 /usr/bin/mkdir
這個命令的執行結果每個人可能不一樣,以上是我執行hash命令的結果。既然是緩存,那么就會有問題,為啥?因為緩解矛盾后矛盾還是存在,只是被包上糖衣,糖吃到一半一定會劃到嘴。
當我執行的命令變了位置,而緩存沒有變,就會找不到命令,怎么辦,涼拌。自己手動刪除緩存。
hash –d Name 刪除一條緩存
hash –r Name 清除緩存
Note:這里的Name是命令的別名.
現在很多瀏覽器都會記錄瀏覽記錄,還有更過分的,可以聯網查找自己更早的歷史記錄,這就很可怕了,我們的行為都被記錄了,我們還刪除不了。Google的人工智能就用這些數據訓練機器,現在走在人工智能最前列的不是搞了alphago的google,而是ibm,當alphago還在努力賺足眼球的時候,ibm的沃森已經幫騰訊賺了好幾筆錢了,每年世界杯騰訊都有沃森對每場比賽進行分析,合理的投放廣告,會員收費。NBA大家都很熟悉吧,有家機構開始使用沃森安排每個球員每天的訓練量。舉個例子詹姆斯的一天,詹姆斯今天需要回家看望奶奶,沃森就會幫詹姆斯買的飛機和車票,然后根據詹姆斯肌肉狀態和今天的運動的類型安排他的三餐,并且給詹姆斯安排起程前需要做的訓練都有哪些,然后評估詹姆斯回家這幾天,鍛煉量可能會下降,就會安排一個教練隨行以保證它的訓練量還有一下球員比賽之后必須要做某些運動才有繼續訓練的動力,這也被列入沃森的計算中,并且規定可以去的范圍,最大程度保護球員的安全,23333。要不球員不比賽后大多都很快破產,因為沃森沒了(陰謀論一波)。Linux中也有個人工智能history。
直接執行history命令就會顯示當前系統全部的命令歷史
假如我們沒有正常退出終端History不會保存我們的命令歷史,因為我們執行命令時,命令歷史會默認保存在內存中,并且在$HISTSIZE中設定內存保存命令歷史的條數,在$HISTFILESIZE指定命令保存文件中保留的條數。
有了命令歷史,我們就可以輕易調用上一條命令:
??! 執行上一條命令
!# 執行第#條命令
History–c 清空命令歷史
History–a 把命令歷史中的命令保存到文件中
除此之外,我們在用戶家目錄中.history定義保存歷史的格式
HISTSIZE:命令歷史記錄的條數
HISTFILE:指定歷史文件,默認為~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
HISTTIMEFORMAT=“%F%T“ 顯示時間
HISTIGNORE=“str1:str2:…“ 忽略string1,string2歷史,這里支持glob
控制命令歷史的記錄方式:
環境變量: HISTCONTROL
ignoredups 默認,忽略重復的命令,連續且相同為“重復”
ignorespace 忽略所有以空白開頭的命令
ignorebothignoredups, ignorespace
erasedups 刪除重復命令
有事沒事按table,按按更健康。
Ctrl+c 強行打斷命令的執行
Ctrl+d 打斷命令執行
Ctrl+l 清屏
Ctrl+z 把命令進程放到后臺執行
Ctrl+a 把光標移至行首
Ctrl+e 把光標移至行尾
Ctrl+k 刪除光標后面的字符
Ctrl+u 刪除光標前的字符
bash調用命令順序alias->內建命令->外部命令。Bash用hash緩存命令執行路徑,用history記錄命令歷史,命令歷史是保存內存中的,我們退出終端時命令歷史保存到文件中,bash還有一些快捷鍵。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。