1. Linux背景
1.1 發(fā)展史
本門課程學習Linux系統(tǒng)編程,你可能要問Linux從哪里來?它是怎么發(fā)展的?在這里簡要介紹Linux的發(fā)展史。要說Linux,還得從UNIX說起。
UNIX發(fā)展的歷史
1968年,一些來自通用電器公司、貝爾實驗室和麻省理工學院的研究人員開發(fā)了一個名叫Multics的特殊操作系統(tǒng)。Multics在多任務(wù)文件管理和用戶連接中綜合了許多新概念。
1969-1970年,AT&T的貝爾實驗室研究人員Ken Tompson和Dennis Ritchie,在采用很多Multics特點的基礎(chǔ)上開發(fā)了UINX系統(tǒng)。它運行在小型機上,滿足了系統(tǒng)對科研環(huán)境的要求。從產(chǎn)生開始,UNIX就是一個有價值的、高效的、多用戶和多任務(wù)的操作系統(tǒng)。
UNIX從滿足個人的設(shè)計需求開始,逐步成長為由許多不同開發(fā)商所支持的標準軟件產(chǎn)品。
第一個UNIX版本是免費給許多知名大學的計算機系使用的。
1972年,貝爾實驗室開始發(fā)放商業(yè)版本,并且給不同的用戶授權(quán)使用這個系統(tǒng),使用者之一是加州大學伯克萊分校的計算機系。伯克萊給系統(tǒng)增加了許多新的特點,后來成為了標準。
1975年伯克萊由下屬部門BSD發(fā)行了自己的UNIX版本。UNIX的BSD版本成為AT&T貝爾實驗室版本的主要競爭者,而其它的獨立開發(fā)出的UNIX版本也開始萌生。
1980年微軟公司開發(fā)了叫做Xenix的UNIX PC版本。AT&T發(fā)行了第一個商業(yè)版本。名叫System Ⅲ,后來被成為對商用軟件產(chǎn)品良好支持的System Ⅴ所替代。
同時UNIX的BSD版本不斷發(fā)展,在70年代末期,BSD UNIX成為了國防部的高科技研究機構(gòu)科研項目的基礎(chǔ)。
其結(jié)果,伯克萊發(fā)行了一個叫做BSD Release 4.2的有效版本。
它包括了高級的文件管理器和基于TCP/IP網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)特點?,F(xiàn)在TCP/IP被Internet所使用。BSD Release 4.2被許多廠商所采用,例如SUN Microsystem。
UNIX不同版本的出現(xiàn)導(dǎo)致了UNIX標準的需要,軟件開發(fā)商不知道他們的程序運行在哪些版本上比較合適。
到80年代中期,兩個競爭的標準出現(xiàn)了,一個是基于AT&T的UNIX版本,另一個是BSD版本。在今天的書店里你能發(fā)現(xiàn)分別適用于這兩個版本的不同的UNIX的書,一些是System V,另一些集中在BSD UNIX。
AT&T建立了一個叫UNIX系統(tǒng)實驗室的新組織,它的作用就是綜合UNIX的不同版本,集中開發(fā)一個標準系統(tǒng)。
1991年,UNIX綜合實驗室綜合了System V Release3,SUN OS和Xenix的所有特點,發(fā)行了System V Release 4。為了與System V Release 4 競爭,一些其它公司,如IBM和惠普Open Software
Foundation(OSF)去產(chǎn)生自己的UNIX標準版本,繼而出現(xiàn)了兩個標準商業(yè)版本OSF版本和System Release 4。
1993年,AT&T把它的UNIX轉(zhuǎn)賣給Novell公司。UNIX系統(tǒng)實驗室成為了Novell的UNIX系統(tǒng)小組的一部分。
Novell發(fā)行了基于System V Release 4的自己的UNIX版UNIXWare,它可以和Novell公司的Netware系統(tǒng)相聯(lián)。SUN公司已經(jīng)把System V Release 4 融進了它的SUN OS,發(fā)行了Solaris。兩個相互競爭的UNIX使用的圖形用戶界面(一個叫Motif,另一個叫Openlook),已經(jīng)合并為一個新的工作平臺標準,叫做通用平臺環(huán)境(CDE)。
Linux發(fā)展歷史
1991年10月5日,赫爾辛基大學的一名研究生Linus BenedictTorvalds在一個Usenet新聞組(comp.os.minix)中宣布他編制出了一種類似UNIX的小操作系統(tǒng),叫Linux。
新的操作系統(tǒng)是受到另一個UNIX的小操作系統(tǒng)——Minix的啟發(fā),該系統(tǒng)是由一名叫Andrew S Tanenbaum的教師開發(fā)的。讀者也許猜想所發(fā)布的這個系統(tǒng)應(yīng)該是Linux的0.01版本,實際上不是這樣。真正的Linux 0.01版本并沒有被發(fā)布,原因是0.01版本不實用。Linus僅僅在第一個Linux的FTP站點(ftp://nic.funet.fi)上提供過這個版本的的源代碼。
Torvalds于10月5日發(fā)布的這個Linux版本被稱為0.02版,它能夠運行GNU Bourne Again Shell(bash)和GNU的C編譯程序(gcc)以及為數(shù)不多的其它語言。Torvalds絕對沒有想到他設(shè)想的一種能夠針對高級業(yè)余愛好者和黑客們的操作系統(tǒng)已經(jīng)產(chǎn)生,這就是人們所稱的Linux。
Linux發(fā)布時的版本是0.02,后來又有0.03版,然后又跳到0.10版。因為世界各地越來越多的程序員都開始開發(fā)Linux,它已經(jīng)達到0.95版。這就意味著正是公布1.0版本的時間已經(jīng)為期不遠了。正式的1.0版本是在1994年公布的。
1.2 開源精神
Linux是一種自由和開放源代碼的類UNIX操作系統(tǒng),該操作系統(tǒng)的內(nèi)核由林納斯托瓦茲在1991年首次發(fā)布,之后,在加上用戶空間的應(yīng)用程序之后,就成為了Linux操作系統(tǒng)。嚴格來講,Linux只是操作系統(tǒng)
內(nèi)核本身,但通常采用“Linux內(nèi)核”來表達該意思。而Linux則常用來指基于Linux內(nèi)核的完整操作系統(tǒng),它包括GUI組件和許多其他實用工具。
GNU通用公共許可協(xié)議(GNU General Public License,簡稱GNU GPL或GPL),是一個廣泛被使用的自由軟件許可協(xié)議條款,最初由理查德斯托曼為GNU計劃而撰寫,GPL給予了計算機程序自由軟件的定義, 任何基于GPL軟件開發(fā)衍生的產(chǎn)品在發(fā)布時必須采用GPL許可證方式,且必須公開源代碼,Linux是自由軟件和開放源代碼軟件發(fā)展中最著名的例子。只要遵循GNU通用公共許可證,任何個人和機構(gòu)都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發(fā)布。
隨著Linux操作系統(tǒng)飛速發(fā)展,各種集成在Linux上的開源軟件和實用工具也得到了應(yīng)用和普及,因此,Linux也成為了開源軟件的代名詞
1.3 官網(wǎng)
kernel官網(wǎng)
1.4 企業(yè)應(yīng)用現(xiàn)狀
Linux在服務(wù)器領(lǐng)域的發(fā)展
隨著開源軟件在世界范圍內(nèi)影響力日益增強,Linux服務(wù)器操作系統(tǒng)在整個服務(wù)器操作系統(tǒng)市場格局中占據(jù)了越來越多的市場份額,已經(jīng)形成了大規(guī)模市場應(yīng)用的局面。并且保持著快速的增長率。尤其在政
府、金融、農(nóng)業(yè)、交通、電信等國家關(guān)鍵領(lǐng)域。此外,考慮到Linux的快速成長性以及國家相關(guān)政策的扶持力度,Linux服務(wù)器產(chǎn)品一定能夠沖擊更大的服務(wù)器市場。
據(jù)權(quán)威部門統(tǒng)計,目前Linux在服務(wù)器領(lǐng)域已經(jīng)占據(jù)75%的市場份額,同時,Linux在服務(wù)器市場的迅速崛起,已經(jīng)引起全球IT產(chǎn)業(yè)的高度關(guān)注,并以強勁的勢頭成為服務(wù)器操作系統(tǒng)領(lǐng)域中的中堅力量。
Linux在桌面領(lǐng)域的發(fā)展
近年來,特別在國內(nèi)市場,Linux桌面操作系統(tǒng)的發(fā)展趨勢非常迅猛。國內(nèi)如中標麒麟Linux、紅旗Linux、深度Linux等系統(tǒng)軟件廠商都推出的Linux桌面操作系統(tǒng),目前已經(jīng)在政府、企業(yè)、OEM等領(lǐng)域
得到了廣泛應(yīng)用。另外SUSE、Ubuntu也相繼推出了基于Linux的桌面系統(tǒng),特別是Ubuntu Linux,已經(jīng)積累了大量社區(qū)用戶。但是,從系統(tǒng)的整體功能、性能來看,Linux桌面系統(tǒng)與Windows系列相比還有一定的差距,主要表現(xiàn)在系統(tǒng)易用性、系統(tǒng)管理、軟硬件兼容性、軟件的豐富程度等方面。
Linux在移動嵌入式領(lǐng)域的發(fā)展
Linux的低成本、強大的定制功能以及良好的移植性能,使得Linux在嵌入式系統(tǒng)方面也得到廣泛應(yīng)用,目前Linux以廣泛應(yīng)用于手機、平板電腦、路由器、電視和電子游戲機等領(lǐng)域。在移動設(shè)備上廣泛使用
的Android操作系統(tǒng)就是創(chuàng)建在Linux內(nèi)核之上的。目前,Android已經(jīng)成為全球最流行的智能手機操作系統(tǒng),據(jù)2015年權(quán)威部門最新統(tǒng)計,Android操作系統(tǒng)的全球市場份額已達84.6%。
此外,思科在網(wǎng)絡(luò)防火墻和路由器也使用了定制的Linux,阿里云也開發(fā)了一套基于Linux的操作系統(tǒng)“YunOS”,可用于智能手機、平板電腦和網(wǎng)絡(luò)電視;常見的數(shù)字視頻錄像機、舞臺燈光控制系統(tǒng)等都在逐漸采用定制版本的Linux來實現(xiàn),而這一切均歸功與Linux與開源的力量。
Linux在云計算/大數(shù)據(jù)領(lǐng)域的發(fā)展
互聯(lián)網(wǎng)產(chǎn)業(yè)的迅猛發(fā)展,促使云計算、大數(shù)據(jù)產(chǎn)業(yè)的形成并快速發(fā)展,云計算、大數(shù)據(jù)作為一個基于開源軟件的平臺,Linux占據(jù)了核心優(yōu)勢;據(jù)Linux基金會的研究,86%的企業(yè)已經(jīng)使用Linux操作系統(tǒng)進行云計算、大數(shù)據(jù)平臺的構(gòu)建,目前,Linux已開始取代Unix成為最受青睞的云計算、大數(shù)據(jù)平臺操作系統(tǒng)。
1.5 發(fā)行版本
Debian
Debian運行起來極其穩(wěn)定,這使得它非常適合用于服務(wù)器。 debian這款操作系統(tǒng)無疑并不適合新手用戶,而是適合系統(tǒng)管理員和高級用戶。
Ubuntu
Ubuntu是Debian的一款衍生版,也是當今最受歡迎的免費操作系統(tǒng)。Ubuntu側(cè)重于它在這個市場的應(yīng)用,在服務(wù)器、云計算、甚至一些運行Ubuntu Linux的移動設(shè)備上很常見。Ubuntu是新手用戶肯定
愛不釋手的一款操作系統(tǒng)。
紅帽企業(yè)級Linux
這是第一款面向商業(yè)市場的Linux發(fā)行版。它有服務(wù)器版本,支持眾多處理器架構(gòu),包括x86和x86_64。紅帽公司通過課程紅帽認證系統(tǒng)管理員/紅帽認證工程師(RHCSA/RHCE),對系統(tǒng)管理員進行培訓和認證。
CentOS
CentOS是一款企業(yè)級Linux發(fā)行版,它使用紅帽企業(yè)級Linux中的免費源代碼重新構(gòu)建而成。這款重構(gòu)版完全去掉了注冊商標以及Binary程序包方面一個非常細微的變化。有些人不想支付一大筆錢,又能領(lǐng)
略紅帽企業(yè)級Linux;對他們來說,CentOS值得一試。此外,CentOS的外觀和行為似乎與母發(fā)行版紅帽企業(yè)級Linux如出一轍。 CentOS使用YUM來管理軟件包。
Fedora
小巧的Fedora適合那些人:想嘗試最先進的技術(shù),等不及程序的穩(wěn)定版出來。其實,F(xiàn)edora就是紅帽公司的一個測試平臺;產(chǎn)品在成為企業(yè)級發(fā)行版之前,在該平臺上進行開發(fā)和測試。Fedora是一款非常
好的發(fā)行版,有龐大的用戶論壇,軟件庫中還有為數(shù)不少的軟件包。
Kali Linux
Kali Linux是Debian的一款衍生版。Kali旨在用于滲透測試。Kali的前身是Backtrack。用于Debian的所有Binary軟件包都可以安裝到Kali Linux上,而Kali的魅力或威力就來自于此。此外,支持Debian的用
戶論壇為Kali加分不少。Kali隨帶許多的滲透測試工具,無論是Wifi、數(shù)據(jù)庫還是其他任何工具,都設(shè)計成立馬可以使用。Kali使用APT來管理軟件包。
毫無疑問,Kali Linux是一款滲透測試工具,或者是文明黑客(我不想談?wù)搻阂夂诳停┣嗖A的操作系統(tǒng)。
1.6 os概念,定位
操作系統(tǒng)概念:操作系統(tǒng)是一款進行軟硬件管理的軟件!
使計算機更好用! 這是操作系統(tǒng)的根本要義!!
2. Linux下基本指令
那接下來我們就來學習一下Linux下常見的基本指令,首先我這里用的是云服務(wù)器,我們先用xshell遠程登陸上我的服務(wù)器(這里是root用戶登錄)。
2.1 幾個常用基本命令演示
我先來給大家介紹幾個常見的命令,然后我會對比Windows下的操作來幫助大家更好的理解這些指令
??,來看第一個,如果我們想在Linux上創(chuàng)建一個目錄,我們可以怎么做呢?
就可以用mkdir這個命令,如果我們想創(chuàng)建一個名字為dir的目錄,就是mkdir dir
(相當于在Windows上創(chuàng)建文件夾)
沒有報錯,這就創(chuàng)建好了,那我想查看一下怎么做?——ls
該命令可以查看當前目錄下的子目錄和文件列表
那想查看我當前在哪個目錄怎么做?
pwd
我想進入我創(chuàng)建的目錄:cd 目錄名
我們現(xiàn)在不想創(chuàng)建目錄了,想創(chuàng)建一個普通文件:touch 文件名
(相當于在Windows上創(chuàng)建一個文件)
先說這幾個,簡單總結(jié)一下:
2.2 某些概念的解釋
上面說到ls是顯示當前路徑(目錄)下的文件列表:
ls
默認呢是只顯示文件名你或者目錄名的,如果我想讓它顯示的信息多一點呢?
那就可以用這條命令:ls -l
-l
這個l
可以理解成list。這樣就可以顯示更多信息。
那到這里,就要給大家解釋幾個概念了:
對于
ls -l
這條命令來說,前面的ls叫做命令,后面跟的-l把它叫做命令選項。
一個命令可以配上不同的命令選項。
然后我們再來看這個:
我們說ls -l
可以在ls的基礎(chǔ)上顯示出文件或目錄的更多信息,那圖中這里的0其實表示的是這個文件的大小,我們看到test.txt這個文件當前大小是0,因為它是一個空文件嘛,里面啥都沒有。
那我現(xiàn)在給它里面寫一點東西:
我們看到,寫入內(nèi)容之后它的大小變成了12。
那我來問大家?guī)讉€問題:
如果我在Windows上創(chuàng)建一個空文件,這個文件是在哪存儲的呢?
這個簡單,文件存在磁盤上嘛。
那大家再想一下,這個空文件要不要占據(jù)磁盤空間大小呢?
答案是需要占用空間。
為什么呢?
要知道這里的空文件是指文件里面是空的,沒有內(nèi)容
那沒有內(nèi)容不就不占用空間大小嘛,而且上面顯示的也是0kb啊。
??,那我問大家,這個空文件的文件名、修改日期、類型和大小這些東西是不是數(shù)據(jù)?
當然是數(shù)據(jù),這些是文件的屬性數(shù)據(jù)(信息)。
那既然是數(shù)據(jù),就需要保存在磁盤中啊。
所以,即使是創(chuàng)建了一個空文件,他也是需要占據(jù)磁盤空間大小的。
文件=內(nèi)容+屬性。
對文件的操作無非就兩種,對內(nèi)容的操作和對屬性的操作。
所以再來看ls -l(可以寫成ll)其實就是以列表的形式顯示文件更多的屬性(ls只顯示文件名屬性)。
前面大家可以認為是做了一些鋪墊,接下來我們正式來一個個學習我們接下來要講的基本命令。
2.3 ls 指令
語法: ls [選項][目錄或文件]
功能:對于目錄,該命令列出該目錄下的所有子目錄與文件。對于文件,將列出文件名以及其他信息。
剛才我們說到ls -l后面的-l是命令選項,而一個命令可能有多個不同命令選項(命令后面也可以一次性跟多個選項),接下來我們就來看一下ls常見的選項都有哪些:
常用選項:
-a 列出目錄下的所有文件,包括以
.
開頭的隱含文件。
-d 將目錄像文件一樣顯示,而不是顯示其下的文件。 如:ls –d 指定目錄
-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 一行只輸出一個文件。
這里有些內(nèi)容我們現(xiàn)在還不能很好的理解(大家可以自己先練習練習),所以下面我先挑一些最常見的給大家介紹一下:
第一個:-a 列出目錄下的所有文件,包括以
.
開頭的隱含文件。
a可以理解成all
??,還是在上面那個路徑下,這次我們在ls -l
后面再加一個-a
,大家看這兩個的結(jié)果有什么不同?
我們看到又多出來兩個文件,那這兩個其實就是該目錄下的隱藏文件,因為-a 選項的作用就是列出目錄下的所有文件,包括以.
開頭的隱含文件。
那在這里就要告訴大家一個結(jié)論:
在Linux下,文件/目錄名如果以﹒
開頭,就是一個隱藏文件/目錄
當然ls -l -a
也可以簡寫成ls -la
當然大家應(yīng)該都知道在Windows下也是有隱藏文件的。
PS:沒有講到的選項大家作為一個拓展,有興趣可以自己試一下。
2.4 pwd 指令
語法: pwd
功能:顯示用戶當前所在的目錄
常用選項:無
建議每一次登陸,或者長時間沒操作,都先執(zhí)行一下pwd,確認一下自己在哪里
2.5 cd 指令
cd大家可以理解成change direction,更改目錄。
語法: cd 目錄名
功能:改變工作目錄。將當前工作目錄改變到指定的目錄下
舉個栗子:
然后這里要給大家說一下:
在Linux中,
.
表示當前路徑,..
表示上一級路徑。
cd…就相當于我們在Windows下某個文件路徑回退當上一級目錄的過程。
??,那這里面呢,還有一個細節(jié)需要我們注意:
來看:
D:\gitee本地代碼倉庫\cpp-programming\STL-vector\Debug
這是我拷貝過來的Windows下的一個路徑。
那這里的\
叫做Windows下的路徑分隔符。
我們再來看下Linux下的路徑:
/root/dir/dir3
是這樣的,所以/
是Linux下的路徑分隔符。
然后我們再來看:
Linux下,我們從一個路徑開始往上一級一直回退回退,當回退到/
的時候就無法再繼續(xù)回退了。
那其實在Windows下也是這樣,我們從某一個路徑回退:
一直回退,如果回到此電腦界面的話就也無法繼續(xù)回退了:
那在Linux中:
回退到/
的時候就無法再繼續(xù)回退了,而這里的/
我們把它叫做Linux下的根目錄。
那說到這里大家可能就會有疑問了:
上面不是說
/
是Linux下的路徑分隔符嘛,但是這里為啥又說/
是Linux下的根目錄,這是怎么回事?。?br> ??,那它們其實并不沖突,對于/root/dir/dir3
像這樣的一個Linux下的路徑,最開始的第一個/
是根目錄,后面的/
是路徑分隔符。
Linux的目錄結(jié)構(gòu)
那接下來我們再來探討一個問題:
我們知道在Windows下一個文件夾里還可以包含文件夾和普通文件,那大家思考一下,在Linux中,一個目錄下面還可以有新的目錄嗎?
答案是可以的。
即Linux中,根目錄下可以有多個目錄或文件,這多個目錄下還可以再有多個目錄或文件。
所以我們可以得出一個結(jié)論:
Linux的目錄結(jié)構(gòu)其實是一顆多叉樹
絕對路徑與相對路徑
我們知道:
在Windows中,如果我想快速找到一個文件夾或者文件,我們一般是通過改文件夾的路徑去尋找的。
那Windows如此,Linux亦然。
Linux也是通過路徑來唯一標識一個文件的。
那大家思考一下,為什么是路徑呢?
??,因為路徑具有唯一性。
看這張圖,我們想從根節(jié)點出發(fā),尋找test.c,路徑是不是唯一的啊——/home/bit/test.c
??,那我們把這種從根目錄開始,定位文件的路徑稱為絕對路徑。
那除了絕對路徑之外,還有沒有其它定位文件的方法呢?
有的,還有一種定位文件的方法就是用相對路徑。
假設(shè)我現(xiàn)在在dev這個目錄下,我想找到test.c文件,怎么找呢?
我是不是可以先回到上一級,然后進入home目錄下,在進入bit,然后是不是就找到test.c了。
即../home/bit/test.c
那這種定位文件的路徑就叫做相對路徑——即相對于當前所處路徑去定位某個文件的路徑。
那現(xiàn)在有一個問題,如果我的當前路徑變了呢?
??,那你這個相對路徑是不是就失效了啊。
所以說,相對路徑只在特定的路徑下有效。
而絕對路徑則不會出現(xiàn)這樣的情況,因為它是從根目錄開始的,放在哪里都不會出錯。
那我們來總結(jié)一下:
絕對路徑呢,從根目錄開始定位,他不會失效,放在哪都是正確的,但是,比較麻煩,一般是用在某些配置文件中,進行對應(yīng)的路徑設(shè)置。
而相對路徑,雖然會出現(xiàn)失效的問題,但是用起來比較簡單,反而是我們后續(xù)指令操作時,常用的路徑定位方案。
cd 常用快捷命令
cd ~:進入當前用戶(whomi可查看當前用戶)的家目錄
演示一下:
我們當前是root用戶登錄,root用戶的家目錄就是/root
。
普通用戶的家目錄是在/home/用戶名
下。
cd -:返回最近訪問的上一次所處的路徑
演示一下:
然后這里再給大家補充一個熱鍵:
就是
Tab
有什么作用呢?
假設(shè)我現(xiàn)在想使用mkdir,但是我們記不太清除這個命令怎么寫了,只記得mkd,那我們就可以輸入mkd,然后按Tab鍵(一次沒反應(yīng)就按兩次):
大家看發(fā)生了什么,它把所有以mkd開頭的命令都列出來了。
那還有其它作用嗎?
有的:
我cd上一級目錄,如果敲回車的話我就進入上一級目錄了,但是我們不敲回車,敲Tab鍵,大家看發(fā)生了什么。
他把cd后面對應(yīng)的目錄下面的所有文件和目錄都列出來了。
2.6 touch指令
那在學習touch之前,先給大家再介紹兩個命令:
我們上面已經(jīng)學習了Linux的目錄結(jié)構(gòu),那有一個命令叫做
tree
,它可以以樹狀結(jié)構(gòu)顯示Linux指定目錄下的目錄結(jié)構(gòu)。
但是,大家的系統(tǒng)如果沒有安裝這個命令的話,可以用不了,會報一個錯:
怎么解決呢?其實很簡單,安裝一下就行了。
只需在root用戶下輸入yum install -y tree
這條命令就會自動去安裝tree命令,然后就可以用了。
另外要給大家介紹的一個命令就是如果我們執(zhí)行某些命令時,遇到瘋狂刷屏的情況,使用ctrl+c
可以終止命令的執(zhí)行。
然后我們來學習touch命令:
那touch其實我們在上面也演示過了
touch 文件名
就可以在當前路徑下創(chuàng)建一個普通文件。
當然也可以指定路徑去創(chuàng)建
那除此之外,touch其實還有其它的作用,它的后面也可以跟選項
首先再來認識一個命令叫做stat,它可以獲取文件的所有屬性:
這里面有的屬性我們不認識,但是任何一個文件它都有三種時間:
那這三個時間分別是什么呢?
??,那這個問題呢大家有興趣可以自己先嘗試了解一下,我們后面會講到。
然后,關(guān)于touch的更多的用法,大家可以先了解一下:
語法:touch [選項]… 文件…
功能:touch命令參數(shù)可更改文檔或目錄的日期時間,包括存取時間和更改時間,或者新建一個不存在的文件。
常用選項:
-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)在的時間
2.7 nano介紹和使用
這里再給大家介紹一個小工具——nano
。
它是一個文本編輯器,前期如果我們想打開一個文件并編輯它,就可以使用nano(后面我們會學vim)。
如果第一次也需要我們安裝一下:
怎么使用呢,簡單演示一下:
比如現(xiàn)在這里有一個test.c文件,我想打開它并寫入一段C語言代碼,怎么做呢?
直接nano test.c
:
打開是這樣的,然后就可以直接寫東西了
那寫完怎么保存退出呢?
其實下面有提示的,我按著提示操作就行了,退出(exit)就是ctrl+X
然后出現(xiàn)這個,問你是否保存修改,我們輸入Y,然后回車就保存退出來了
那寫好了,我們想查看一下里面的內(nèi)容,可以用一個命令cat(后面也會講):
那怎么編譯這個C語言代碼呢?
用gcc
:
我們發(fā)現(xiàn)多出來一個文件叫做a.out,這就是生成的可執(zhí)行程序,怎么運行他呢?./a.out
就打印出來了。
2.8 mkdir指令(重要)
mkdir我們上面也用過了,它可以用來創(chuàng)建目錄。
那如果我現(xiàn)在想創(chuàng)建一串目錄(路徑)呢?
比如,
mkdir d1/d2/d3/d4/d5
,我創(chuàng)建一個d1,在d1里面再創(chuàng)建一個d2,d2里面再創(chuàng)建一個d3,以此類推,創(chuàng)建一串??梢詥??
我們看到直接這樣是不行的,因為一次性創(chuàng)建多個目錄需要加一個選項-p
這下就可以了。
所以,mkdir,總結(jié)一下:
語法:mkdir [選項] dirname…
功能:在當前目錄下創(chuàng)建一個名為 “dirname”的目錄
常用選項:-p或–parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
2.9 rmdir指令 && rm 指令(重要)
上面我們學了創(chuàng)建文件和目錄的命令,那我們想刪除它們有辦法嗎?
當然有
當前路徑下有4個目錄(藍色的是目錄),我想刪除一個目錄dir3:
使用命令rmdir,發(fā)現(xiàn)確實刪除了。
再刪一個:
欸,怎么刪不了了,我們看報錯Directory not empty
,說目錄不是空的。
是的,rmdir只能刪除空目錄。
那空目錄我也想刪除怎么辦?
可以用
rm
命令,rm命令可以同時刪除文件或目錄
也就是它可以刪除文件,也可以刪除目錄。
那我想刪除d1目錄呢?
不行,他報錯說這是一個目錄,不是說rm文件目錄都可以刪除嗎?
是的,不過刪除目錄需要加一個選項:-r(遞歸刪除)
確實刪除了,但是我們發(fā)現(xiàn)每刪一個,它都詢問一下。
那我很煩,不想每次都被詢問,能做到嗎?
可以,加一個選項:-f
(force強制)
總結(jié)一下:
rmdir是一個與mkdir相對應(yīng)的命令。mkdir是建立目錄,而rmdir是刪除命令。
語法:rmdir [-p][dirName]
適用對象:具有當前目錄操作權(quán)限的所有使用者
功能:刪除空目錄
常用選項:
-p 當子目錄被刪除后如果父目錄也變成空目錄的話,就連帶父目錄一起刪除。
rm命令可以同時刪除文件或目錄
語法:rm [-f-i-r][dirName/dir]
適用對象:所有使用者
功能:刪除文件或目錄
常用選項:
-f 即使文件屬性為只讀(即寫保護),亦直接刪除(強制刪除)
-i 刪除前逐一詢問確認
-r 刪除目錄及其下所有文件(遞歸刪除)
2.10 .man指令(重要)
Linux的命令有很多參數(shù),我們不可能全記住,我們可以通過查看聯(lián)機手冊獲取幫助。
訪問Linux手冊頁的命令是
man 語法: man [選項] 命令
比如:
man ls
就會出現(xiàn)相應(yīng)的解釋,按q退出。
常用選項
-k 根據(jù)關(guān)鍵字搜索聯(lián)機幫助
num 只在第num章節(jié)找 (man 3 printf)
-a 可以查看與特定命令或主題相關(guān)的所有可用手冊頁,而不僅僅是默認的第一個手冊頁。
另外:man man
可以查看man手冊的相關(guān)介紹:
解釋一下,面手冊分為8章
1. 是普通的用戶命令
2 .是系統(tǒng)調(diào)用,如open,write之類的(通過這個,至少可以很方便的查到調(diào)用這個函數(shù),需要加什么頭文件)
3 .是C庫函數(shù),如printf,fread
4.是特殊文件,也就是/dev下的各種設(shè)備文件
5 .是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義
6 .是給游戲留的,由各個游戲自己定義
7 .是附件還有一些變量,比如向environ這種全局變量在這里就有說明
8 .是系統(tǒng)管理用的命令,這些命令只能由root使用,如ifconfig
前3個大家可以先了解一下,后面的可以先不管。
另外就是:
如果大家在查的時候有的東西查不到,可以手動安裝一下:
root用戶下執(zhí)行yum install -y man-pages
普通用戶的話前面加sudo
文章來源:http://www.zghlxwxcb.cn/news/detail-513172.html
Linux后面還有一些常見的基本指令需要我們?nèi)W習,但是鑒于文章的篇幅已經(jīng)比較長了,所以這篇文章先到這里,后面的基本指令我們放到下一篇文章繼續(xù)講解?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-513172.html
到了這里,關(guān)于【Linux 系統(tǒng)編程】Linux背景介紹 及 基本指令詳解(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!