Linux基本知識與基礎命令

公卿發表於2024-08-02

一、簡易歷史

linux最初由林納斯·本納第克特·託瓦茲(Linus Benedict Torvalds, 1969年~ )於1991年第一次向外公佈,其logo是一隻被成為Tux的企鵝(不是qq那隻)

作業系統,英語Operating System簡稱為OS。說道作業系統就需要先講一講Unix,UNIX作業系統,是一個強大的多使用者、多工作業系統,支援多種處理器架構,按照作業系統的分類,屬於分時作業系統,最早由KenThompson、Dennis Ritchie和Douglas McIlroy於1969年在AT&T的貝爾實驗室開發。而linux就是一款類Unix系統。

通常人們對linux都有一個錯誤的認識,就是這個名詞"linux作業系統",其實linux不是作業系統,linux是一個核心,linux系統構成包括:、Linux 核心、GNU 專案及其他專案的軟體。當然,但人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。

林納斯·本納第克特·託瓦茲(Linus Benedict Torvalds, 1969年~ )

二、基本概念

2.1 思想

Linux是一種開源,類Uinx的作業系統

對於Linux,有兩個基本思想:1.一切皆檔案  2.每個檔案都有確定用途

相對於第一點來說,系統中所有,都歸結為一個檔案,包括命令、硬體和軟體裝置、作業系統、程序等等對於作業系統核心而言,都被視為擁有各自特性或型別的檔案。

2.2特點

由於Linux是完全開源的作業系統核心,所以Linux支援個人去定義幾乎所有的軟體和操作,由此也引申出很多Linux版本分支。Linux支援多使用者,且每個使用者都有自己的許可權。保證使用者之間不互相影響,由於許可權制度非常嚴格,也在一定程度上保證了系統的安全性。Linux可以在多平臺架構上執行,並且還是一種嵌入式作業系統,可以執行在機頂盒,遊戲主機,物聯網控制版等平臺。因為是完全開源,你甚至可以完全修改大部分內容,而達到新的效果。andioid 就是基於Linux所創造的作業系統,目前已經大面積應用於手機電視等部分智慧平臺。

Linux基本分支圖

三、檔案結構與型別

3.1檔案結構

liinux檔案結構為樹狀結構,與windows略有不同。windows以磁碟機代號來區分每塊硬碟或分割槽,每個硬碟和分割槽都有獨立的磁碟機代號和根目錄。而Linx對於分割槽和硬碟Linux採用掛載到目錄的方式來讀寫,所以無論有幾個分割槽,或者有幾塊硬碟,linux都只有一個根根目錄,不受分割槽和硬碟的影響。即使是隨身碟讀取,同樣也是先掛載到目錄下。

Linux基本檔案樹狀圖

/:根目錄,所有的目錄、檔案、裝置都在/之下,/就是Linux檔案系統的組織者,也是最上級的領導者。

/bin:bin 就是二進位制(binary)英文縮寫。在一般的系統當中,都可以在這個目錄下找到linux常用的命令。系統所需要的那些命令位於此目錄。

/usr

這是linux系統中佔用硬碟空間最大的目錄。使用者的很多應用程式和檔案都存放在這個目錄下。在這個目錄下,可以找到那些不適合放在/bin或/etc目錄下的額外的工具

/usr/local:這裡主要存放那些手動安裝的軟體,即不是透過“新立得”或apt-get安裝的軟體。它和/usr目錄具有相類似的目錄結構。讓軟體包管理器來管理/usr目錄,而把自定義的指令碼(scripts)放到/usr/local目錄下面(例如Nginx只能編譯安裝,所以通常都放在/usr/local)。

/usr/share :系統共用的東西存放地,比如 /usr/share/fonts 是字型目錄,/usr/share/doc和/usr/share/man幫助檔案。

/sbin:這個目錄是用來存放系統管理員的系統管理程式。大多是涉及系統管理的命令的存放,是超級許可權使用者root的可執行命令存放地,普通使用者無許可權執行這個目錄下的命令,這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目錄是相似的,凡是目錄sbin中包含的都是root許可權才能執行的。

/etc:etc這個目錄是linux系統中最重要的目錄之一。在這個目錄下存放了系統管理時要用到的各種配置檔案和子目錄。要用到的網路配置檔案,檔案系統,x系統配置檔案,裝置配置資訊,設定使用者資訊等都在這個目錄下。

/tmp:臨時檔案目錄,用來存放不同程式執行時產生的臨時檔案。有時使用者執行程式的時候,會產生臨時檔案。/tmp就用來存放臨時檔案的。/var/tmp目錄和這個目錄相似。

/lib:lib是庫(library)英文縮寫。這個目錄是用來存放系統動態連線共享庫的。幾乎所有的應用程式都會用到這個目錄下的共享庫。因此,千萬不要輕易對這個目錄進行什麼操作,一旦發生問題,系統就不能工作了。

/var:這個目錄的內容是經常變動的,看名字就知道,可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。/var/ www目錄是定義Apache伺服器站點存放目錄;/var/lib 用來存放一些庫檔案,比如MySQL的,以及MySQL資料庫的的存放地。

/home:如果建立一個使用者,使用者名稱是"xx",那麼在/home目錄下就有一個對應的/home/xx路徑,用來存放使用者的主目錄。

/dev:dev 是裝置(device)的英文縮寫。這個目錄對所有的使用者都十分重要。因為在這個目錄中包含了所有linux系統中使用的外部裝置。但是這裡並不是放的外部裝置的驅動程式。這一點和常用的windows,dos作業系統不一樣。它實際上是一個訪問這些外部裝置的埠。可以非常方便地去訪問這些外部裝置,和訪問一個檔案,一個目錄沒有任何區別。

/boot:Linux的核心及引導系統程式所需要的檔案目錄,比如 vmlinuz initrd.img 檔案都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄。

/media:有些linux的發行版使用這個目錄來掛載那些usb介面的行動硬碟(包括隨身碟)、CD/DVD驅動器等等。

(以下幾個上圖中沒有,但是在系統中通常都會有,各個發行版可能有一定差異)

/lost+found:在ext2或ext3檔案系統中,當系統意外崩潰或機器意外關機,而產生一些檔案碎片放在這裡。當系統啟動的過程中fsck工具會檢查這裡,並修復已經損壞的檔案系統。有時系統發生問題,有很多的檔案被移到這個目錄中,可能會用手工的方式來修復,或移到檔案到原來的位置上。

/mnt:這個目錄一般是用於存放掛載儲存裝置的掛載目錄的,比如有cdrom等目錄。可以參看/etc/fstab的定義。

/opt:這裡主要存放那些可選的程式。

/proc:可以在這個目錄下獲取系統資訊。這些資訊是在記憶體中,由系統自己產生的。

/root:Linux超級許可權使用者root的家目錄。

/selinux :對SElinux的一些配置檔案目錄,SElinux可以讓linux更加安全。

/srv 服務啟動後,所需訪問的資料目錄,舉個例子來說,www服務啟動讀取的網頁資料就可以放在/srv/www中

3.2檔案型別

普通檔案(regular file):就是一般存取的檔案,由ls -al顯示出來的屬性中,第一個屬性為 [-],例如 [-rwxrwxrwx]。另外,依照檔案的內容,又大致可以分為:

1、純文字檔案(ASCII):這是Unix系統中最多的一種檔案型別,之所以稱為純文字檔案,是因為內容可以直接讀到的資料,例如數字、字母等等。設 置檔案幾乎都屬於這種檔案型別。舉例來說,使用命令“cat ~/.bashrc”就可以看到該檔案的內容(cat是將檔案內容讀出來)。

2、二進位制檔案(binary):系統其實僅認識且可以執行二進位制檔案(binary file)。Linux中的可執行檔案(指令碼,文字方式的批處理檔案不算)就是這種格式的。舉例來說,命令cat就是一個二進位制檔案。

3、資料格式的檔案(data):有些程式在執行過程中,會讀取某些特定格式的檔案,那些特定格式的檔案可以稱為資料檔案(data file)。舉例來說,Linux在使用者登入時,都會將登入資料記錄在 /var/log/wtmp檔案內,該檔案是一個資料檔案,它能透過last命令讀出來。但使用cat時,會讀出亂碼。因為它是屬於一種特殊格式的檔案。

目錄檔案(directory):就是目錄,第一個屬性為 [d],例如 [drwxrwxrwx]。

連線檔案(link):類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx]。

裝置與裝置檔案(device):與系統外設及儲存等相關的一些檔案,通常都集中在 /dev目錄。通常又分為兩種:

塊裝置檔案:就是儲存資料以供系統存取的介面裝置,簡單而言就是硬碟。例如一號硬碟的程式碼是 /dev/hda1等檔案。第一個屬性為 [b]。

字元裝置檔案:即串列埠的介面裝置,例如鍵盤、滑鼠等等。第一個屬性為 [c]。

套接字(sockets):這類檔案通常用在網路資料連線。可以啟動一個程式來監聽客戶端的要求,客戶端就可以透過套接字來進行資料通訊。第一個屬性為 [s],最常在 /var/run目錄中看到這種檔案型別。

管道(FIFO,pipe):FIFO也是一種特殊的檔案型別,它主要的目的是,解決多個程式同時存取一個檔案所造成的錯誤。FIFO是first-in-first-out(先進先出)的縮寫。第一個屬性為 [p]。

四、基本命令

4.1命令基本概念

  Linux是類Unix的作業系統,所以最早期的Linx人機互動是採用命令的方式,並沒有現在百花齊放的各種UI介面。其實,本質上來看,目前Linux最優的互動模式依然是命令互動,而不是圖形化介面。命令的輸入需要一個終端,在現今,大部分發行版都有圖形化介面,在圖形化基本介面(桌面)上,可以透過三種方式開啟終端進行命令方式與電腦互動。通常都是使用Ctrl+Alt+t快捷鍵撥出終端視窗,從而進行互動。另一種則是Alt+F2,通常適用於只需要執行一條命令或執行軟體使用。第三種比較特殊,對於Linux的執行方式而言,我們所使用的圖形化介面本質上來說其實就是在一個終端上執行GUI,這個終端執行了GNOME、KDE或其他GUI才形成了桌面環境。而在桌面環境下執行的其他程式或應用,都是這個終端執行的一個程序。這裡的這個終端和我們在桌面環境快捷鍵撥出的終端略不同,在系統中稱作tty。等於開機後你所看的的介面,實際上是一個tty在執行,通常為tty1,你登陸之後可以進行不同操作(如果在桌面環境直接撥出終端是不需要再次登陸的,已經是登陸的狀態)。所以第三種方法就是切換到其他tty,然後登陸,之後就可以正常互動,只是完全沒有圖形化介面只能使用命令互動。

  接下來就可以使用命令與電腦交流了,命令這個次看起來有時候讓人望而卻步,但實際上這並沒有那麼複雜。就像我們先前說的,這是一種互動模式。那麼其實他和圖形化介面的本質就是在桌面環境下你或許可以動動滑鼠,動動鍵盤,來完成你要做的事情。而命令互動實際上就是把你滑鼠的操作,全部轉到鍵盤上來。聽起來很麻煩,但實際效率很高。因為如果你在桌面環境下,通常需要不斷在鍵盤和滑鼠之間切換的話,這實際上很煩。但是透過命令你的手就可以一直只在鍵盤上,不用再去到處挪動,那樣會很累。

4.2基本的檔案操作

在桌面環境下,我們對於檔案的操作大部分都是可以透過滑鼠來完成,那麼如何將這些滑鼠的操作用命令的方式來完成。這其實很簡單,首先先來看一下需要用到的命令。

ls 顯示制定目錄下的子目錄和檔案
ll 與ls相同,會顯示更多資訊檔案型別和隱藏檔案
pwd 檢視當前所在目錄
cat 檢視檔案內容
cd 更改當前工作目錄或更該到制定路徑(進入到某個目錄)
mkdir 建立目錄
mv 移動檔案或修改檔名
rm 刪除一個檔案或目錄

ls

語法:

ls [-alrtAFR] [name...]

引數:

  • -a 顯示所有檔案及目錄 (. 開頭的隱藏檔案也會列出)
  • -d 只列出目錄(不遞迴列出目錄內的檔案)。
  • -l 以長格式顯示檔案和目錄資訊,包括許可權、所有者、大小、建立時間等。
  • -r 倒序顯示檔案和目錄。
  • -t 將按照修改時間排序,最新的檔案在最前面。
  • -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
  • -F 在列出的檔名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
  • -R 遞迴顯示目錄中的所有檔案和子目錄。

簡單例項:

顯示當前目錄下所有檔案

ls

顯示當前目錄下所有檔案,包含隱藏檔案(在linux中開頭為“.“的檔案是預設隱藏檔案)

ls -a

顯示/bin目錄下所有檔案

ls /bin

以上例項簡單表示出了ls的使用,其他引數可以自行透過虛擬機器來嘗試。值得一提的是Linux的大部分命令的引數都是可以組合使用的,也可以結合萬用字元使用。還有一些可以多個命令組合使用

ll

ll和ls幾乎是相同的,他所顯示的內同和ls -l 是一樣的。

pwd

顯示當前所在路徑

語法:

pwd [--help][--version]

引數詳解:

--help 顯示幫助

--version 顯示版本資訊

例項:

cat

檢視檔案內容

語法:

cat [option] [fileName]

引數說明:

  • -n:顯示行號,會在輸出的每一行前加上行號。
  • -b:顯示行號,但只對非空行進行編號。
  • -s:壓縮連續的空行,只顯示一個空行。
  • -E:在每一行的末尾顯示 $ 符號。
  • -T:將 Tab 字元顯示為 ^I
  • -v:顯示一些非列印字元。

簡單例項:

cd

改變當前目錄 切換到制定路徑

語法:

cd [dirName]

切換到絕對路徑

cd /path/to/directory

切換到相對路徑

cd relative/path/to/directory

進入到 /usr/local 目錄

cd /usr/local

此處有三個點需要提一下,他們是 “.”和“..” 。先前我們提到過,在Linux中一切皆檔案,所以這三個點,也可以看作是一個檔案,並且他們是資料夾。其中“.”表示的是當前目錄,“..”表示的是上一級目錄。在之前ls的使用當用我們用ls -a 來顯示所有資料夾,包括隱藏檔案,其實“.”和“..”這兩個資料夾同樣有顯示

可以看到在ls -a 所顯示的所有檔案中,在最前面是可以看到這兩個資料夾的

(我的終端將檔案和資料夾用藍色和黑色區分開,藍色的為資料夾,而黑色的為檔案。不同發行版和不同終端配置檔案在於這方面的顯示會略有不同,通常情況下,有顏色的為資料夾,而黑色字型的為檔案)

所以,假設我們所在位置比較長,假設為 /usr/local/nginx/conf。 需要返回上一級目錄的時候,我們就不需要再去cd /usr/local/nginx 而是,可以直接 cd ..

返回上一級目錄

cd ..

在這個例子中,其實也可以看出來,所在目錄是會在後面顯示的,但這是在桌面環境下的。如果在tty環境下,或者生產環境下的伺服器可能不會顯示(不同發行版可能不同)。與“..”相同的還有“~",“~”所指向的目錄是使用者所在home目錄。一般使用者的目錄為 /home/username 而root使用者為 /root

mkdir

建立目錄

語法:

mkdir [-p] dirName
引數說明:
  • -p 確保目錄名稱存在,不存在的就建一個。

建立一個目錄(資料夾)

mv

移動檔案或目錄,修改檔名

語法:

mv [options] source dest
mv [options] source... directory

引數說明:

  • -b: 當目標檔案或目錄存在時,在執行覆蓋前,會為其建立一個備份。
  • -i: 如果指定移動的源目錄或檔案與目標的目錄或檔案同名,則會先詢問是否覆蓋舊檔案,輸入 y 表示直接覆蓋,輸入 n 表示取消該操作。
  • -f: 如果指定移動的源目錄或檔案與目標的目錄或檔案同名,不會詢問,直接覆蓋舊檔案。
  • -n: 不要覆蓋任何已存在的檔案或目錄。
  • -u:當原始檔比目標檔案新或者目標檔案不存在時,才執行移動操作。

基本例項:

修改檔名稱

mv source_file dest_file

移動檔案

mv source_file dest_directory

相關文章