文章目錄
- 詳解Linux---基礎篇
- 1. Linux入門
- 1.1 Linux介紹
- 1.2 VM和CentOS的安裝
- 1.3 虛擬機克隆
- 1.4 虛擬機快照
- 1.5 Linux目錄結構
- 2. Linux基本操作
- 2.1 遠程登錄操作
- 2.2 Vi和Vim編輯器
- 2.3 開關機,用戶注銷
- 3. 用戶管理
- 3.1 基本指令
- 3.2 用戶組
- 4. 實用指令
- 4.1 運行級別
- 4.2 找回root密碼
- 4.3 幫助指令
- 4.4 檔案目錄類指令
- 4.5 時間日期類指令
- 4.6 搜索查找類指令
- 4.7 壓縮和解壓指令
- 5. 組和權限
- 5.1 組的管理
- 5.2 權限的管理
- 5.3 練習鞏固
詳解Linux—基礎篇
本篇博客詳細介紹了Linux的基礎知識,從CentOS 7.6 的手把手安裝,到用戶組和權限的管理,每一步都有非常詳細的截圖和理論解釋,適合新手快速入門Linux,也適合老手用來復習鞏固,整理不易,望您支持,🤞🤞
本文是基于CentOS 7.6 版本講解的,至于文中代碼截圖中出現的 CentOS68,只是我將這臺Linux命名為 CentOS 68,并不是6.8版本,至于為什么這么命名,各位腦補吧🤦?♂?,害~
不出意外,這篇博客就是2020年的最后一篇了,心疼這一年中那些離我而去的秀發,😢
Linux的后續內容,大概將會在年后上傳,
關注??博主
學習資料:
鏈接:https://pan.baidu.com/s/1Mp3nZJOxINhD6s_SqKJ14Q
提取碼:0pcu
1. Linux入門
(1)學習 linux 流程為:
- 第 1 階段:linux 環境下的基本操作命令,包括 檔案操作命令(rm mkdir chmod, chown) 編輯工具
使用(vi vim)linux 用戶管理(useradd userdel usermod)等 - 第 2 階段:linux 的各種配置(環境變數配置,網路配置,服務配置)
- 第 3 階段:linux 下如何搭建對應語言的開發環境(大資料,JavaEE, Python 等)
- 第 4 階段:能撰寫 shell 腳本,對 Linux 服務器進行維護,
- 第 5 階段:能進行安全設定,防止攻擊,保障服務器正常運行,能對系統調優,
- 第 6 階段:深入理解 Linux 系統(對內核有研究),熟練掌握大型網站應用架構組成、并熟悉各 個環節的部署和維護方法,
(2)Linux學習方法:
- 高效而愉快的學習
- 先建立一個整體框架,然后細節
- 不需要掌握所有的 Linux 指令,要學會查詢手冊和百度
- 先 know how ,再 know why
- 計算機是一門”做中學” 的學科 ,不是會了再做,而是做了才會,
- 適當的囫圇吞棗
- Linux 不是編程,重點是實際操作,各種常用指令要玩的溜
1.1 Linux介紹
1、Linux是一款作業系統,免費、開源、安全、高效、穩定、穩定、處理高并發強悍,
2、Linux是基于Unix開發的,Linux是一種自由和開放原始碼的作業系統,存在著許多不同的Linux版本,但它們都使用了Linux內核,
3、Linux的歷史:
- Linux最初是由芬蘭赫爾辛基大學學生Linus Torvalds由于自己不滿意教學中使用的MINIX作業系統,所以在1990年底由于個人愛好設計出了Linux系統核心,
- 后來發布于芬蘭最大的ftp服務器上,用戶可以免費下載,所以它的周邊的程式越來越多,Linux本身也逐漸發展壯大起來,之后Linux在不到三年的時間里成為了一個功能完善,穩定可靠的作業系統,
4、Linux創始人:Linus Torvalds
5、Linux吉祥物:
6、Linux主要發行版:
7、Linux和Unix的關系:
1)兩個創始人:
- 肯尼斯·藍·湯普森(英語:Kenneth Lane Thompson,1943年2月4日-),小名為肯·湯普森(英語:Ken Thompson),生于美國新奧爾良,為美國計算機科學學者與軟體工程師,任職于貝爾實驗室Entrisphere, IncGoogle Inc,與丹尼斯·里奇同為1983年圖靈獎得主,他與丹尼斯·里奇設計了B語言、C語言,創建了Unix和Plan 9作業系統,編程語言Go的共同作者,
- 丹尼斯·麥卡利斯泰爾·里奇(英語:Dennis MacAlistair Ritchie,1941年9月9日- 2011年10月12日),美國計算機科學家,駭客圈子通常稱他為“ dmr”, C語言的創造者,Unix作業系統的關鍵開發者,對計算機領域產生了深遠影響,并與肯·湯普遜同為1983年圖靈獎得主,
2)Linux發展歷程
| 比較 | Window | Linux |
|---|---|---|
| 收費與否 | 收費且很貴 | 免費開源 |
| 軟體與支持 | 大部分為收費軟體 | 軟體開源免費 |
| 安全性 | 不安全 | 安全 |
| 使用習慣 | 圖形化界面 | 影像化和命令列 |
| 可定制性 | 封閉,不可定制 | 開源,可定制 |
| 應用場景 | 桌面作業系統 | 服務器 |
1.2 VM和CentOS的安裝
學習 Linux 需要一個環境,我們需要創建一個虛擬機,然后在虛擬機上安裝一個 Centos 系統來學習,
第一步:先安裝虛擬機軟體,VM
第二步:通過VM軟體創建一個虛擬機空間,
第三步:在創建好的虛擬機空間上安裝CentOS系統,
第四步:學習使用CentOS,
CentOS下載地址:https://www.centos.org/download/
下載DVD版本即可,
(1)安裝VM,
默認安裝即可,
虛擬機的網路連接有三種模式:橋接、NAT、主機模式,
- 橋接:和母機在同一個網段下,可能會造成IP沖突,
- NAT:網路地址轉化,Linux可以訪問外網,但外網不可訪問Linux主機,不會造成IP沖突,
- 主機模式:Linux是一個獨立的主機,不可訪問外網,
(2)安裝Linux系統
在安裝之前呢,建議先拜一拜Linus Torvalds,祈禱安裝順利……😁😁
![]()
1、創建虛擬機空間,
2、使用向導,創建典型即可,
3、選擇稍后安裝作業系統,現在只是創建一個虛擬機空間,
4、選擇對應版本,
5、給虛擬機起個好聽的名字,這個并不是主機名,只是在VMware中標識這個虛擬機的名字,并選擇安裝位置,建議安裝在非系統盤,(家里有礦的隨意……)
6、指定磁盤容量,
7、編輯硬體,網卡,記憶體,處理器等
- 這里需要根據自己電腦的配置,自定義記憶體大小,處理器處理,
- 查看本機處理器數量,
- 打開電腦的 “任務管理器”
- 點擊 “性能”
- 選擇最下面的 “打開資源監視器”
- 再點擊 “CPU”,查看右側CPU數量,
- 查看本機處理器數量,
- 網路配接器建議選擇 NAT,上面已經說了理由,
8、編輯虛擬機,掛載鏡像檔案,
9、選擇下載的鏡像檔案
10、開啟虛擬機,正式安裝CentOS 7.6
11、滑鼠在這個界面點一下,并使用上下鍵選擇,
正在安裝,稍等片片刻,
12、選擇語言
13、自定義安裝,選擇我們需要的軟體,
- 這里默認是最小安裝,即:沒有圖形化界面的Linux系統,因為我們是剛開始學習Linux,建議還是裝一個圖形界面,
14、選擇以下內容,點擊完成,退出這個界面之后,系統會檢查軟體依賴關系,需要等一會,建議不要亂點,防止機器卡死,
15、編輯磁盤磁區,
Linux創建磁區,最少需要創建三個磁區:
- boot磁區:Linux開機時需要加載的檔案存放位置,一般200Mb就夠用,
- swap磁區:當我們的記憶體不夠用時,臨時替代記憶體存放資料,通常設定為物理記憶體的1~1.5倍,
- 根磁區:將剩下的硬碟都分給根磁區,
16、創建磁區,
- 劃分引導磁區,/boot
- 確定磁區型別為“標準磁區”,檔案系統為“ext4”,
- 劃分swap磁區,
- 確定磁區型別為“標準磁區”,檔案系統為“ext4”,
- 將剩下的17G,都劃分為根磁區,/
- 接受更改,
17、配置網路連接
18、開始安裝
19、設定root用戶密碼,創建普通用戶,
然后就是漫長的等待程序了……,🤦?♂?🤦?♂?🤦?♂?🤦?♂?🤦?♂?
20、安裝完成之后,重啟,完成最后的配置即可,
21、接受許可
22、完成最后的配置
- 會創建一個普通用戶
- 設定密碼(這里的密碼只能設定復雜一點,不然無法繼續)
至此,大功告成,
欣賞一下吧,美麗的Linux,
23、在桌面右鍵,打開終端,查看IP地址,
(3)安裝vmtools工具
-
介紹:
- 可以直接粘貼命令在 windows 和 centos 系統之間
- 可以設定 windows 和 centos 的共享檔案夾
-
安裝vmtools
- .進入 centos
- 點擊 vm 選單的->install vmware tools
- centos 會出現一個 vm 的安裝包
- 點擊右鍵解壓, 得到一個安裝檔案
- 進入該 vm 解壓的目錄 ,該檔案在 /root/桌面/vmware-tools-distrib/下
- 安裝 ./vmware-install.pl
- 全部使用默認設定即可
- 需要 reboot 重新啟動即可生效
-
在Windows母機和Linux之間設定共享檔案夾
共享檔案夾會默認放在Linux的 /mnt/hgfs/下,
問題:CentOS的hgfs中沒有出現共享檔案夾,
解決:
- 在終端中輸入:
mount -t vmhgfs .host:/ /mnt/hgfs,顯示如下內容:
提示錯誤:無法掛載檔案系統,沒有這樣的設備,那現在就不可以用mount工具進行掛載,那我們用vmhgfs-fuse,但是需要安裝工具包,下面的命令為下載安裝包,
- 輸入:
yum install open-vm-tools-devel -y
- 輸入:
vmhgfs-fuse .host:/ /mnt/hgfs - 重新查看 hgfs 目錄,就會出現Windows中共享的檔案,
注意:如果使用的CentOS 6 ,在上面安裝程序中會報錯:
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt Error: Cannot find a valid baseurl for repo: base
原因:CentOS 6 yum源停止更新,
解決:換源,
在終端中輸入:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repo yum makecache
1.3 虛擬機克隆
如果你已經安裝了一臺 linux 作業系統,你還想再更多的,比如想做一個集群,則必要再重新安裝,你只需要克隆就可,
- 方式一:直接復制拷貝虛擬機檔案
- 方式二:使用VMware的克隆操作,前提是關閉Linux系統,
1.4 虛擬機快照
如果在使用虛擬機系統的時候(比如 linux),想回到原先的某一個狀態,也就是說你擔心可能有些誤操作造成系統例外,需要回到原先某個正常運行的狀態,vmware 也提供了這樣的功能,就叫快照管理,
在VMware左側的虛擬機處右鍵,拍攝快照,
選擇一個快照,轉到,切換快照時,虛擬機會重啟,
1.5 Linux目錄結構
linux 的檔案系統是采用級層式的樹狀目錄結構,在此結構中的最上層是根目錄“/”,然后在此 目錄下再創建其他的目錄,
在Linux中,一切皆是檔案,

具體的目錄結構:
- /bin:存放二進制可執行檔案,即存放最經常使用的命令
- /sbin:s就是 Super User 的意思,這里存放的是系統管理員使用的系統管理程式,即:管理員使用的指令,
- /home:存放普通用戶的主目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄是以用戶的賬號命名的,執行完
useradd tom指令之后,該目錄下就會多一個 tom 檔案, - /root:該目錄為系統管理員的主目錄,
- /boot:存放的是啟動Linux時使用的一些核心檔案,包括一些鏈接檔案以及鏡像檔案,
- /proc:該目錄是一個虛擬的目錄,它是系統記憶體的一個映射
- /srv:serveice的縮寫,該目錄存放一些服務啟動之后需要提取的資料,
- /sys:這是Linus2.6 內核的一個很大的變換,該目錄下安裝了2.6 內核中出現的一個檔案系統,(以上這三個目錄 proc、srv,sys,都跟Linux內核相關)
- /tmp:這個目錄是存來存放一些臨時檔案的,
- /dev:存放設備檔案,類似于Windows的設備管理器,把所有的硬體用檔案的形式存盤,
- /media:Linux系統會自動識別一些設備,例如:U盤、光驅等,當識別后,Linux會把識別的設備掛載到這個目錄下,
- /mnt:系統提供給用戶臨時掛載別的檔案系統的,我們可以將外部的存盤掛載在/mnt/上,然后進入該目錄就可以查看里面的內容,例如:我們剛才設定的共享檔案,
- /opt:這是給主機額外安裝軟體所擺放的目錄,例如:可以將MySQL資料庫放在該目錄下,不是安裝過后的軟體,
- /usr/local:這是另外一個給主機額外安裝軟體的目錄,一般是通過編譯原始碼方式安裝的程式,安裝過后的軟體
- /var:這個目錄下存放這不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下,包括各種日志檔案,
- /selinux[security-enhanced linux] :是一種安全子系統,它能控制程式只訪問特定檔案,類似于360,
- /usr:user shared resources,用戶的很多應用程式和檔案都放在這個目錄下,類似于Windows下的program files 目錄,即:裝軟體的目錄,
- /etc:存放系統組態檔和子目錄,
- /lib:存放系統開機所需要的最基本的動態鏈接共享庫,其作用類似于Windows里的DLL檔案,幾乎所有的應用程式都需要用到這些共享庫,
- /lost+found:這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些檔案,
總結:
-
Linux中的目錄只有一個根目錄,
/ -
Linux的各個目錄存放的內容是規定好的,我們不能隨意放置,
-
Linux系統中,一切皆是檔案,
2. Linux基本操作
2.1 遠程登錄操作
(1)Xshell
-
Xshell 是目前最好的遠程登錄到 Linux 操作的軟體,流暢的速度并且完美解決了中文亂碼的問題, 是目前程式員首選的軟體,
-
Xshell 是一個強大的安全終端模擬軟體,它支持 SSH1, SSH2, 以及 Microsoft Windows 平臺的TELNET 協議,
-
Xshell 可以在 Windows 界面下用來訪問遠端不同系統下的服務器,從而比較好的達到遠程控制終端的目的,
特別說明:如果希望安裝好 XShell 就可以遠程訪問 Linux 系統的話,需要有一個前提,就是Linux 啟用了 SSHD 服務,該服務會監聽 22 號埠,
在Linux終端中輸入:setup
選擇“系統服務”
查看已經啟動的服務,標星號的表示已經啟動,
XShell官網
(2)XFtp
XFtp是一個基于 windows 平臺的功能強大的 SFTP、FTP 檔案傳輸軟體,使用了 Xftp 以后,windows 用戶能安全地在 UNIX/Linux 和 Windows PC 之間傳輸檔案,
這里使用 SFTP 協議,
登錄成功之后顯示如圖:
2.2 Vi和Vim編輯器
(1)介紹
-
所有的 Linux 系統都會內建 vi 文本編輯器,
-
Vim 具有程式編輯的能力,可以看做是 Vi 的增強版本,可以主動的以字體顏色辨別語法的正確性,方便程式設計,代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用
(2)vi 和 vim 的三種常見模式
-
正常模式
- 在正常模式下,我們可以使用快捷鍵,
- 以 vim 打開一個檔案就直接進入一般模式了(這是默認的模式),
- 在這個模式中,你可以使用『上 下 左 右』按鍵來移動游標,你可以使用『洗掉字符』或『洗掉整行』來處理檔案內容, 也可以使用『復制,粘貼』來處理你的檔案資料,
-
編輯模式
- 在正常模式下,按 i 就會進行編輯模式,
- 在編輯模式下,可以完成編輯檔案等操作,
-
命令列模式
- 在正常模式或編輯模式下,按 ESC 鍵,再按英文冒號進入命令列模式,
- 在該模式下,可以提供你相關指令,完成讀取、存盤、替換、離開 vim 、顯示行號等的動作,
三種模式的相互轉換:
(3)Vi和Vim的快捷鍵
-
拷貝當前行 yy , 拷貝當前行向下的 5 行 5yy,并粘貼(p),在正常模式下,
-
洗掉當前行 dd , 洗掉當前行向下的 5 行 5dd
-
在檔案中查找某個單詞,在命令列下輸入 /關鍵字 , 回車 查找 , 輸入 n 就是查找下一個,
-
設定檔案的行號,取消檔案的行號.[命令列下 : set nu 和 :set nonu
-
編輯 /etc/profile 檔案,使用快捷鍵到底檔案的最末行[G]和最首行[gg],注意這些都是在正常模式下執行的,
-
在一個檔案中輸入 “hello” ,然后又撤銷這個動作,再正常模式下輸入 u
-
將游標移動到 第 20 行 shift+g
第一步:設定行號,set nu
第二步:在正常模式下輸入:20 再按 Shift+g
2.3 開關機,用戶注銷
# 表示立即關機
shutdown -h now
# 表示 1 分鐘后關機
shutdown -h 1
# 立即重啟
shutdown -r now
# 就是直接使用,效果等價于關機
halt
# 直接重啟系統
reboot
# 把記憶體的資料同步到磁盤,即:將沒有保存的東西保存一下,以防關機丟失,(目前的 shutdown/reboot/halt 等命令均已經在關機前進行了 sync)
sync
注意:當我們關機或者重啟時,都應該先執行以下 sync 指令,把記憶體的資料寫入磁盤,防止資料丟失,
可以利用普通用戶登錄,登錄后再用 su 用戶名 命令來切換成系統管理員身份,
在提示符下輸入 logout 即可注銷用戶
使用細節: logout 注銷指令在圖形運行級別無效,在 運行級別 3 下有效,
3. 用戶管理
Linux 系統是一個多用戶多任務的作業系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個 賬號,然后以這個賬號的身份進入系統
3.1 基本指令
1、添加一個用戶
useradd 用戶名
創建用戶之后,默認會在 /home/ 下創建一個和用戶同名的目錄,例:/home/Tom ,
使用該用戶登錄的話,會默認進入該目錄,
2、給用戶指定密碼
passwd 用戶名
3、指定用戶目錄
useradd -d 指定目錄 用戶名
會在 /home/ 下創建一個指定的目錄,
4、洗掉用戶
# 不洗掉用戶目錄
userdel 用戶名
# 洗掉用戶的同時洗掉用戶目錄
userdel -r 用戶名
5、切換用戶
# 使用 - 會顯示上次登錄的時間,如果不寫 - 就不顯示上次登錄時間,
su - 用戶名
注意:低權限用戶切換到高權限用戶時,要輸入密碼,反之,則不需要,
當需要回傳到原來用戶時,使用 exit/logout 指令,
6、查詢用戶資訊
id 用戶名

7、查詢當前登錄用戶
who am i
這條指令顯示第一次登陸到這個系統的用戶,例如:使用root登陸到系統,然后又使用 su - 用戶名 ,這時使用 who am i 顯示的仍然是root的資訊,
3.2 用戶組
定義:類似于角色,系統可以對有共性/權限的多個用戶進行統一的管理,可以將多個用戶劃分到一個組,然后給這個組授予某權限,那么這一組中的所有用戶都將擁有該權限,
如果在創建用戶的時候,沒有創建組,則默認會創建一個和用戶同名的組,并把該用戶歸于該組下,

1、新增一個組
groupadd 組名
2、洗掉一個組
groupdel 組名
3、創建用戶時將其歸于某個組
useradd -g 組名 用戶名
4、修改用戶的組
usermod -g 組名 用戶名
用戶和組相關的檔案
(1)/etc/passwd 檔案

-
用戶的組態檔,記錄用戶的各種資訊,
-
每行的含義:
- 用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄 Shell
用戶在XShell中發起指令:cd /home ,Linux內核是無法識別的,需要一個翻譯官,這個翻譯官就是Shell,常用的Shell是Bash,
(2)/etc/shadow 檔案
-
口令的組態檔
-
每行的含義:
- 登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
(3)/etc/group 檔案
- 組(group)的組態檔,記錄 Linux 包含的組的資訊
- 每行含義:
- 組名:口令:組標識號:組內用戶串列
4. 實用指令
4.1 運行級別
(1)運行級別說明:
- 0 :關機
- 1 :單用戶【找回丟失密碼】
- 2:多用戶狀態沒有網路服務
- 3:多用戶狀態有網路服務
- 4:系統未使用保留給用戶
- 5:圖形界面
- 6:系統重啟
常用運行級別是 3 和 5 ,也可以指定默認運行級別,
在 centos7 以前,運行級別是在/etc/inittab 檔案中設定的,
使用init 指令切換運行級別,
init 0 :表示關機
(2)指定運行級別:
1、運行級別
# 運行級別3
multi-user.target
# 運行級別5
graphical.target
2、查看當前默認的運行級別:
systemctl get-default
3、設定默認的運行級別(重啟后生效)
systemctl set-default xxx.target
4.2 找回root密碼
每個版本的指令有所差異,這里以CentOS 7.6為例,
具體步驟如下:
1、先重啟系統,進入開機界面后(這里一定要快,在這個界面只有5秒的時間就會切換到用戶登錄界面),在開機界面中按 e 進入編輯模式,
2、 進入編輯界面,使用鍵盤上的上下鍵把游標往下移動,找到以 Linux16開頭內容所在的行數,在行的最后面輸入:init=/bin/sh,
3、輸入完成后,直接按快捷鍵:Ctrl+x 啟動系統,進入單用戶模式
4、接著,在游標閃爍的位置中輸入:mount -o remount,rw /(注意:各個單詞間有空格),完成后按鍵盤的回車鍵(Enter),如圖
5、然后輸入 passwd ,完成后按鍵盤的回車鍵(Enter),輸入密碼,然后再次確認密碼即可( 密碼長度最好8位以上,但不是必須的),密碼修改成功后,會顯示passwd…的樣式,說明密碼修改成功,(注意:這里不能使用小鍵盤的數字鍵!!!)
6、接著,在滑鼠閃爍的位置中(最后一行中)輸入:touch /.autorelabel(注意:touch與 /后面有一個空格),完成后按鍵盤的回車鍵(Enter)
7、 繼續在游標閃爍的位置中,輸入:exec /sbin/init(注意:exec與 /后面有一個空格),完成后按鍵盤的回車鍵(Enter),等待系統自動修改密碼(這個程序時間可能有點長,耐心等待),完成后,系統會自動重啟, 新的密碼生效了,
8、然后使用修改后的密碼登錄到系統,可以選擇使用指令 passwd root 修改剛才改好的密碼,改為好記的,
4.3 幫助指令
在Linux中,隱藏檔案是以 . 開頭的,
# 列出所有檔案,包括隱藏檔案
ls -a
指令可以組合使用:
# 單列顯示所有檔案,等同于 ll
ls -l
# 單列顯示所有檔案,包括隱藏檔案,
ls -al 或 ls -la
# 查看指定目錄下的內容
ls /root -al
# 加個選項 h 表示顯示的時候按人類便于閱讀的方式展示
ls -lh
man 指令獲得幫助資訊
# 查看 ls 指令的幫助資訊
man ls
help 指令,獲得 shell 內置命令的幫助資訊(英文顯示)
help cd
4.4 檔案目錄類指令
1、顯示當前作業目錄的絕對路徑
pwd
- 絕對路徑:總是從跟路徑
/出發, - 相對路徑:從當前目錄出發,
2、切換目錄指令,cd
# 切換到自己的家目錄
cd ~
# 回到當前目錄的上一層
cd ..
# 使用絕對路徑切換到 root 目錄
cd /root 案例
# 使用相對路徑到/root 目錄, 比如在 /home/tom
cd ../../root
3、創建目錄指令,mkdir
# mkdir 不加引數,默認只能創建一個mul,
mkdir 目錄
例:mkdir /home/dog :在home目錄下創建dog目錄
# 創建多級目錄
mkdir -p 目錄
例:mkdir -p /home/animal/dog :在home下創建animal,再再animal下創建dog目錄,
4、洗掉空目錄
# 洗掉空目錄,如果不是空目錄,則不能使用該指令
rmdir [選項] 目錄
# 洗掉非空目錄,rf 表示遞回強制洗掉
rm -rf 目錄
5、創建空檔案,touch
touch 檔案名稱
例:touch A.txt
6、拷貝指令,cp
# source代表拷貝的是哪個檔案, dest代表把檔案拷貝到哪個地方,
# -r 選項表示遞回復制整個檔案夾
cp [選項] source dest
例:cp A.txt test/ : 表示將A.txt 檔案復制到test目錄下
例:cp -r test test01 :表示將當前目錄下的test目錄和test目錄中的所有內容拷貝到 當前目錄下的test01目錄下,
# 強制覆寫不提示的方法:\cp
\cp -r test test01
7、洗掉檔案或目錄指令,rm
# -r 遞回洗掉整個檔案夾
# -f 強制洗掉不提示
rm [選項] 目錄或檔案
8、移動或重命名檔案或目錄,mv
# 重命名,(同一目錄下)
mv oldFileName newFileName
例:mv A.txt AA.txt
# 移動檔案(剪切)
mv 源路徑 目的路徑
例: mv AA.txt ../test : 將當前目錄下AA.txt檔案移動到和當前目錄同級的test目錄下,
例:mv B.txt ../test01/BB.txt : 移動并且重命名
9、查看檔案內容,cat
# -n 顯示行號
cat [選項] 檔案
管道命令,將前一個指令的結果,再交給下一個指令去處理,格式 前一個指令 | 指令 ,
# 將 cat -n /etc/profile 指令的處理結果,再交給 more去處理
cat -n /etc/profile | more
more 指令:
- 是一個基于VI 編輯器的文本過濾器,它以全螢屏的方式按頁顯示文本檔案的內容,
- more 指令中內置了若干快捷鍵(互動的指令),如下:
| 操作 | 功能描述 |
|---|---|
| space | 向下翻頁 |
| q | 立刻離開more,不再顯示檔案內容 |
| Ctrl+F | 向下滾動一屏 |
| Ctrl+B | 回傳上一屏 |
| = | 輸出當前行的行號 |
| Enter | 向下翻一行 |
| :f | 輸出檔案名和當前行的行號 |
10、查看大檔案內容,less,
less 檔案
-
less 指令用來分屏查看檔案內容,它的功能與more 指令類似,但是比more 指令更加強大,支持各種顯示終端,
-
less 指令在顯示檔案內容時,并不是一次將整個檔案加載之后才顯示,而是根據顯示需要加載內容,對于顯示大型檔案具有較高的效率,
-
基本語法如下:
| 操作 | 功能描述 |
|---|---|
| space | 向下翻頁 |
| pagedown | 向下翻頁 |
| pageup | 向上翻頁 |
| /字串 | 向下搜索 字串 的功能;n:向下查找,N:向上查找 |
| ?字串 | 向下搜索 字串 的功能;n:向上查找,N:向下查找 |
| q | 離開當前程式 |
11、輸出指令,echo,
echo [選項] [輸出內容]
# 輸出 Hello,Linux 到控制臺
echo "Hello,Linux"
# 輸出內容到檔案
echo "Hello,Linux" > test.txt
# 輸出環境變數
echo $PATH
# 輸出主機名
echo $HOSTNAME
12、查看檔案開頭,head指令
head 用于顯示檔案的開頭部分內容,默認情況下 head 指令顯示檔案的前 10 行內容,
# 語法
head [選項] 檔案
# 查看指定行數的檔案,比如:查看前5行
head -n 5 /etc/profile
# 查看 /etc/profile 檔案的前10行
head /etc/profile
13、tail 指令
tail 用于輸出檔案中尾部的內容,默認情況下 tail 指令顯示檔案的后 10 行內容,
# 語法,默認查看檔案尾 10 行內容
tail 檔案
# 查看檔案尾5行
tail -n 5 檔案
實時監控該檔案的所有更新
tail -f 檔案
14、輸出重定向> 和 追加 >> 指令
# echo 指令本來是將內容輸出到終端,使用重定向指令 > ,之后,就可以將內容重定向輸出到檔案 MyFile.txt 中, 如果指定檔案不存在就會先創建該檔案,
echo "Hello,World" > MyFile.txt
指令 > 是覆寫寫,指令 >> 是追加寫,
# 將串列的內容重定向寫入檔案中
ls -l > 檔案
例:ls -l > a.txt
# 串列的內容追加到檔案的末尾
ls -l >> 檔案
例:ls -l >> a.txt
# 將檔案 1 的內容覆寫到檔案 2,可以實作檔案的復制粘貼
cat 檔案1 > 檔案2
# 顯示當前日歷顯示到終端
cal
15、軟鏈接指令,ln,
ln,軟鏈接也稱為符號鏈接,類似于windows 里的快捷方式,主要存放了鏈接其他檔案的路徑,
創建軟鏈接:
# 給原檔案創建一個軟鏈接
ln -s [原檔案或目錄] [軟鏈接名]
例:ln -s /root myRoot
洗掉軟鏈接:(后面不要寫 / ,否則會認為它是一個目錄)
rm /home/myRoot
16、查看歷史執行指令,history
# 查看歷史執行的所有檔案(默認顯示所有)
history
# 只查看最近的 10 條記錄
history 10
# 執行曾經執行過的指令
!指令序號
4.5 時間日期類指令
1、顯示或設定日期
# 顯示當前時間
date
# 顯示當前年份
date +%Y
# 顯示當前月份
date +%m
# 顯示當前是一月中的哪一天
date +%d
# 顯示年月日時分秒
date "+%Y-%m-%d %H:%M:%S"
# 設定時間
date -s 字串時間
例:date -s “2020-11-03 20:02:10”
# 顯示日歷,不加選項,顯示本月日歷
cal [選項]
# 顯示 2020 年日歷
cal 2020
4.6 搜索查找類指令
1、find指令
find 指令將從指定目錄向下遞回遍歷其各個子目錄,將滿足條件的檔案或者目錄顯示在終端,
可以使用通配符,
#
find [搜索范圍] [選項]
選項:
| 選項 | 功能 |
|---|---|
| -name | 按照指定的檔案名查找模式查找檔案 |
| -user | 按照屬于指定用戶查找模式查找檔案 |
| -size | 按照指定檔案大小查找模式查找檔案 |
# 查找 /home 目錄下名字為 A.txt 的檔案
find /home -name A.txt
# 查找 /home 目錄下以 txt 結尾的檔案
find /home -name *.txt
# 查找 /opt 目錄下,屬于用戶root的檔案,這里可以使用管道命令來顯示,
find /opt -user root | more
# 查找整個 linux 系統下大于 200M的檔案(+n大于n, -n小于n ,n等于n, 單位有 k,M,G)
find / -size +200M
2、locate 指令
locate 指令可以快速定位檔案路徑,locate 指令利用事先建立的系統中所有檔案名稱及路徑的 locate 資料庫實作快速定位給定的檔案,
Locate 指令無需遍歷整個檔案系統,查詢速度較快,為了保證查詢結果的準確度,管理員必須定期更 新 locate 時刻,
由于 locate指令基于資料庫進行查詢,所以第一次運行前,必須使用 updatedb指令創建 locate資料庫,
locate 要查詢的檔案
# 查看某個指令在哪個目錄下,比如 ls 指令在哪個目錄
which 指令
例:which reboot
3、grep指令和管道符號 |
grep 過濾查找,
管道符 |,表示將前一個命令的處理結果輸出傳遞給后面的命令處理,
# 語法
grep [選項] 查找內容 源檔案
選項:
| 選項 | 功能 |
|---|---|
| -n | 顯示匹配行及行號 |
| -i | 忽略字母大小寫進行匹配 |
# 查看 MyFile.txt 中關鍵字 Hello,
# 就是將 cat MyFile.txt 指令的結果,交給 grep "Hello" 指令再處理,
cat MyFile.txt | grep "Hello"
grep -n "Hello" MyFile.txt
4.7 壓縮和解壓指令
1、gzip/gunzip 指令
gzip:壓縮gunzip:解壓
# 壓縮檔案,只能將檔案壓縮為 *.gz 檔案,會替換原有檔案
gizp 檔案
# 解壓檔案,只能解壓 *.gz 檔案
2、zip/unzip 指令
zip:用于壓縮檔案或目錄,unzip: 用于解壓的,
#
zip [選項] xxx.zip 要壓縮的檔案
#
unzip [選項] xxx.zip
# 將 /home 目錄壓縮為 myhome.zip ,并放在當前目錄下
zip -r myhome.zip /home
# 將當前目錄下的 myhome.zip 解壓到 /opt/temp 目錄下
unzip -d /opt/temp myhome.zip
3、tar指令
# 打包檔案或目錄,壓縮后的檔案格式是 xxx.tar.gz,
tar [選項] xxx.tar.gz 要打包的檔案或目錄(多個檔案用空格隔開)
選項:
| 選項 | 功能 |
|---|---|
| -c | 產生 .tar 打包檔案 |
| -v | 顯示詳細資訊 |
| -f | 指定壓縮后的檔案名 |
| -z | 打包同時壓縮 |
| -x | 解壓 .tar 檔案 |
# 壓縮當前目錄下的 dog.txt 和 cat.txt 為 dc.tar.gz
tar -czvf dc.tar.gz dog.txt cat.txt
# 解壓當前目錄下的 dc.tar.gz
tar -zxvf dc.tar.gz
# 將當前目錄下的 dc.tar.gz 解壓到指定目錄 /opt/temp下,(大寫C)
tar -zxvf dc.tar.gz -C /opt/temp
5. 組和權限
5.1 組的管理
在 linux 中的每個用戶必須屬于一個組,不能獨立于組外,
在 linux 中每個檔案有所有者、所在組、其它組的概念,
- 所在組:檔案所在的組就是所在組
- 其他組:非所在組對于該檔案來說就是其他組,
- 所有者:一般為檔案的創建者,誰創建了該檔案,就自然的成為該檔案的所有者,
1、查看檔案所有者:
2、修改檔案或目錄所有者,chown
chown 用戶名 檔案名
# 修改所有者和所屬組
chown 用戶:組名 檔案或目錄
# 遞回修改目錄下的所有檔案的所有者
chown -R 用戶 目錄
3、創建組
groupadd 組名
useradd -g 組名 用戶
用戶創建檔案之后,這個檔案的所在組就是該用戶的所在組,
4、修改組
# 改變檔案或目錄的所在組
chgrp 組名 檔案/目錄
# 遞回修改目錄的所有檔案的所屬組
chgrp -R 組名 目錄
5、改變用戶所在組,
注意:使用root用戶改變用戶的組之后,用戶再已登錄的情況下,并不能立即擁有改變后組的權限,該用戶退出重新登錄,即可擁有修改后組的權限,
# 改變用戶所在組
usermod -g 新組名 用戶
# 改變用戶登錄的是初始目錄(默認用戶登錄時會進入自己的組目錄),前提是用戶需要有進入到新目錄的權限
usermod -d 目錄名 用戶
# 查看某個組是否存在
cat /etc/group | grep 組名
5.2 權限的管理
1、權限介紹
ll 顯示資訊如下:
這一列共有10位,每一位都有其含義:
- 0位:確定檔案型別
- i:表示鏈接,相當于Windows中的快捷方式,
- d:表示目錄,相當于Windows中的檔案夾,
- c:表示字符設備,比如:滑鼠,鍵盤,
- b:表示塊設備,比如:硬碟,
- -:表示是普通檔案,比如:txt 檔案,
- 1-3位:確定檔案的所有者對該檔案的權限,—User
- 4-6位:確定所在組的其他用戶對該檔案的權限,—Group
- 7-8位:確定其他用戶擁有對該檔案的權限,—Other
2、rwx 權限詳解
-
作用到檔案
r:read,可讀,w:write,可修改,但不代表可以洗掉,洗掉一個檔案的前提條件是對該檔案所在的目錄有寫權限,才能洗掉該檔案x:execute,可執行,
-
作用到目錄:
r:read,可讀,ls 查看目錄內容,w:write,可修改,可以在目錄內創建、洗掉檔案和重命名目錄,x:execute,可進入該目錄,
-
rwx也可以用數字來表示:r=4,w=2,x=1- 這三個數字剛好可以組合出唯一的權限,比如:6只能是r+w,3只能是w+x,等,
-
檔案的讀寫權限和目錄的讀寫權限獨立,
- 即:如果一個目錄只有 x 權限,而目錄下檔案有 rw 權限,則用戶可以進入該目錄,但不能使用 ls 之類的指令列出檔案串列,但是可以讀和寫目錄下的檔案,
3、其他說明
- 紅色:
- 如果是普通檔案,這個數字就是1
- 如果是目錄,這個數字就是該目錄下的檔案和子目錄的總數,
- 黃色:檔案大小,單位是位元組,如果是目錄,則顯示 4096,
- 粉色:修改日期,
4、修改權限
- 第一種方式:使用 +、- 修改權限
- u:user,屬主,
- g:group,屬組,
- o:other,其他用戶,
- a:all,所有人,相當于 u+g+o
# 該檔案或目錄賦予權限
chmod u=rwx,g=rx,o=x 檔案或目錄
# 給檔案添加權限
chmoe [u|g|o][+|-] 檔案或目錄
# 例:給 abc.txt 檔案的所有者讀寫執行權限,給所在組讀執行權限,給其他用戶讀權限,
chmod u=rwx,g=rx,o=x abc.txt
# 例:給 abc.txt 檔案的所有者去掉執行權限,增加組的寫權限
chmod u-x,g+w abx.txt
# 例:給 abc.txt 檔案的所有用戶添加讀閑暇
chmod a+r abc.txt
- 第二種方式:使用數字修改權限,
- r=4
- w=2
- x=1
chmod u=rwx,g=rx,o=x 檔案或目錄
# 相當于
chmod 751 檔案或目錄
5.3 練習鞏固
(1)練習權限相關指令
- 創建兩個組,animal 和 fruit
groupadd fruit
groupadd animal
- 創建四個用戶
- `cat,dog:創建時就指定為animal組
- orange,apple:創建完成后再修改組到fruit組,
useradd -g animal cat
useradd -g animal dog
useradd orange
useradd apple
usermod -g fruit orange
usermod -g fruit apple
- 分別設定密碼,
pwsswd xxx
1、使用 cat 登錄,創建一個檔案,file.txt,并寫入:”I am cat"
2、查看 fruitFile.txt 的權限,
可以看到權限為:
- User:讀寫
- Group:讀
- Other:讀
3、現在將該檔案的寫權限給 dog ,即:給同組用戶賦予 w 權限,
4、dog登錄,嘗試寫file.txt 檔案,
- 先要進入到 /home/cat 目錄,因為file檔案是cat創建的,自然就在 cat 的家目錄下,也就是 /home/cat 目錄下,
- 但是現在dog是無法進入 /home/cat 目錄的,我們看一下 /home/cat 目錄的權限:
- 可以看到,同組用戶是沒有任何權限的,
- 我們將 /home/cat 目錄的 x 權限賦予同組用戶,
- 可以看到,這時 dog 可以進入 /home/cat 目錄,但是無法使用
ls之類的指令列出目錄下的內容,這是因為我們并沒有給 同組用戶 r 的權限,
6、現在再次使用 cat 或root 用戶,賦予 /home/cat 目錄同組用戶的 r 權限,
7、dog用戶可以使用 ll 指令展示目錄下的內容,并且可以修改 /home/cat 目錄下的 file.txt 檔案,
8、dog 用戶嘗試在 /home/cat 目錄下創建檔案 dogFile.txt,
- 無法創建,原因是 dog 用戶只擁有對該目錄的
rx,權限,并沒有w權限, - 只有
w權限才可以在目錄中創建、洗掉檔案,
9、再次賦予 dog 用戶 w 的權限,
10、dog 用戶現在可以創建 dogFile.txt 檔案,
11、apple用戶嘗試進入 /home/cat 目錄,發現并不能進入,
- 因為 /home/cat 目錄對其他組用戶沒有賦予任何權限,
12、現在將 apple 用戶修改組到 animal組中,嘗試進入 /home/cat 目錄,修改 file.txt 檔案,
- 發現修改用戶組之后, apple還是無法進入 /home/cat 目錄,
- 原因:我們修改組的時候,apple用戶處于登錄狀態,他的組資訊已經是確定了的,
- 解決:暫時的解決方案apple用戶是重新登錄,
- apple用戶重新登錄,可以進入 /home/cat 目錄,
(2)驗證檔案和目錄的權限的獨立性
1、查看 /home/cat 目錄和該目錄下 file.txt 檔案的權限,
2、修改 /home/cat 目錄對同組用戶的權限僅為 x,file.txt檔案的權限不變,
3、dog 用戶登錄,并進入到 /home/cat 目錄,
- dog用戶雖然沒有對 /home/cat 目錄的
rw權限,但是卻不影響它查看和修改 file.txt 檔案,
這便是檔案和目錄的權限的獨立性
【系列文章】
1. Git&GitHub(基礎)
2. Git&GitHub(進階)
3. java多執行緒
4. JavaScript 總結
5. SpringMVC(一)
6. SpringMVC(二)
……
關注博主🤞🤞
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258117.html
標籤:其他
上一篇:Linux檔案系統
下一篇:Julia1.6的更新程序
