1.Linux發(fā)展背景
我們首先想一下這些問題:人為什么可以統(tǒng)領(lǐng)世界?為什么不可以是其它生物?當今發(fā)展如此迅速的時代,是什么推動了我們這個社會的發(fā)展?
首先第一個問題: 人為什么可以統(tǒng)領(lǐng)世界?為什么不可以是其它生物?
你說老虎這么兇猛它為什么不能統(tǒng)領(lǐng)世界呢?古代,氣候還不那么適宜的時候,其它生物可能要經(jīng)過幾十年甚至上百年的進化,使自己生長厚實的皮毛來適應(yīng)環(huán)境,而人呢?啪啪兩棒子,老虎皮一剝便擁有了它那么多年的進化成果。古代,食物那么難取得,老虎經(jīng)過進化生長出那么鋒利的獠牙以便捕獵,而人呢,啪啪幾個長槍一插,一個大型猛禽就觸手可得。這么來看,我們便擁有了答案,因為人會使用工具,所以人能統(tǒng)領(lǐng)世界。所以人進化的方式,就是以工具的發(fā)明而產(chǎn)生的。
那么問題來了,人為什么要制造工具?
你說沒有工具,哪來的老虎皮,沒有工具,哪來的食物。因此工具的產(chǎn)生,都是人類為了適應(yīng)環(huán)境,對抗自然。那么現(xiàn)代社會也是一樣的,美蘇冷戰(zhàn)時期,大量的技術(shù),大量的工具被發(fā)明產(chǎn)生,不都是因為這兩個國家的對抗所產(chǎn)生的。因此通過對抗,技術(shù)被快速的創(chuàng)造。
那么問題又來了,計算機是工具嗎?
答案是肯定的,第一臺計算機是在1946年2月14日,這個時間是什么時間,二戰(zhàn)結(jié)束,美蘇冷戰(zhàn)開始。你說,美蘇兩國互掐,是靠什么互掐,難道靠打口水戰(zhàn)?了解些許歷史的都知道,那個時間段無論是美國還是蘇聯(lián),他們的核武器,航空航天,航母等等一系列的發(fā)展相當迅速,至今,這些上個世紀遺留下的產(chǎn)物依然在深深震懾著相當多的國家,如俄羅斯的沙皇炸彈又稱大伊萬,號稱是炸彈之王,頃刻間就可以讓一些國家從這個世界上抹去,這就是對抗對技術(shù)的推動。而我們的計算機剛開始發(fā)明的目的就是用來計算導彈的彈道軌跡的。所以這里引出一個話題:硅谷模式
計算機的發(fā)展脈絡(luò)
如上面所介紹的美蘇對抗,那么為了更好的服務(wù)軍方,計算機產(chǎn)生了,那是誰發(fā)明的?軍隊用來打仗的肯定沒有這個能力去研發(fā),那么就是研究機構(gòu)以及一些大學,因此就是在政府以及軍方的推動下,一些研究機構(gòu)和大學就誕生了,這些研究機構(gòu)在政府的支持下,產(chǎn)生出了許多的技術(shù)結(jié)論和專利,早期的計算機就是用來計算導彈的彈道軌跡的。這早期的計算機,平頭老百姓可用不上。你說,政府光投資,產(chǎn)生這些技術(shù)和專利,雖然服務(wù)了軍方但終究是沒有利益回饋的,所以隨著技術(shù)的逐漸發(fā)展,政府就允許了一些專利和技術(shù)進行民用化,而商業(yè)公司將這些包裝成商品,老百姓就可以去購買,商業(yè)公司賺了錢,政府進行收稅,這就成了閉環(huán),也就是上述的硅谷模式。
計算機就是在這樣的背景下產(chǎn)生,但是光有計算機能行嗎?就好比光有鍵盤屏幕、包括一些硬件,沒有操作系統(tǒng)在軟硬件之間充當一個管理者怎么能行?所以操作系統(tǒng)是什么?操作系統(tǒng):就是對上提供良好的(穩(wěn)定、安全、高效)運行環(huán)境(目的),對下管理好軟硬件資源(手段),因此操作系統(tǒng)就是一款管理軟件。在這個時間呢,有一個人叫做肯湯普森,他通過匯編語言編寫了第一個unix操作系統(tǒng),之后和他的好基友丹尼斯里奇(c語言之父)共同改寫了unix操作系統(tǒng),并使用C語言實現(xiàn)了unix操作系統(tǒng)。不過要注意這是收費的。蘋果、微軟、IBM也就是在這個時候乘勢而上,IBM將用戶定義到了企業(yè),研發(fā)各種企業(yè)級計算機,而蘋果公司將用戶定義到了普通的老百姓,但剛開始的計算機沒有圖像化界面,并且此時的計算機是新興產(chǎn)物,不方便且貴,不利于推廣,那么喬布斯這個老賊聽到施樂公司有做工廠的圖形化操作界面,喬布斯就帶領(lǐng)著團隊去參觀,不參觀不要緊,一參觀喬布斯發(fā)現(xiàn)了寶藏,這不正是他所需要的嗎,參觀時喬布斯難掩喜悅,快憋出內(nèi)傷,參觀完立馬回到公司帶領(lǐng)團隊,照著施樂公司打造了一套自己的圖形化界面,最終就是演變成了現(xiàn)在的蘋果電腦。而在此期間呢,比爾蓋茨發(fā)現(xiàn)了這其中的商機,但是微軟是一家做軟件的公司,人家不做硬件,他就找到了IBM,但人家IBM說計算機這種東西只能是企業(yè)這種大型公司使用的起,平頭老百姓怎么用的起呢,比爾蓋茨心想low到爆了,轉(zhuǎn)眼找到了Intel這家公司,兩家公司一拍即合,但是問題來了,我們的圖形化界面從哪兒搞,聽說蘋果那邊做的不錯,比爾蓋茨也是個老賊啊,轉(zhuǎn)眼照著蘋果的copy了一份,由此演化出了我們所看到的一些cpu是Intel,操作系統(tǒng)是windows的電腦,相信這種電腦占據(jù)了大多數(shù)。從此喬布斯和比爾蓋茨這對老冤家互掐了半個多世紀,人家比爾蓋茨也有話說啊,你的圖形化界面從哪得來的呢?喬布斯只是一味地不語,擲地有聲的譴責比爾蓋茨盜竊蘋果技術(shù)!比爾蓋茨一直反駁到,你的哪來的呢?一直互掐,所以要是讓喬布斯說這輩子最恨的人,比爾蓋茨可能身處其中。
早期的電腦確確實實很難到平頭老百姓的手里,但是在世界頂尖高校內(nèi),它們可以通過接受捐贈做研究的形式,從而有了那么幾臺電腦,在芬蘭的赫爾辛基大學,就有那么幾臺電腦,歷史的車輪也就在此轉(zhuǎn)動了起來,有一個小年輕,叫做雷納斯托瓦茲,試玩了這樣的一臺搭載unix操作系統(tǒng)的計算機,他覺得挺有趣,我能不能寫一個呢?因此他仿照unix系統(tǒng)交互模式,編寫了一個操作系統(tǒng),他說,要錢多l(xiāng)ow啊,他將這款操作系統(tǒng)源碼公諸于世!我們稱之為開源!(我們不得不說:牛B啊老鐵!)這就是我們所看到的最最原始的Linux,這款操作系統(tǒng)一經(jīng)開源,全世界頂級的黑客和工程師開始參與其中,經(jīng)過不斷的迭代,便成為了我們所看到的現(xiàn)在的Linux操作系統(tǒng)。從此,外部矛盾凸顯時,內(nèi)部矛盾就被削弱,喬布斯和比爾蓋茨估計都會說雷納斯托瓦茲,你怎么能這樣做,你這樣做我們還怎么做生意,還怎么賺money,所也呢,要是讓喬布斯和比爾蓋茨共同評價這輩子最恨的人,估計是異口同聲的說雷納斯托瓦茲!?
2.Linux基本指令 2.1 進出目錄查看路徑相關(guān)指令
pwd:顯示當前用戶所在的路徑
cd:改變工作目錄。將當前工作目錄改變到指定的目錄下
cd .. : 返回上級目錄
cd /home/XXX/XXX/ : 絕對路徑
cd ../XXX/ : 相對路徑
cd ~:進入用戶家目,即/home/XXX,其中XXX叫做XXX用戶的工作路徑,或者叫做家目錄,特定用戶登錄時默認所處的路徑。
cd -:返回最近訪問目錄

whoami:誰正在使用Linux系統(tǒng)

ls:顯示當前路徑下的文件或者目錄名稱

?
ls -l:在上述基礎(chǔ)上顯示更加詳細的屬性信息
ls -l 目錄文件:顯示目錄里面文件的詳細信息
ls -d:不進入目錄,顯示目錄本身
ls -dl:不進入目錄,顯示目錄的詳細信息

?
ls -a:顯示所有文件,包括隱藏文件

-i 輸出文件的 i 節(jié)點的索引信息。 如 ls –ai 指定文件-k 以 k 字節(jié)的形式表示文件的大小。ls –alk 指定文件-l 列出文件的詳細信息。-n 用數(shù)字的 UID,GID 代替名稱。 (介紹 UID, GID)-F 在每個文件名后附上一個字符以說明該文件的類型,“*”表示可執(zhí)行的普通文件;“/”表示目錄;“@”表 示符號鏈接;“|”表示FIFOs;“=”表示套接字(sockets)。(目錄類型識別)-r 對目錄反向排序。-t 以時間排序。-s 在l文件名后輸出該文件的大小。(大小排序,如何找到目錄下最大的文件)-R 列出所有子目錄下的文件。(遞歸)-1 一行只輸出一個文件。
2.2 創(chuàng)建與刪除文件相關(guān)指令
touch:在Linux下創(chuàng)建普通文件的命令。也可以更新文件的修改時間。


-a 或–time=atime或–time=access或–time=use只更改存取時間。-c 或–no-create 不建立任何文檔。-d 使用指定的日期時間,而非現(xiàn)在的時間。-f 此參數(shù)將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。-m 或–time=mtime或–time=modify 只更改變動時間。-r 把指定文檔或目錄的日期時間,統(tǒng)統(tǒng)設(shè)成和參考文檔或目錄的日期時間相同。-t 使用指定的日期時間,而非現(xiàn)在的時間。
mkdir:創(chuàng)建空目錄
mkdir -p, –parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統(tǒng)將自動建立 好那些尚不存在的目錄,即一次可以建立多個目錄


rm:默認刪除普通文件 (注:Linux下刪除文件,就真的刪除了)
rmdir:用來刪除目錄且是空目錄
rm -r:遞歸刪除(可刪除目錄)
rm -rf:遞歸強制刪除目錄的指令,以及內(nèi)部的文件 -f:force強制
切忌:不能執(zhí)行 rm -rf /:這會直接刪除根目錄,操作系統(tǒng)直接掛掉,有勇氣的小伙伴可以嘗試嘗試?


2.3 對文件內(nèi)容及屬性操作的相關(guān)指令
mv:類似剪切功能,可以移動文件或者目錄。對文件或者目錄進行重命名(常用)
功能:
1. 視mv命令中第二個參數(shù)類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或?qū)⑵湟浦烈粋€新的 目錄中。
2. 當?shù)诙€參數(shù)類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它 將所給的源文件或目錄重命名為給定的目標文件名。
3. 當?shù)诙€參數(shù)是已存在的目錄名稱時,源文件或目錄參數(shù)可以有多個,mv命令將各參數(shù)指定的源文件均移至 目標目錄中。
-f :force 強制的意思,如果目標文件已經(jīng)存在,不會詢問而直接覆蓋-i :若目標文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋!


cp:拷貝目錄或者文件
常用選項:
-f 或 –force 強行復制文件或目錄, 不論目的文件或目錄是否已經(jīng)存在-i 或 —interactive 覆蓋文件之前先詢問用戶-r 遞歸處理,將指定目錄下的文件與子目錄一并處理。若源文件或目錄的形態(tài),不屬于目錄或符號鏈 接,則一律視為普通文件處理-R 或 –recursive遞歸處理,將指定目錄下的文件及子目錄一并處理


cat與tac:一正一反,cat正著看文本,tac反著看文本,-n顯示行號 (不適合查看大文本)


more與less :more不是一下顯示完,而是顯示部分,more也可以進行特定行號定位,也可以進行查詢,但是不支持上下翻,只能按住回車鍵進行下滑。less也可以進行查找且能上下翻,但是不能輸入具體行號進行定位。
-n 對輸出的所有行編號q 退出more
less:
-i 忽略搜索時的大小寫-N 顯示每行的行號/字符串:向下搜索“字符串”的功能?字符串:向上搜索“字符串”的功能n:重復前一個搜索(與 / 或 ? 有關(guān))N:反向重復前一個搜索(與 / 或 ? 有關(guān))q:quit


head與tail:顯示特定行數(shù)的前幾行或者后幾行。
-n 顯示的行數(shù)
tail:
-f 循環(huán)讀取-n 顯示行數(shù)

2.4 其它命令
|:管道命令,作用就是連接我們各個命令包括直接所寫的命令。

date:時間命令
%H : 小時(00..23)%M : 分鐘(00..59)%S : 秒(00..61)%X : 相當于 %H:%M:%S%d : 日 (01..31)%m : 月份 (01..12)%Y : 完整年份 (0000..9999)%F : 相當于 %Y-%m-%d
2.在設(shè)定時間方面
date -s //設(shè)置當前時間,只有root權(quán)限才能設(shè)置,其他只能查看。date -s 20080523 //設(shè)置成20080523,這樣會把具體時間設(shè)置成空00:00:00date -s 01:01:01 //設(shè)置具體時間,不會對日期做更改date -s “01:01:01 2008-05-23″ //這樣可以設(shè)置全部時間date -s “01:01:01 20080523″ //這樣可以設(shè)置全部時間date -s “2008-05-23 01:01:01″ //這樣可以設(shè)置全部時間date -s “20080523 01:01:01″ //這樣可以設(shè)置全部時間
3.時間戳
時間->時間戳:date +%s時間戳->時間:date -d@1508749502


cal:用于查看日歷等時間信息,如只有一個參數(shù),則表示年份(1-9999),如有兩個參數(shù),則表示月份和年份
-3 顯示系統(tǒng)前一個月,當前月,下一個月的月歷-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數(shù))-y 顯示當前年份的日歷

fing -name 文件名:用于在文件樹種查找文件,并作出相應(yīng)的處理(可能訪問磁盤,因而會導致效率低下)
which 指令:只用來查找指令,指令本質(zhì)也是一個文件。
whereis 文件或指令:在特定的路徑下,查找指定的文件以及指令
查找范圍:which
alias:給指令進行重命名

grep:在文件中搜索字符串,將找到的行打印出來
-i:小寫的不同,所以大小寫視為相同-n :順便輸出行號-v :反向選擇,亦即顯示出沒有 ‘搜尋字符串’ 內(nèi)容的那一行
注: grep可以和其他命令,結(jié)合管道來進行某些區(qū)配工作
eg:grep ‘999’ test.txt | wc -l
解釋:顯示含有999的內(nèi)容,并計算行數(shù),wc -l:統(tǒng)計行數(shù)
eg:grep -v ‘999’ test.txt
解釋:顯示不含有999的內(nèi)容
man:Linux的命令有很多參數(shù),我們不可能全記住,我們可以通過查看聯(lián)機手冊獲取幫助。默認從1號手冊開始查找,找到即停,也可以根據(jù)指定手冊進行查找。
如上述的wc指令我們不了解,可以執(zhí)行man 1 wc:即在一號手冊查找wc命令。

-k 根據(jù)關(guān)鍵字搜索聯(lián)機幫助num 只在第num章節(jié)找-a 將所有章節(jié)的都顯示出來,比如 man printf 它缺省從第一章開始搜索,知道就停止,用a選項,當按 下q退出,他會繼續(xù)往后面搜索,直到所有章節(jié)都搜索完畢。
手冊分為8章,常用的是前三章
1 是普通的命令2 是系統(tǒng)調(diào)用,如open,write之類的(通過這個,至少可以很方便的查到調(diào)用這個函數(shù),需要加什么頭文 件)3 是庫函數(shù),如printf,fread4是特殊文件,也就是/dev下的各種設(shè)備文件5 是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義6 是給游戲留的,由各個游戲自己定義7 是附件還有一些變量,比如向environ這種全局變量在這里就有說明8 是系統(tǒng)管理用的命令,這些命令只能由root使用,如ifconfig
sort:可以對文件進行排序(以ascll碼值進行排序)
uniq:可以對文件進行相鄰的內(nèi)容進行去重
2.5 解壓與壓縮指令
zip與unzip:
zip:默認對一個目錄進行打包壓縮的時候只會對錄文件打包壓縮,要想對目錄包括目錄里面的內(nèi)容一并打包需要zip -r 你的壓縮包名字 dir(要打包壓縮的目錄) -r是遞歸的意思,二叉樹前面數(shù)據(jù)結(jié)構(gòu)已經(jīng)進行了介紹,目錄本質(zhì)上也是一個二叉樹的結(jié)構(gòu),因此我們要進行刪除或者其它的一些什么操作時需要進行遞歸操作。
unzip 你的壓縮包:(默認在當前目錄下進行解包解壓的功能)
unzip 壓縮包 -d /home/XXX/XXX:(解包解壓到指定路經(jīng)下)
tar :
-c :建立一個壓縮文件的參數(shù)指令(create 的意思);-x :解開一個壓縮文件的參數(shù)指令!-t :不打開壓縮文件,直接查看壓縮包里面的文件內(nèi)容!-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?-v :解壓/壓縮的時候,同步顯示壓縮文件列表!這個常用,但不建議用在背景執(zhí)行過程!-f :使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加參數(shù)!-C : 解壓到指定目錄
eg: tar -czf 壓縮文件名 被壓縮文件:壓縮文件 tar -xzf 壓縮包:解包并解壓 tar xzvf my.tgz -C ~ →家目錄:解包解壓到家目錄(-可帶可不帶根據(jù)自身電腦的需要)
