二、文件管理與文本編輯器vim

一、Linux文件系統(tǒng)結(jié)構(gòu)

???????文件和目錄被組織成一個(gè)單根倒置樹(shù)結(jié)構(gòu),從根目錄下開(kāi)始,用“/”表示,根文件系統(tǒng)(rootfs):root filesystem路徑為分隔的 /。


文件系統(tǒng)樹(shù)結(jié)構(gòu)
  • /boot:引導(dǎo)文件存放目錄,內(nèi)核文件(vmlinuz)、引導(dǎo)加載器(bootloader, grub)都存放于此目錄
  • /bin:所有用戶使用的基本命令;不能關(guān)聯(lián)至獨(dú)立分區(qū),OS啟動(dòng)即會(huì)用到的程序
  • /sbin:管理類的基本命令;不能關(guān)聯(lián)至獨(dú)立分區(qū),OS啟動(dòng)即會(huì)用到的程序
  • /lib:?jiǎn)?dòng)時(shí)程序依賴的基本共享庫(kù)文件以及內(nèi)核模塊文件(/lib/modules)
  • /lib64:專用于x86_64系統(tǒng)上的輔助共享庫(kù)文件存放位置
  • /etc:配置文件目錄
  • /home/USERNAME:普通用戶家目錄
  • /root:管理員的家目錄
  • /usr:存放所有命令、庫(kù)、手冊(cè)頁(yè)
  • /dev:存放設(shè)備文件
  • /var:包含經(jīng)常發(fā)生變動(dòng)的文件,如郵件、日志文件、計(jì)劃任務(wù)等
  • /tmp:存放臨時(shí)文件
  • /run:存放自系統(tǒng)啟動(dòng)以來(lái)描述系統(tǒng)信息的文件。

二、文件元數(shù)據(jù)

文件有兩類數(shù)據(jù):
元數(shù)據(jù):metadata
數(shù)據(jù):data

???????元數(shù)據(jù)包含屬性(Mode)、所有者信息(owner info)、大?。⊿ize)、時(shí)間戳(Timestamps)。

命令名稱:stat
命令所在路徑:/bin/stat
執(zhí)行權(quán)限:所有用戶
功能描述:顯示文件的元數(shù)據(jù)信息
語(yǔ)法:stat [-c] 文件名
選項(xiàng):
-c 自定義輸出格式
%a 以八進(jìn)制格式顯示文件訪問(wèn)權(quán)限
%A 以可讀形式顯示訪問(wèn)權(quán)限

范例1:
顯示文件的元數(shù)據(jù)信息

命令:stat anaconda-ks.cfg
執(zhí)行結(jié)果:
File: ‘a(chǎn)naconda-ks.cfg’
Size: 1419            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 33574992    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2020-04-06 12:10:57.881048189 +0800
Modify: 2020-04-06 12:10:57.885048189 +0800
Change: 2020-04-06 12:10:57.885048189 +0800
 Birth: -

輸出解釋:
File:文件名
Size:文件大?。▎挝唬築)
Blocks:文件所占扇區(qū)個(gè)數(shù),為8的倍數(shù)(通常的 Linux 的扇區(qū)大小為 512 B,連續(xù)八個(gè)扇區(qū)組成一個(gè)block)
IO Block:每個(gè)數(shù)據(jù)塊的大小(單位:B)
regular file:普通文件(此處顯示文件的類型)
Inode:文件的Inode號(hào)
Links:硬鏈接次數(shù)
Access:權(quán)限
Uid:(屬主id/屬主名)
Gid:(屬組id/屬組名)
Access:最近一次訪問(wèn)時(shí)間
Modify:內(nèi)容/數(shù)據(jù)改動(dòng)時(shí)間
Change:屬性改動(dòng)時(shí)間

命令名稱:touch
命令所在路徑:/bin/touch
執(zhí)行權(quán)限:所有用戶
功能描述:創(chuàng)建空文件,刷新時(shí)間戳
語(yǔ)法:touch [-a] 文件名
選項(xiàng):
-a 僅改變 atime和ctime
-m 僅改變mtime和ctime

范例1:
創(chuàng)建一個(gè)空文件

命令:touch newfile;stat newfile
執(zhí)行結(jié)果:
  File: ‘newfile’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 33638660    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-04-10 14:06:46.891046046 +0800
Modify: 2020-04-10 14:06:46.891046046 +0800
Change: 2020-04-10 14:06:46.891046046 +0800
 Birth: -

范例2:
更新文件的時(shí)間戳信息

命令:touch newfile;stat newfile
執(zhí)行結(jié)果:
  File: ‘newfile’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 33638660    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-04-10 14:06:59.701046720 +0800
Modify: 2020-04-10 14:06:59.701046720 +0800
Change: 2020-04-10 14:06:59.701046720 +0800
 Birth: -

對(duì)比范例1的執(zhí)行結(jié)果發(fā)現(xiàn)時(shí)間戳信息已被刷新

三、文件鏈接

硬鏈接,并列關(guān)系,不同名稱且獨(dú)立,不能跨設(shè)備(分區(qū))
軟鏈接,類似Windows的快捷方式,刪除對(duì)原文件不會(huì)產(chǎn)生影響

命令名稱:ln
命令所在路徑:/bin/ln
執(zhí)行權(quán)限:所有用戶
功能描述:創(chuàng)建文件鏈接
語(yǔ)法:ln [-sf] 原始文件名 鏈接文件名
選項(xiàng):
-s 創(chuàng)建一個(gè)符號(hào)鏈接
-f 強(qiáng)制,創(chuàng)建鏈接文件時(shí)如已存在則覆蓋

范例1:
創(chuàng)建一個(gè)硬鏈接

命令:cd /etc;ln hosts hosts.hard
           ls -l hosts
執(zhí)行結(jié)果:
-rw-r--r--. 2 root root 158 6月   7 2013 hosts

從執(zhí)行結(jié)果可以看到創(chuàng)建時(shí)原始文件的鏈接數(shù)遞增+1

嘗試刪除原始文件,查看鏈接文件內(nèi)容是否依舊存在。

命令:rm -f hosts(刪除前通過(guò)cp命令進(jìn)行文件備份)
     cat hosts.hard 
執(zhí)行結(jié)果:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

從上述執(zhí)行結(jié)果可以看到原始文件即使被刪除,硬鏈接文件不會(huì)受到影響。

范例2:
創(chuàng)建一個(gè)軟鏈接

命令:cd /root;ln -s newfile newfile.link
     ls -l newfile.link;ls -l newfile
執(zhí)行結(jié)果:
lrwxrwxrwx. 1 root root 7 4月  10 14:27 newfile.link -> newfile
-rw-r--r--. 1 root root 0 4月  10 14:30 newfile

從執(zhí)行結(jié)果可以看到為newfile創(chuàng)建軟鏈接文件newfile.link,鏈接數(shù)不會(huì)遞增。

嘗試刪除原始文件,查看鏈接文件內(nèi)容是否依舊存在。

命令:rm -f newfile
     cat newfile.link 
執(zhí)行結(jié)果:
cat: newfile.link: 沒(méi)有那個(gè)文件或目錄

從上述執(zhí)行結(jié)果可以看到原始文件被刪除,軟鏈接文件將會(huì)受到影響。

通過(guò)實(shí)驗(yàn)操作,得出硬鏈接和軟鏈接區(qū)別如下:
1.本質(zhì):硬鏈接同一個(gè)多個(gè)名字,軟鏈接不同文件
2.跨分區(qū),硬鏈接不支持跨設(shè)備
3.目錄,硬鏈接不支持對(duì)目錄創(chuàng)建
4.相互關(guān)系,硬鏈接為平等關(guān)系,軟鏈接有依賴關(guān)系
5.inode號(hào)
6.鏈接數(shù),軟鏈接不會(huì)增長(zhǎng)鏈接數(shù)
7.路徑,軟鏈接原始文件路徑相當(dāng)于鏈接文件,硬鏈接相對(duì)于當(dāng)前目錄
8.文件類型,軟鏈接為l,硬鏈接同原始文件

四、文件管理常見(jiàn)命令

1.pwd
命令所在路徑:/bin/pwd
執(zhí)行權(quán)限:所有用戶
功能描述:顯示當(dāng)前的工作目錄

范例1:
顯示當(dāng)前所在的工作目錄

命令:pwd
執(zhí)行結(jié)果:
/root

2.cd
命令所在路徑:/bin/cd
執(zhí)行權(quán)限:所有用戶
功能描述:切換目錄

范例1:
切換到指定的目錄

命令:cd /etc

范例2:
切換到上一次目錄

命令:cd -

范例3:
切換到上級(jí)目錄

命令:cd ..

3.mkdir
命令所在路徑:/bin/mkdir
執(zhí)行權(quán)限:所有用戶
功能描述:創(chuàng)建文件夾
語(yǔ)法:mkdir [-pv] 文件夾名
選項(xiàng):
-p 多級(jí)文件夾
-v 顯示詳細(xì)的輸出

范例1:
創(chuàng)建一個(gè)指定名稱的文件夾

命令:mkdir newdir

范例2:
創(chuàng)建多級(jí)目錄

命令:mkdir -p dir1/dir2

范例3:
創(chuàng)建目錄并顯示詳細(xì)的過(guò)程

命令:mkdir -pv dir3/dir4/dir5
執(zhí)行結(jié)果:
mkdir: created directory ‘dir3’
mkdir: created directory ‘dir3/dir4’

4.rm
命令所在路徑:/bin/rm
執(zhí)行權(quán)限:所有用戶
功能描述:刪除文件/文件夾
語(yǔ)法:rm [-rf] 文件/文件夾
選項(xiàng):
-r 刪除文件夾
-f 強(qiáng)制執(zhí)行

范例1:
刪除一個(gè)指定名稱的文件

命令:rm newfile
rm: remove regular empty file ‘newfile’? y

范例2:
刪除一個(gè)指定名稱的文件夾

命令:rm -r dir3
rm: descend into directory ‘dir3’? y
rm: remove directory ‘dir3/dir4’? y

范例3:
強(qiáng)制刪除一個(gè)指定名稱的文件

命令:rm -f newfile.link

5.rmdir
命令所在路徑:/bin/rmdir
執(zhí)行權(quán)限:所有用戶
功能描述:刪除空文件夾
語(yǔ)法:rmdir 文件夾
選項(xiàng):
-p 遞歸刪除文件夾

范例1:
刪除一個(gè)空文件夾

命令:rmdir dir1

6.ls
命令所在路徑:/bin/ls
執(zhí)行權(quán)限:所有用戶
功能描述:列出文件的信息
語(yǔ)法:ls [-alh] [-Rt] 文件/文件夾
選項(xiàng):
-a 顯示所有文件,包含隱藏文件
-l 以長(zhǎng)格式顯示文件詳細(xì)信息
-h 以方便查看的形式顯示文件大小
-R 遞歸顯示
-t 以最新的內(nèi)容修改時(shí)間作為條件倒序顯示

范例1:
查看指定文件的詳細(xì)信息

命令:ls -l anaconda-ks.cfg
執(zhí)行結(jié)果:
-(文件類型,普通文件)rw-------(權(quán)限). 1(引用次數(shù)) root(所有者) root(所屬組) 1419(文件大小,單位Bytes) Apr  6 12:10(默認(rèn)日期時(shí)間) anaconda-ks.cfg(文件名)

范例2:
遞歸顯示/etc目錄下的文件/文件夾

命令:ls -R /etc
執(zhí)行結(jié)果:
/etc:
adjtime
aliases
aliases.db
alternatives
anacrontab
asound.conf
audisp
audit
bash_completion.d
bashrc
……

7.file
命令所在路徑:/bin/file
執(zhí)行權(quán)限:所有用戶
功能描述:顯示文件的類型
語(yǔ)法:file [-bL] 文件名稱
選項(xiàng):
-b 列出文件辨識(shí)結(jié)果時(shí),不顯示文件名稱
-L 查看指定軟鏈接對(duì)應(yīng)文件的文件類型

范例1:
查看指定文件的類型

命令:file anaconda-ks.cfg
執(zhí)行結(jié)果:
anaconda-ks.cfg: ASCII text

8.cp
命令所在路徑:/bin/cp
執(zhí)行權(quán)限:所有用戶
功能描述:拷貝文件/文件夾
語(yǔ)法:cp [-rpa] 源文件/文件夾 目標(biāo)文件/文件夾
選項(xiàng):
-r 拷貝目錄
-a 歸檔,相當(dāng)于-dR --preserv=all
-p 等同于 --preserve=mode,ownership,timestamps

范例1:
將一個(gè)文件拷貝到指定目錄下

命令:cp /etc/profile /tmp

范例2:
將一個(gè)文件夾拷貝到指定目錄下

命令:cp -r /etc/ /tmp

9.mv
命令所在路徑:/bin/mv
執(zhí)行權(quán)限:所有用戶
功能描述:移動(dòng)文件/文件夾位置或重命名
語(yǔ)法:mv [-b] 源文件/文件夾 目標(biāo)位置或新名稱
選項(xiàng):
-b 目標(biāo)存在,覆蓋前先備份,形式為filename ~

范例1:
將一個(gè)文件移動(dòng)到指定目錄下

命令:mv newfile /opt

范例2:
重命名一個(gè)文件

命令:mv newfile1 newfile2

五、vi/vim文本編輯器

三種工作模式:

  1. 命令(Normal)模式:默認(rèn)模式,移動(dòng)光標(biāo),剪切/粘貼文本
  2. 插入(Insert)或編輯模式:修改文本
  3. 擴(kuò)展命令(extended command )模式:保存,退出等

命令名稱:vi
命令所在路徑:/bin/vi
執(zhí)行權(quán)限:所有用戶
功能描述:編輯文件內(nèi)容
語(yǔ)法:vi [-br] 文件名
選項(xiàng):
-b 二進(jìn)制方式打開(kāi)文件
-r 恢復(fù)之前記錄的會(huì)話

查找并替換功能
格式:s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符
修飾符:
i 忽略大小寫(xiě)
g 全局替換,默認(rèn)情況下,每一行只替換第一次出現(xiàn)
gc 全局替換,每次替換前詢問(wèn)

范例1:
查找替換刪除/tmp/profile文件中行首的空白字符

命令:vi /tmp/profile
%s/^[[:space:]]\+//
33 substitutions on 33 lines

輸入:wq 保存退出

范例2:
vim中設(shè)置TAB縮進(jìn)4個(gè)字符

命令:vi .vimrc
set ts=4

輸入:wq 保存退出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容