Linux介紹
在介紹Linux命令之前,先簡單瞭解下操作系統的作用,操作系統是應用程序與硬件之間插入的一層軟件,所有應用對硬件的操作都必須經過操作系統。操作系統的兩個最主要的作用是
- 防止硬件被失控的應用程序濫用
- 嚮應用程序提供簡單一致的機制來控制複雜而又通常大不相同的低級硬件設備
目錄結構介紹
目錄 | 用途 |
---|---|
/bin | 這個目錄是系統中最主要的可執行文件的存放位置,這些可執行文件大都是Linux系統中最常用的命令。 |
/boot | 這個目錄是存放系統啓動時的內核文件和其他一些信息文件。 |
/dev | 這個目錄中的所有文件都是特殊文件,Linux系統把所有的外設備都看成是一個文件。 |
/home | 這是系統缺省普通用戶的主目錄的根目錄,一般與系統關係十分密切的配置文件都放在該目錄下。 |
/initrd | 使用RAMDisk方式啓動時用於掛載RAM設備文件。 |
/lib | 這個目錄是存放系統的鏈接庫文件。 |
/lost+found | 這個目錄是文件系統恢復時使用。 |
/misc | 這個目錄是備用目錄。 |
/mnt | 這是系統提供安裝額外文件系統時候的安裝目錄,如掛載軟驅、光驅等。 |
/opt | 用於安裝一些給所有用戶使用的文件或程序。 |
/proc | 該目錄的文件系統叫做porc文件系統,是系統內核的映像,該目錄的文件存放在內存中。 |
/root | 超級用戶root的缺省目錄,對一般用戶來說,是沒有對該目錄寫入權限的。 |
/sbin | 與/bin一樣,主要是存放可執行文件,只不過這裏的可執行文件主要是給超用戶管理系統時使用的,普通用戶幾乎沒有權限執行其中的程序。 |
文件分類
Linux系統中,一切皆文件,對數據文件(.mp3,.bmp),程序文件(.c,.o,*.h),設備文件(LED,觸摸屏,鼠標),網絡文件(socket)等的管理都抽象爲文件,使用統一的方式進行管理。
Linux中將文件主要分爲以下幾類
-
普通文件
普通文件在系統中是用一橫槓來表示的”-“,是操作系統用來存放數據,程序等信息的文件。一般都長期地保存在外部存儲器中,例如硬盤中。普通文件一般包含文本文件,數據文件,可執行的二進制程序文件等。(可以使用 file 命令來查看文件類型,file 後接文件名可以查看相應文件的文件類型,如果file 命令後直接加“通配符”,則可以查看當前目錄下的所有文件的類型。) -
目錄文件
Linux中的目錄文件用”d“來表示,是一種特殊的文件,用於構建文件系統的樹形結構。而且目錄文件只允許系統管理員對其進行修改,普通用戶只能對其進行訪問,不允許修改。每個目錄至少包含兩個條目,一個是“.“,表示當前目錄,一個是”…“,表示上級目錄。 -
設備文件
Linux把所有的設備都抽象爲文件,用”c“表示字符設備(char),用”b“表示塊設備(block),它是用於向IO設備提供連接的一種文件,文件均存放在 /dev 目錄下。 -
管道文件
管道文件是Linux中特殊文件,基本上用於進程間通信。 -
鏈接文件
鏈接文件在Linux中用”l“表示,類似於Windows下的快捷方式,分爲軟鏈接與硬鏈接。
文件權限
Linux中用戶分爲三類
- 所有者 owner
- 相同組用戶 group user
- 其他用戶 other user
系統對上述三類用戶於一個文件定義了讀,寫,執行三種權限,分別爲 r,w,x。
上圖中,- 表示該文件爲普通文件,第一組rwx表示當前用戶擁有讀寫執行權力,第二組rwx表示當前組用戶也擁有讀寫執行權力,第三組rwx表示其他用戶擁有讀寫執行權力,即所有用戶對此文件均有讀寫執行權限。
命令總結分類
對於軟件開發人員來說,只需要掌握基礎的Linux的命令即可應付絕大部分的Linux環境下開發工作了。
- 文件管理
- 運行程序
- 關機與重啓
- 用戶管理
- 安裝軟件
1. 文件管理
切換工作目錄 cd
Linux中所有目錄名和文件名對大小寫敏感。
cd命令後可以跟相對路徑,也可以跟絕對路徑。如果省略路徑參數,則切換到當前用戶的主目錄(home目錄)。
cd命令 | 切換到的目錄 |
---|---|
cd | 切換到當前用戶的主目錄,也就是登錄系統時所進入的目錄 |
cd ~ | 切換到當前用戶的主目錄,也就是登錄系統時所進入的目錄(同上) |
cd . | 切換到當前目錄 |
cd … | 切換到當前目錄的上一級目錄 |
cd - | 切換到上一次進入的目錄 |
查看目錄 ls
ls命令是list的縮寫,類似於Dos系統下的dir命令,Linux系統允許最長255個字符,在 /usr/include/linux/limits.h 有定義。
#define NAME_MAX 255 //usr/include/linux/limits.h
ls命令默認情況下會列出當前目錄下所有文件以及目錄的名稱。可以附加以下參數增加顯示的內容
參數 | 作用 |
---|---|
-a | 顯示指定目錄下所有子目錄及文件,包括隱藏文件 |
-l | 以列表的形式顯示詳細信息 |
-h | 配合-l參數,以人性化的方式顯示文件的大小 |
顯示出來的內容分別爲
- 文件類型+文件權限
- 硬鏈接個數,默認是從1開始,目錄文件默認是2
- 文件所有者
- 文件所有組
- 文件大小(由於使用-h屬性,現在以更易閱讀的附加了 K,M等單位的形式表示)
- 最後修改時間(如果是新文件,則爲文件創建的時間)
- 文件名
在文件數量非常大的時候,可以使用通配符只顯示特定的文件
通配符 | 含義 |
---|---|
* | 匹配文件名中所有字符 |
ls te* | 顯示當前目錄下所有以 te 爲開頭的文件 |
ls *html | 顯示當前目錄下所有以html結尾的文件 |
? | 匹配文件名中的任意一字符 |
ls ?.c | 匹配任意以.c且前面有且僅有一個字符的文件 |
ls c.? | 匹配以c.打頭,後綴有且僅有一個字符的文件 |
[] | 將字符括起來,表示匹配其中的任意一個字符 |
[abc] | 匹配a,b,c中的任意一個字符 |
[a-f] | 匹配a到f中的任意一個字符 |
ls [a-f]* | 列出以a到f中任意一個字母開頭的文件 |
\ | 如果要把通配符作爲普通字符使用,可以在其前面加上轉義字符\來取消對通配符的解析 |
- 但是當?和*位於方括號之內時,自動失去通配符的作用
創建目錄 mkdir
mkdir命令可以創建一個目錄,使用-p參數可以遞歸創建目錄。但是創建的目錄不能與欲創建目錄下所存在的目錄同名,而且創建者必須對創建目錄所在的父目錄具有寫權限。
刪除目錄 rmdir
rmdir命令可以刪除一個目錄,但不加參數的話僅僅只可以刪除一個空目錄,加上-r參數後可以刪除一個非空目錄。Linux下刪除文件後無法復原。
刪除 rm
rm命令後接文件名,可將指定文件刪除,刪除後不可恢復。後接 -i 參數可以進行提示後刪除。
創建文件 touch
使用touch命令可以創建一個空文件,如果文件不存在,則touch的時候就是文件創建的時間,如果文件已經存在,touch一個文件則更新文件的創建時間。
拷貝文件 cp
cp命令是copy的縮寫,用於將給出的文件或者目錄拷貝到指定的目錄。
參數 | 作用 |
---|---|
-a | 該選項一般在複製目錄的時候使用,它保留鏈接文件屬性,並遞歸地複製目錄,簡單說就是複製目錄所有屬性 |
-f | 刪除已經存在的目標文件而不提示 |
-i | 交互式複製,複製之前會進行詢問 |
-r | 若給出的源文件是目錄文件,則cp將遞歸複製該目錄下的所有子目錄和文件,目標路徑必須是一個目錄名 |
-v | 顯示拷貝進度,每拷貝一個文件均會打印出記錄 |
移動文件(重命名文件) mv
mv命令可以將文件和目錄進行移動,或者重命名。
參數 | 作用 |
---|---|
-f | 禁止交互式操作,如有覆蓋也不給予提示 |
-i | 確認交互式操作,如果mv操作會導致已存在的文件被覆蓋,系統會提示是否重寫,要求用戶回答誤以免覆蓋文件 |
-v | 顯示移動進度,打印移動的記錄 |
查找文件 find
find命令用於在特定的目錄下查詢符合條件的文件,也可以用來搜索特定屬主的文件。
命令 | 含義 |
---|---|
find ./ -name test.txt | 查找當前目錄下名爲 test.txt的文件 |
find ./ -name *.sh | 查找當前目錄下後綴爲.sh的文件 |
find ./ [A-Z]* | 查找當前目錄下以大寫字母開頭的文件 |
find ./tmp -size 2M | 查找tmp目錄下大小正好等於2M的文件 |
find ./tmp -size +2M | 查找tmp目錄下大小大於2M的文件 |
find ./tmp -size -2M | 查找tmp目錄下大小小於2M的文件 |
find ./tmp +4k -size -5M | 查找tmp目錄下大小大於4k,且小於5M的文件(k小寫,M大寫) |
find ./tmp -perm 0777 | 查找tmp目錄下權限爲777的文件或者目錄 |
打印文件到命令行 cat
cat
壓縮 ,解壓縮文件
歸檔管理 tar是Linux最常用的備份工具。它可以將一系列文件歸檔到一個大文件中,也可以將檔案解開以恢復數據。tar只負責打包,解包,並不做壓縮,當文件的大小較小的時候,打包出來的文件可以大小超過之前所有文件的總和。
打包:tar -cvf xxx.tar 打包進檔案的文件
解包:tar -xvf xxx.tar -C 解包檔案的路徑
- 參數的前面可以加 - ,也可以不加 - 。
歸檔以後,可以使用gzip或者bzip2來進行壓縮。只需要添加一個參數即可
使用gzip壓縮與解壓縮
壓縮:tar -czvf xxx.tar 欲壓縮文件
解壓縮:tar -xzvf xxx.tar -C 解壓縮的路徑
使用bzip2壓縮與解壓縮
壓縮:tar -cjvf xxx.tar 欲壓縮文件
解壓縮:tar -xjvf xxx.tar -C 解壓縮的路徑
也有單純的壓縮解壓縮
zip -r 壓縮包文件 加入壓縮包的文件
unzip -d 解壓路徑 壓縮包文件
改變文件權限 chmod
chmod
文件權限 | 說明 |
---|---|
x | 執行權限,沒有此權限的話,將無法執行程序,如果是文件夾的話,將無法進入 |
r | 讀權限,沒有此權限的話,文件將無法打開查看,如果是文件夾的話,將無法查看文件夾的內容 |
w | 寫權限,沒有此權限的話,文件將無法被修改或刪除,文件夾是同樣的 |
一般常用是數字修改法 r爲4,w爲2,x爲1,所以設置一個文件具備有讀寫執行的權限的話 可以這麼寫
chmod 777 filename
chown可以修改文件的所有者
chown 文件新屬有者 文件名
搜索文件 grep
grep允許對文本文件進行模式查找。如果找到匹配模式,grep將打印包含匹配模式的所有行。
使用方法
grep 查詢詞 查詢文件名 -n
(最後的 -n是顯示查找到的行的行號)查詢的詞如果包括空格的話需要用引號引起來,grep命令的查詢詞部分也可插入正則表達式。
其他一些參數
參數 | 作用 |
---|---|
-v | 顯示不包含查詢詞的所有行,相當於原命令的取反 |
-n | 顯示匹配行的行號 |
-i | 忽略大小寫 |
顯示文件 less / more
如果不打算編輯文件,僅僅知識查看文件內容時,可以使用cat來讀取文件,如果文件內容太多,會使得文件內容一下子滾屏而過,不方便閱讀,則可以使用less 或者more 命令來實現內容的分屏顯示。
兩者的區別:
- less 可以使用方向鍵來控制閱讀區域而more不可以
- less 在關閉文件不會留下文件的內容,而more會留下
- less 不必讀整個文件,加載速度會比more更快
文件鏈接(軟鏈接+硬鏈接)
軟連接即快捷方式,裏面存放的是源文件的地址,通過軟連接改變文件內容,源文件內容會隨之改變,當源文件被刪除的時候,軟鏈接文件即失效,再也無法通過軟鏈接去訪問源文件了。
創建方式
ln -s 源文件 鏈接文件
硬鏈接爲文件的另一個入口,可以建立多個硬鏈接,目錄文件不允許建立硬鏈接,修改任意一個硬鏈接都會修改源文件內容,但是刪除任意硬鏈接並不會刪除源文件,即使把源文件刪除也不會導致文件被刪除,相當於對源文件做了一個備份,但此備份並不是我們通常理解的那個備份,它的內容也是會隨着任意一個硬鏈接的修改而發生改變,只是刪除的時候,需要所有的硬鏈接全部被刪除後,文件才能真正被刪除。
創建方式
ln 源文件 鏈接文件
2. 運行程序
./ filename 然後ctrl + C退出
3. 用戶管理
useradd, userdel
useradd命令用來添加系統用戶
useradd [參數] 用戶名
參數 | 含義 |
---|---|
-d 目錄名 | 指定用戶登錄系統時的主目錄,如果不使用此參數的話,系統將自動在home目錄下創建一個與用戶名同名的目錄作爲用戶的主目錄 |
-g | 指定組名稱 |
作爲管理員(不是管理員,沒有權限)如果想刪除一個用戶,則可以使用 userdel 命令。
userdel -r 用戶名
命令中添加了 -r 參數,指明刪除用戶的同時,將用戶的家目錄也同時予以刪除。
passwd
在文件 /etc/passwd中,保存着系統中所有的用戶和用戶的主要信息,以下面的形式列出
starxiang:x:1000:1000:starxiang:/home/starxiang:/bin/bash
含義分別爲(用冒號隔開):
- 第一個:用戶名,在Linux中,用戶名只是用於便於使用者記憶地區分用戶,而系統本身是靠用戶id來進行用戶區別
- 第二個:x代表密碼標誌,但其並不是真正地密碼,真正的密碼是保存在 /etc/shadow 文件中的。
- 第三個:用戶ID,系統是通過 UID 來識別不同的用戶和分配用戶權限的,其中root用戶的UID爲0,1~499:系統用戶(僞用戶)UID,既然是系統僞用戶,即這些用戶是不能用來登錄系統的,只是用來運行系統服務的。(其中,1-99號是預留給系統自動創建的,100-499爲分配給用戶創建的)從500開始,到65535爲普通用戶ID。
- 第四個:用戶組ID
- 第五個:用戶的簡單說明(一般不寫,或者初始用戶即默認設置爲用戶名)
- 第六個:用戶的家目錄地址。
- 第七個:用戶登錄後默認使用的shell程序
last
last可以查看用戶的登錄記錄
4. 安裝軟件
下載文件 wget
安裝程序 apt-get
5. 其他系統命令
關機
shutdown -h now
重啓系統
reboot
重定向 >
將命令的執行結果重定向到一個文件,本應該在終端顯示的結果保存在文件中。
ls > test.txt
則 ls的輸出結果將寫入到test.txt文件中,如果test.txt文件本身已經存在,則文件原有內容將會被覆蓋掉。
管道 |
一個命令的輸出可以通過管道作爲另一個命令的輸入。
例如:
ls -ahl | more
則將ls執行的結果作爲輸入傳遞給more命令,然後more命令會對ls的結果執行分屏顯示。
清屏clear
清除終端上的顯示內容,命令行移到最上端。(相當於Dos系統中的cls命令)也可以使用快捷鍵 Ctrl + l來實現相同功能。
pwd
顯示當前的工作目錄
which
查看命令存在的目錄
which 命令名稱
whoami 和 who
該命令可以讓用戶查看當前系統當前賬戶的用戶名,可通過 cat /etc/passwd 來查看系統用戶信息,也可以通過執行who命令來看登錄的歷史記錄。
exit
退出終端,退回到上一個登錄賬號
su
可以通過su命令切換用戶,su後面可以加 - ,su和su - 的區別在於 su - 切換到對應的用戶時會將當前的工作目錄自動轉換切換後的用戶主目錄(su - 會切換工作目錄)
su的一些用法
命令 | 含義 |
---|---|
su | 切換到root用戶 |
su root | 切換到root用戶 |
su - | 切換到root用戶,同時切換目錄到 /root |
su - root | 切換到root用戶,同時切換目錄到 /root |
su 普通用戶 | 切換到普通用戶 |
su - 普通用戶 | 切換到普通用戶,同時切換到普通用戶所在的主目錄 |
file
Linux系統中,不是根據文件後綴名來區分文件類型的,使用file加文件名可以打印出文件類型。
ps
top
kill
&
jobs
fg
df
history
ifconfig
ping-
其他命令
查看主機CPU信息
more /proc/cpuinfo
查看主機PCI信息
lspci
查看當前的Linux操作系統所使用的內核模塊
more /prco/modules
查看shell環境變量
ECHO $SHELL
time
date
cal\bc
du
dmesg
uptime
who/w
whoami/hostname
top
free