信息安全系統設計基礎第一週學習總結

第二週(9.14-9.20):javascript

學習計時:共17小時css

實驗樓:6小時  讀書:1小時  代碼:3小時  做業:0小時  博客:7小時前端

1、學習目標java

1. 可以獨立安裝Linux操做系統  node

2. 可以熟練使用Linux系統的基本命令  python

3. 熟練使用Linux中用戶管理命令/系統相關命令/文件目錄相關命令/打包壓縮相關命令/比較合併相關命令/網絡相關命令等linux

4. 熟練應用「搜索」進行觸類旁通的學習nginx

2、學習資源git

1. 課程資料:https://www.shiyanlou.com/courses/413   實驗一正則表達式

2. Linux 基礎入門:https://www.shiyanlou.com/courses/1(重點,第一次課考覈內容所有從這裏面出)

3.  Linux命令:en   cn

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等

3. 測試示例:

  • 請在虛擬機中安裝DDD軟件(其餘軟件)
  • 請演示怎麼判斷DDD軟件能不能安裝
  • 請查找系統中50M以上的文件
  • 請查找系統中兩天前修改過的且小於5M的文件
  • 請問如何查找操做系統的信息
  • 請查找當前目錄下全部*.c文件中哪一個文件中包含main函數
  • 請創建一個目錄,裏面創建兩個子文目錄,如何一條命令刪除三個目錄?
  • 如何把一個目錄及子目錄拷貝到本身的主目錄中
  • ...

、後續學習預告(可選):

Linux下C語言編程基礎:

VIM進行編輯

GCC進行編譯

GDB進行調試

Make進行自動化

、學習過程

(提示:此處由學生填寫,學習過程,學習筆記,代碼編譯,運行結果,思考等)

1. 重要知識點總結梳理:(參考資料:實驗樓Linux基礎入門)

1Linux終端與圖形界面切換

Linux 默認提供了 6 個純命令行界面的 「terminal」來讓用戶登陸,在物理機系統上你能夠經過使用[Ctrl]+[Alt]+[F1][F6]進行切換。

切換到其中一個終端後想要切換回圖形界面:[Ctrl]+[Alt]+[F7]

2)命令解析器

核:UNIX/Linux 內核

殼Shell:是指「提供給使用者使用界面」的軟件(命令解析器),隱藏了操做系統底層的細節。普通意義上的Shell 就是能夠接受用戶輸入命令的程序。

3)快捷鍵

Tab使用Tab鍵來進行補全,補全命令,補全目錄,補全命令參數。當忘記某個命令的全稱時能夠只輸入它的開頭的一部分而後按下Tab鍵就能夠獲得提示或者幫助完成。
例:輸入cd以後按Tab鍵,會出現:
以後按Tab在補全選項中切換:
  或 
[Ctrl+c]強行終止當前程序。
例:tail命令,回顯輸入  沒法跳出;
此時按Ctrl+C就能夠跳出來。
例2:find /命令以後,使用Ctrl+C:

Ctrl+d    鍵盤輸入結束或退出終端

Ctrl+s    暫定當前程序,暫停後按下任意鍵恢復運行

Ctrl+z    將當前程序放到後臺運行,恢復到前臺爲命令fg

Ctrl+a   將光標移至輸入行頭,至關於Home鍵

Ctrl+e       將光標移至輸入行末,至關於End鍵

Ctrl+k       刪除從光標所在位置到行末

Alt+Backspace  向前刪除一個單詞

Shift+PgUp     將終端顯示向上滾動

Shift+PgDn     將終端顯示向下滾動

方向鍵上   顯示輸入命令的歷史記錄

4)通配符

通配符是一種特殊語句,主要有星號(*)和問號(?),用來對對字符串進行模糊匹配(好比文件名,參數名)。當查找文件夾時,可使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,經常使用通配符代替一個或多個真正的字符。
例:
建立多個文件:

Shell 經常使用通配符:

*     匹配 0 或多個字符

?      匹配任意一個字符

[list]       匹配 list 中的任意單一字符

[!list]      匹配 除list 中的任意單一字符之外的字符

[c1-c2]    匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z]

{string1,string2,...}       匹配 sring1 或 string2 (或更多)其一字符串

{c2..c2}  匹配 c1-c2 中所有字符 如{1..10}

5)幫助

man man命令
man 中使用搜索:/<你要搜索的關鍵字>
n :切換到下一個關鍵字所在處
shift+n:上一個關鍵字所在處
Space(空格鍵):翻頁
Enter(回車鍵):向下滾動一行
j,k(vim編輯器的移動鍵):進行向前向後滾動一行
h:顯示使用幫助(由於man使用less做爲閱讀器,實爲less工具的幫助)
q:退出
想要得到更詳細的幫助,你還可使用info命令,不過一般使用man就足夠了。
若是你知道某個命令的做用,只是想快速查看一些它的某個具體參數的做用,那麼你可使用--help參數,大部分命令都會帶有這個參數。
例:輸入ls –help命令:

5)輸出圖形字符命令

1.banner

安裝命令:sudo apt-get update;sudo apt-get install sysvbanner
而後輸入顯示命令banner hanyuqi:
輸入命令:printerbanner –w 25 HYQ:

2.toilet

安裝命令:sudo apt-get install toilet
顯示命令:
能夠添加顏色。咱們能夠運行下列命令看到顏色:toilet -f mono12 -F metal mylinuxbook12:

3.figlet

安裝命令:sudo apt-get install figlet
顯示命令:

6查看用戶

 
whoami:要查看當前登陸用戶的用戶名
who am i:第一列表示打開當前僞終端的用戶的用戶名,第二列的 pts/0 中 pts 表示僞終端,第三列則表示當前僞終端的啓動時間。
who 命令其它經常使用參數:
-a    打印能打印的所有
-d    打印死掉的進程
-m   同am i,mom likes
-q    打印當前登陸用戶數及用戶名
-u    打印當前登陸用戶登陸信息
-r     打印運行等級
例:

7)建立用戶

在 Linux 系統裏, root 帳戶擁有整個系統至高無上的權利,好比新建/添加用戶。
新建一個新用戶hanyuqi:
建立好一個用戶,可使用你建立的用戶登陸了,使用以下命令切換登陸用戶
su –l hanyuqi:
退出當前用戶:exit / Ctrl+d

8)用戶組

在 Linux 裏面每一個用戶都有一個歸屬(用戶組),用戶組簡單地理解就是一組用戶的集合,它們共享一些資源和權限,同時擁有私有資源。
如何知道本身屬於哪些用戶組呢?
方法一:groups 用戶名
 
每次新建用戶若是不指定用戶組的話,默認會自動建立一個與用戶名相同的用戶組(差很少就至關於家長的意思,或者說是老總)。默認狀況下在sudo用戶組裏的可使用sudo命令得到root權限。
方法二:cat etc/group | sort
這裏 cat 命令用於讀取指定文件的內容並打印到終端輸出,後面會詳細講它的使用。 | sort 表示將讀取的文本進行一個字典排序再輸出,而後你將看到以下一堆輸出,你能夠在最下面看到 shiyanlou 的用戶組信息。
過濾信息(x指的是密碼不可見):
 

9)將其它用戶加入 sudo 用戶組

使用 usermod 命令能夠爲用戶添加用戶組,一樣使用該命令你必需有 root 權限,你能夠直接使用 root 用戶爲其它用戶添加用戶組,或者用其它已經在 sudo 用戶組的用戶使用 sudo 命令獲取權限來執行該命令
這裏用 shiyanlou 用戶執行 sudo 命令將hanyuqi添加到sudo用戶組,讓它也可使用 sudo 命令得到 root 權限:
 

10)刪除用戶

sudo deluser hanyuqi –remove-home

11)查看文件權限

ls –l:

文件類型:Linux中一切皆文件
文件權限:一個目錄要同時具備讀權限和執行權限才能夠打開,而一個目錄要有寫權限才容許在其中建立其它文件,這是由於目錄文件實際保存着該目錄裏面的文件的列表等信息。
鏈接數:連接到該文件所在的 inode 結點的文件名數目。
文件大小:以 inode 結點大小爲單位來表示的文件大小。ls 加上 -lh 參數來更直觀的查看文件的大小

經常使用:

顯示除了 '.'(當前目錄),'..' 上一級目錄以外的全部包含隱藏文件(Linux 下以 '.' 開頭的文件爲隱藏文件):

同時使用 '-A' 和 '-l' 參數:

 

查看某一個目錄的完整屬性,而不是顯示目錄裏面的文件屬性:

 

顯示全部文件大小,並以普通人類能看懂的方式呈現:

 

其中小 s 爲顯示文件大小,大 S 爲按文件大小排序,若須要知道如何按其它方式排序,請使用「man」命令查詢。

12)變動文件全部者

切換登陸用戶hanyuqi,輸入密碼後新建一個文件,命名爲「Lenovo」:
 
變動文件全部者:
 

13)修改文件權限

文件不想被其餘用戶讀、寫、執行

方法一:二進制數字表示

方法二:加減賦值操做

'g''o'還有'u',分別表示group,others,user,'+','-' 就分別表示增長和去掉相應的權限。

14)目錄路徑

進入上一級目錄:cd ..

cd ~ # 或者 cd /home/<你的用戶名>

使用 pwd 獲取當前路徑:

絕對路徑:以根"/"目錄爲起點的完整路徑,以你所要到的目錄爲終點,表現形式如: /usr/local/bin,表示根目錄下的 usr 目錄中的 local 目錄中的 bin 目錄。

相對路徑:相對於你當前的目錄的路徑,相對路徑是以當前目錄 . 爲起點,以你所要到的目錄爲終點,表現形式如: usr/local/bin (這裏假設你當前目錄爲根目錄)。你可能注意到,咱們表示相對路徑實際並無加上表示當前目錄的那個 . ,而是直接以目錄名開頭,由於這個 usr 目錄爲 / 目錄下的子目錄,是能夠省略這個 . 的(之後會講到一個相似不能省略的狀況);若是是當前目錄的上一級目錄,則須要使用 .. ,好比你當前目錄爲「home」目錄,根目錄就應該表示爲 ../../ ,表示上一級目錄("home"目錄)的上一級目錄("/"目錄)。

以"home"目錄爲起點,分別以絕對路徑和相對路徑的方式進入 /usr/local/bin 目錄:

# 絕對路徑  $ cd /usr/local/bin        # 相對路徑  $ cd ../../usr/local/bin

 

提示:在進行目錄切換的過程當中請多使用 Tab 鍵自動補全,可避免輸入錯誤,連續按兩次Tab能夠顯示所有候選結果。

15)文件操做

使用 touch 命令建立空白文件,其主要是來更改已有文件的時間戳的(如最近訪問時間,最近修改時間),但其在不加任何參數的狀況下,只指定一個文件名,則能夠建立一個爲指定文件名的空白文件(不會覆蓋已有同名文件),也能夠同時指定該文件的時間戳。

建立名爲mytest的空白文件:

新建目錄:建立名爲"mydir"的空目錄:$ mkdir mydir

使用 -p 參數,同時建立父目錄(若是不存在該父目錄),以下咱們同時建立一個多級目錄(這在有時候安裝軟件,配置安裝路徑時很是有用):

 

複製文件:cp命令

複製目錄:果直接使用cp命令,複製一個目錄的話,會出現以下錯誤:

 

要成功複製目錄須要加上-r或者-R參數,表示遞歸複製:$ cp -r father family

刪除文件:$ rm test

強制刪除:$ rm -f test

 

刪除目錄:$rm -r family

移動文件:mv 源目錄文件 目的目錄

文件重命名:mv 舊的文件名 新的文件名

批量重命名:

# 使用通配符批量建立 5 個文件

$ touch file{1..5}.txt

# 批量將這 5 個後綴爲 .txt 的文本文件重命名爲以 .c 爲後綴的文件

$ rename 's/\.txt/\.c/' *.txt

# 批量將這 5 個文件,文件名改成大寫

$ rename 'y/a-z/A-Z/' *.c

16)查看文件

使用cat,tac和nl命令查看文件:這兩個命令都是用來打印文件內容到標準輸出(終端),其中cat爲正序顯示,tac倒序顯示。
使用more和less命令分頁查看文件。
使用head和tail命令查看文件

17)召喚「眼睛」

xeyes

放在後臺:$ nohup xeyes &

 

18)變量

使用declare命令建立一個變量名爲 tmp 的變量:$ declare tmp
其實也能夠不用 declare 預聲明一個變量,直接即用即建立,這裏只是告訴你 declare 的做用,這在建立其它指定類型的變量(如數組)時會用到。
使用=號賦值運算符爲變量 tmp 賦值爲 shiyanlou:$ tmp=shiyanlou
讀取變量的值,使用echo命令和$符號($符號用於表示引用一個變量的值,初學者常常會忘記輸入):$ echo $tmp
 
注意:關於變量名,並非任何形式的變量名都是可用的,變量名只能是英文字母,數字或者下劃線,且不能以數字做爲開頭。

19)環境變量

你能夠更直觀的使用vimdiff工具比較一下它們之間的差異:
$ temp=shiyanlou
$ export temp_env=shiyanlou
$ env|sort>env.txt
$ export|sort>export.txt
$ set|sort>set.txt
上述操做將命令輸出經過管道|使用sort命令排序,再重定向到對象文本文件中。
$ vimdiff env.txt export.txt set.txt
 
使用vimdiff工具比較導出的幾個文件的內容。
關於環境變量,能夠簡單的理解成在當前進程的子進程是否有效,有效則爲環境變量,不然不是(有些人也將全部變量統稱爲環境變量,只是以全局環境變量和局部環境變量進行區分,咱們只要理解它們的實質區別便可)。咱們這裏用export命令來體會一下,先在 Shell 中設置一個變量temp=shiyanlou,而後再新建立一個子 Shell 查看temp變量的值:
注意:爲了與普通變量區分,一般咱們習慣將環境變量名設爲大寫

20)命令的查找路徑與順序

變量修改

變量的修改有如下幾種方式:

變量設置方式

說明

${變量名#匹配字串}

從頭向後開始匹配,刪除符合匹配字串的最短數據

${變量名##匹配字串}

從頭向後開始匹配,刪除符合匹配字串的最長數據

${變量名%匹配字串}

從尾向前開始匹配,刪除符合匹配字串的最短數據

${變量名%%匹配字串}

從尾向前開始匹配,刪除符合匹配字串的最長數據

${變量名/舊的字串/新的字串}

將符合舊字串的第一個字串替換爲新的字串

${變量名//舊字串/新的字串}

將符合舊字串的所有字串替換爲新的字串

好比要修改咱們前面添加到 PATH 的環境變量。爲了不操做失誤致使命令找不到,咱們先將 PATH 賦值給一個新的自定義變量 path:

$ path=$PATH

$ echo $path

$ path=${path%/home/shiyanlou/mybin}

# 或使用通配符,*表示任意多個任意字符

$ path=${path%*/mybin}

變量刪除

可使用unset命令刪除一個環境變量:$ unset temp

21)搜索文件

與搜索相關的命令經常使用的有以下幾個whereis,which,find,locate

 

-mtime n: n 爲數字,表示爲在n天以前的」一天以內「修改過的文件

-mtime +n: 列出在n天以前(不包含n天自己)被修改過的文件

-mtime -n: 列出在n天以前(包含n天自己)被修改過的文件

newer file: file爲一個已存在的文件,列出比file還要新的文件名

列出 home 目錄中,當天(24 小時以內)有改動的文件:

$ find ~ -mtime 0

列出用戶家目錄下比Code文件夾新的文件:

$ find ~ -newer /home/shiyanlou/Code

 

22)「數字雨」

 

23)文件打包和解壓縮

zip壓縮打包程序

  • 使用zip打包文件夾:

$ zip -r -q -o shiyanlou.zip /home/shiyanlou

$ du -h shiyanlou.zip

$ file shiyanlou.zip

  • 建立加密zip包

使用-e參數能夠建立加密壓縮包:

$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou

使用unzip命令解壓縮zip文件

將shiyanlou.zip解壓到當前目錄:$ unzip shiyanlou.zip

使用安靜模式,將文件解壓到指定目錄:

$ unzip -q shiyanlou.zip -d ziptest

 

24)文件系統操做與管理

1.查看磁盤和目錄的容量

使用 df 命令查看磁盤的容量

$ df 

在實驗樓的環境中你將看到以下的輸出內容:

但在實際的物理主機上會更像這樣:

cowsay命令,可讓你在終端裏以一種動物說話的形式打印出一段話。

# 安裝 $ sudo apt-get install cowsay # 默認是一隻牛 $ cowsay hello shiyanlou # 加上'-l'參數打印全部支持的動物(其實不僅是動物)種類 $ cowsay -l # 使用'-f'參數選擇動物種類 $ cowsay -f elephant hello shiyanlou # 此外它還能夠結合咱們以前的做業講過的 fortune 命令一塊兒使用 $ fortune | cowsay -f daemon 

(25)順序執行多條命令

一般狀況下,咱們每次只能在終端輸入一條命令,按下回車執行,執行完成後,咱們再輸入第二條命令,而後再按回車執行…… 你可能會遇到以下使用場景:我須要使用apt-get安裝一個軟件,而後安裝完成後當即運行安裝的軟件(或命令工具),又恰巧你的主機才更換的軟件源尚未更新軟件列表(好比以前咱們的環境中,每次從新開始實驗就得sudo apt-get update,如今已經沒有這個問題了),那麼你可能會有以下一系列操做:

$ sudo apt-get update # 等待——————————而後輸入下面的命令 $ sudo apt-get install some-tool # 等待——————————而後輸入下面的命令 $ some-tool 

這時你可能就會想要是我能夠一次性輸入完,讓它本身去一次執行各命令就行了,這就是咱們這一小節要解決的問題。

簡單的順序執行你可使用;來完成,好比上述操做你能夠:

$ sudo apt-get update;sudo apt-get install some-tool;some-tool # 讓它本身運行

(26)有選擇的執行命令

關於上面的操做,不知你有沒有思考過一個問題,若是咱們在讓它自動順序執行命令時,前面的命令執行不成功,然後面的命令又依賴與上一條命令的結果,那麼就會形成花了時間,最終卻獲得一個錯誤的結果,並且有時候直觀的看你還沒法判斷結果是否正確。那麼咱們須要可以有選擇性的來執行命令,好比上一條命令執行成功才繼續下一條,或者不成功又該作出其它什麼處理,好比咱們使用which來查找是否安裝某個命令,若是找到就執行該命令,不然什麼也不作(雖然這個操做沒有什麼實際意義,但可幫你更好的理解一些概念):

$ which cowsay>/dev/null && cowsay -f head-in ohch~

cut 命令,打印每一行的某一字段

打印/etc/passwd文件中以:爲分隔符的第1個字段和第6個字段分別表示用戶名和其家目錄:

$ cut /etc/passwd -d ':' -f 1,6 

打印/etc/passwd文件中每一行的前N個字符:

# 前五個(包含第五個) $ cut /etc/passwd -c -5 # 前五個以後的(包含第五個) $ cut /etc/passwd -c 5- # 第五個 $ cut /etc/passwd -c 5 # 2到5之間的(包含第五個) $ cut /etc/passwd -c 2-5

(27)sort 排序命令

這個命令前面咱們也是用過屢次,功能很簡單就是將輸入按照必定方式排序,而後再輸出,它支持的排序有按字典排序,數字排序,按月份排序,隨機排序,反轉排序,指定特定字段進行排序等等。

默認爲字典排序:

$ cat /etc/passswd | sort 

反轉排序:

$ cat /etc/passwd | sort -r 

按特定字段排序:

$ cat /etc/passwd | sort -t':' -k 3 

上面的-t參數用於指定字段的分隔符,這裏是以":"做爲分隔符;-k 字段號用於指定對哪個字段進行排序。這裏/etc/passwd文件的第三個字段爲數字,默認狀況下是一字典序排序的,若是要按照數字排序就要加上-n參數:

$ cat /etc/passwd | sort -t':' -k 3 -n

(28)文本處理命令

1.tr 命令

tr 命令能夠用來刪除一段文本信息中的某些文字。或者將其進行轉換。

使用方式:tr [option]...SET1 [SET2]

經常使用的選項有:

選項 說明
-d 刪除和set1匹配的字符,注意不是全詞匹配也不是按字符順序匹配
-s 去除set1指定的在輸入文本中連續並重復的字符

操做舉例:

# 刪除 "hello shiyanlou" 中全部的'o','l','h' $ echo 'hello shiyanlou' | tr -d 'olh' # 將"hello" 中的ll,去重爲一個l $ echo 'hello' | tr -s 'l' # 將輸入文本,所有轉換爲大寫或小寫輸出 $ cat /etc/passwd | tr '[:lower:]' '[:upper:]' # 上面的'[:lower:]' '[:upper:]'你也能夠簡單的寫做'[a-z]' '[A-Z]',固然反過來將大寫變小寫也是能夠的 

更多 tr 的使用,你可使用--help或者man tr得到。

2.col 命令

col 命令能夠將Tab換成對等數量的空格建,或反轉這個操做。

使用方式:

col [option] 

經常使用的選項有:

選項 說明
-x Tab轉換爲空格
-h 將空格轉換爲Tab(默認選項)

操做舉例:

# 查看 /etc/protocols 中的不可見字符,能夠看到不少 ^I ,這其實就是 Tab 轉義成可見字符的符號 $ cat -A /etc/protocols # 使用 col -x 將 /etc/protocols 中的 Tab 轉換爲空格,而後再使用 cat 查看,你發現 ^I 不見了 $ cat /etc/protocols | col -x | cat -A 

3.join命令

學過數據庫的用戶對這個應該不會陌生,這個命令就是用於將兩個文件中包含相同內容的那一行合併在一塊兒。

使用方式:

join [option]... file1 file2 

經常使用的選項有:

選項 說明
-t 指定分隔符,默認爲空格
-i 忽略大小寫的差別
-1 指明第一個文件要用哪一個字段來對比,,默認對比第一個字段
-2 指明第二個文件要用哪一個字段來對比,,默認對比第一個字段

操做舉例:

# 建立兩個文件 $ echo '1 hello' > file1 $ echo '1 shiyanlou' > file2 $ join file1 file2 # 將/etc/passwd與/etc/shadow兩個文件合併,指定以':'做爲分隔符 $ sudo join -t':' /etc/passwd /etc/shadow # 將/etc/passwd與/etc/group兩個文件合併,指定以':'做爲分隔符, 分別比對第4和第3個字段 $ sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group

4.paste命令

paste這個命令與join 命令相似,它是在不對比數據的狀況下,簡單地將多個文件合併一塊兒,以Tab隔開。

使用方式:

paste [option] file... 

經常使用的選項有:

選項 說明
-d 指定合併的分隔符,默認爲Tab
-s 不合併到一行,每一個文件爲一行

操做舉例:

$ echo hello > file1 $ echo shiyanlou > file2 $ echo www.shiyanlou.com > file3 $ paste -d ':' file1 file2 file3 $ paste -s file1 file2 file3 

 

(29)數據流重定向

下面咱們簡單的回顧一下咱們前面常常用到的兩個重定向操做:

$ echo 'hello shiyanlou' > redirect $ echo 'www.shiyanlou.com' >> redirect $ cat redirect 

固然前面沒有用到的<<<操做也是沒有問題的,如你理解的同樣,它們的區別在於重定向的方向不一致而已,>表示是從左到右,<右到左。

1.簡單的重定向

在更多瞭解 Linux 的重定向以前,咱們須要先知道一些基本的東西,前面咱們已經提到過 Linux 默認提供了三個特殊設備,用於終端的顯示和輸出,分別爲stdin(標準輸入,對應於你在終端的輸入),stdout(標準輸出,對應於終端的輸出),stderr(標準錯誤輸出,對應於終端的輸出)。

文件描述符 設備文件 說明
0 /dev/stdin 標準輸入
1 /dev/stdout 標準輸出
2 /dev/stderr 標準錯誤

文件描述符:文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核爲每個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者建立一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫每每會圍繞着文件描述符展開。可是文件描述符這一律念每每只適用於 UNIX、Linux 這樣的操做系統。

另外還有一個符號-,它能夠同時做爲前一個命令的。

咱們能夠這樣使用這些文件描述符:

默認使用終端的標準輸入做爲命令的輸入和標準輸出做爲命令的輸出

$ cat (按Ctrl+C退出) 

將cat的連續輸出(heredoc方式)重定向到一個文件

$ mkdir Documents
$ cat > Documents/test.c\~ <<EOF
#include <stdio.h> int main() { printf("hello world\n"); return 0; } EOF 

將一個文件做爲命令的輸入,標準輸出做爲命令的輸出

$ cat Documents/test.c\~ 

將echo命令經過管道傳過來的數據做爲cat命令的輸入,將標準輸出做爲命令的輸出

$ echo 'hi' | cat 

將echo命令的輸出從默認的標準輸出重定向到一個普通文件

$ echo 'hello shiyanlou' > redirect $ cat redirect 

初學者這裏要注意不要將管道和重定向混淆,管道默認是鏈接前一個命令的輸出到下一個命令的輸入,而重定向一般是須要一個文件來創建兩個命令的鏈接,你能夠仔細體會一下上述第三個操做和最後兩個操做的異同點。

2.標準錯誤重定向

重定向標準輸出到文件,這是一個很實用的操做,另外一個很實用的操做是將標準錯誤重定向,標準輸出和標準錯誤都被指向僞終端的屏幕顯示,因此咱們常常看到的一個命令的輸出一般是同時包含了標準輸出和標準錯誤的結果的。好比下面的操做:

# 使用cat 命令同時讀取兩個文件,其中一個存在,另外一個不存在 $ cat Documents/test.c\~ hello.c # 你能夠看到除了正確輸出了前一個文件的內容,還在末尾出現了一條錯誤信息 # 下面咱們將輸出重定向到一個文件,根據咱們前面的經驗,這裏將在看不到任何輸出了 $ cat Documents/test.c\~ hello.c > somefile

遺憾的是,這裏依然出現了那條錯誤信息,這正是由於如我上面說的那樣,標準輸出和標準錯誤雖然都指向終端屏幕,實際它們並不同。那有的時候咱們就是要能夠隱藏某些錯誤或者警告,那又該怎麼作呢。這就須要用到咱們前面講的文件描述符了:

# 將標準錯誤重定向到標準輸出,再將標準輸出重定向到文件,注意要將重定向到文件寫到前面 $ cat Documents/test.c\~ hello.c >somefile 2>&1 # 或者只用bash提供的特殊的重定向符號"&"將標準錯誤和標準輸出同時重定向到文件 $ cat Documents/test.c\~ hello.c &>somefilehell 

注意你應該在輸出重定向文件描述符前加上&,不然shell會當作重定向到一個文件名爲1的文件中

3.使用tee命令同時重定向到多個文件

常常你可能還有這樣的需求,除了將須要將輸出重定向到文件以外也須要將信息打印在終端,那麼你可使用tee命令來實現:

$ echo 'hello shiyanlou' | tee hello 

4.永久重定向

你應該能夠看出咱們前面的重定向操做都只是臨時性的,即只對當前命令有效,那如何作到「永久」有效呢,好比在一個腳本中,你須要某一部分的命令的輸出所有進行重定向,難道要讓你在每一個命令上面加上臨時重定向的操做嘛,固然不須要,咱們可使用exec命令實現「永久」重定向。exec命令的做用是使用指定的命令替換當前的 Shell,及使用一個進程替換當前進程,或者指定新的重定向:

# 先開啓一個子 Shell $ zsh # 使用exec替換當前進程的重定向,將標準輸出重定向到一個文件 $ exec 1>somefile # 後面你執行的命令的輸出都將被重定向到文件中,直到你退出當前子shell,或取消exec的重定向(後面將告訴你怎麼作) $ ls $ exit $ cat somefile

5.建立輸出文件描述符

默認在 Shell 中能夠有9個打開的文件描述符,上面咱們使用了也是它默認提供的0,1,2號文件描述符,另外咱們還可使用3-8的文件描述符,只是它們默認沒有打開而已,你可使用下面命令查看當前 Shell 進程中打開的文件描述符:

$ cd /dev/fd/;ls -Al 

一樣使用exec命令能夠建立新的文件描述符:

$ zsh $ exec 3>somefile # 先進入目錄,再查看,不然你可能不能獲得正確的結果,而後再回到上一次的目錄 $ cd /dev/fd/;ls -Al;cd - # 注意下面的命令>與&之間不該該有空格,若是有空格則會出錯 $ echo "this is test" >&3 $ cat somefile $ exit

6.關閉文件描述符

如上面咱們打開的3號文件描述符,可使用以下操做將它關閉:

$ exec 3>&- $ cd /dev/fd;ls -Al;cd - 

7.徹底屏蔽命令的輸出

在 Linux 中有一個被成爲「黑洞」的設備文件,因此導入它的數據都將被「吞噬」。

在類 UNIX 系統中,/dev/null,或稱空設備,是一個特殊的設備文件,它一般被用於丟棄不須要的輸出流,或做爲用於輸入流的空文件,這些操做一般由重定向完成。讀取它則會當即獲得一個EOF。

咱們能夠利用設個/dev/null屏蔽命令的輸出:

$ cat Documents/test.c\~ nefile 1>/dev/null 2>&1 

向上面這樣的操做將使你得不到任何輸出結果。

8.使用 xargs 分割參數列表

xargs 是一條 UNIX 和類 UNIX 操做系統的經常使用命令。它的做用是將參數列表轉換成小塊分段傳遞給其餘命令,以免參數列表過長的問題。

這個命令在有些時候十分有用,特別是當用來處理產生大量輸出結果的命令如 find,locate 和 grep 的結果,詳細用法請參看 man 文檔。

$ cut -d: -f1 < /etc/passwd | sort | xargs echo 

上面這個命令用於將/etc/passwd文件按:分割取第一個字段排序後,使用echo命令生成一個列表。

(30)正則表達式

正則表達式,又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法(英語:Regular Expression,在代碼中常簡寫爲 regex、regexp 或 RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。

許多程序設計語言都支持利用正則表達式進行字符串操做。例如,在 Perl 中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由 UNIX 中的工具軟件(例如sedgrep)普及開的。正則表達式一般縮寫成「regex」,單數有 regexp、regex,複數有 regexps、regexes、regexen。

1.基本語法:

一個正則表達式一般被稱爲一個模式(pattern),爲用來描述或者匹配一系列符合某個句法規則的字符串。

選擇

|豎直分隔符表示選擇,例如"boy|girl"能夠匹配"boy"或者"girl"

數量限定

數量限定除了咱們舉例用的*,還有+加號,?問號,.點號,若是在一個模式中不加數量限定符則表示出現一次且僅出現一次:

  • +表示前面的字符必須出現至少一次(1次或屢次),例如,"goo+gle",能夠匹配"gooogle","goooogle"等;
  • ?表示前面的字符最多出現一次(0次或1次),例如,"colou?r",能夠匹配"color"或者"colour";
  • *星號表明前面的字符能夠不出現,也能夠出現一次或者屢次(0次、或1次、或屢次),例如,「0*42」能夠匹配4二、04二、004二、00042等。

範圍和優先級

()圓括號能夠用來定義模式字符串的範圍和優先級,這能夠簡單的理解爲是否將括號內的模式串做爲一個總體。例如,"gr(a|e)y"等價於"gray|grey",(這裏體現了優先級,豎直分隔符用於選擇a或者e而不是gra和ey),"(grand)?father"匹配father和grandfather(這裏體驗了範圍,?將圓括號內容做爲一個總體匹配)。

語法(部分)

正則表達式有多種不一樣的風格,下面列舉一些經常使用的做爲 PCRE 子集的適用於perlpython編程語言及grepegrep的正則表達式匹配規則:(因爲markdown表格解析的問題,下面的豎直分隔符用全角字符代替,實際使用時請換回半角字符)

PCRE(Perl Compatible Regular Expressions中文含義:perl語言兼容正則表達式)是一個用 C 語言編寫的正則表達式函數庫,由菲利普.海澤(Philip Hazel)編寫。PCRE是一個輕量級的函數庫,比Boost 之類的正則表達式庫小得多。PCRE 十分易用,同時功能也很強大,性能超過了 POSIX 正則表達式庫和一些經典的正則表達式庫。

字符 描述
\ 將下一個字符標記爲一個特殊字符、或一個原義字符。例如,「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」範圍內的任意字符。

優先級

優先級爲從上到下從左到右,依次下降:

運算符 說明
\ 轉義符
(), (?:), (?=), [] 括號和中括號
*、+、?、{n}、{n,}、{n,m} 限定符
^、$、\任何元字符 定位點和序列
 選擇

 

2、grep模式匹配命令

上面空談了那麼多正則表達式的內容也並無說起具體該如何使用它,實在枯燥,若是說正則表達式是一門武功話,那它也只能算得上一些口訣招式罷了,要把它真正練起來還得須要一些兵器在手才行,這裏咱們要介紹的grep命令以及後面要講的sed,awk這些就該算做是這樣的兵器了。

1.基本操做

grep命令用於打印輸出文本中匹配的模式串,它使用正則表達式做爲模式匹配的條件。grep支持三種正則表達式引擎,分別用三個參數指定:

參數 說明
-E POSIX擴展正則表達式,ERE
-G POSIX基本正則表達式,BRE
-P Perl正則表達式,PCRE

不過在你沒學過perl語言的大多數狀況下你將只會使用到EREBRE,因此咱們接下來的內容都不會討論到PCRE中特有的一些正則表達式語法(它們之間大部份內容是存在交集的,因此你不用擔憂會遺漏多少重要內容)

在經過grep命令使用正則表達式以前,先介紹一下它的經常使用參數:

參數 說明
-b 將二進制文件做爲文原本進行匹配
-c 統計以模式匹配的數目
-i 忽略大小寫
-n 顯示匹配文本所在行的行號
-v 反選,輸出不匹配行的內容
-r 遞歸匹配查找
-A n n爲正整數,表示after的意思,除了列出匹配行以外,還列出後面的n行
-B n n爲正整數,表示before的意思,除了列出匹配行以外,還列出前面的n行
--color=auto 將輸出中的匹配項設置爲自動顏色顯示

 

 

2.使用正則表達式

使用基本正則表達式,BRE

  • 位置

查找/etc/group文件中以"shiyanlou"爲開頭的行

$ grep 'shiyanlou' /etc/group $ grep '^shiyanlou' /etc/group
  • 數量
# 將匹配以'z'開頭以'o'結尾的全部字符串 $ echo 'zero\nzo\nzoo' | grep 'z.*o' # 將匹配以'z'開頭以'o'結尾,中間包含一個任意字符的字符串 $ echo 'zero\nzo\nzoo' | grep 'z.o' # 將匹配以'z'開頭,以任意多個'o'結尾的字符串 $ echo 'zero\nzo\nzoo' | grep 'zo*' 

注意:其中\n爲換行符

  • 選擇
# grep默認是區分大小寫的,這裏將匹配全部的小寫字母 $ echo '1234\nabcd' | grep '[a-z]' # 將匹配全部的數字 $ echo '1234\nabcd' | grep '[0-9]' # 將匹配全部的數字 $ echo '1234\nabcd' | grep '[[:digit:]]' # 將匹配全部的小寫字母 $ echo '1234\nabcd' | grep '[[:lower:]]' # 將匹配全部的大寫字母 $ echo '1234\nabcd' | grep '[[:upper:]]' # 將匹配全部的字母和數字,包括0-9,a-z,A-Z $ echo '1234\nabcd' | grep '[[:alnum:]]' # 將匹配全部的字母 $ echo '1234\nabcd' | grep '[[:alpha:]]' 

 

下面包含完整的特殊符號及說明:

特殊符號 說明
[:alnum:] 表明英文大小寫字節及數字,亦即 0-9, A-Z, a-z
[:alpha:] 表明任何英文大小寫字節,亦即 A-Z, a-z
[:blank:] 表明空白鍵與 [Tab] 按鍵二者
[:cntrl:] 表明鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 表明數字而已,亦即 0-9
[:graph:] 除了空白字節 (空白鍵與 [Tab] 按鍵) 外的其餘全部按鍵
[:lower:] 表明小寫字節,亦即 a-z
[:print:] 表明任何能夠被列印出來的字節
[:punct:] 表明標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:] 表明大寫字節,亦即 A-Z
[:space:] 任何會產生空白的字節,包括空白鍵, [Tab], CR 等等
[:xdigit:] 表明 16 進位的數字類型,所以包括: 0-9, A-F, a-f 的數字與字節

注意:之因此要使用特殊符號,是由於上面的[a-z]不是在全部狀況下都管用,這還與主機當前的語系有關,即設置在LANG環境變量的值,zh_CN.UTF-8的話[a-z],即爲全部小寫字母,其它語系多是大小寫交替的如,"a A b B...z Z",[a-z]中就可能包含大寫字母。因此在使用[a-z]時請確保當前語系的影響,使用[:lower:]則不會有這個問題。

# 排除字符 $ echo 'geek|good' | grep '[^o]' 

注意:^放到中括號內爲排除字符,不然表示行首。

 

使用擴展正則表達式,ERE

要經過grep使用擴展正則表達式須要加上-E參數,或使用egrep

  • 數量
# 只匹配"zo" $ echo 'zero\nzo\nzoo' | grep -E 'zo{1}' # 匹配以"zo"開頭的全部單詞 $ echo 'zero\nzo\nzoo' | grep -E 'zo{1,}'
  • 選擇
# 匹配"www.shiyanlou.com"和"www.google.com" $ echo 'www.shiyanlou.com\nwww.baidu.com\nwww.google.com' | grep -E 'www\.(shiyanlou|google)\.com' # 或者匹配不包含"baidu"的內容 $ echo 'www.shiyanlou.com\nwww.baidu.com\nwww.google.com' | grep -Ev 'www\.baidu\.com'

(31)LINUX軟件包在線安裝

試想一下,平時咱們在使用 Windows 的時候,想要安裝一個軟件,咱們須要在網上去下載對應軟件的安裝包,接着安裝的時候就是不斷的去點擊下一步,這些流程想必你們已經經歷的無數回了,可是在 Linux 下,一個命令加回車,等待一下,軟件就安裝好了,這就是方便的在線安裝軟件的方式。在學習這種安裝方式以前有一點須要說明的是,在不一樣的linux發行版上面在線安裝方式會有一些差別包括使用的命令及它們的包管理工具,由於咱們的開發環境是基於ubuntu的,因此這裏咱們涉及的在線安裝方式將只適用於ubuntu發行版,或其它基於ubuntu的發行版如國內的ubuntukylin(優麒麟),ubuntu又是基於debian的發行版,它使用的是debian的包管理工具dpkg,因此一些操做也適用與debian。而在其它一些採用其它包管理工具的發行版如redhat,centos,fedora等將不適用(redhat和centos使用rpm)

1. 先體驗一下

好比咱們想安裝一個軟件,名字叫作 w3m(w3m是一個命令行的簡易網頁瀏覽器),那麼輸入以下命令:

$ sudo apt-get install w3m 

這樣的操做你應該在前面的章節中看到過不少次了,它就表示將會安裝一個軟件包名爲w3m的軟件

執行後的效果:

$ w3m www.shiyanlou.com/faq 

注意:若是你在安裝一個軟件以後,沒法當即使用Tab鍵補全這可命令,你能夠嘗試先執行source ~/.zshrc,而後你就可使用補全操做。

2. apt 包管理工具介紹

APT是Advance Packaging Tool(高級包裝工具)的縮寫,是Debian及其派生髮行版的軟件包管理器,APT能夠自動下載,配置,安裝二進制或者源代碼格式的軟件包,所以簡化了Unix系統上管理軟件的過程。APT最先被設計成dpkg的前端,用來處理deb格式的軟件包。如今通過APT-RPM組織修改,APT已經能夠安裝在支持RPM的系統管理RPM包。這個包管理器包含以 apt-開頭的的多個工具,如 apt-get apt-cache apt-cdrom 等,在Debian系列的發行版中使用。

當你在執行安裝操做時,首先apt-get 工具會在本地的一個數據庫中搜索關於 w3m 軟件的相關信息,並根據這些信息在相關的服務器上下載軟件安裝,這裏你們可能會一個疑問:既然是在線安裝軟件,爲啥會在本地的數據庫中搜索?要解釋這個問題就得提到幾個名詞了:

  • 軟件源鏡像服務器
  • 軟件源

咱們須要按期從服務器上下載一個軟件包列表,使用 sudo apt-get update 命令來保持本地的軟件包列表是最新的(有時你也須要手動執行這個操做,好比更換了軟件源),而這個表裏會有軟件依賴信息的記錄,對於軟件依賴,我舉個例子:咱們安裝 w3m 軟件的時候,而這個軟件須要 libgc1c2 這個軟件包才能正常工做,這個時候 apt-get 在安裝軟件的時候會一併替咱們安裝了,以保證 w3m 能正常的工做。

3.apt-get

apt-get使用各用於處理apt包的公用程序集,咱們能夠用它來在線安裝、卸載和升級軟件包等,下面列出一些apt-get包含的經常使用的一些工具:

工具 說明
install 其後加上軟件包名,用於安裝一個軟件包
update 從軟件源鏡像服務器上下載/更新用於更新本地軟件源的軟件包列表
upgrade 升級本地可更新的所有軟件包,但存在依賴問題時將不會升級,一般會在更新以前執行一次update
dist-upgrade 解決依賴關係並升級(存在必定危險性)
remove 移除已安裝的軟件包,包括與被移除軟件包有依賴關係的軟件包,但不包含軟件包的配置文件
autoremove 移除以前被其餘軟件包依賴,但如今再也不被使用的軟件包
purge 與remove相同,但會徹底移除軟件包,包含其配置文件
clean 移除下載到本地的已經安裝的軟件包,默認保存在/var/cache/apt/archives/
autoclean 移除已安裝的軟件的舊版本軟件包

下面是一些apt-get經常使用的參數:

參數 說明
-y 自動迴應是否安裝軟件包的選項,在一些自動化安裝腳本中使用這個參數將十分有用
-s 模擬安裝
-q 靜默安裝方式,指定多個q或者-q=#,#表示數字,用於設定靜默級別,這在你不想要在安裝軟件包時屏幕輸出過多時頗有用
-f 修復損壞的依賴關係
-d 只下載不安裝
--reinstall 從新安裝已經安裝但可能存在問題的軟件包
--install-suggests 同時安裝APT給出的建議安裝的軟件包

4.安裝軟件包

關於安裝,如前面演示的同樣你只須要執行apt-get install <軟件包名>便可,除了這一點,你還應該掌握的是如何從新安裝軟件包。 不少時候咱們須要從新安裝一個軟件包,好比你的系統被破壞,或者一些錯誤的配置致使軟件沒法正常工做。

你可使用以下方式從新安裝:

$ sudo apt-get --reinstall install w3m 

另外一個你須要掌握的是,如何在不知道軟件包完整名的時候進行安裝。一般咱們是使用Tab鍵補全軟件包名,後面會介紹更好的方法來搜索軟件包。有時候你須要同時安裝多個軟件包,你還可使用正則表達式匹配軟件包名進行批量安裝。

5.軟件升級

# 更新軟件源 $ sudo apt-get update # 升級沒有依賴問題的軟件包 $ sudo apt-get upgrade # 升級並解決依賴關係 $ sudo apt-get dist-upgrade 

6.卸載軟件

# 不保留配置文件的移除 $ sudo apt-get purge w3m # 或者 sudo apt-get --purge remove # 移除再也不須要的被依賴的軟件包 $ sudo apt-get autoremove 

7.軟件搜索

當本身剛知道了一個軟件,想下載使用,須要確認軟件倉庫裏面有沒有,就須要用到搜索功能了,命令以下:

sudo apt-cache search softname1 softname2 softname3…… 

apt-cache 命令則是針對本地數據進行相關操做的工具,search 顧名思義在本地的數據庫中尋找有關 softname1 softname2 …… 相關軟件的信息。 

 

7、遇到的問題及解決

(提示:此處由學生填寫,是重要的得分點,要寫出遇到的問題和解決方案以及對出現問題的思考)

1.

嘗試了不少次,多是自己的問題,惟一成功的是man 1 ls:

 

2.不會使用toiletfilget

百度以後詳見學習過程(5)

3.建立用戶名輸入密碼沒有反應?

自己的設計就是不回顯的

4.

沒有跳到shiyanlou:~/

5.  

cd後面必定要有空格再加「~」或「..

6. 使用wq沒法退出

不知道如何解決?

 

 

 

 

8、其餘

(提示:此處由學生填寫,靈感,領悟等)

相關文章
相關標籤/搜索