別出心裁的Linux命令學習法html
一、Ubuntu快捷鍵正則表達式
CTRL+ALT+T:打開終端; CTRL+SHIFT+T:新建標籤頁; ALT+數字N:終端中切換到第N個標籤頁; Tab:終端中命令補全,當輸入某個命令的開頭的一部分後,按下Tab鍵就能夠獲得提示或者幫助完成; 上下鍵盤:切換命令歷史,剛輸入一個很長的命令,按上鍵就能夠恢復; CTRL+C:中斷程序運行。
二、Linux命令shell
命令格式:command [options] [arguments]
。vim
括號是可選的,有些命令不須要選項也不須要參數。選項(option)
是調整命令執行行爲的開關,選項不一樣決定了命令的顯示結果不一樣,參數(arugment)
是指命令的做用對象。瀏覽器
三、ls命令安全
ls
或ls .是
兩條等價的命令,顯示當前目錄的內容。這裏「.」就是參數,表示當前目錄,這個參數缺省能夠省略。bash
ls -a .
命令表示顯示當前目錄中的全部內容,包括隱藏文件和目錄。服務器
四、man命令網絡
man是manul的縮寫,咱們能夠經過man man
來查看man的幫助。app
其中,1,2,3是咱們學習的重點:
1是普通的Linux命令 2是系統調用,操做系統的提供的服務接口 3是庫函數,C語言中的函數
多關鍵字查找:man -k key1 | grep key2 | grep key3 | ...
man -k
等價的命令apropos
,使用man -k
找到命令後,能夠用man -f cmd
查看命令的基本功能。
man -f
等價於whatis
五、 cheat 命令
cheat命令是在GNU通用公共許可證下,爲Linux命令行用戶發行的交互式備忘單應用程序。它提供顯示Linux命令使用案例,包括該命令全部的選項和簡短但尚可理解的功能。
六、其餘核心命令
find
:查找一個文件在系統中的什麼位置,能夠經過cheat find學習find命令。
locate
:神速版本的find(Windows下有個神器Everything和locate功能相似)。
grep
:能夠對文件全文檢索。經過grep -n main *.c
能夠快速找到main在哪一個C文件中並指出在第幾行。grep支持正則表達式,能夠經過cheat grep
學習grep命令。
whereis、which
:告訴你使用的命令工具裝在什麼地方。咱們在Linux下上網使用firefox瀏覽器,你們可使用whereis firefox
或更精確的使用which firefox
來看看結果。
apt-cache
:能夠在使用apt-get install
安裝一個程序時先找找軟件源的庫裏有沒有這個程序,有才能夠安裝。
Linux基礎
一、知識
元知識:造成構建解決問題的專業體系的深度思考力; 硬知識:給記憶形成大量的負擔,又耗費大量的時間記憶的知識; 軟知識:經驗知識。
Linux 基礎入門
一、Linux :一個操做系統。
二、操做系統:始於二十世紀 50 年代,當時的操做系統能運行批處理程序。批處理程序不須要用戶的交互,它從文件或者穿孔卡片讀取數據,而後輸出到另一個文件或者打印機。二十世紀六十年代初,交互式操做系統開始流行。它不只僅能夠交互,還能使多個用戶從不一樣的終端同時操做主機。這樣的操做系統被稱做分時操做系統,它的出現對批處理操做系統是個極大的挑戰。
三、重要人物:
Ken Thompson:C 語言之父和 UNIX 之父 Dennis Ritchie:C 語言之父和 UNIX 之父 Stallman:著名黑客,GNU 創始人,開發了 Emacs、gcc、bash shell Bill Joy:BSD 開發者 Tanenbaum:Minix 開發者 Linus Torvalds:Linux 之父,芬蘭赫爾辛基大學
四、Linux 與 Windows 的不一樣
(1)軟件支持:
Windows 平臺:數量和質量的優點,不過大部分爲收費軟件;由微軟官方提供重要支持和服務;
Linux 平臺:大都爲開源自由軟件,用戶能夠修改定製和再發布,因爲基本免費沒有資金支持,部分軟件質量和體驗欠缺;有全球全部的 Linux 開發者和自由軟件社區提供支持。
(2)安全性:
Windows 平臺:三天兩頭打補丁安裝系統安全更新,仍是會中病毒木馬;
Linux 平臺:相對來講確定比 Windows 平臺要更加安全,不用裝某殺毒,某毒霸。
(3)使用習慣:
Windows:普通用戶基本都是純圖形界面下操做使用,依靠鼠標和鍵盤完成一切操做,用戶上手容易入門簡單;
Linux:兼具圖形界面操做(須要使用帶有桌面環境的發行版)和徹底的命令行操做,能夠只用鍵盤完成一切操做,新手入門較困難,須要一些學習和指導(這正是咱們要作的事情),一旦熟練以後效率極高。
基本概念及操做
一、Terminal(終端)
終端(Terminal)和控制檯(Console)是有區別的。使用[Ctrl]+[Alt]+[F1]~[F6]進行切換標籤,切換到其中一個終端後想要切換回圖形界面,你能夠按下[Ctrl]+[Alt]+[F7]來完成。
二、重要快捷鍵
(1)[Tab]:進行補全命令、補全目錄、補全命令參數。
(2)[Ctrl+c]:強行終止當前程序,並不會使終端退出。
(3)其餘經常使用快捷鍵:
Ctrl+d 鍵盤輸入結束或退出終端 Ctrl+s 暫定當前程序,暫停後按下任意鍵恢復運行 Ctrl+z 將當前程序放到後臺運行,恢復到前臺爲命令fg Ctrl+a 將光標移至輸入行頭,至關於Home鍵 Ctrl+e 將光標移至輸入行末,至關於End鍵 Ctrl+k 刪除從光標所在位置到行末 Alt+Backspace 向前刪除一個單詞 Shift+PgUp 將終端顯示向上滾動 Shift+PgDn 將終端顯示向下滾動
(4)方向上鍵:恢復你以前輸入過的命令。
(5)通配符:主要有星號(*)和問號(?),用來對對字符串進行模糊匹配(好比文件名,參數名)。Shell 經常使用通配符:
* 匹配 0 或多個字符 ? 匹配任意一個字符 [list] 匹配 list 中的任意單一字符 [!list] 匹配 除list 中的任意單一字符之外的字符 [c1-c2] 匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z] {string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串 {c2..c2} 匹配 c1-c2 中所有字符 如{1..10}
三、做業:能夠輸出圖形字符的命令banner
先使用以下命令安裝:$ sudo apt-get update
和$ sudo apt-get install sysvbanner
而後:$ banner shiyanlou
使用命令:$ printerbanner -w 50 A
,'-w'參數指定打印寬度
安裝toilet,figlet
用戶及文件權限管理
一、查看用戶命令:$ who am i
或者$ who mom likes
,輸出的第一列表示打開當前僞終端的用戶的用戶名(要查看當前登陸用戶的用戶名,去掉空格直接使用 whoami 便可),第二列的 pts/0 中 pts 表示僞終端,第三列則表示當前僞終端的啓動時間。
who 命令其它經常使用參數:
-a 打印能打印的所有 -d 打印死掉的進程 -m 同am i,mom likes -q 打印當前登陸用戶數及用戶名 -u 打印當前登陸用戶登陸信息 -r 打印運行等級
二、建立用戶:$ sudo adduser lilei
,這個命令不但能夠添加用戶到系統,同時也會默認爲新用戶建立 home 目錄。
切換登陸用戶:$ su -l lilei
,退出當前用戶跟退出終端同樣可使用 exit
命令或者使用快捷鍵 Ctrl+d
。
三、用戶組:
方法一:使用groups命令$ groups shiyanlou
,輸出結果冒號以前表示用戶,後面表示該用戶所屬的用戶組。
方法二:查看/etc/group文件$ cat /etc/group | sort
, cat
命令用於讀取指定文件的內容並打印到終端輸出,| sort
表示將讀取的文本進行一個字典排序再輸出。使用命令$ cat /etc/group | grep -E "shiyanlou"
過濾掉一些你不想看到的結果。
四、刪除用戶:$ sudo deluser lilei --remove-home
五、查看文件權限:
使用較長格式列出文件:$ ls -l
給 ls 加上 -lh 參數來更直觀的查看文件的大小
能夠同時使用 '-A' 和 '-l' 參數:$ ls -Al
顯示全部文件大小,並以普通人類能看懂的方式呈現:$ ls -AsSh
其中小 s 爲顯示文件大小,大 S 爲按文件大小排序
六、變動文件全部者命令:
$ cd /home/lilei $ ls iphone6 $ sudo chown shiyanlou iphone6 $ cp iphone6 /home/shiyanlou
七、修改文件權限:$ chmod 700 iphone6
或$ chmod go-rw iphone
,'g''o'還有'u',分別表示group,others,user,'+','-' 就分別表示增長和去掉相應的權限。
八、做業:添加一個用戶loutest,使用sudo建立文件/opt/forloutest,設置成用戶loutest能夠讀寫。
未完成,遇到的問題寫在下面了。
Linux 目錄結構及文件基本操做
一、FHS 標準:FHS 定義了兩層規範,第一層是/
下面的各個目錄應該要放什麼文件數據,第二層則是針對 /usr 及 /var 這兩個目錄的子目錄來定義。執行$ tree /
能夠顯示。
二、目錄路徑
cd
命令能夠切換目錄,.
表示當前目錄,..
表示上一級目錄,-
表示上一次所在目錄,~
一般表示當前用戶的"home"目錄。使用pwd
命令能夠獲取當前所在路徑(絕對路徑)。
三、新建
新建空白文件:$ touch test
,新建目錄:$ mkdir mydir
使用 -p
參數,同時建立父目錄(若是不存在該父目錄),以下咱們同時建立一個多級目錄:$ mkdir -p father/son/grandson
四、複製
使用cp
(copy)命令複製一個文件或目錄到指定目錄:$ cp test father/son/grandson
複製目錄:$ cp -r father family
五、刪除
刪除一個文件或目錄:$ rm test
,使用-f參數$ rm -f test
能夠強制刪除。
刪除目錄:$ rm -r family
六、移動文件
使用mv
(move or rename files)命令,移動文件(剪切)。將文件"file1"移動到"Documents"目錄mv 源目錄文件 目的目錄
:$ mkdir Documents
和$ mv file1 Documents
。
七、重命名文件
將文件"file1"重命名爲"myfile"mv 舊的文件名 新的文件名
:$ mv file1 myfile
批量重命名:$ rename 's/\.txt/\.c/' *.txt
八、查看文件
使用cat,tac和nl命令查看文件,其中cat爲正序顯示,tac倒序顯示,nl命令添加行號並打印。
使用more和less命令能夠分頁查看文件
使用head和tail命令能夠查看文件
使用file命令能夠查看文件的類型:$ file /bin/ls
九、編輯文件
在 Linux 下面編輯文件一般咱們會直接使用專門的命令行編輯器,輸入$ vimtutor
命令便可開始。
十、做業:召喚一雙眼睛動畫
輸入命令:$ xeyes
放到後臺運行:$ nohup xeyes &
環境變量與文件查找
一、建立變量:$ declare tmp
,賦值變量:$ tmp=shiyanlou
,讀取變量值:$ echo $tmp
,刪除變量:$ unset temp
二、變量修改:
${變量名#匹配字串} 從頭向後開始匹配,刪除符合匹配字串的最短數據 ${變量名##匹配字串} 從頭向後開始匹配,刪除符合匹配字串的最長數據 ${變量名%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最短數據 ${變量名%%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最長數據 ${變量名/舊的字串/新的字串} 將符合舊字串的第一個字串替換爲新的字串 ${變量名//舊的字串/新的字串} 將符合舊字串的所有字串替換爲新的字串
三、搜索文件命令:whereis簡單快速$whereis who
,locate快而全$ locate /etc/sh
,which小而精$ which man
,find精而細$ find /etc/ -name interfaces
四、做業:實現「數字雨」
安裝cmatrix
修改終端的主題配色爲黑底綠字
文件打包與解壓縮
一、zip
二、rar
三、tar
四、做業:創造「火爐」
文件系統操做與磁盤管理
一、查看磁盤和目錄的容量:使用df
命令查看磁盤的容量,使用 du
命令查看目錄的容量,-d
參數指定查看目錄的深度
二、磁盤管理:
建立虛擬磁盤:dd命令用於轉換和複製文件,命令行選項格式爲選項=值
,dd默認從標準輸入中讀取,並寫入到標準輸出中,但能夠用選項if(input file,輸入文件)和of(output file,輸出文件)改變。
格式化磁盤:$ sudo mkfs.ext4 virtual.img
掛載磁盤到目錄樹:$ mount -o loop -t ext4 virtual.img /mnt
卸載已掛載磁盤:$ sudo umount /mnt
磁盤分區:查看$ sudo fdisk -l
,進入$ sudo fdisk virtual.img
三、做業:使用cowsay命令,可讓你在終端裏以一種動物說話的形式打印出一段話。
Linux下的幫助命令
一、內建命令與外部命令
內建命令:其實是 shell 程序的一部分,其中包含的是一些比較簡單的 Linux 系統命令,這些命令是寫在bash源碼的builtins裏面的,並由 shell 程序識別並在 shell 程序內部完成運行,一般在 Linux 系統加載運行時 shell 就被加載並駐留在系統內存中。並且解析內部命令 shell 不須要建立子進程,所以其執行速度比外部命令快。好比:history、cd、exit 等等。
外部命令:是 Linux 系統中的實用程序部分,由於實用程序的功能一般都比較強大,因此其包含的程序量也會很大,在系統加載時並不隨系統一塊兒被加載到內存中,而是在須要時纔將其調用內存。雖然其不包含在 shell 中,可是其命令執行過程是由 shell 程序控制的。外部命令是在 Bash 以外額外安裝的,一般放在/bin,/usr/bin,/sbin,/usr/sbin等等。好比:ls、vi等。
type
命令能夠區分命令是內建的仍是外部的。
二、幫助命令
(1)help 命令:用於顯示 shell 內建命令的簡要幫助信息。
(2)man 命令:獲得的內容比用 help 更多更詳細,並且 man 沒有內建與外部命令的區分。
(3)info 命令:是 GNU 的超文本幫助系統,可以更完整的顯示出 GNU 信息。Linux任務計劃crontab
crontab 命令常見於 Unix 和類 Unix 的操做系統之中(Linux 就屬於類 Unix 操做系統),用於設置週期性被執行的指令。
啓動 rsyslog,以便咱們能夠經過日誌中的信息來了解咱們的任務是否真正的被執行了。
經過 crontab 命令,咱們能夠在固定的間隔時間執行指定的系統指令或 shell script 腳本。時間間隔的單位能夠是分鐘、小時、日、月、周的任意組合。命令執行順序控制與管道
一、順序執行
簡單的順序執行你可使用;
來完成:$ sudo apt-get update;sudo apt-get install some-tool;some-tool
二、有選擇的執行
&&
表示若是前面的命令執行結果(不是表示終端輸出的內容,而是表示命令執行狀態的結果)返回0則執行後面的,不然不執行。||
在這裏就是與&&相反的控制效果,當上一條命令執行結果爲≠0($?≠0)時則執行它後面的命令。
三、管道
$ ls -al /etc | less
命令,經過管道將前一個命令(ls)的輸出做爲下一個命令(less)的輸入,而後就能夠一行一行地看。
cut 命令,打印以:
爲分隔符的第1個字段和第6個字段分別表示用戶名和其目錄:$ cut /etc/passwd -d ':' -f 1,6
grep 命令,在文本中或 stdin 中查找匹配字符串:$ grep -rnI "shiyanlou" ~
命令,搜索目錄下全部包含"shiyanlou"的全部文本文件,並顯示出如今文本中的行號。-r 參數表示遞歸搜索子目錄中的文件,-n表示打印匹配項行號,-I表示忽略二進制文件。
wc 命令,統計並輸出一個文件中行、單詞和字節的數目。
sort 排序命令,將輸入按照必定方式排序,而後再輸出,它支持的排序有按字典排序,數字排序,按月份排序,隨機排序,反轉排序,指定特定字段進行排序。
uniq 去重命令,用於過濾或者輸出重複行。
四、做業:安裝aview和imagemagick,而後用asciiview命令顯示圖片
未完成,使用man
命令查詢asciiview的使用方法並結合網上的一些教程操做後出現問題,在問題中提出。簡單的文本處理
一、tr 命令:用來刪除一段文本信息中的某些文字或者將其進行轉換。
經常使用的選項:
-d 刪除和set1匹配的字符,注意不是全詞匹配也不是按字符順序匹配 -s 去除set1指定的在輸入文本中連續並重復的字符
二、col 命令:能夠將Tab換成對等數量的空格建,或反轉這個操做。
經常使用的選項:
-x 將Tab轉換爲空格 -h 將空格轉換爲Tab(默認選項)
三、join命令:用於將兩個文件中包含相同內容的那一行合併在一塊兒。
經常使用的選項:
-t 指定分隔符,默認爲空格 -i 忽略大小寫的差別 -1 指明第一個文件要用哪一個字段來對比,,默認對比第一個字段 -2 指明第二個文件要用哪一個字段來對比,,默認對比第一個字段
四、paste命令:與join 命令相似,它是在不對比數據的狀況下,簡單地將多個文件合併一塊兒,以Tab隔開。
經常使用的選項:
-d 指定合併的分隔符,默認爲Tab -s 不合併到一行,每一個文件爲一行
五、做業:安裝小蜜蜂遊戲
數據流重定向
一、簡單的重定向
stdin(標準輸入,對應於你在終端的輸入),stdout(標準輸出,對應於終端的輸出),stderr(標準錯誤輸出,對應於終端的輸出)。
將一個文件做爲命令的輸入,標準輸出做爲命令的輸出:$ cat Documents/test.c
將echo命令經過管道傳過來的數據做爲cat命令的輸入,將標準輸出做爲命令的輸出:$ echo 'hi' | cat
將echo命令的輸出從默認的標準輸出重定向到一個普通文件:$ echo 'hello shiyanlou' > redirect
和$ cat redirect
二、標準錯誤重定向:$ cat Documents/test.c hello.c >somefile 2>&1
三、使用tee命令同時重定向到多個文件:$ echo 'hello shiyanlou' | tee hello
四、永久重定向:$ exec 1>somefile
五、建立輸出文件描述符:$ cd /dev/fd/;ls -Al
,關閉文件描述符:$ exec 3>&-
和$ cd /dev/fd;ls -Al;cd -
六、徹底屏蔽命令的輸出:$ cat Documents/test.c nefile 1>/dev/null 2>&1
七、使用 xargs 分割參數列表:將參數列表轉換成小塊分段傳遞給其餘命令,以免參數列表過長的問題,$ cut -d: -f1 < /etc/passwd | sort | xargs echo
八、做業:創造彩色火焰
正則表達式基礎
一、正則表達式:又稱正規表示式、正規表示法、正規表達式、規則表達式、常規表示法(英語:Regular Expression,在代碼中常簡寫爲 regex、regexp 或 RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。
二、基本語法:
| 豎直分隔符表示選擇,例如"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(這裏體驗了範圍,?將圓括號內容做爲一個總體匹配)。
三、grep模式匹配命令:
grep命令用於打印輸出文本中匹配的模式串,它使用正則表達式做爲模式匹配的條件。grep支持三種正則表達式引擎,分別用三個參數指定:
-E POSIX擴展正則表達式,ERE -G POSIX基本正則表達式,BRE -P Perl正則表達式,PCRE
四、sed 流編輯器:
sed 命令基本格式:sed [參數]... [執行命令] [輸入文件]...
sed執行命令格式:$ sed -i 's/sad/happy/g' test #
五、awk文本處理語言:
AWK是一種優良的文本處理工具,Linux及Unix環境中現有的功能最強大的數據處理引擎之一
awk全部的操做都是基於pattern(模式)—action(動做)對來完成的,以下面的形式:$ pattern {action}
awk [-F fs] [-v var=value] [-f prog-file | 'program text'] [file...]
,其中-F參數用於預先指定前面提到的字段分隔符(還有其餘指定字段的方式) ,-v用於預先爲awk程序指定變量,-f參數用於指定awk命令要執行的程序文件,或者在不加-f參數的狀況下直接將程序語句放在這裏,最後爲awk須要處理的文本輸入,且能夠同時輸入多個文本文件。Linux 下軟件安裝
一、apt-get
命令:使用各用於處理apt包的公用程序集,咱們能夠用它來在線安裝、卸載和升級軟件包等
install 其後加上軟件包名,用於安裝一個軟件包 update 從軟件源鏡像服務器上下載/更新用於更新本地軟件源的軟件包列表 upgrade 升級本地可更新的所有軟件包,但存在依賴問題時將不會升級,一般會在更新以前執行一次update dist-upgrade 解決依賴關係並升級(存在必定危險性) remove 移除已安裝的軟件包,包括與被移除軟件包有依賴關係的軟件包,但不包含軟件包的配置文件 autoremove 移除以前被其餘軟件包依賴,但如今再也不被使用的軟件包 purge 與remove相同,但會徹底移除軟件包,包含其配置文件 clean 移除下載到本地的已經安裝的軟件包,默認保存在/var/cache/apt/archives/ autoclean 移除已安裝的軟件的舊版本軟件包
二、卸載軟件:sudo apt-get remove w3m
三、軟件搜索:sudo apt-cache search softname1 softname2 softname3……
四、做業:bb命令
一、做業「添加一個用戶loutest,使用sudo建立文件/opt/forloutest,設置成用戶loutest能夠讀寫。」,建立用戶後一直顯示文件不存在。
解決:未解決。
二、做業「將圖片調節成ASCII碼打印的樣子」,一直顯示圖片沒法打開。
解決:未解決。
三、安裝some-tool時說未發現軟件包。
解決:但安裝其它軟件時並無問題,因此初步判斷應該不是網絡問題。最終未解決。
四、磁盤分區時不成功,提示權限不夠。
解決:未解決。
五、複製繼承文件時提示沒有這個文件或目錄。
解決:我建立文件時在mydir中,可是命令中目的文件夾並無寫上mydir,加上後就解決了。
實驗樓內容實在是太多了,學習完後感受就是被塞了一腦殼東西,內容太多、重點又不明確致使並不能詳細記下具體的命令使用方法,也不能真正掌握。掌握這些命令須要時間和練習,我如今尚未掌握這些知識,後續會不斷鞏固練習以早日掌握的。