1 linux的入門1.1 Linux的介紹2 VM和linux的安裝2.1 安裝vm和Centos2.1.1 基本說明2.1.2 CentOS安裝的步驟2.1.3 CentOS安裝技術難點 -> 網絡配置三種方式理解(難點)2.2 Centos終端的使用和聯網2.2.1 Centos自帶終端的使用2.2.2 在centos的火狐可以聯網,可以和外部的ip拼通3 linux的目錄結構3.1 linux目錄結構3.2 linux目錄機構的一覽圖3.3 對linux目錄結構的小結4 遠程登錄到linux服務器4.1 為什么需要遠程登錄linux4.2 遠程登錄Linux -> Xshell64.3 遠程上傳下載文件Xftp64.4 SecureCRT的安裝和使用5 vi和vim編輯器5.1 vi和vim的基本介紹5.2 vi和vim三種模式的切換5.3 vi和vim的快速入門小案例5.4 vi和vim的快捷鍵的使用6 開機、重啟和用戶登錄注銷6.1 關機&重啟命令6.1.1 常見的指令如下6.1.2 注意細節6.2 用戶的登錄和注銷6.2.1 基本介紹6.2.2 使用細節7 用戶管理7.1 linux的用戶和權限的關系示意圖7.2 基本介紹7.3 添加用戶7.4 指定/修改密碼7.5 刪除用戶7.6 查詢用戶信息指令7.7 切換用戶7.8 查看當前用戶/登錄用戶8 用戶組管理8.1 新增組8.2 刪除組8.3 增加用戶時直接指定用戶的家目錄和用戶組8.4 修改用戶所屬的用戶組8.5 用戶和組的相關文件9 實用指令9.1 運行級別9.2 指定運行級別9.2.1 CentOS 6X指定當前運行級別9.2.2 CentOS 7X指定運行級別9.3 面試題9.4 幫助指令9.5 文件和目錄相關的指令9.5.1 pwd指令9.5.2 ls指令9.5.3 cd指令9.5.4 mkdir指令9.5.5 rmdir指令9.5.6 touch指令9.5.7 cp指令9.5.8 rm指令9.5.9 mv指令9.5.10 cat指令9.5.11 more指令9.5.12 less指令9.5.13 >指令和>>指令9.5.14 echo指令9.5.15 head指令9.5.16 tail指令9.5.17 ln指令9.5.18 history指令9.6 時間日期類相關的指令9.6.1 date指令-顯示當前日期9.6.2 date指令-設置日期9.6.3 cal指令-顯示日歷搜索查找類9.7 搜索查找類相關的指令9.7.1 find指令9.7.2 locate指令9.7.3 grep指令和管道符號|9.8 壓縮和解壓類相關的指令9.8.1 gzip/gunzip 指令9.8.2 zip/unzip 指令9.8.3 tar 指令
1 linux的入門
1.1 Linux的介紹
1、Linux怎么讀? 推薦讀法:里紐克斯
2、Linux是一個開源、免費的操作系統,其穩定性、安全性、處理多並發已經得到業界的認可,目前很多企業級的項目都會部署到Linux/unix系統上。
3、常見的操作系統(Win7/Win10、IOS、Android、Mac)。
4、Linux 吉祥物。

該標志的由來是因為Linus在澳洲時曾被一只動物園里的企鵝咬了一口,便選擇了企鵝作為Linux的標志。
5、Linux的創始人

6、Linux主要的發行版:
Ubuntu(烏班圖)、RedHat(紅帽)、CentOS、Debain[蝶變]、Fedora、SuSE、OpenSUSE
7、Linux和Unix的關系 -> Unix是怎么來的
1943年
湯普遜
出生於美國新奧爾良
。1960年就讀加州大學伯克利分校
主修電氣工程
,取得了電子工程碩士
的學位。1966年加入了貝爾實驗室
。湯普遜參與了貝爾實驗室與麻省理工學院
以及通用電氣公司
聯合開發的一套多用戶分時操作系統
,名叫Multics
,同時他自己寫了一個“star travel”游戲
可運行於Multics之上。貝爾實驗室后來撤出Multics計划。湯普遜只好找到一台老式PDP-7機器,重寫了他的“star travel”游戲。
在開發Multics的期間,湯普遜創造出了名為Bon的程式語言
。湯普遜花了一個月的時間開發了全新的操作系統,UNiplexed Information and Computing System(UNICS),可執行於PDP-7機器之上,后來改稱為UNIX
。第一版的Unix就是基於B語言
來開發的。Bon語言在進行系統編程時不夠強大,所以Thompson和Ritchie對其進行了改造,並於1971年共同發明了C語言
。1973年Thompson和Ritchie用C語言重寫了UNIX。安裝於PDP-11的機器之上。
1983年,美國計算機協會將杜林獎(圖靈獎)
授予湯普遜與丹尼斯。
2000年12月時,湯普遜退休,離開貝爾實驗室,成為了一名飛行員
。
美國貝爾實驗室是晶體管
、太陽能電池
、數字交換機
、通信衛星
、有聲電影
等許多重大發明的誕生地。自成立年以來,貝爾實驗室共獲得兩萬七千多項專利,平均每個工作日獲得4項多專利。一共獲得8項諾貝爾獎(其中7項物理學獎,1項化學獎)。
Unix 的使用成本很高,不是想用就用的起的!
1、5萬美元起價 【當時可以購買一套美國別墅】
2、需要性能高端服務器

理查德·馬修·斯托曼是世界最著名的黑客。
畢業於哈佛大學,是美國國家工程院院士。
取得最大的成就,就是發起
GNU計划
,提倡軟件的源碼可以被閱讀並在規定下進行改版。
8、Linux和Unix的關系 -> Linux是怎么來的
偉大的GNU計划:

Linux的完成的稱呼應該是 GNU/Linux,我們簡稱Linux。

javaEE和大數據一般使用CentOS。
Python一般使用Ubuntu。
2 VM和linux的安裝
2.1 安裝vm和Centos
2.1.1 基本說明
學習Linux需要一個環境,我們需要創建一個虛擬機,然后在虛擬機上安裝一個Centos系統來學習。
1) 先安裝virtual machine,VM12 Pro
2) 再安裝Linux (CentOS )
3) 原理示意圖如下:

2.1.2 CentOS安裝的步驟
1) 創建虛擬機
2) 開始安裝系統(CentOS6.8)
3) 具體的步驟看以下鏈接
參考鏈接:
安裝VMware12的補充:要先去BIOS里修改設置開啟虛擬化設備支持(開機的瞬間狂按f2或f10進入BIOS),修改如下圖所示:

VMware10.0 && VMware12.0 Pro && VMware14.0 Pro && VMware 15.0 Pro 的安裝與破解
VMware12.0 Pro 中安裝 CentOS-7.5(桌面版)
VMware12.0 Pro 中安裝 CentOS 6.8_超詳解 + 高清大圖
安裝CentOS-7.5(桌面版)的補充:手動分區
Linux系統Linux至少有三個分區:
第一個分區:創建標准分區,掛載點是 /boot,文件系統類型為ext4,是Linux系統在啟動或引導的時候需要的文件所放在的位置,大小一般200M足夠。
第二個分區:創建標准分區,沒有掛載點,文件系統類型為swap,是Linux系統的交換分區,相當於Windows的虛擬內存,大小一般跟Linux系統分配的物理內存相同或者是其2倍。作用是:當Linux系統內存不夠用的時候,臨時充當內存使用,效率比實際物理內存要低一點,比物理硬盤要高。
第三個分區:創建標准分區,掛載點是/,文件系統類型為ext4,是Linux系統的根分區。大小是剩余的全部可用空間。
說明:也可以使用將除去 /boot 和 swap 分區的所有空間分配給 / 根分區的方式。
2.1.3 CentOS安裝技術難點 -> 網絡配置三種方式理解(難點)
這里,在面試的時,有可能面試官問關於
橋接模式
、NAT模式
和主機模式
的含義和區別?
虛擬機的三種網絡配置方式的說明:

網絡連接類型的選擇,網絡連接類型一共有
橋接
、NAT
、僅主機
和不聯網
四種。橋接
:選擇橋接模式的話虛擬機和宿主機在網絡上就是平級的關系,相當於連接在同一交換機上。NAT
:NAT模式就是虛擬機要聯網得先通過宿主機才能和外面進行通信。僅主機
:虛擬機與宿主機直接連起來。
橋接與NAT模式訪問互聯網過程,如下圖所示:

2.2 Centos終端的使用和聯網
2.2.1 Centos自帶終端的使用

2.2.2 在centos的火狐可以聯網,可以和外部的ip拼通
這里,我們僅僅簡單的動態的分配ip(后面我們要學習固定分配ip)。
參考鏈接:虛擬機CentOS 7.5 如何固定IP地址
3 linux的目錄結構
3.1 linux目錄結構
Linux的文件系統是采用
級層式的樹狀目錄結構
,在此結構中的最上層是根目錄“/”
,然后在此目錄下再創建其他的目錄。
深刻理解Linux樹狀文件目錄
是非常重要的,這里我給大家說明一下。
記住一句經典的話:在Linux世界里,一切皆文件。(即使是一個硬件設備,也是使用文件來標識的,即把硬件映射成一個文件)
3.2 linux目錄機構的一覽圖

具體的目錄說明:
1、

2、

3、

/proc、/srv、/sys 目錄是高手的修改的地方,目前水平不用去修改。【屬於Linux內核部分】
4、

比如:
/dev 就有 cpu 、disk 等等。
/mnt 可以實現磁盤擴容。
5、

/opt 放將要安裝的軟件程序,所以工作時,我們盡量將安裝軟件放到這個統一的目錄下。
/selinux 是一個安全系統,類似360安全衛士。當有黑客入侵到服務器后,就會觸發/selinux 安全系統。
3.3 對linux目錄結構的小結
1) 在linux中,目錄結構有且僅有一個
根目錄/
其他的目錄都是在 /目錄分支里。
2) 在linux中,有很多目錄,每個目錄都會存放相應的內容,不要隨意去修改。
3) 在linux中,所有的設備都可以通過文件來體現(比如字符設備文件[鍵盤、鼠標等],塊設備文件[硬盤])。
4) 在學習linux時,要盡快的在腦海中,形成一個目錄樹
。
4 遠程登錄到linux服務器
4.1 為什么需要遠程登錄linux

終端工具對比:

4.2 遠程登錄Linux -> Xshell6
Xshell 是目前最好的遠程登錄到Linux操作的軟件,流暢的速度並且完美解決了中文亂碼的問題,是目前程序員首選的軟件。
Xshell 是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的 TELNET 協議。
Xshell可以在Windows界面下用來訪問遠端不同系統下的服務器,從而比較好的達到遠程控制終端的目的。
特別說明:如果希望安裝好的XShell可以訪問Linux系統的話,需要有一個前提:就是Linux啟用了sshd的服務,該服務會監聽22號端口。
Xshell6使用方法:

點擊【新建】

填寫信息

由於是第一次連接,點擊【接受並保存】

輸入登錄Linux系統的用戶名

輸入登錄密碼

遠程連接成功后的截圖

Xshell自動保存用戶名和密碼后的更改方法

4.3 遠程上傳下載文件Xftp6
Xftp6是一個基於 windows 平台的功能強大的SFTP、FTP 文件傳輸軟件。使用了 Xftp 以后,windows 用戶能安全地在 UNIX/Linux 和 Windows PC 之間傳輸文件。
注意:Xftp6使用方法同Xshell6使用方法!這里不再贅述。不同的地方:協議要選擇SFTP
。
簡便方法:我們可以在Xshell6界面點擊【新建文件傳輸】按鈕直接進入Xftp6界面。

效果:

顯示中文亂碼解決:

點擊【確定】之后,刷新,就可以解決顯示中文亂碼問題!
4.4 SecureCRT的安裝和使用
SecureCRT是用於遠程登錄Linux的軟件。SecureCRT 也是一款常用的遠程登錄Linux的軟件,在
大數據開發中
使用較多。
注意:在大數據開發中使用什么終端軟件都可以,沒有什么是必須使用的。
SecureCRT8.1.4整合漢化綠色版:
下載鏈接:
https://share.weiyun.com/1b080cae17c0d66755b100228dce0f31(密碼:WV98)
破解教程:自己網上下載SecureCRT v8.x 注冊機。
SecureCRT v8.x 注冊機使用說明:
[基本信息]
SecureCRT v8.x 注冊機,TEAM Z.W.T 出品,MD5 = 44114b98d90f8bfc9e18c285937ca092
[使用說明]
1. 先不要運行 SecureCRT
2. 建議把注冊機放到安裝目錄(放在其他目錄也可以)
3. 運行securecrt8.0_注冊機
4. 點擊 Patch,此時會讓你選擇 SecureCRT.exe 和 LicenseHelper.exe 的位置
5. 應用 Patch 成功之后,會出現 SecureCRT.exe 和 LicenseHelper.exe 的 .bak 備份文件
6. 此時以管理員身份再運行 SecureCRT,會先彈要你注冊,點擊下一步,再點擊 Enter License Manually
7. 復制粘帖注冊機上的 License 里面的內容到指定的編輯框, 點擊下一步,OK
注意:默認打開CRT時候會是一個輸入key的頁面,什么都不輸入,點擊下一步
SecureCRT無法啟動的解決方法:
https://www.cnblogs.com/chenmingjun/p/9938765.html
使用步驟:

填寫連接信息

選擇SecureFX協議

給回話起名字,任意,原則:見名知意

開始連接

接受並保存

輸入Linux系統的用戶名和密碼

連接成功后截圖:

中文亂碼解決:

5 vi和vim編輯器
5.1 vi和vim的基本介紹
所有的 Linux 系統都會內建 vi 文本編輯器。
Vim 具有程序編輯的能力,可以看做是Vi的增強版本,可以主動的以字體顏色辨別語法的正確性,方便程序設計。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。
我們只需要掌握它的基本使用即可。
5.2 vi和vim三種模式的切換
正常模式:
以 vim 打開一個文件就直接進入一般模式了(這是默認的模式)。在這個模式中,你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整行』來處理檔案內容, 也可以使用『復制、粘貼』來處理你的文件數據。在正常模式下可以使用快捷鍵。
插入模式(編輯模式):
按下i(insert), I, o, O, a, A, r, R等任何一個字母之后才會進入編輯模式,一般來說按i即可。
命令行模式
在這個模式當中,可以提供你相關指令,完成讀取、存盤、替換、離開vim、顯示行號等的動作則是在此模式中完成的。

5.3 vi和vim的快速入門小案例
使用 vim 開發一個 Hello.java 程序,步驟說明和演示如下:

5.4 vi和vim的快捷鍵的使用
1) 拷貝當前行:
yy
,拷貝當前行向下的5行:5yy
,並粘貼:p
。【該快捷鍵在正常模式下使用】
2) 刪除當前行:dd
,刪除當前行向下的5行:5dd
。
3) 在文件中查找某個單詞 【在命令模式模式下:/關鍵字
,回車查找,輸入n
就是查找下一個 】
4) 設置文件的行號,取消文件的行號【在命令行模式下:set nu
和:set nonu
]
5) 編輯 /etc/profile 文件,使用快捷鍵到達文檔的最末行G
和最首行gg
【在正常模式下使用】
6) 在一個文件中輸入 “hello”,然后又撤銷這個動作u
【在正常模式下】
7) 編輯 /etc/profile 文件,並將光標移動到20行shift+g
【在正常模式下使用】
1、顯示行號 :set nu
2、輸入20
3、輸入Shift+g
vi和vim鍵盤圖

6 開機、重啟和用戶登錄注銷
6.1 關機&重啟命令
6.1.1 常見的指令如下
shutdown -h now 【立刻關機】
shutdown -h 1 【1分鍾后,關機】
shutdown -r now 【立刻重啟】
shutdown -r 2 【2分鍾后,重啟】
halt 【立刻關機】
reboot 【立刻重啟】
在重啟和關機前,通常需要先執行
sync 【把內存的數據,寫入磁盤】
6.1.2 注意細節
建議:不管是重啟系統還是關閉系統,首先要運行sync命令,把內存中的數據寫到磁盤中。這是個好習慣!
6.2 用戶的登錄和注銷
6.2.1 基本介紹
1) 登錄時盡量少用root帳號登錄,因為它是系統管理員,擁有最大的權限,避免操作失誤。可以利用普通用戶登錄,登錄后再用
su - 用戶名
命令來切換成系統管理員身份。
2) 在提示符下輸入logout
即可注銷用戶。【不同的shell具體命令可能不同(logout或exit)】
6.2.2 使用細節
1)
logout
注銷指令在圖形運行級別運行該指令無效,在運行級別 3
下運行該指令有效。(簡單提一下:0-6個級別)
2) 運行級別這個概念,后面給大家介紹。
7 用戶管理
7.1 linux的用戶和權限的關系示意圖

7.2 基本介紹
Linux系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。
Linux的用戶至少需要屬於一個組。
7.3 添加用戶
基本語法
useradd [選項] 用戶名
案例演示
添加一個用戶xiaoming
細節說明
1、當創建用戶成功后,會自動的創建和用戶同名的家目錄【/home/xiaoming】。
2、也可以通過useradd -d /home/xiaohonghome xiaohong
給新創建的用戶xiaohong指定家目錄【/home/xiaohonghome】。
7.4 指定/修改密碼
基本語法
passwd 用戶名 // 如果沒有帶用戶名,則是給當前登錄的用戶修改密碼
案例演示
給xiaoming用戶指定密碼
passwd xiaoming // 需要使用root用戶,這樣權限才夠

7.5 刪除用戶
基本語法
userdel 用戶名
案例演示
刪除用戶xiaoming,但是要保留家目錄 userdel xiaoming
刪除用戶以及用戶家目錄 userdel –r xiaohong
【小心使用】
細節說明
是否保留家目錄的討論? [建議一般保留]
linux徹底刪除用戶
刪除用戶xiaoming,如果我們直接使用
userdel xiaoming
,那么並不能刪除該用戶賬號所有相關信息,只是刪除掉了/etc/passwd、/etc/shadow、/etc/group/、/etc/gshadow 四個文件里的該賬戶和組的信息。因為默認情況下創建一個用戶賬號,設置好密碼后,會創建一個家目錄和一個用戶郵箱(在/var/spool/mail目錄以用戶名命名)。我們可以使用find命令來查找所有與該用戶相關的文件信息【find / -name "xiaoming"】。如下圖所示:

7.6 查詢用戶信息指令
基本語法
id 用戶名
案例演示
請查詢root信息
細節說明
當用戶不存在時,返回“無此用戶”。

7.7 切換用戶
介紹
在操作Linux中,如果當前用戶的權限不夠,可以通過su -
指令,切換到高權限用戶,比如root用戶。
基本語法
su - 切換用戶名
案例演示
創建一個用戶xiaojun,指定密碼,然后切換到xiaojun。
細節說明
1) 從權限高的用戶切換到權限低的用戶,不需要輸入密碼,反之需要。
2) 當需要返回到原來用戶時,使用exit指令。
3) 如果su – 沒有帶用戶名
,則默認切換到root用戶。

7.8 查看當前用戶/登錄用戶
基本語法
whoami / who am i

8 用戶組管理
介紹
類似於角色,系統可以對有共性的多個用戶進行統一的管理。
8.1 新增組
新增組
groupadd 組名
案例演示
groupadd wudang
8.2 刪除組
刪除組
groupdel 組名
案例演示
groupdel wudang
注意:
這里有一個前提,就是這個用戶組沒有用戶,才能被刪除。
8.3 增加用戶時直接指定用戶的家目錄和用戶組
1、創建一個用戶,名字叫abc,主目錄是/home/abc/目錄,屬於aabb這個組。
useradd -d /home/abc/ abc -m -g aabb
-d的意思是指定用戶的主目錄
-m的意思是,如果主目錄不存在,那么就自動創建這個目錄
-g的意思是指定該用戶屬於哪個組
2、增加一個用戶zwj, 直接將他指定到用戶組wudang。
useradd zwj -g wudang

8.4 修改用戶所屬的用戶組
修改用戶所屬的用戶組
usermod 用戶名 –g 新的組名
案例演示
創建一個shaolin用戶組,讓將zwj用戶修改到shaolin用戶組。

8.5 用戶和組的相關文件
/etc/passwd 文件
用戶(user)的配置文件,記錄用戶的各種信息。
每行的含義:用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell的種類

/etc/shadow 文件
口令的配置文件。
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留

/etc/group 文件
組(group)的配置文件,記錄Linux包含的組的信息。
每行含義:組名:口令:組標識號:組內用戶列表

9 實用指令
9.1 運行級別
基本介紹
運行級別說明:
0 :關機
1 :單用戶【類似安全模式,這個模式可以幫助找回root密碼】
2 :多用戶狀態沒有網絡服務
3 :多用戶狀態有網絡服務【使用最多】
4 :系統未使用保留給用戶
5 :圖形界面
6 :系統重啟
常用運行級別是3和5,我們可以修改默認的運行級別文件。

9.2 指定運行級別
CentOS 6X 和 CentOS 7X 的指定運行級別的方式有區別!!!
CentOS 6X 是通過修改/etc/inittab 來修改默認運行級別的。
9.2.1 CentOS 6X指定當前運行級別
查看vim /etc/inittab
文件

id:5:initdefault:
命令:init [012356]
通過init來切換不同的當前運行級別,比如:5、3,然后關機。
init 5
init 3
init 0
9.2.2 CentOS 7X指定運行級別
查看vim /etc/inittab
文件

我們可以看到,里面除了注釋,什么也沒有,並沒有CentOS 6X中設置默認運行當前級別的方式。
注釋內容大意是說:
# multi-user.target類似於runlevel 3
# graphical.target類似於runlevel5
#獲得默認運行級別的方式
systemctl get-default
#設置默認運行級別的方式
systemctl set-default TARGET.target
運行級別對應表如下圖所示:

CentOS 7X 設置運行級別
命令格式:systemctl [command] [unit.target]
參數詳解:command:
get-default 獲得當前的target
set-default 設置指定的target為默認的運行級別
isolate 切換到指定的運行級別
unit.target 為運行級別對應表中列出的運行級別,如下圖所示:

注:上表前兩行是設置默認運行級別(重啟系統生效),后兩行是設置當前運行級別(立即生效)。
CentOS 7X 系統演示

9.3 面試題
1、請設置我們的Linux運行級別,linux運行后,直接進入到命令行終端(3級別)
。
答:對於CentOS 6X而言,編輯vim /etc/inittab
文件即可,修改為:id:3:initdefault:
對於CentOS 7X而言,命令是:systemctl set-default multi-user.target
(重啟linux系統后生效)
擴展:如果將運行級別設置為0,即Linux系統一開機就立馬關機,那么我們如何解決這個問題?
答:思路同下。即進入單用戶運行級別,然后修改inittab文件
。
2、假設我們的root用戶的密碼忘記了,請問如何找回密碼?
思路:進入單用戶運行級別,然后修改root密碼。因為單用戶運行級別不需要密碼就可以使用root身份登錄。
答:Linux系統啟動時 -> 快速輸入Enter -> 輸入e -> 進入到編輯界面 -> 選擇中間有kernel項 ->再輸入e(edit) -> 在該行的最后寫入空格和1
[表示修改內核,臨時生效] -> 再輸入Enter ->輸入b [boot] -> 進入到單用戶模式【這里就可以做補救工作了】。
截圖如下:
Linux系統啟動時,快速輸入Enter

輸入e,進入到編輯界面,選擇中間有kernel項

再輸入e(edit),在該行的最后
寫入空格和1
[表示修改內核,臨時生效],再輸入Enter

輸入b [boot],進入到單用戶運行級別【這里就可以做補救工作了】

單用戶運行級別不需要密碼就可以使用root身份登錄,此時我們使用root用戶修改密碼即可。

思考:root用戶的密碼都可以隨意修改,Linux的安全性體現在哪里呢?
答:上述修改root用戶密碼的前提:不能遠程登錄,必須在這個Linux服務器所在的電腦上進行操作。換言之,這個Linux服務器就在我們身邊,觸手可及,是我們自己的東西,我們對於我們自己的東西,想怎么整都行!何況小小的修改密碼的操作。
9.4 幫助指令
- 當我們對某一個指令不熟悉的時候,我們可以使用Linux提供的幫助指令來了解這個指令的使用方法。
- man獲得幫助信息
- 基本語法:
man [命令或配置文件](功能描述:獲得幫助信息)- 應用實例:
案例:查看ls命令的幫助信息- help指令
- 基本語法:
help 命令 (功能描述:獲得shell內置命令的幫助信息)- 應用實例:
案例:查看cd命令的幫助信息- 百度幫助更直接
- 雖然上面兩個都可以來獲取指令幫助,但是需要英語功底,如果英語不太好的,我還是推薦大家直接百度靠譜。
9.5 文件和目錄相關的指令
9.5.1 pwd指令
- 基本語法:
pwd (功能描述:顯示當前工作目錄的絕對路徑)- 應用實例:
案例:顯示當前工作目錄的絕對路徑。
9.5.2 ls指令
- 基本語法:
ls [選項] [目錄或是文件]- 常用選項:
-a :顯示當前目錄所有的文件和目錄,包括隱藏的(文件名以.開頭就是隱藏)。
-l :以列表的方式顯示信息
-h :顯示文件大小時,以 k, m, G 單位顯示- 應用實例:
案例:查看當前目錄的所有內容信息。
9.5.3 cd指令
- 基本語法:
cd [參數] (功能描述:切換到指定目錄)- 常用參數:
絕對路徑【從 / 開始定位】和相對路徑【從當前的位置開始定位】cd ~
或者cd
回到自己的家目錄cd ..
回到當前目錄的上一級目錄- 應用實例:
案例1:使用絕對路徑切換到root目錄cd /root
案例2:使用相對路徑到/root目錄cd ../root
(用戶在/home目錄下)
案例3:表示回到當前目錄的上一級目錄cd ..
案例4:回到家目錄cd ~
9.5.4 mkdir指令
- 說明:
mkdir 用於創建目錄 [make directory]- 基本語法:
mkdir [選項] 要創建的目錄- 常用選項:
-p :創建多級目錄- 應用實例:
案例1:創建一個目錄 /home/dogmkdir /home/dog
案例2:創建多級目錄 /home/animal/tigermkdir -p /home/animal/tiger
9.5.5 rmdir指令
- 說明:
rmdir 用於刪除空目錄 [remove directory]- 基本語法:
rmdir [選項] 要刪除的空目錄- 應用實例:
案例1:刪除一個目錄 /home/dog
rmdir /home/dog
[前提 /home/dog 是空目錄]- 使用細節:
rmdir 刪除的是空目錄,如果目錄下有內容時無法刪除的。
提示:如果需要刪除非空目錄,需要使用rm -rf 要刪除的目錄
9.5.6 touch指令
- 說明:
touch 用於創建空文件,還可以更新文件的修改時間。- 基本語法:
touch 文件名稱- 應用實例:
案例1:創建一個空文件 hello.txttouch hello.txt
提示:如果文件存在,則表示刷新該文件的修改時間。
案例2:創建多個空文件 hello.txt haha.txttouch hello.txt haha.txt
9.5.7 cp指令
- 說明:
cp 用於拷貝文件到指定目錄 [copy 拷貝]- 基本語法:
cp [選項] source【源文件或者源目錄】 dest【目的目錄】- 常用選項:
-r :遞歸復制整個文件夾 [r:recursive 遞歸]- 應用實例:
案例1:將/home/aaa.txt
拷貝到/home/bbb/
目錄下cp /home/aaa.txt /home/bbb/
案例2:遞歸復制整個文件夾,舉例:將/home/
整個目錄拷貝到/opt/
目錄下cp -r /home/ /opt/
- 使用細節:
當發現目標目錄下有相同的文件,會提示是否覆蓋,很煩人,強制覆蓋不提示的方法:\cp
- 建議
/
表示的是根目錄,/home/
和/home
都表示的是根目錄下的home目錄,但是建議home目錄寫成home/
會更專業,這樣避免出現歧義。即xxx目錄
最好寫成xxx/
,正斜杠最好別省略!強烈推薦多使用絕對路徑,少用相對路徑!腦海中要有清晰的Linux目錄樹結構圖。
9.5.8 rm指令
- 說明:
rm 用於移除文件或目錄- 基本語法:
rm [選項] 要刪除的文件或目錄- 常用選項:
-r :遞歸刪除整個文件夾 [r=recursive 遞歸]
-f :強制刪除不提示 [f=force 強制]
-rf :強制遞歸刪除整個文件夾不提示- 應用實例:
案例1:將/home/aaa.txt
刪除rm /home/aaa.txt
案例2:遞歸刪除整個文件夾/home/bbb/
命令rm –r /home/bbb/
- 使用細節
強制刪除不提示的方法:帶上 -f 即可rm –rf /home/bbb/
9.5.9 mv指令
- 說明:
mv 移動文件與目錄或重命名- 基本語法:
1) mv oldNameFile newNameFile (功能描述:重命名)前提:要先有oldFile存在,才是重命名
2) mv /temp/moveFile /targetFolder/ (功能描述:移動文件或目錄)- 應用實例:
案例1:將/home/aaa.txt文件
重新命名為pig.txt
,前提:aaa.txt文件先存在,才是重命名。
案例2:將/home/pig.txt文件
移動到/root/
目錄下,前提:/root/
目錄下沒有改文件,是移動。
9.5.10 cat指令
- 說明:
cat 查看文件內容- 基本語法:
cat [選項] 要查看的文件- 常用選項:
-n :顯示行號- 應用實例:
案例1:查看/ect/profile文件
內容,並顯示行號。命令:cat -n /etc/profile | more
cat 只能瀏覽文件,而不能修改文件,為了瀏覽方便,一般會帶上管道命令| more
cat xxx.txt | more (把cat xxx.txt
輸出結果交給more
處理),如下圖所示:
9.5.11 more指令
- 說明:
more指令是一個基於vi編輯器的文本過濾器
,它以全屏幕的方式按頁顯示
文本文件的內容。- 基本語法:
more 要查看的文件- 操作說明:
more指令中內置了若干快捷鍵,詳見操作說明如下圖:- 應用實例:
案例: 采用more查看more /etc/profile文件
9.5.12 less指令
- 說明:
less指令用來分屏查看文件內容,它的功能與more指令類似,但是比more指令更加強大,支持各種顯示終端。less指令在顯示文件內容時,並不是一次將整個文件加載之后才顯示
,而是根據顯示需要加載內容,對於顯示大型文件具有較高的效率
。- 基本語法:
less 要查看的文件- 操作說明:
- 應用實例:
案例: 采用less查看一個大文件,比如大型日志文件
。
9.5.13 >指令和>>指令
- 說明:
> 輸出重定向
和>> 追加
- 基本語法:
1) ls -l > 文件 (功能描述:把列表的內容寫入文件a.txt中(覆蓋寫),如果文件a.txt不存在就創建並寫入,如果文件a.txt存在就覆蓋寫)
2) ls -al >> 文件 (功能描述:那列表的內容追加到文件aa.txt的末尾)
3) cat 文件1 > 文件2 (功能描述:將文件1的內容覆蓋到文件2)
4) echo "內容" >> 文件- 應用實例:
案例1:將/home/
目錄下的文件列表寫入到/home/info.txt
中
命令:ls –l /home/ > /home/info.txt
[如果文件不存在,則會自動創建后再寫入]
案例2:將當前日歷信息追加到/home/mycal
文件中
命令:date >> /home/mydate
或者cal >> /home/mycal
9.5.14 echo指令
- 說明:
echo 用於輸出內容到控制台。- 基本語法:
echo [選項] [輸出內容]- 應用實例:
案例1:使用echo指令輸出環境變量,輸出當前的環境路徑。
案例2:使用echo指令輸出文"Hello World"。![]()
9.5.15 head指令
- 說明:
head 用於顯示文件的開頭部分內容,默認情況下head指令顯示文件的前10行內容。- 基本語法:
1) head 文件 (功能描述:默認查看文件頭10行內容)
2) head -n 5 文件 (功能描述:查看文件頭5行內容,5可以是任意行數)- 應用實例:
案例:查看 /etc/profile 的前面5行代碼。
9.5.16 tail指令
- 說明:
tail 用於輸出文件中尾部的內容,默認情況下tail指令顯示文件的后10行內容。- 基本語法:
1) tail 文件 (功能描述:默認查看文件后10行內容)
2) tail -n 5 文件 (功能描述:查看文件后5行內容,5可以是任意行數)
3) tail -f 文件 (功能描述:實時追蹤該文檔的所有更新)該命令在工作中經常用。- 應用實例:
案例1:查看 /etc/profile文件 最后5行的內容
案例2:實時監控某文件,看到當該文件有變化時,就會實時看到變化。
最常使用查看tomcat啟動日志文件命令:tail -f logs/catalina.out
9.5.17 ln指令
- 說明:
軟鏈接[link]也成為符號鏈接,類似於windows里的快捷方式,主要存放了鏈接其他文件的路徑。- 基本語法:
ln -s [原文件或目錄] [軟鏈接名] (功能描述:給原文件創建一個軟鏈接)- 應用實例:
案例1:在/home/
目錄下創建一個軟連接,名為 linkToRoot,連接到/root/
目錄
ln -s /root/ linkToRoot
案例2: 刪除軟連接 linkToRoot
rm –rf linkToRoot
注意:刪除軟連接的時候,不要帶正斜杠!否則會刪除掉軟連接對應的目錄!- 細節說明:
當我們使用pwd指令查看目錄時,仍然看到的是軟鏈接所在目錄。
9.5.18 history指令
- 說明:
查看已經執行過歷史命令,也可以執行歷史指令。- 基本語法:
history (功能描述:查看已經執行過歷史命令)- 應用實例:
案例1:顯示所有的歷史命令。history
案例2:顯示最近使用過的10個指令。history 10
案例3:執行歷史編號為5的指令:!5。``
9.6 時間日期類相關的指令
9.6.1 date指令-顯示當前日期
- 說明:
顯示當前日期- 基本語法:
1) date (功能描述:顯示當前時間)
2) date +%Y (功能描述:顯示當前年份)
3) date +%m (功能描述:顯示當前月份)
4) date +%d (功能描述:顯示當前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S" (功能描述:顯示年月日時分秒)- 應用實例:
案例1:顯示當前時間信息。
案例2:顯示當前時間年月日。
案例3:顯示當前時間年月日時分秒。
9.6.2 date指令-設置日期
- 基本語法:
date -s 字符串時間- 應用實例:
案例1:設置系統當前時間,比如設置成 2020-11-11 11:22:22
9.6.3 cal指令-顯示日歷搜索查找類
- 說明:
查看日歷指令- 基本語法:
cal [選項](功能描述:不加選項,顯示本月日歷)- 應用實例:
案例1:顯示當前日歷。
案例2:顯示2050年日歷。
9.7 搜索查找類相關的指令
9.7.1 find指令
- 說明:
find指令 用於將從指定目錄向下遞歸地遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。- 基本語法:
find [搜索范圍] [選項]- 選項說明:
- 應用實例:
案例1:按文件名:根據名稱查找/home/
目錄下的 hello.txt文件
find /home/ -name hello.txt
案例2:按擁有者:查找/opt目錄下,用戶名為nobody的文件
find /opt/ -user nobody
案例3:查找整個linux系統下大於10M的文件(+n 大於、-n 小於、n 等於)
find / -size +10M
(注意:k要小寫,M要大寫)
9.7.2 locate指令
- 說明:
locate指令可以快速定位文件路徑。locate指令利用事先建立的系統中所有文件名稱及路徑的locate數據庫實現快速定位給定的文件。locate指令無需遍歷整個文件系統,查詢速度較快。為了保證查詢結果的准確度,管理員必須定期更新locate時刻
。- 基本語法:
locate 搜索文件- 特別說明:
由於locate指令基於數據庫進行查詢,所以第一次運行前,必須使用updatedb指令創建locate數據庫。- 應用實例:
案例1:請使用locate指令快速定位 hello.txt 文件所在目錄
updatedb
// 創建locate的數據庫
locate hello.txt
9.7.3 grep指令和管道符號|
- 說明:
grep 過濾查找,管道符“|”,表示將前一個命令的處理結果輸出傳遞給后面的命令處理。- 基本語法:
grep [選項] 查找內容 源文件- 常用選項:
- 應用實例:
案例1:請在 /etc/profile 文件中,查找 "if" 所在行,並且顯示行號。
cat /etc/profile | grep -n if
[在/etc/profile 中查找 if ,並顯示行,區別大小寫]
cat /etc/profile | grep -ni if
[在/etc/profile 中查找 if ,並顯示行,不區別大小寫]
9.8 壓縮和解壓類相關的指令
9.8.1 gzip/gunzip 指令
- 說明:
gzip 用於壓縮文件,gunzip 用於解壓文件。- 基本語法:
gzip 文件 (功能描述:壓縮文件,只能將文件壓縮為*.gz文件)
gunzip 文件.gz (功能描述:解壓縮文件命令)- 特別說明:
當我們使用gzip對文件進行壓縮后,不會保留原來的文件。- 應用實例:
案例1:gzip壓縮,將 /home/ 下的 hello.txt文件 進行壓縮
案例2:gunzip壓縮,將 /home/ 下的 hello.txt.gz文件 進行解壓縮
9.8.2 zip/unzip 指令
- 說明:
zip 用於壓縮文件,unzip 用於解壓的,這個在項目打包發布中很有用的。- 基本語法:
zip [選項] xxx.zip 需要壓縮的內容(功能描述:壓縮文件和目錄的命令)
unzip [選項] xxx.zip 需要解壓縮的內容(功能描述:解壓縮文件的命令)- zip的常用選項:
-r :遞歸壓縮,即壓縮目錄。- unzip的常用選項
-d :指定解壓后文件的存放目錄。- 應用實例:
案例1:將 /home/ 下的 所有文件進行壓縮成 mypackage.zip [退出home]
zip -r mypackage.zip /home/
案例2:將 mypackge.zip 解壓到 /opt/tmp/ 目錄下
unzip –d /opt/tmp/ mypackage.zip
[如果/opt/tmp/ 目錄不存在,會自動創建]
9.8.3 tar 指令
- 說明:
tar 是打包指令,最后打包后的文件是 xxx.tar.gz 的文件。[可以壓縮,和解壓縮]- 基本語法:
tar [選項] xxx.tar.gz 打包的內容/目錄 (功能描述:打包目錄或文件,壓縮后的文件格式 xxx.tar.gz)- 選項說明:
- 應用實例:
案例1:壓縮多個文件,將 /home/a1.txt 和 /home/a2.txt 壓縮成 a.tar.gz,命令tar -zcvf a.tar.gz a1.txt a2.txt
案例2:將 /home/ 文件夾壓縮成 myhome.tar.gz,命令tar -zcvf myhome.tar.gz /home/
案例3:將 a.tar.gz 解壓到當前目錄,命令tar -zxvf a.tar.gz
案例4:將 myhome.tar.gz 解壓到 /opt/tmp2/目錄下,命令tar -zxvf myhome.tar.gz -C /opt/tmp2/
- 特別說明:
解壓到指定目錄的前提:指定目錄先要存在!如果指定目錄沒有,會報錯!