学一下Linux
0x01 基本概念及操作
一、
終端本質(zhì)上是對(duì)應(yīng)著 Linux 上的 /dev/tty 設(shè)備,Linux 的多用戶登陸就是通過不同的 /dev/tty 設(shè)備完成的,Linux 默認(rèn)提供了 6 個(gè)純命令行界面的 “terminal”(準(zhǔn)確的說這里應(yīng)該是 6 個(gè) virtual consoles)來讓用戶登錄,可以通過使用[Ctrl]+[Alt]+[F1]~[F6]進(jìn)行切換.
二、常用快捷鍵
(1) [Tab]
使用Tab鍵來進(jìn)行命令補(bǔ)全,Tab鍵一般是在字母Q旁邊,這個(gè)技巧給你帶來的最大的好處就是當(dāng)你忘記某個(gè)命令的全稱時(shí)可以只輸入它的開頭的一部分,然后按下Tab鍵就可以得到提示或者幫助完成。
不止補(bǔ)全命令,補(bǔ)全目錄、補(bǔ)全命令參數(shù)都是沒問題的。
(2)[Ctrl+c]
當(dāng)你在 Linux 命令行中無意輸入了一個(gè)不知道的命令,或者錯(cuò)誤地使用了一個(gè)命令,導(dǎo)致在終端里出現(xiàn)了你無法預(yù)料的情況,比如,屏幕上只有光標(biāo)在閃爍卻無法繼續(xù)輸入命令,或者不停地輸出一大堆你不想要的結(jié)果。這時(shí)候你就可以使用Ctrl+c鍵來強(qiáng)行終止當(dāng)前程序。
(3)其他快捷鍵:
Ctrl+d 鍵盤輸入結(jié)束或退出終端
Ctrl+s 暫停當(dāng)前程序,暫停后按下任意鍵恢復(fù)運(yùn)行
Ctrl+z 將當(dāng)前程序放到后臺(tái)運(yùn)行,恢復(fù)到前臺(tái)為命令fg
Ctrl+a 將光標(biāo)移至輸入行頭,相當(dāng)于Home鍵
Ctrl+e 將光標(biāo)移至輸入行末,相當(dāng)于End鍵
Ctrl+k 刪除從光標(biāo)所在位置到行末
Alt+Backspace 向前刪除一個(gè)單詞
Shift+PgUp 將終端顯示向上滾動(dòng)
Shift+PgDn 將終端顯示向下滾動(dòng)
(4)一些字符的含義
* 匹配 0 或多個(gè)字符
? 匹配任意一個(gè)字符
[list] 匹配 list 中的任意單一字符
[^list] 匹配 除list 中的任意單一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2} 匹配 c1-c2 中全部字符 如{1..10}
0x02 用戶及文件權(quán)限管理
一、用戶操作(以"lilei"為例)
$ sudo adduser lilei 創(chuàng)建用戶 $ su -l lilei 切換用戶 exit或Ctrl+d 注銷用戶 `$ sudo deluser lilei --remove-home` 刪除用戶二、查看用戶屬于哪個(gè)用戶組
方法一:groups
方法二:查看 /etc/group 文件
使用 usermod 命令可以為用戶添加用戶組,同樣使用該命令你必需有 root 權(quán)限,你可以直接使用 root 用戶為其它用戶添加用戶組,或者用其它已經(jīng)在 sudo 用戶組的用戶使用 sudo 命令獲取權(quán)限來執(zhí)行該命令。
三、ls命令
$ls -l
使用較長(zhǎng)格式列出文件
一個(gè)目錄同時(shí)具有讀權(quán)限和執(zhí)行權(quán)限才可以打開并查看內(nèi)部文件,而一個(gè)目錄要有寫權(quán)限才允許在其中創(chuàng)建其它文件
$ ls -A
顯示除了 .(當(dāng)前目錄)和 …(上一級(jí)目錄)之外的所有文件,包括隱藏文件(Linux 下以 . 開頭的文件為隱藏文件)。
當(dāng)然,你可以同時(shí)使用 -A 和 -l 參數(shù):$ ls -Al
$ ls -dl <目錄名>
查看某一個(gè)目錄的完整屬性,而不是顯示目錄里面的文件屬性
$ ls -AsSh
顯示所有文件大小,并以普通人類能看懂的方式呈現(xiàn):
其中小 s 為顯示文件大小,大 S 為按文件大小排序,若需要知道如何按其它方式排序,請(qǐng)使用“man”命令查詢。
四、變更文件所有者(chown)
假設(shè)目前是 lilei 用戶登錄,新建一個(gè)文件,命名為 “ iphone6 ”:
# 注意當(dāng)前的用戶必須是 lilei # 如果是 shiyanlou 用戶需要切換到 lilei(如果之前已經(jīng)刪除需要重新創(chuàng)建下) $ su lilei $ cd /home/lilei $ touch iphone6現(xiàn)在,換回到 shiyanlou 用戶身份,使用以下命令變更文件所有者為 shiyanlou :
# 需要切換到 shiyanlou 用戶執(zhí)行以下操作 $ cd /home/lilei $ ls iphone6 $ sudo chown shiyanlou iphone6五、修改文件權(quán)限(chmod)
1、方式一:二進(jìn)制方法:
為了演示,我先在文件里加點(diǎn)內(nèi)容:
$ echo "echo \"hello shiyanlou\"" > iphone6
然后修改權(quán)限:
$ chmod 600 iphone6
2、方式二:加減賦值操作
完成上述相同的效果,你可以:
$ chmod go-rw iphone6
g、o 還有 u 分別表示 group、others 和 user,+ 和 - 分別表示增加和去掉相應(yīng)的權(quán)限。
0x03 Linux 目錄結(jié)構(gòu)及文件基本操作
一、目錄路徑
使用 cd 命令可以切換目錄,在 Linux 里面使用 . 表示當(dāng)前目錄,.. 表示上一級(jí)目錄(注意,以 . 開頭的文件都是隱藏文件,可以使用 ls -a 命令查看隱藏文件), - 表示上一次所在目錄,~ 通常表示當(dāng)前用戶的 home 目錄。使用 pwd 命令可以獲取當(dāng)前所在路徑(絕對(duì)路徑)。
二、新建
1、新建空白文件
使用 touch 命令創(chuàng)建空白文件
2、新建目錄
使用 mkdir(make directories)命令可以創(chuàng)建一個(gè)空目錄,也可同時(shí)指定創(chuàng)建目錄的權(quán)限屬性。
創(chuàng)建名為“ mydir ”的空目錄:
使用 -p 參數(shù),同時(shí)創(chuàng)建父目錄(如果不存在該父目錄),如下我們同時(shí)創(chuàng)建一個(gè)多級(jí)目錄(這在安裝軟件、配置安裝路徑時(shí)非常有用):
$ mkdir -p father/son/grandson三、復(fù)制
使用 cp(copy)命令復(fù)制一個(gè)文件到指定目錄。
將之前創(chuàng)建的“ test ”文件復(fù)制到“ /home/shiyanlou/father/son/grandson”目錄中:
$ cp test father/son/grandson要成功復(fù)制目錄需要加上 -r 或者 -R 參數(shù),表示遞歸復(fù)制
四、刪除
1、刪除文件:使用 rm(remove files or directories)命令刪除一個(gè)文件。你如果想忽略只讀文件權(quán)限提示,直接刪除文件,可以使用 -f參數(shù)強(qiáng)制刪除:
2、刪除目錄:跟復(fù)制目錄一樣,要?jiǎng)h除一個(gè)目錄,也需要加上 -r 或 -R 參數(shù):
五、移動(dòng)文件與文件重命名
1、移動(dòng)文件
使用 mv(move or rename files)命令移動(dòng)文件(剪切)。將文件“file1 ”移動(dòng)到 Documents目錄:
mv 源目錄文件 目的目錄:
$ mkdir Documents $ touch file1 $ mv file1 Documents2、重命名文件
將文件“file1 ”重命名為“ myfile ”:
mv 舊的文件名 新的文件名:
$ mv file1 myfile六、查看文件
使用 cat,tac 和 nl 命令查看文件
前兩個(gè)命令都是用來打印文件內(nèi)容到標(biāo)準(zhǔn)輸出(終端),其中 cat 為正序顯示,tac 為倒序顯示。
可以加上 -n參數(shù)顯示行號(hào)
nl 命令,添加行號(hào)并打印,這是個(gè)比 cat -n 更專業(yè)的行號(hào)打印命令。
這里簡(jiǎn)單列舉它的常用的幾個(gè)參數(shù):
-b : 指定添加行號(hào)的方式,主要有兩種:-b a:表示無論是否為空行,同樣列出行號(hào)("cat -n"就是這種方式)-b t:只列出非空行的編號(hào)并列出(默認(rèn)為這種方式) -n : 設(shè)置行號(hào)的樣式,主要有三種:-n ln:在行號(hào)字段最左端顯示-n rn:在行號(hào)字段最右邊顯示,且不加 0-n rz:在行號(hào)字段最右邊顯示,且加 0 -w : 行號(hào)字段占用的位數(shù)(默認(rèn)為 6 位)more 和 less 就是用來"閱讀"一個(gè)文件的內(nèi)容的,比如說 man 手冊(cè)內(nèi)部就是使用的 less 來顯示內(nèi)容。
使用 more 命令打開 passwd 文件:
$ more passwd打開后默認(rèn)只顯示一屏內(nèi)容,終端底部顯示當(dāng)前閱讀的進(jìn)度。可以使用 Enter 鍵向下滾動(dòng)一行,使用 Space 鍵向下滾動(dòng)一屏,按下 h 顯示幫助,q 退出。
使用 head 和 tail 命令查看文件
這兩個(gè)命令,那些性子比較急的人應(yīng)該會(huì)喜歡,因?yàn)樗鼈円粋€(gè)是只查看文件的頭幾行(默認(rèn)為 10 行,不足 10 行則顯示全部)和尾幾行。還是拿 passwd 文件舉例,比如當(dāng)我們想要查看最近新增加的用戶,那么我們可以查看這個(gè) /etc/passwd 文件,不過我們前面也看到了,這個(gè)文件里面一大堆亂糟糟的東西,看起來實(shí)在費(fèi)神啊。因?yàn)橄到y(tǒng)新增加一個(gè)用戶,會(huì)將用戶的信息添加到 passwd 文件的最后,那么這時(shí)候我們就可以使用 tail 命令了:
甚至更直接的只看一行, 加上 -n 參數(shù),后面緊跟行數(shù):
$ tail -n 1 /etc/passwd六、查看文件類型
在 Linux 中文件的類型不是根據(jù)文件后綴來判斷的,我們通常使用 file 命令查看文件的類型:
$ file /bin/ls七、 搜索文件
與搜索相關(guān)的命令常用的有 whereis,which,find 和 locate
1、 whereis 簡(jiǎn)單快速
$ whereis who $ whereis find會(huì)看到 whereis find 找到了三個(gè)路徑,兩個(gè)可執(zhí)行文件路徑和一個(gè) man 在線幫助文件所在路徑,這個(gè)搜索很快,因?yàn)樗]有從硬盤中依次查找,而是直接從數(shù)據(jù)庫(kù)中查詢。
whereis只能搜索二進(jìn)制文件(-b),man 幫助文件(-m)和源代碼文件(-s)。如果想要獲得更全面的搜索結(jié)果可以使用 locate 命令。
2、 locate 快而全
通過/var/lib/mlocate/mlocate.db數(shù)據(jù)庫(kù)查找,不過這個(gè)數(shù)據(jù)庫(kù)也不是實(shí)時(shí)更新的,系統(tǒng)會(huì)使用定時(shí)任務(wù)每天自動(dòng)執(zhí)行updatedb命令更新一次,所以有時(shí)候你剛添加的文件,它可能會(huì)找不到,需要手動(dòng)執(zhí)行一次 updatedb 命令。它可以用來查找指定目錄下的不同文件類型,如查找 /etc 下所有以 sh 開頭的文件:
$ sudo apt-get update $ sudo apt-get install locate $ locate /etc/sh注意,它不只是在 /bin 目錄下查找,還會(huì)自動(dòng)遞歸子目錄進(jìn)行查找。
查找 /usr/share/ 下所有 jpg 文件:
$ locate /usr/share/\*.jpg注意要添加* 號(hào)前面的反斜杠轉(zhuǎn)義,否則會(huì)無法找到。
如果想只統(tǒng)計(jì)數(shù)目可以加上 -c 參數(shù),-i 參數(shù)可以忽略大小寫進(jìn)行查找,whereis 的 -b、-m、-s 同樣可以使用。
3、 which小而精
which 本身是 Shell 內(nèi)建的一個(gè)命令,我們通常使用 which 來確定是否安裝了某個(gè)指定的軟件,因?yàn)樗粡?PATH 環(huán)境變量指定的路徑中去搜索命令:
$ which man4、 find 精而細(xì)
find 應(yīng)該是這幾個(gè)命令中最強(qiáng)大的了,它不但可以通過文件類型、文件名進(jìn)行查找而且可以根據(jù)文件的屬性(如文件的時(shí)間戳,文件的權(quán)限等)進(jìn)行搜索。
這條命令表示去/etc/目錄下面 ,搜索名字叫做 interfaces 的文件或者目錄。這是 find 命令最常見的格式,千萬記住 find 的第一個(gè)參數(shù)是要搜索的地方:
$ sudo find /etc/ -name interfaces注意 find 命令的路徑是作為第一個(gè)參數(shù)的, 基本命令格式為
find [path] [option] [action] 。
0x04 壓縮與解壓
1、Linux上的壓縮
在講 Linux 上的壓縮工具之前,有必要先了解一下常見常用的壓縮包文件格式。在 Windows 上最常見的不外乎這兩種 *.zip,*.7z 后綴的壓縮文件。而在 Linux 上面常見的格式除了以上兩種外,還有 .rar,*.gz,*.xz,*.bz2,*.tar,*.tar.gz,*.tar.xz,*.tar.bz2,簡(jiǎn)單介紹如下:
*.zip zip 程序打包壓縮的文件
*.rar rar 程序壓縮的文件
*.7z 7zip 程序壓縮的文件
*.tar tar 程序打包,未壓縮的文件
*.gz gzip 程序(GNU zip)壓縮的文件
*.xz xz 程序壓縮的文件
*.bz2 bzip2 程序壓縮的文件
*.tar.gz tar 打包,gzip 程序壓縮的文件
*.tar.xz tar 打包,xz 程序壓縮的文件
*tar.bz2 tar 打包,bzip2 程序壓縮的文件
*.tar.7z tar 打包,7z 程序壓縮的文件
講了這么多種壓縮文件,不過我們一般只需要掌握幾個(gè)命令即可,包括 zip,tar
2、使用zip命令
(1)使用 zip 打包文件夾:
$ cd /home/shiyanlou $ zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop $ du -h shiyanlou.zip $ file shiyanlou.zip上面命令將目錄 /home/shiyanlou/Desktop 打包成一個(gè)文件,并查看了打包后文件的大小和類型。
-r 參數(shù)表示遞歸打包包含子目錄的全部?jī)?nèi)容,
-q 參數(shù)表示為安靜模式,即不向屏幕輸出信息,
-o,表示輸出文件,需在其后緊跟打包輸出文件名。
du 命令查看打包后文件的大小
(2)設(shè)置壓縮級(jí)別為 9 和 1(9 最大,1 最小),重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou/Desktop -x ~/*.zip $ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou/Desktop -x ~/*.zip這里添加了一個(gè)參數(shù)用于設(shè)置壓縮級(jí)別 -[1-9],1 表示最快壓縮但體積大,9 表示體積最小但耗時(shí)最久。
最后那個(gè) -x 是為了排除我們上一次創(chuàng)建的 zip 文件,否則又會(huì)被打包進(jìn)這一次的壓縮文件中,注意:這里只能使用絕對(duì)路徑,否則不起作用。
我們?cè)儆?du 命令分別查看默認(rèn)壓縮級(jí)別、最低、最高壓縮級(jí)別及未壓縮的文件的大小:
$ du -h -d 0 *.zip ~ | sort通過 man手冊(cè)可知:
h, --human-readable(顧名思義,增強(qiáng)可讀性) d, --max-depth(所查看文件的深度)這樣一目了然,你可以看到默認(rèn)壓縮級(jí)別應(yīng)該是最高的,效果很明顯,不過你在環(huán)境中操作之后看到的壓縮文件大小可能跟圖上的有些不同,因?yàn)橄到y(tǒng)在使用過程中,會(huì)隨時(shí)生成一些緩存文件在當(dāng)前用戶的家目錄中,這對(duì)于我們學(xué)習(xí)命令使用來說,是無關(guān)緊要的,可以忽略這些不同。
(3) 創(chuàng)建加密 zip 包
使用 -e 參數(shù)可以創(chuàng)建加密壓縮包:
注意: 關(guān)于 zip 命令,因?yàn)?Windows 系統(tǒng)與 Linux/Unix 在文本文件格式上的一些兼容問題,比如換行符(為不可見字符),在 Windows 為 CR+LF(Carriage-Return+Line-Feed:回車加換行),而在 Linux/Unix 上為 LF(換行),所以如果在不加處理的情況下,在 Linux 上編輯的文本,在 Windows 系統(tǒng)上打開可能看起來是沒有換行的。如果你想讓你在 Linux 創(chuàng)建的 zip 壓縮文件在 Windows 上解壓后沒有任何問題,那么你還需要對(duì)命令做一些修改:
$ zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop需要加上 -l 參數(shù)將 LF 轉(zhuǎn)換為 CR+LF 來達(dá)到以上目的。
2、 使用tar命令
在 Linux 上面更常用的是 tar工具,tar 原本只是一個(gè)打包工具,只是同時(shí)還是實(shí)現(xiàn)了對(duì) 7z、gzip、xz、bzip2 等工具的支持,這些壓縮工具本身只能實(shí)現(xiàn)對(duì)文件或目錄(單獨(dú)壓縮目錄中的文件)的壓縮,沒有實(shí)現(xiàn)對(duì)文件的打包壓縮,所以我們也無需再單獨(dú)去學(xué)習(xí)其他幾個(gè)工具,tar 的解壓和壓縮都是同一個(gè)命令,只需參數(shù)不同,使用比較方便。
下面先掌握 tar 命令一些基本的使用方式,即不進(jìn)行壓縮只是進(jìn)行打包(創(chuàng)建歸檔文件)和解包的操作。
(1)創(chuàng)建一個(gè) tar包:
$ cd /home/shiyanlou $ tar -cf shiyanlou.tar /home/shiyanlou/Desktop上面命令中,
-c 表示創(chuàng)建一個(gè) tar 包文件
-f 用于指定創(chuàng)建的文件名(注意文件名必須緊跟在 -f 參數(shù)之后,比如不能寫成 tar -fc shiyanlou.tar,可以寫成 tar -f shiyanlou.tar -c ~)
-v 參數(shù)以可視的方式輸出打包的文件。
上面會(huì)自動(dòng)去掉表示絕對(duì)路徑的 /,你也可以使用 -P 保留絕對(duì)路徑符。
(2)解包一個(gè)文件(-x 參數(shù))到指定路徑的已存在目錄(-C 參數(shù)):
$ mkdir tardir $ tar -xf shiyanlou.tar -C tardir(3)只查看,不解包文件 -t 參數(shù):
$ tar -tf shiyanlou.tar(4)保留文件屬性和跟隨鏈接(符號(hào)鏈接或軟鏈接),有時(shí)候我們使用 tar 備份文件當(dāng)你在其他主機(jī)還原時(shí)希望保留文件的屬性(-p 參數(shù))和備份鏈接指向的源文件而不是鏈接本身(-h 參數(shù)):
$ tar -cphf etc.tar /etc(5)對(duì)于創(chuàng)建不同的壓縮格式的文件,對(duì)于 tar來說是相當(dāng)簡(jiǎn)單的,需要的只是換一個(gè)參數(shù),這里我們就以使用 gzip 工具創(chuàng)建 *.tar.gz文件為例來說明。
我們只需要在創(chuàng)建 tar 文件的基礎(chǔ)上添加 -z 參數(shù),使用 gzip 來壓縮文件:
$ tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop解壓 *.tar.gz 文件:
$ tar -xzf shiyanlou.tar.gz所以要使用其它的壓縮工具創(chuàng)建或解壓相應(yīng)文件只需要更改一個(gè)參數(shù)即可:
| *.tar.gz | -z |
| *.tar.xz | -J |
| *tar.bz2 | -j |
tar 命令的參數(shù)很多,不過常用的就是上述這些,需要了解更多你可以查看 man 手冊(cè)獲取幫助。
總結(jié)
- 上一篇: MySQL无法启动,服务没有报告任何错误
- 下一篇: linux中rm件命令,Linux rm