厚基礎Linux——第三週作業

DBKEL發表於2020-10-11

厚基礎Linux——第三週作業

1、描述Linux發行版的系統目錄名稱命名規則以及用途。

涉及知識點

FHS

Filesystem Hierarchy Standard,檔案系統層次結構標準.顧名思義,是一套檔案系統目錄樹的標準.執行tree / -L 1命令,可以看到這個目錄結構.該標準結構目前由Linux基金會維護.該標準對目錄名稱進行了統一要求,同時也對每個目錄進行了說明.旨在應用程式的安裝目錄不再混亂,同時也方便使用者檢索檔案.筆者至今想起Winodws系統下各個碟符都有的program files,program files(x86),Downloads,tdDowloads,360Download就會想起各種檢索的痛苦歲月:).目錄樹

/bin

必要的二進位制命令檔案.供所有使用者使用.

/boot

用於啟動的靜態檔案.

/dev

裝置檔案.

/etc

作業系統配置檔案.

/home

普通使用者家目錄.

/lib

必要的共享庫和核心模組.

/lib64

備選格式的必要的共享庫和核心模組.

/media

移動儲存裝置的掛載點.

/mnt

檔案系統的臨時掛載點.

/opt

用於存放外掛應用程式包.

/root

root使用者家目錄.

/sbin

必要的系統二進位制檔案,/usr/sbin的軟連結.

/srv

系統服務的相關資料.

/tmp

臨時檔案

/usr

次級目錄樹.

/var

動態資料,如日誌檔案.

/proc

虛擬檔案系統,提供核心和程式的資訊.

/usr

儲存主機的共享的,只讀的檔案.

2、描述檔案的後設資料資訊有哪些,分別表示什麼含義,如何檢視?如何修改檔案的時間戳資訊?

涉及知識點

stats命令檢視後設資料

欄位名含義
FILE檔名
SIZE文字內容所佔用的位元組數
Blocks磁碟上給這個檔案分配的空間
IO BLOCKS每個塊佔用的位元組數
regular file普通檔案
Device裝置編號,16進位制/10進位制
Inode檔案佔用的Inode編號
Links檔案的硬連結數量
Access檔案的訪問許可權,數字形式/rwx形式
Uid檔案所有者,所有者ID/所有者使用者名稱
Gid檔案所屬組,所屬組ID/所屬組名稱
Access檔案最近被讀取的時間
Modify檔案內容最近被修改的時間
Change檔案後設資料或內容最近被修改的時間

修改時間戳

touch可以修改atime,修改檔案內容可以修改mtime,修改檔案內容或後設資料可以修改ctime

#touch常見用法
-a 修改atime
-m 修改mtime
-d 時間描述

程式碼段

#檢視後設資料
stat f1

#修改atime

touch -ad '2008-8-8 20:00' f1


#修改mtime
touch -md '2008-8-8 20:00' f1


[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-KpcqM3If-1602424364475)(https://i.loli.net/2020/10/11/HxGAgubzpVFQOX2.png)]

3、總結軟連線和硬連線區別,並用例項操作說明。

涉及知識點

Linux檔案系統

要理解Linux檔案系統上特有的特性,我們需要簡單介紹一下Linux檔案系統的結構。

超級區塊(superblock)

它儲存了一個檔案系統的整體資訊,包括inode/block的總量,使用量,剩餘量以及檔案系統格式與相關資訊。
我們可以使用df -i 目錄名稱,來檢視這個目錄所在的檔案系統的superblock中的部分資訊
superblock
可以看到分割槽/dev/sda2掛載在根目錄(/)下inode共有52428800,使用了131932,剩餘52296868個。

inode和block

inode記錄檔案系統後設資料,block儲存檔案的實際內容。不同於windows檔案系統的連結串列式查詢資料,Linux先讀取inode資訊,獲取所有指向block的指標。inode和block的關係見下圖,左邊是inode,右邊的部分的資料塊就是block。
在這裡插入圖片描述

硬連結原理

硬連結本質上是多個檔名指向同一個inode。即不對inode,block作任何更改,僅在目錄上增加了另一個檔名,指向了同一個inode。所以本質上,兩個指標互為孿生。也就是說,任何一個硬連結檔案都可以脫離其它硬連結檔案,單獨提供使用。

使用ln命令建立硬連結,通過ll -i命令,可以看到兩個檔案型別都是普通檔案,只是指向該檔案的硬連結數量變為2個,這兩個硬連結都指向同一個inode,67。
硬連結

軟連結原理

軟連結,又叫符號連結。本質上是在當前目錄建立了一個連結檔案,這個檔案有獨立的inode,獨立的block,只是該檔案型別為l,檔案內容為原始檔的檔案路徑。所以本質上,訪問軟連結,是通過軟連結讀取了原始檔的路徑後,再去訪問原始檔。也就是說,原始檔刪除,則軟連結不可用;軟連結刪除,則原始檔不受影響。

使用ln -s 命令建立軟連結,可以看到檔案型別,inode號都與原始檔不同。
在這裡插入圖片描述
刪除原始檔f1後,硬連結能正常訪問,軟連結已經失效。
刪除

硬連結、軟連結特性對比

下面對硬連結和軟連結的特徵製作一張清單

序號特性硬連結軟連結
1本質和原始檔是同一個和原始檔是不同的檔案
2是否可以跨分割槽連結
3是否可以指向目錄
4連結和原始檔關係可以互相替代原始檔刪除即失效,重新建立原始檔,內容不同,連結也有效
5inode號和原始檔相同和原始檔不同
6連結數會增加連結數不會影響連結數
7相對路徑使用相對路徑建立時,以執行命令的目錄作為相對起點使用相對路徑建立時,以連結檔案路徑的作為相對起點。

1,4,5,6在前文都已經示例中已經演示。下面將對2,3,7進行單獨演示。

跨分割槽連結

/,/data屬於不同的分割槽。
在這裡插入圖片描述
在/root下建立檔案,f1,嘗試在/data目錄下建立連結檔案連結f1。
跨分割槽建立
可以看到硬連結建立會直接失敗,軟連結可以正常使用。

連結目錄

在/data下建立目錄d1,嘗試在/data目錄下建立連結檔案連結d1.
建立目錄連結
可以看到硬連結建立會直接失敗。軟連結可以正常連結。

相對路徑

在/data目錄下建立f1檔案,/data/beta/目錄下建立f1檔案,使用軟硬連結命令在/data目錄下建立link檔案,link檔案的存放位置在/data/beta目錄下,驗證此時的連結檔案訪問的檔案是哪個f1檔案。
建立兩個f1
在/data目錄下執行建立命令,可以看到硬連結指向了執行命令的當前目錄,軟連結指向了軟連結本身的的相對目錄。
在這裡插入圖片描述

4、Linux上的檔案管理類命令都有哪些,其常用的使用方法及其相關示例演示。

涉及知識點

以增刪改查的邏輯來介紹檔案管理。

建立

建立又分為建立檔案和建立目錄,常用的建立檔案方式有touch命令,資料流重定向;建立目錄的主要方式有mkdir。

建立檔案
  1. touch 可以建立空檔案,可以批量建立。當檔案已存在時,touch命令只會更新時間後設資料,不會覆蓋原始檔。
    如圖是touch建立1個,多個,配合{}批量生成檔案。
    在這裡插入圖片描述
    在f1中寫入文字,再次使用touch命令建立f1檔案,發現touch並未覆蓋f1檔案內容。
    在這裡插入圖片描述
  2. 重定向符">"建立檔案
    使用重定向符建立檔案,若檔名存在,則會覆蓋掉原有的內容。可以使用該特性快速刪除大型檔案,第一時間釋放空間,這是rm命令做不到的。
    在這裡插入圖片描述
    可以看到f1檔案在重定向後,字元位元組數重新變為了0。
  3. 重定向符’>>‘建立檔案
    使用該方法建立檔案,若原檔案存在,則後設資料也不會改變,對原檔案影響最小。
    在這裡插入圖片描述
建立目錄

建立目錄使用mkdir 命令,預設不支援級聯建立,使用-p選項支援級聯建立。
在這裡插入圖片描述

修改

修改檔名

修改檔案,目錄的名稱都可以使用mv和rename命令
mv可以實現單個檔案的名稱修改,用法是
mv 原檔名 新檔名
在這裡插入圖片描述

rename命令可以對檔名進行批量修改,支援萬用字元,用法是
rename 替換前字元 替換後字元 *
在這裡插入圖片描述

刪除

刪除主要是rm命令,無附加選項可刪除檔案,使用-r選項可刪除目錄,支援萬用字元。

刪除1個或多個檔案

在這裡插入圖片描述

刪除整個目錄

rm -r /data 指連同data目錄及其下面的所有檔案一併刪除,通常配合-f使用,極其危險。
在這裡插入圖片描述

  1. 配合萬用字元
    支援萬用字元
    在這裡插入圖片描述

查詢

查詢檔案主要分為檢視檔案後設資料和檢視檔案資料。
檢視後設資料是使用ll,stat命令,檢視檔案資料是使用cat命令。

檢視後設資料

ll命令滿足大多數檢視需求,要檢視更詳細的資訊則可以使用stat
在這裡插入圖片描述

檢視資料

檢視資料可以使用cat命令,若命令太長,可使用管道符,結合less命令使用
在這裡插入圖片描述
在這裡插入圖片描述
使用less命令後,支援翻頁。

5、複製/etc/profile至/tmp/目錄,用查詢替換命令刪除/tmp/profile檔案中的 行首的空白字元

涉及知識點

使用cp命令複製檔案,使用sed命令刪除行首空白字元

程式碼段

cp /etc/profile /tmp

sed -ri.bak '/^[[:space:]]+[^[:space:]]/s/^[[:space:]]+(.*)$/\1/' /tmp/profile

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-XEGj9zq7-1602424364476)(https://i.loli.net/2020/10/11/Bh4SwruOjWbx3ET.png)]

6、在vim中設定tab縮排為4個字元

涉及知識點

.vimrc是使用者家目錄下的vim配置檔案,在該配置檔案下設定縮排即可

# vimrc常用配置
set number 表示開啟檔案自動顯示行號

set tabstop=4 表示一個Tab鍵顯示出來多少個空格的長度,預設是8,這裡設定為4

set softtabstop=4 表示在編輯模式下按退格鍵時候退回縮排的長度,設定為4

set shiftwidth=4 表示每一級縮排的長度,一般設定成和softtabstop長度一樣

set noexpandtab 當設定成expantab時表示縮排用空格來表示,noexpandtab則用製表符表示一個縮排

set autoindent 表示自動縮排

程式碼段

echo "set tabstop=4" >> /root/.vimrc

相關文章