大資料學習之_01_Linux學習_01_linux的入門+VM和linux的安裝+linux的目錄結構+遠端登入到linux服務...
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 使用者和組的相關檔案
使用者(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級別)
。
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/
- 特別說明:
解壓到指定目錄的前提:指定目錄先要存在!如果指定目錄沒有,會報錯!