l 很多人可能在電視或電影中看到過類似的場景,黑客面對一個黑色的屏幕,上面飄着密密麻麻的字符,梆梆一頓敲,就完成了竊取資料的任務。
l Linux 剛出世時沒有什麼圖形界面,所有的操作全靠命令完成,就如同電視裏的黑客那樣,充滿了神祕與晦澀。
l 近幾年來,儘管 Linux 發展得非常迅速,圖形界面越來越友好,但是在真正的開發過程中,Linux 命令行的應用還是佔有非常重要的席位,而且許多Linux功能在命令行界面要比圖形化界面下運行的快。可以說不會命令行,就不算會 Linux。
l Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盤操作、文件存取、目錄操作、進程管理、文件權限設定等。Linux 發行版本最少的命令也有 200 多個,這裏只介紹比較重要和使用頻率最多的命令。
command [-options] [parameter1] …
說明:
l command:命令名,相應功能的英文單詞或單詞的縮寫
l [-options]:選項,可用來對命令進行控制,也可以省略,[]代表可選
l parameter1 …:傳給命令的參數,可以是零個一個或多個
一般是 Linux 命令自帶的幫助信息,並不是所有命令都自帶這個選項。
如我們想查看命令 ls 的用法:ls --help
man 是 Linux 提供的一個手冊,包含了絕大部分的命令、函數使用說明。
該手冊分成很多章節(section),使用 man 時可以指定不同的章節來瀏覽不同的內容。
man 中各個 section 意義如下:
1.Standard commands(標準命令)
2.System calls(系統調用,如open,write)
3.Library functions(庫函數,如printf,fopen)
4.Special devices(設備文件的說明,/dev下各種設備)
5.File formats(文件格式,如passwd)
6.Games and toys(遊戲和娛樂)
7.Miscellaneous(雜項、慣例與協定等,例如Linux檔案系統、網絡協定、ASCII 碼;environ全局變量)
8.Administrative Commands(管理員命令,如ifconfig)
man使用格式如下:
man [選項] 命令名
man設置瞭如下的功能鍵:
功能鍵 |
功能 |
空格鍵 |
顯示手冊頁的下一屏 |
Enter鍵 |
一次滾動手冊頁的一行 |
b |
回滾一屏 |
f |
前滾一屏 |
q |
退出man命令 |
h |
列出所有功能鍵 |
/word |
搜索word字符串 |
如,我們想查看 ls 的用法:man 1 ls ( 1:爲數字「1」,代表第 1 個 section,標準命令 )
實際上,我們不用指定第幾個章節也用查看,如,man ls。但是,有這個一種情況,假如,命令的名字和函數的名字剛好重名(如:printf),它既是命令,也可以是庫函數,如果,我們不指定章節號,man printf,它只查看命令的用法,不會查詢函數的用法,因爲 man 是按照手冊的章節號的順序進行搜索的。
所以,使用 man 手冊時,最好指定章節號:
在敲出命令的前幾個字母的同時,按下tab鍵,系統會自動幫我們補全命令。
當系統執行過一些命令後,可按上下鍵翻看以前的命令,history將執行過的命令列舉出來。
ls是英文單詞list的簡寫,其功能爲列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。
Linux文件或者目錄名稱最長可以有256個字符,「.」代表當前目錄,「..」代表上一級目錄,以「.」開頭的文件爲隱藏文件,需要用 -a 參數才能顯示。
ls常用參數:
參數 |
含義 |
-a |
顯示指定目錄下所有子目錄與文件,包括隱藏文件 |
-l |
以列表方式顯示文件的詳細信息 |
-h |
配合 -l 以人性化的方式顯示文件大小 |
圖中列出的信息含義如下圖所示:
與DOS下的文件操作類似,在Unix/Linux系統中,也同樣允許使用特殊字符來同時引用多個文件名,這些特殊字符被稱爲通配符。
通配符 |
含義 |
* |
文件代表文件名中所有字符 |
ls te* |
查找以te開頭的文件 |
ls *html |
查找結尾爲html的文件 |
? |
代表文件名中任意一個字符 |
ls ?.c |
只找第一個字符任意,後綴爲.c的文件 |
ls a.? |
只找只有3個字符,前2字符爲a.,最後一個字符任意的文件 |
[] |
[」和「]」將字符組括起來,表示可以匹配字符組中的任意一個。「-」用於表示字符範圍。 |
[abc] |
匹配a、b、c中的任意一個 |
[a-f] |
匹配從a到f範圍內的的任意一個字符 |
ls [a-f]* |
找到從a到f範圍內的的任意一個字符開頭的文件 |
ls a-f |
查找文件名爲a-f的文件,當「-」處於方括號之外失去通配符的作用 |
\ |
如果要使通配符作爲普通字符使用,可以在其前面加上轉義字符。「?」和「*」處於方括號內時不用使用轉義字符就失去通配符的作用。 |
ls \*a |
查找文件名爲*a的文件 |
Linux允許將命令執行結果重定向到一個文件,本應顯示在終端上的內容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,則創建,存在則覆蓋其內容 )
>輸出重定向會覆蓋原來的內容,>>輸出重定向則會追加到文件的尾部。
查看內容時,在信息過長無法在一屏上顯示時,會出現快速滾屏,使得用戶無法看清文件的內容,此時可以使用more命令,每次只顯示一頁,按下空格鍵可以顯示下一頁,按下q鍵退出顯示,按下h鍵可以獲取幫助。
管道:一個命令的輸出可以通過管道做爲另一個命令的輸入。
管道我們可以理解現實生活中的管子,管子的一頭塞東西進去,另一頭取出來,這裏「 | 」的左右分爲兩端,左端塞東西(寫),右端取東西(讀)。
clear作用爲清除終端上的顯示(類似於DOS的cls清屏功能),也可使用快捷鍵:Ctrl + l ( 「l」 爲字母 )。
在使用Unix/Linux的時候,經常需要更換工作目錄。cd命令可以幫助用戶切換工作目錄。Linux所有的目錄和文件名大小寫敏感。
cd後面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則默認切換到當前用戶的主目錄。
命令 |
含義 |
cd |
切換到當前用戶的主目錄(/home/用戶目錄),用戶登陸的時候,默認的目錄就是用戶的主目錄。 |
cd ~ |
切換到當前用戶的主目錄(/home/用戶目錄) |
cd . |
切換到當前目錄 |
cd .. |
切換到上級目錄 |
cd - |
可進入上一個進入的目錄 |
注意:如果路徑是從根路徑開始的,則路徑的前面需要加上 「 / 」,如 「 /mnt 」,通常進入某個目錄裏的文件夾,前面不用加 「 / 」。
使用pwd命令可以顯示當前的工作目錄,該命令很簡單,直接輸入pwd即可,後面不帶參數。
8) 創建目錄:mkdir
通過mkdir命令可以創建一個新的目錄。參數-p可遞歸創建目錄。
需要注意的是新建目錄的名稱不能與當前目錄中已有的目錄或文件同名,並且目錄創建者必須對當前目錄具有寫權限。
可使用rmdir命令刪除一個目錄。必須離開目錄,並且目錄必須爲空目錄,不然提示刪除失敗。
可通過rm刪除文件或目錄。使用rm命令要小心,因爲文件刪除後不能恢復。爲了防止文件誤刪,可以在rm後使用-i參數以逐個確認要刪除的文件。
常用參數及含義如下表所示:
參數 |
含義 |
-i |
以進行交互式方式執行 |
-f |
強制刪除,忽略不存在的文件,無需提示 |
-r |
遞歸地刪除目錄下的內容,刪除文件夾時必須加此參數 |
l Linux鏈接文件類似於Windows下的快捷方式。
l 鏈接文件分爲軟鏈接和硬鏈接。
l 軟鏈接:軟鏈接不佔用磁盤空間,源文件刪除則軟鏈接失效。
l 硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。
使用格式:
ln 源文件 鏈接文件
ln -s 源文件 鏈接文件
如果沒有-s選項代表建立一個硬鏈接文件,兩個文件佔用相同大小的硬盤空間,即使刪除了源文件,鏈接文件還是存在,所以-s選項是更常見的形式。
注意:如果軟鏈接文件和源文件不在同一個目錄,源文件要使用絕對路徑,不能使用相對路徑。
Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式爲:
grep [-選項] ‘搜索內容串’文件名
在grep命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep‘a ’1.txt。
常用選項說明:
選項 |
含義 |
-v |
顯示不包含匹配文本的所有行(相當於求反) |
-n |
顯示匹配行及行號 |
-i |
忽略大小寫 |
grep搜索內容串可以是正則表達式。
正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。
grep常用正則表達式:
參數 |
含義 |
^a |
行首,搜尋以 m 開頭的行 grep -n '^a' 1.txt |
ke$ |
行尾,搜尋以 ke 結束的行 grep -n 'ke$' 1.txt |
[Ss]igna[Ll] |
匹配 [] 裏中一系列字符中的一個 搜尋匹配單詞signal、signaL、Signal、SignaL的行 grep -n '[Ss]igna[Ll]' 1.txt |
. (點) |
匹配一個非換行符的字符 匹配 e 和 e 之間有任意一個字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae grep -n 'e.e' 1.txt |
常用選項說明:
選項 |
含義 |
-l |
統計行數 |
-w |
統計字數。一個字被定義爲由空白、跳格或換行字符分隔的字符串。 |
-c |
統計字節數 |
-m |
統計字符數。這個標誌不能與 -c 標誌一起使用。 |
find命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬主的文件。
常用用法:
命令 |
含義 |
find ./ -name test.sh |
查找當前目錄下所有名爲test.sh的文件 |
find ./ -name '*.sh' |
查找當前目錄下所有後綴爲.sh的文件 |
find ./ -name "[A-Z]*" |
查找當前目錄下所有以大寫字母開頭的文件 |
find /tmp -size 2M |
查找在/tmp 目錄下等於2M的文件 |
find /tmp -size +2M |
查找在/tmp 目錄下大於2M的文件 |
find /tmp -size -2M |
查找在/tmp 目錄下小於2M的文件 |
find ./ -size +4k -size -5M |
查找當前目錄下大於4k,小於5M的文件 |
find ./ -perm 0777 |
查找當前目錄下權限爲 777 的文件或目錄 |
cp命令的功能是將給出的文件或目錄複製到另一個文件或目錄中,相當於DOS下的copy命令。
常用選項說明:
選項 |
含義 |
-a |
該選項通常在複製目錄時使用,它保留鏈接、文件屬性,並遞歸地複製目錄,簡單而言,保持文件原有屬性。 |
-f |
刪除已經存在的目標文件而不提示 |
-i |
交互式複製,在覆蓋目標文件之前將給出提示要求用戶確認 |
-r |
若給出的源文件是目錄文件,則cp將遞歸複製該目錄下的所有子目錄和文件,目標文件必須爲一個目錄名。 |
-v |
顯示拷貝進度 |
cp vim_configure/ code/ -ivr 把文件夾 vim_configure 拷貝到 code 目錄裏:
用戶可以使用mv命令來移動文件或目錄,也可以給文件或目錄重命名。
常用選項說明:
選項 |
含義 |
-f |
禁止交互式操作,如有覆蓋也不會給出提示 |
-i |
確認交互方式操作,如果mv操作將導致對已存在的目標文件的覆蓋,系統會詢問是否重寫,要求用戶回答以避免誤覆蓋文件 |
-v |
顯示移動進度 |
Linux系統文件類型不是根據文件擴展名分類的,通過file命令可以確認文件具體類型。
19) 歸檔管理:tar
計算機中的數據經常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
tar使用格式
tar [參數] 打包文件名 文件
tar命令很特殊,其參數前面可以使用「-」,也可以不使用。
常用參數:
參數 |
含義 |
-c |
生成檔案文件,創建打包文件 |
-v |
列出歸檔解檔的詳細過程,顯示進度 |
-f |
指定檔案文件名稱,f後面一定是.tar文件,所以必須放選項最後 |
-t |
列出檔案中包含的文件 |
-x |
解開檔案文件 |
注意:除了f需要放在參數的最後,其它參數的順序任意。
l tar與gzip命令結合使用實現文件打包、壓縮。
l tar只負責打包文件,但不壓縮,用gzip壓縮tar打包後的文件,其擴展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [選項] 被壓縮文件
常用選項:
選項 |
含義 |
-d |
解壓 |
-r |
壓縮所有子目錄 |
tar這個命令並沒有壓縮的功能,它只是一個打包的命令,但是在tar命令中增加一個選項(-z)可以調用gzip實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
壓縮用法:tar cvzf 壓縮包包名 文件1 文件2 ...
-z |
指定壓縮包的格式爲:file.tar.gz |
例如:tar zcvf test.tar.gz 1.c 2.c 3.c 4.c把 1.c 2.c 3.c 4.c 壓縮成 test.tar.gz
解壓用法: tar zxvf 壓縮包包名
參數 |
含義 |
-z |
指定壓縮包的格式爲:file.tar.gz |
解壓到指定目錄:-C (大寫字母「C」)
例子:tar -xvf new.tar.gz -C ./test/ 將 new.tar.gz 解壓到當前目錄下的 test 目錄下:
l tar與bzip2命令結合使用實現文件打包、壓縮(用法和gzip一樣)。
l tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包後的文件,其擴展名一般用xxxx.tar.bz2。
l 在tar命令中增加一個選項(-j)可以調用bzip2實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
l 壓縮用法:tar cjvf 壓縮包包名 文件...(tar jcvf bk.tar.bz2 *.c)
l 解壓用法:tar xjvf 壓縮包包名 (tar jxvf bk.tar.bz2)
l 通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名爲zip。
l 壓縮文件:zip [-r] 目標文件(沒有擴展名) 源文件
l 解壓文件:unzip -d 解壓後目錄文件 壓縮文件
l 用戶是Unix/Linux系統工作中重要的一環,用戶管理包括用戶與組賬號的管理。
l 在Unix/Linux系統中,不論是由本機或是遠程登錄系統,每個系統都必須擁有一個賬號,並且對於不同的系統資源擁有不同的使用權限。
l Unix/Linux系統中的root賬號通常用於系統的維護和管理,它對Unix/Linux操作系統的所有部分具有不受限制的訪問權限。
l 在Unix/Linux安裝的過程中,系統會自動創建許多用戶賬號,而這些默認的用戶就稱爲「標準用戶」。
l 在大多數版本的Unix/Linux中,都不推薦直接使用root賬號登錄系統。
whoami該命令用戶查看當前系統當前賬號的用戶名。可通過cat /etc/passwd查看系統用戶信息。
由於系統管理員通常需要使用多種身份登錄系統,例如通常使用普通用戶登錄系統,然後再以su命令切換到root身份對傳統進行管理。這時候就可以使用whoami來查看當前用戶的身份。
who命令用於查看當前所有登錄系統的用戶信息。
常用選項:
選項 |
含義 |
-m或am I |
只顯示運行who命令的用戶名、登錄終端和登錄時間 |
-q或--count |
只顯示用戶的登錄賬號和登錄用戶的數量 |
-u |
在登錄時間後顯示該用戶最後一次操作到當前的時間間隔 |
-u或--heading |
顯示列標題 |
w命令也可以查看登錄當前系統的用戶信息。與who命令相比,w命令的功能更強大,它不但可以顯示當前有哪些用戶登錄到系統,還可以顯示這些用戶正在進行的操作,並給出更加詳細和科學的統計數據。
w命令的格式如下:
w [選項] [用戶名]
如果w命令攜帶用戶名,則只顯示指定用戶的信息,否則顯示當前所有登錄用戶的信息。
常用選項:
選項 |
含義 |
-h |
只顯示運行who命令的用戶名、登錄終端和登錄時間 |
-l |
顯示詳細信息列表,此爲預設值 |
-s |
使用短列表,不顯示用戶登錄時間、JCPU和PCPU時間 |
-u |
忽略執行程序的名稱,以及該程序的PCPU時間 |
l 如果是圖形界面,退出當前終端;
l 如果是使用ssh遠程登錄,退出登陸賬戶;
l 如果是切換後的登陸用戶,退出則返回上一個登陸賬號。
可以通過su命令切換用戶,su後面可以加「-」。su和su –命令不同之處在於,su -切換到對應的用戶時會將當前的工作目錄自動轉換到切換後的用戶主目錄:
注意:如果是ubuntu平臺,需要在命令前加「sudo」,如果在某些操作需要管理員才能操作,ubuntu無需切換到root用戶即可操作,只需加「sudo」即可。sudo是ubuntu平臺下允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,減少了root 用戶的登陸和管理時間,提高了安全性。
命令 |
含義 |
su |
切換到root用戶 |
su root |
切換到root用戶 |
su - |
切換到root用戶,同時切換目錄到/root |
su - root |
切換到root用戶,同時切換目錄到/root |
su 普通用戶 |
切換到普通用戶 |
su - 普通用戶 |
切換到普通用戶,同時切換普通用戶所在的目錄 |
l groupadd 新建組賬號
l groupdel 組賬號
l cat /etc/group 查看用戶組
7) 修改用戶所在組:usermod
使用方法:usermod -g 用戶組 用戶名
在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因爲adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令的使用格式完全一樣。
useradd命令的使用格式如下:
useradd [參數] 新建用戶賬號
參數 |
含義 |
-d <dirname> |
指定用戶登錄系統時的主目錄,如果不使用該參數,系統自動在/home目錄下建立與用戶名同名目錄爲主目錄 |
-m |
自動建立目錄 |
-g |
指定組名稱 |
相關說明:
l Linux每個用戶都要有一個主目錄,主目錄就是第一次登陸系統,用戶的默認當前目錄(/home/用戶);
l 每一個用戶必須有一個主目錄,所以用useradd創建用戶的時候,一定給用戶指定一個主目錄;
l 用戶的主目錄一般要放到根目錄的home目錄下,用戶的主目錄和用戶名是相同的;
l 如果創建用戶的時候,不指定組名,那麼系統會自動創建一個和用戶名一樣的組名。
命令 |
含義 |
useradd -d /home/abc abc -m |
創建abc用戶,如果/home/abc目錄不存在,就自動創建這個目錄,同時用戶屬於abc組 |
useradd -d /home/a a -g test -m |
創建一個用戶名字叫a,主目錄在/home/a,如果主目錄不存在,就自動創建主目錄,同時用戶屬於test組 |
cat /etc/passwd |
查看系統當前用戶名 |
在Unix/Linux中,超級用戶可以使用passwd命令爲普通用戶設置或修改用戶口令。用戶也可以直接使用該命令來修改自己的口令,而無需在命令後面使用用戶名。
命令 |
含義 |
userdel abc(用戶名) |
刪除abc用戶,但不會自動刪除用戶的主目錄 |
userdel -r abc(用戶名) |
刪除用戶,同時刪除用戶的主目錄 |
不管是哪位用戶從哪裏登錄,管理員都可以通過last命令查出,以及是否有人非法登錄。
chmod 修改文件權限有兩種使用格式:字母法與數字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] |
含義 |
u |
user 表示該文件的所有者 |
g |
group 表示與該文件的所有者屬於同一組( group )者,即用戶組 |
o |
other 表示其他以外的人 |
a |
all 表示這三者皆是 |
[ +-= ] |
含義 |
+ |
增加權限 |
- |
撤銷權限 |
= |
設定權限 |
rwx |
含義 |
r |
read 表示可讀取,對於一個目錄,如果沒有r權限,那麼就意味着不能通過ls查看這個目錄的內容。 |
w |
write 表示可寫入,對於一個目錄,如果沒有w權限,那麼就意味着不能在目錄下創建新的文件。 |
x |
excute 表示可執行,對於一個目錄,如果沒有x權限,那麼就意味着不能通過cd進入這個目錄。 |
chmod o+w file 給文件file的其它用戶增加寫權限:
chmod u-r file 給文件file的擁有者減去讀的權限:
chmod g=x file設置文件file的同組用戶的權限爲可執行,同時去除讀、寫權限:
數字法:「rwx」 這些權限也可以用數字來代替
r |
讀取權限,數字代號爲 "4" |
||||||||||||||||||||||||||||||||||
w |
字母法:chmod u/g/o/a +/-/= rwx 文件
chmod o+w file 給文件file的其它用戶增加寫權限:
chmod u-r file 給文件file的擁有者減去讀的權限:
chmod g=x file設置文件file的同組用戶的權限爲可執行,同時去除讀、寫權限: 數字法:「rwx」 這些權限也可以用數字來代替
如執行:chmod u=rwx,g=rx,o=r filename 就等同於:chmod u=7,g=5,o=4 filename
chmod 751 file: l 文件所有者:讀、寫、執行權限 l 同組用戶:讀、執行的權限 l 其它用戶:執行的權限
chmod 777 file:所有用戶擁有讀、寫、執行權限
注意:如果想遞歸所有目錄加上相同權限,需要加上參數「 -R 」。 如:chmod 777 test/ -R 遞歸 test 目錄下所有文件加 777 權限。
13) 修改文件所有者:chown使用方法:chown 用戶名 文件或目錄名
14) 修改文件所屬組:chgrp使用方法:chgrp 用戶組名 文件或目錄名 |