環(huán)境變量與文件查找

環(huán)境變量與文件查找

環(huán)境變量

變量 :

計(jì)算機(jī)中用于記錄一個(gè)值(不一定是數(shù)值,也可以是字符或字符串)的符號,而這些符號將用于不同的運(yùn)算處理中。通常變量與值是一對一的關(guān)系,可以通過表達(dá)式讀取它的值并賦值給其它變量,也可以直接指定數(shù)值賦值給任意變量。

變量的作用域即變量的有效范圍(比如一個(gè)函數(shù)中、一個(gè)源文件中或者全局范圍),在該范圍內(nèi)只能有一個(gè)同名變量。一旦離開則該變量無效,如同不存在這個(gè)變量一般。

使用 declare 命令創(chuàng)建一個(gè)變量名為 tmp 的變量:

使用 = 號賦值運(yùn)算符,將變量 tmp 賦值為 shiyanlou:

讀取變量的值,使用 echo 命令和 $ 符號($ 符號用于表示引用一個(gè)變量的值)


并不是任何形式的變量名都是可用的,變量名只能是英文字母、數(shù)字或者下劃線,且不能以數(shù)字作為開頭。

環(huán)境變量

通常會涉及到的變量類型有三種:

當(dāng)前 Shell 進(jìn)程私有用戶自定義變量,如上面我們創(chuàng)建的 tmp 變量,只在當(dāng)前 Shell 中有效。

Shell 本身內(nèi)建的變量。

從自定義變量導(dǎo)出的環(huán)境變量。

命 令 說 明

set 顯示當(dāng)前 Shell 所有變量,包括其內(nèi)建環(huán)境變量(與 Shell 外觀等相關(guān)),用戶自定義變量及導(dǎo)出的環(huán)境變量。

env 顯示與當(dāng)前用戶相關(guān)的環(huán)境變量,還可以讓命令在指定環(huán)境中運(yùn)行。

export 顯示從 Shell 中導(dǎo)出成環(huán)境變量的變量,也能通過它將自定義變量導(dǎo)出為環(huán)境變量。

使用 vimdiff 工具比較一下它們之間的差別:


使用 vimdiff 工具比較導(dǎo)出的幾個(gè)文件的內(nèi)容:


先在 Shell 中設(shè)置一個(gè)變量 temp=shiyanlou,然后再新創(chuàng)建一個(gè)子 Shell 查看 temp 變量的值:


為了與普通變量區(qū)分,通常我們習(xí)慣將環(huán)境變量名設(shè)為大寫。

永久生效

按變量的生存周期來劃分,Linux 變量可分為兩類:

永久的:需要修改配置文件,變量永久生效;

臨時(shí)的:使用 export 命令行聲明即可,變量在關(guān)閉 shell 時(shí)失效。

profile 只對當(dāng)前用戶永久生效。而寫在 /etc/profile 里面的是對所有用戶永久生效,所以如果想要添加一個(gè)永久生效的環(huán)境變量,只需要打開 /etc/profile,在最后加上你想添加的環(huán)境變量.

命令的查找路徑與順序

查看 PATH 環(huán)境變量的內(nèi)容:


練習(xí)創(chuàng)建一個(gè)最簡單的可執(zhí)行 Shell 腳本和一個(gè)使用 C 語言創(chuàng)建的“ hello world ”程序:


創(chuàng)建一個(gè) C 語言“ hello world ”程序:


在 shiyanlou 家目錄創(chuàng)建一個(gè) mybin 目錄,并將上述 hello_shell.sh 和 hello_world 文件移動(dòng)到其中,

在 mybin 目錄中分別運(yùn)行你剛剛創(chuàng)建的兩個(gè)程序:


添加自定義路徑到“ PATH ”環(huán)境變量

PATH 里面的路徑是以 : 作為分割符的

這里一定要使用絕對路徑。

在每個(gè)用戶的 home 目錄中有一個(gè) Shell 每次啟動(dòng)時(shí)會默認(rèn)執(zhí)行一個(gè)配置腳本,以初始化環(huán)境,包括添加一些用戶自定義環(huán)境變量等等。zsh 的配置文件是 .zshrc,相應(yīng) Bash 的配置文件為 .bashrc 。

直接添加內(nèi)容到 .zshrc 中:


上述命令中 >> 表示將標(biāo)準(zhǔn)輸出以追加的方式重定向到一個(gè)文件中,注意前面用到的 > 是以覆蓋的方式重定向到一個(gè)文件中,使用的時(shí)候一定要注意分辨。

修改和刪除已有變量

變量修改

變量的修改有以下幾種方式:

變量設(shè)置方式 說明

${變量名#匹配字串} 從頭向后開始匹配,刪除符合匹配字串的最短數(shù)據(jù)

${變量名##匹配字串} 從頭向后開始匹配,刪除符合匹配字串的最長數(shù)據(jù)

${變量名%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最短數(shù)據(jù)

${變量名%%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最長數(shù)據(jù)

${變量名/舊的字串/新的字串} 將符合舊字串的第一個(gè)字串替換為新的字串

${變量名//舊的字串/新的字串} 將符合舊字串的全部字串替換為新的字串

修改添加到 PATH 的環(huán)境變量:


使用 unset 命令刪除一個(gè)環(huán)境變量:


如何讓環(huán)境變量立即生效

在 Shell 中修改了一個(gè)配置腳本文件之后,使用 source 命令來讓其立即生效:


source 命令還有一個(gè)別名就是 .,注意與表示當(dāng)前路徑的那個(gè)點(diǎn)區(qū)分開,雖然形式一樣,但作用和使用方式一樣,上面的命令如果替換成 . 的方式就該是:


注意第一個(gè)點(diǎn)后面有一個(gè)空格,而且后面的文件必須指定完整的絕對或相對路徑名,source 則不需要。

搜索文件

whereis 簡單快速

whereis 只能搜索二進(jìn)制文件(-b),man 幫助文件(-m)和源代碼文件(-s)。


locate 快而全

通過“ /var/lib/mlocate/mlocate.db ”數(shù)據(jù)庫查找

它可以用來查找指定目錄下的不同文件類型


它不只是在 /etc 目錄下查找,還會自動(dòng)遞歸子目錄進(jìn)行查找。

查找 /usr/share/ 下所有 jpg 文件:


注意要添加 * 號前面的反斜杠轉(zhuǎn)義,否則會無法找到。

如果想只統(tǒng)計(jì)數(shù)目可以加上 -c 參數(shù),-i 參數(shù)可以忽略大小寫進(jìn)行查找,whereis 的 -b、-m、-s 同樣可以使用。

which 小而精

使用 which 來確定是否安裝了某個(gè)指定的軟件


find 精而細(xì)

不但可以通過文件類型、文件名進(jìn)行查找而且可以根據(jù)文件的屬性(如文件的時(shí)間戳,文件的權(quán)限等)進(jìn)行搜索。

find 命令最常見的格式,千萬記住 find 的第一個(gè)參數(shù)是要搜索的地方

去 /etc/ 目錄下面 ,搜索名字叫做 interfaces 的文件或者目錄:


find 命令的路徑是作為第一個(gè)參數(shù)的, 基本命令格式為 find [path] [option] [action] 。

與時(shí)間相關(guān)的命令參數(shù):

參數(shù) 說明

-atime 最后訪問時(shí)間

-ctime 最后修改文件內(nèi)容的時(shí)間

-mtime 最后修改文件屬性的時(shí)間

下面以 -mtime 參數(shù)舉例:

-mtime n:n 為數(shù)字,表示為在 n 天之前的“一天之內(nèi)”修改過的文件

-mtime +n:列出在 n 天之前(不包含 n 天本身)被修改過的文件

-mtime -n:列出在 n 天之內(nèi)(包含 n 天本身)被修改過的文件

newer file:file 為一個(gè)已存在的文件,列出比 file 還要新的文件名

列出 home 目錄中,當(dāng)天(24 小時(shí)之內(nèi))有改動(dòng)的文件:


列出用戶家目錄下比 Code 文件夾新的文件:



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,935評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,908評論 2 372

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