學習時間:11個小時linux
1、 學習目標正則表達式
1. 可以獨立安裝Linux操做系統 shell
2. 可以熟練使用Linux系統的基本命令 vim
3. 熟練使用Linux中用戶管理命令/系統相關命令/文件目錄相關命令/打包壓縮相關命令/比較合併相關命令/網絡相關命令等windows
4. 熟練應用「搜索」進行觸類旁通的學習瀏覽器
2、 學習資源安全
1. 課程資料:https://www.shiyanlou.com/courses/413 實驗一,課程邀請碼:W7FQKW4Y服務器
2. Linux 基礎入門:https://www.shiyanlou.com/courses/1(重點,第一次課考覈內容所有從這裏面出)網絡
3、 學習方法
1. 進度很重要:必須跟上每週的進度,閱讀,練習,問答,項目。我會認真對待每一位同窗,請你不要由於困難半途而廢。
2. 問答很重要:遇到知識難點請多多提問,這是你的權利更是您對本身負責的義務。問答到博客園討論小組:http://group.cnblogs.com/103791/
3. 實踐很重要:解決書中習題,實踐書中實例,完成每週項目,纔算真的消化了這本好書。經過實驗樓環境或本身安裝的虛擬機在實踐中進行學習
4. 實驗報告很重要:詳細記錄你完成項目任務的思路,得到老師點評和幫助本身複習。學習完成後在博客園中(http://www.cnblogs.com/)把學習過程經過博客發表,博客標題「信息安全系統設計基礎第一週學習總結」
4、 學習任務
1. 重點學習 cheat/find/locate/grep/man/whereis/which/apt-get
查找幫助文檔、各類示例多多練習,這幾個命令會貫穿咱們整個學習的學習,掌握這幾個命令就能夠很好學習其餘命令了。
2. 這學期須要掌握的命令有ac,apt-get,bzip2,cat,chgrp,chmod,chown,clear,compress,cp,dd,df,diff,du,dump,evn,find,finger,free,grep,gzip,head,kill,less,ln,locate,l,gout,ls,man,mkdir,more,mount,mt,mv,netstat,nslookup,od,passwd,patch,ps,pstop,pwd,rm,shell,sort,ssh,stty,tail,tar,telnet,touch,tree,uname,unzip,vi,vim,whereis,which,who,write等
5、 學習過程
1. 瞭解Linux與windows的基本區別與學習Linux的目的
(1)Linux的開發更加自由
(2)使用Linux能夠只用鍵盤操做,新手須要學習
(3)Linux能夠進行更好的關於網絡與服務器方面的開發
2. Linux的基本概念和操做
(1)實驗環境的熟悉(實驗樓中的系統用戶名和密碼均爲shiyanlou)
(2)終端(Terminal),Linux 的多用戶登錄就是經過不一樣的 /dev/tty 設備完成的,Linux 默認提供了 6 個純命令行界面的 「terminal」(準確的說這裏應該是 6 個 virtual consoles)來讓用戶登陸,在物理機系統上你能夠經過使用[Ctrl]+[Alt]+[F1]~[F6]進行切換。當你切換到其中一個終端後想要切換回圖形界面,你能夠按下[Ctrl]+[Alt]+[F7]來完成。
中間程序(Shell),提供給使用者使用界面的軟件(命令解析器)。
(3)命令行操做
1) 重要快捷鍵:
使用Tab鍵來進行命令補全,補全目錄,補全命令參數都是沒問題的;
用Ctrl+c鍵來強行終止當前程序(它並不會使終端退出);
你可使用鍵盤上的方向上鍵,恢復你以前輸入過的命令。
圖1:輸入tial
圖2:輸入find /
按鍵 |
做用 |
Ctrl+d |
鍵盤輸入結束或退出終端 |
Ctrl+s |
暫定當前程序,暫停後按下任意鍵恢復運行 |
Ctrl+z |
將當前程序放到後臺運行,恢復到前臺爲命令fg |
Ctrl+a |
將光標移至輸入行頭,至關於Home鍵 |
Ctrl+e |
將光標移至輸入行末,至關於End鍵 |
Ctrl+k |
刪除從光標所在位置到行末 |
Alt+Backspace |
向前刪除一個單詞 |
Shift+PgUp |
將終端顯示向上滾動 |
Shift+PgDn |
將終端顯示向下滾動 |
圖3:經常使用指令
2) 通配符:主要有星號(*)和問號(?),用來對對字符串進行模糊匹配(好比文件名,參數名)。
圖4:建立text文件與查找
圖5:建立多個txt文件與查找
字符 |
含義 |
* |
匹配 0 或多個字符 |
? |
匹配任意一個字符 |
[list] |
匹配 list 中的任意單一字符 |
[!list] |
匹配 除list 中的任意單一字符之外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z] |
{string1,string2,...} |
匹配 sring1 或 string2 (或更多)其一字符串 |
{c2..c2} |
匹配 c1-c2 中所有字符 如{1..10} |
圖6:Shell 經常使用通配符
3) 幫助指令
可使用man 命令,它是Manual page的縮寫。
圖7:查看man指令
圖8:查看相應區段的指令介紹
圖9:指令「ls --help」
3. 用戶及文件的操做權限
(1)查看用戶指令:who am i (who mom likes);
圖10:查看用戶
指令:whoami(去掉空格),只打印用戶名
圖11:只顯示用戶名
參數 |
說明 |
-a |
打印能打印的所有 |
-d |
打印死掉的進程 |
-m |
同am i,mom likes |
-q |
打印當前登陸用戶數及用戶名 |
-u |
打印當前登陸用戶登陸信息 |
-r |
打印運行等級 |
圖12:who 命令其它經常使用參數
(2)建立用戶:這裏用到 sudo 這個命令,使用這個命令有兩個大前提,一是知道當前登陸用戶的密碼,二是當前用戶必須在 sudo 用戶組。
「$ sudo adduser lilei」指令建立新帳戶,輸入密碼界面上看不見,其餘信息敲下回車鍵就表示默認。
圖13:建立新帳戶並查看
(3)在 Linux 裏面如何知道本身屬於哪些用戶組
1) 使用groups命令:其中冒號以前表示用戶,後面表示該用戶所屬的用戶組。
2) 查看/etc/group文件,cat 命令用於讀取指定文件的內容並打印到終端輸出,後面會詳細講它的使用。 | sort 表示將讀取的文本進行一個字典排序再輸出,而後你將看到以下一堆輸出,你能夠在最下面看到 shiyanlou 的用戶組信息。/etc/group 的內容包括用戶組(Group)、用戶組口令、GID 及該用戶組所包含的用戶(User),每一個用戶組一條記錄。格式以下:
group_name:password:GID:user_list
你看到上面的 password 字段爲一個 'x' 並非說密碼就是它,只是表示密碼不可見而已。
圖14:groups指令
圖15:查看/etc/group/文件
(4)將用戶加入羣組,使用 usermod 命令能夠爲用戶添加用戶組,一樣使用該命令你必需有 root 權限,你能夠直接使用 root 用戶爲其它用戶添加用戶組,或者用其它已經在 sudo 用戶組的用戶使用 sudo 命令獲取權限來執行該命令。
圖16:顯示用戶不在羣組中
圖17:root用戶lilei
(5)刪除用戶:指令「$ sudo deluser lilei --remove-home」
圖18:刪除用戶
(6)查看文件權限:(Linux 裏面一切皆文件),一個 目錄要同時具備讀權限和執行權限才能夠打開,而一個目錄要有寫權限才容許在其中建立其它文件,這是由於目錄文件實際保存着該目錄裏面的文件的列表等信息全部者權限。
圖19:同時使用 '-A' 和 '-l' 參數
圖20:顯示文件大小
(7)變動文件全部權
圖21:變動文件夾的位置
(8)修改文件權限
1)二進制表示
2)加減賦值操,指令「$ chmod go-rw iphone」,'g''o'還有'u',分別表示group,others,user,'+','-' 就分別表示增長和去掉相應的權限。
4. Linux目錄結構及文件基本操做
1) FHS標準,這種文件組織形式定義了系統中每一個區域的用途、所須要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。指令「tree /」:
2) 目錄路徑,使用 cd 命令能夠切換目錄,在 Linux 裏面使用 . 表示當前目錄,.. 表示上一級目錄(**注意,還記得咱們上一節介紹過的,以 . 開頭的文件都是隱藏文件,因此這兩個目錄必然也是隱藏的,你可使用 ls -a 命令查看隱藏文件), - 表示上一次所在目錄,~ 一般表示當前用戶的"home"目錄。使用 pwd命令能夠獲取當前所在路徑(絕對路徑)。
3) 絕對路徑,簡單地說就是以根"/"目錄爲起點的完整路徑,以你所要到的目錄爲終點,表現形式如: /usr/local/bin,表示根目錄下的 usr 目錄中的 local 目錄中的 bin 目錄。
相對路徑,也就是相對於你當前的目錄的路徑,相對路徑是以當前目錄 . 爲起點,以你所要到的目錄爲終點,表現形式如:usr/local/bin 。
4) Linux文件的基本操做
1) 新建空白文件,使用 touch 命令建立空白文件,主要是來更改已有文件的時間戳的(好比,最近訪問時間,最近修改時間),但其在不加任何參數的狀況下,只指定一個文件名,則能夠建立一個爲指定文件名的空白文件(不會覆蓋已有同名文件),固然你也能夠同時指定該文件的時間戳。
2) 新建目錄,使用 mkdir(make directories)命令能夠建立一個空目錄,也可同時指定建立目錄的權限屬性,使用 -p 參數,同時建立父目錄(若是不存在該父目錄),以下咱們同時建立一個多級目錄。
5) 複製文件,使用cp(copy)命令複製一個文件或目錄到指定目錄。
複製目錄,成功複製目錄須要加上-r或者-R參數,表示遞歸複製。
6) 刪除文件,使用rm(remove files or directories)命令;刪除目錄,跟複製目錄同樣,要刪除一個目錄,也須要加上-r或-R參數。
7) 移動文件,使用mv(move or rename files)命令,移動文件(剪切)。
8) 重命名,「mv 舊的文件名 新的文件名」
多個重命名:
# 批量將這 5 個後綴爲 .txt 的文本文件重命名爲以 .c 爲後綴的文件
$ rename 's/\.txt/\.c/' *.txt
# 批量將這 5 個文件,文件名改成大寫
$ rename 'y/a-z/A-Z/' *.c
9) 查看文件,cat,tac這兩個命令都是用來打印文件內容到標準輸出(終端),其中cat爲正序顯示,tac倒序顯示;
使用more和less命令分頁查看文件;
使用head和tail命令查看文件;
(只看一行, 加上-n參數,後面緊跟行數)
10) 查看文件類型,file命令查看文件類型
11) 編輯文件,直接使用 Linux 內部的 vim 學習教程,輸入以下命令便可開始。
5. 環境變量與文件查找
(1)變量,使用declare命令建立一個變量名;
使用=號賦值運算符爲變量 tmp 賦值爲 shiyanlou;
讀取變量的值,使用echo命令和$符號($符號能夠表示引用一個變量的值)
(2)三種環境變量:
當前 Shell 進程私有用戶自定義變量,如上面咱們建立的 temp 變量,只在當前 Shell 中有效;
Shell 自己內建的變量;
從自定義變量導出的環境變量。
命令 |
說明 |
set |
顯示當前 Shell 全部環境變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量 |
env |
顯示與當前用戶相關的環境變量,還可讓命令在指定環境中運行 |
export |
顯示從 Shell 中導出成環境變量的變量,也能經過它將自定義變量導出爲環境變量 |
(3)命令的查找路徑與順序
查看PATH環境變量的內容,使用指令「$ echo $PATH」
6. 文件的打包和壓縮
(1)使用zip指令壓縮文件,命令中,-r參數表示遞歸打包包含子目錄的所有內容,-q參數表示爲安靜模式,即不向屏幕輸出信息,-o,表示輸出文件,需在其後緊跟打包輸出文件名。後面使用du命令查看打包後文件的大小。(使用-e參數可使用加密壓縮包)
(2)使用unzip指令解壓文件,若是指定目錄不存在,將會自動建立。若是不想解壓只想查看壓縮包的內容可使用-l參數。
(3)rar,打開壓縮包指令。
安裝rar和unrar工具
從指定文件或目錄建立壓縮包或添加文件到壓縮包:
unrar和rar的使用:
查看不解壓文件:$ rar l shiyanlou.rar
全路徑解壓:$ unrar x shiyanlou.rar
去掉路徑解壓:$ mkdir tmp $ unrar e shiyanlou.rar tmp/
(4)tar打包工具,解包一個文件(-x參數)到指定路徑的已存在目錄(-C參數),只查看不解包文件-t參數,
7. 文件系統操做與磁盤管理
(1)df指令,查看磁盤容量
du指令查看目錄的容量,-d參數指定查看目錄的深度
(2)建立虛擬磁盤
1) dd指令,dd命令用於轉換和複製文件,不過它的複製不一樣於cp。dd的的命令行選項格式爲
選項=值。
用dd命令從/dev/zero設備建立一個容量爲 256M 的空文件
2) 使用mkfs命令格式化磁盤
(3)使用mount指令將磁盤掛載到目錄樹上,mount命令的通常格式以下:
mount [options] [source] [directory]
使用 umount 命令卸載已掛載磁盤:
$ sudo umount /mnt
(4)使用 fdisk 爲磁盤分區,使用 losetup 命令創建鏡像與迴環設備的關聯
8. 命令執行順序控制與管道
(1)cut 命令,打印每一行的某一字段
(2)grep 命令,在文本中或 stdin 中查找匹配字符串,通常表達形式爲:
grep [命令選項]... 用於匹配的表達式 [文件]...
(3)wc 命令用於統計並輸出一個文件中行、單詞和字節的數目
(4)sort指令排序,-t參數用於指定字段的分隔符,這裏是以":"做爲分隔符;-k 字段號用於指定對哪個字段進行排序,若是要按照數字排序就要加上-n參數。
(5)uniq命令能夠用於過濾或者輸出重複行,使用history命令查看最近執行過的命令。
9. 簡單的文件處理
簡單的指令:
1) tr 命令能夠用來刪除一段文本信息中的某些文字。或者將其進行轉換。
2) col 命令能夠將Tab換成對等數量的空格建,或反轉這個操做。
3) join指令,將兩個文件中包含相同內容的那一行合併在一塊兒。
4) paste這個命令與join 命令相似,它是在不對比數據的狀況下,簡單地將多個文件合併一塊兒,以Tab隔開。
10. 數據流重定向
(1)管道和重定向的區別:管道默認是鏈接前一個命令的輸出到下一個命令的輸入,而重定向一般是須要一個文件來創建兩個命令的鏈接
(2)標準錯誤的重定向(注意:在輸出重定向文件描述符前加上&,不然shell會當作重定向到一個文件名爲1的文件中)
(3)Tee指令,輸出同時重定向到多個文件。
(4)使用指令exec可命令實現「永久」重定向
(5)一樣使用exec命令能夠建立新的文件描述符
(6)能夠利用設個/dev/null屏蔽命令的輸出,向上面這樣的操做將使你得不到任何輸出結果。
(7)xargs命令用於將/etc/passwd文件按:分割取第一個字段排序後,使用echo命令生成一個列表。
11. 正則表達式基礎
(1)正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。
(2)基本語法:一個正則表達式一般被稱爲一個模式(pattern),爲用來描述或者匹配一系列符合某個句法規則的字符串。
1) 選擇:|豎直分隔符表示選擇;
2) 數量限定
+表示前面的字符必須出現至少一次(1次或屢次);
?表示前面的字符最多出現一次(0次或1次);
*星號表明前面的字符能夠不出現,也能夠出現一次或者屢次;
3) 範圍和優先級,()圓括號能夠用來定義模式字符串的範圍和優先級,
字符 |
描述 |
\ |
將下一個字符標記爲一個特殊字符、或一個原義字符。例如,「n」匹配字符「n」。「\n」匹配一個換行符。序列「\\」匹配「\」而「\(」則匹配「(」。 |
^ |
匹配輸入字符串的開始位置。 |
$ |
匹配輸入字符串的結束位置。 |
{n} |
n是一個非負整數。匹配肯定的n次。例如,「o{2}」不能匹配「Bob」中的「o」,可是能匹配「food」中的兩個o。 |
{n,} |
n是一個非負整數。至少匹配n次。例如,「o{2,}」不能匹配「Bob」中的「o」,但能匹配「foooood」中的全部o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。 |
{n,m} |
m和n均爲非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o{1,3}」將匹配「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。 |
* |
匹配前面的子表達式零次或屢次。例如,zo*能匹配「z」、「zo」以及「zoo」。*等價於{0,}。 |
+ |
匹配前面的子表達式一次或屢次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等價於{1,}。 |
? |
匹配前面的子表達式零次或一次。例如,「do(es)?」能夠匹配「do」或「does」中的「do」。?等價於{0,1}。 |
? |
當該字符緊跟在任何一個其餘限制符(*,+,?,{n},{n,},{n,m})後面時,匹配模式是非貪婪的。非貪婪模式儘量少的匹配所搜索的字符串,而默認的貪婪模式則儘量多的匹配所搜索的字符串。例如,對於字符串「oooo」,「o+?」將匹配單個「o」,而「o+」將匹配全部「o」。 |
. |
匹配除「\n」以外的任何單個字符。要匹配包括「\n」在內的任何字符,請使用像「(.|\n)」的模式。 |
(pattern) |
匹配pattern並獲取這一匹配的子字符串。該子字符串用於向後引用。要匹配圓括號字符,請使用「\(」或「\)」。 |
x|y |
匹配x或y。例如,「z|food」能匹配「z」或「food」。「(z|f)ood」則匹配「zood」或「food」。 |
[xyz] |
字符集合(character class)。匹配所包含的任意一個字符。例如,「[abc]」能夠匹配「plain」中的「a」。其中特殊字符僅有反斜線\保持特殊含義,用於轉義字符。其它特殊字符如星號、加號、各類括號等均做爲普通字符。脫字符^若是出如今首位則表示負值字符集合;若是出如今字符串中間就僅做爲普通字符。連字符 - 若是出如今字符串中間表示字符範圍描述;若是若是出如今首位則僅做爲普通字符。 |
[^xyz] |
排除型(negate)字符集合。匹配未列出的任意字符。例如,「[^abc]」能夠匹配「plain」中的「plin」。 |
[a-z] |
字符範圍。匹配指定範圍內的任意字符。例如,「[a-z]」能夠匹配「a」到「z」範圍內的任意小寫字母字符。 |
[^a-z] |
排除型的字符範圍。匹配任何不在指定範圍內的任意字符。例如,「[^a-z]」能夠匹配任何不在「a」到「z」範圍內的任意字符。 |
(3)優先級:
(4)grep命令用於打印輸出文本中匹配的模式串,它使用正則表達式做爲模式匹配的條件,
(5)grep指令
數量:
選擇:
選擇的符號說明:
排除字符:
(6)zo{1}只匹配zo,zo{1,}匹配zo開頭的全部單詞
選擇,grep – E 匹配相同的,Ev不相同的
(.號有特殊含義,因此須要轉義。)
(7)sed命令,經常使用格式
sed [參數]... [執行命令] [輸入文件]...
經常使用參數:
12. Linux下軟件的安裝
(1)apt-get使用各用於處理apt包的公用程序集,咱們能夠用它來在線安裝、卸載和升級軟件包等
一些經常使用參數:
(2)軟件升級
(3)軟件卸載:
(4)軟件搜索:
apt-cache search 軟件名
(5)在網絡上簡單以deb形式打包的軟件包,就須要使用dpkg命令來安裝,一些經常使用參數:
(6)查看已安裝的軟件包的目錄,使用dpkg -L查看deb包目錄信息
(7)二進制包安裝,從網絡上下載的二進制包解壓後放到合適的目錄,而後將包含可執行的主程序文件的目錄添加進PATH環境變量便可。
6、 課後做業
2.
做業圖1
做業圖2
做業圖3:下載toilet資料包以後
3.
建立用戶:指令(sudo adduser),敲下回車使用默認值
Root用戶:
4.
5.
6.
7.
8.
(1)如今實驗樓的環境中打開瀏覽器,而後輸入對應的網址,下載圖片
(2)以後下載對應程序,輸入程序名字後再後面加入圖片的目錄便可。
9.
下載文件,運行便可(方向鍵左右移動,空格射擊)
10.
DEMO:
FIRE:
12.
7、 心得體會
1.瞭解了Linux與windows的區別,認識了Linux的優缺點,瞭解了基本操做,爲之後更方便的使用Linux打下基礎。
2.此次瞭解了磁盤分區,見識到了Linux的便利。並嘗試在Linux中打開瀏覽器,下載圖片。
3.學習了Linux中的軟件安裝,對之後本身在虛擬機中的使用打下基礎