初識——Linux文件管理

QQ截圖20180331162542

一:文件系統結構

文件目錄

初識——Linux文件管理

初識——Linux文件管理

初識——Linux文件管理

Linux文件目錄結構是一個倒樹狀結構,從根(/)開始依次往下,根文件系統為rootfs:root filesystem;

文件名稱區分大小寫是由文件系統決定的,CentOS6.x默認文件系統為ext4,CentOS7.x上默認文件系統是xfs;

以點(.)開頭的文件為隱藏文件,文件路徑以(/)分割;

文件有倆類數據:元數據和數據;

文件系統分層結構:LSB Linux Standard Base

FHS:(Filesystem Hierarchy Standard)文件系統層次結構標準,想了解更多請訪問:http://www.pathname.com/fhs/

復制代碼
[root@centos6 /]# tree -L 1 
.
├── bin 二進制程序
├── boot 啟動相關,grub,kernel,initrafs等
├── data 自己創建的數據目錄
├── dev 設備文件
├── etc 系統程序配置文件
├── home 普通用戶家目錄
├── lib 庫文件
├── lib64 64庫文件
├── lost+found ext4文件系統生成,用于存放無家可歸的文件,比如斷電造成文件系統錯亂
├── media 通常用于光盤掛載
├── misc 雜項,用戶在此文件夾下執行 cd cd/ 可自動掛載光盤
├── mnt 掛載點
├── net 偽文件系統
├── opt 第三方軟件目錄,已棄用
├── proc 偽文件系統
├── root root用戶的家目錄
├── sbin 只有管理員可以執行的程序
├── selinux 和SELinux相關
├── srv 一些服務啟動后所需要的文件
├── sys 偽文件系統
├── tmp 臨時文件夾,其權限為777,內容定期清理
├── usr 第二層根,非系統應用存放于此
└── var 軟件產生的文件,列如/var/ftp/pub存放于此

23 directories, 0 files
復制代碼

文件命名規則

  • 文件名最長255個字節
  • 包括路徑在內文件名最長4095個字節
  • Linux中文件所對應的顏色:藍色–>目錄;綠色–>可執行文件;紅色–>壓縮文件;淺藍色–>鏈接文件;灰色–>其他文件
  • 文件名不能包含“/”,其他字符都合法
  • 文件名稱區分大小寫(ext4)

?Linux上的應用程序的組成部分

  • 二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
  • 庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
  • 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
  • 幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

Linux下文件類型

  • -:普通文件
  • d:目錄文件
  • b:塊設備
  • c:字符設備
  • l:符號鏈接
  • p:管道文件pipe
  • s:套接字文件socket

ps:CentOS6.x和CenOS7.x 目錄區別

復制代碼
[root@centos7 /]# ls -l
lrwxrwxrwx.   1 root root    7 Mar 28 01:54 bin -> usr/bin
lrwxrwxrwx.   1 root root    7 Mar 28 01:54 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Mar 28 01:54 lib64 -> usr/lib64
lrwxrwxrwx.   1 root root    8 Mar 28 01:54 sbin -> usr/sbin

[root@centos6 /]# ls -l
dr-xr-xr-x.   2 root root  4096 Mar 28 11:15 bin
dr-xr-xr-x.  11 root root  4096 Mar 27 17:08 lib
dr-xr-xr-x.   9 root root 12288 Mar 28 11:14 lib64
dr-xr-xr-x.   2 root root 12288 Mar 28 11:15 sbin
drwx------.   2 root root 16384 Mar 27 16:56 lost+found
drwxr-xr-x.   2 root root     0 Mar 31 14:56 misc
drwxr-xr-x.   2 root root     0 Mar 31 14:56 net
drwxr-xr-x.   7 root root     0 Mar 31  2018 selinux
復制代碼

 

絕對路徑和相對路徑

絕對路徑

  • 以正斜杠開始
  • 完整的文件的位置路徑
  • 可用于任何想指定一個文件名的時候

相對路徑

  • 不以斜線開始
  • 指定相對于當前工作目錄或某目錄的位置
  • 可以作為一個簡短的形式指定一個文件名

pwd?顯示當前shell CWD的絕對路徑

-P 顯示真實的物理路徑

-L 顯示鏈接路徑

復制代碼
[root@centos6 ~]# ll
lrwxrwxrwx. 1 root    root        8 Mar 31 00:24 data -> ../data/
[root@centos6 data]# cd /root/data/
[root@centos6 data]# pwd 
/root/data
[root@centos6 data]# pwd -L
/root/data
[root@centos6 data]# pwd -P
/data
復制代碼

 

basename?取文件路徑基名

dirname?取文件路徑目錄名

[root@centos6 ~]# basename /etc/sysconfig/network-scripts/ifcfg-eth0 
ifcfg-eth0
[root@centos6 ~]# dirname /etc/sysconfig/network-scripts/ifcfg-eth0     
/etc/sysconfig/network-scripts

 

cd?切換文件目錄

cd 切換到家目錄

.. 父目錄

– 上一目錄

$PWD?當前目錄路徑變量

$OLDPWD?上一次目錄路徑變量

二:創建、查看、復制、移動、刪除文件

查看文件

ls?列出當前目錄的內容或指定目錄內容

用法:ls [options] [files_or_dirs]

選項:

-a 列出隱藏文件
-A 不顯示.和..
-R 遞歸
-l 以長格式列出
-d 顯示文件夾屬性
-1 文件分行顯示
-S 按文件大小排序
-t 按mtime排序
-u 按atime排序
-c 按ctime排序
-U 按目錄順序,按創建時間
-X 按文件后綴排序
-i 顯示inode
–time=

atime 訪問時間,讀文件

ctime 狀態時間,修改元數據會修改狀態時間

mtime 修改時間,修改文件數據

?stat?查看文件時間戳

復制代碼
[root@centos6 ~]# stat anaconda-ks.cfg 
  File: `anaconda-ks.cfg'
  Size: 1478            Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 1972445     Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-03-30 20:31:01.333443435 +0800
Modify: 2018-03-30 20:31:01.333443435 +0800
Change: 2018-03-30 20:31:01.333443435 +0800
復制代碼

access time:訪問時間,atime,讀取文件內容
modify time: 修改時間, mtime,改變文件內容(數據)
change time: 改變時間, ctime,元數據發生改變

file?查看文件的類型

-b 列出文件辨識結果時不顯示文件名稱

-f FILELIST 列出文件列表文件中文件名的文件類型

-F?使用指定分隔符號替換輸出文件名后默認的”:”分隔符

-L 查看對應軟鏈接對應文件的文件類型

文件通配符

  • * 匹配零個或多個字符
  • ? 匹配任何單個字符
  • ~ 當前用戶家目錄
  • ~root 用戶root家目錄
  • ~+ 當前工作目錄
  • ~- 前一個工作目錄
  • [0-9] 匹配數字范圍
  • [a-z] 小寫字母
  • [A-Z] 大寫字母
  • [string] 匹配列表中的任何的一個字符
  • [^string] 匹配列表中的所有字符以外的字符
  • [:digit:]:任意數字,相當于0-9
  • [:lower:]:任意小寫字母
  • [:upper:]: 任意大寫字母
  • [:alpha:]: 任意大小寫字母
  • [:alnum:]:任意數字或字母
  • [:blank:]:水平空白字符
  • [:space:]:水平或垂直空白字符
  • [:punct:]:標點符號
  • [:print:]:可打印字符
  • [:cntrl:]:控制(非打?。┳址?/li>
  • [:graph:]:圖形字符
  • [:xdigit:]:十六進制字符

創建空文件和刷新文件訪問、修改和改變時間

touch?創建空文件,刷新文件時間

用法:touch [OPTION]… FILE…

-a 刷新訪問時間和改變時間

-m 刷新修改時間和改變時間

-t?[[CC]YY]MMDDhhmm[.ss]

–time=atime|mtime (ctime不可指定時間刷新)

-c 如果文件不存在,則不予創建

ps:atime不一定在訪問文件之后被修改,因為:使用ext系列文件系統的時候,如果在mount的時候使用了noatime參數那么就不會更新atime的信息。而這是加了noatime取消了,不代表真實情況,反正, 這三個 time stamp 都放在 inode 中,若mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了,之所以在mount option 中使用 noatime, 就是不想 file system 做太多的修改,而改善服務器性能。

復制文件

cp?復制copy

用法:

  • cp[OPTION]… [-T] SOURCE DEST
  • cp[OPTION]… SOURCE… DIRECTORY
  • cp[OPTION]… -t DIRECTORY SOURCE…
  • cpSRC DEST

復制規則:

初識——Linux文件管理

選項:

-i 覆蓋文件時提示

-n 復制時不覆蓋文件

-R, -r 遞歸復制

-a ==?-dR –preserve=all? 保留鏈接,保留文件元數據,并且以遞歸方式復制,常用于歸檔備份

-d 復制鏈接時不復制原文件,只復制鏈接文件

–preserve[=ATTR_LIST]

默認保留mode,ownership,timestamps

也可選:context(上下文),links(鏈接),xattr(擴展文件屬性),all(全部)

-p ==?–preserve=mode,ownership,timestamps

-v 顯示詳細信息

-f 不提示強制執行,危險!

-u?只復制源比目標更新文件或目標不存在的文件

–backup=numbered 如果目標存在,覆蓋前先備份加數字后綴,建議加入alias

-t DIR 目標指定文件夾

移動文件和重命名

?mv?移動和重命名文件

用法:

  • [OPTION]… [-T] SOURCE DEST
  • [OPTION]… SOURCE… DIRECTORY
  • [OPTION]… -t DIRECTORY SOURCE…

選項:同cp : -i|n|u|f|-t DIR…

rename?from to file… 批量修改文件名

復制代碼
[root@centos6 data]# touch file{1..10}.conf
[root@centos6 data]# ls
file10.conf  file2.conf  file4.conf  file6.conf  file8.conf
file1.conf   file3.conf  file5.conf  file7.conf  file9.conf
[root@centos6 data]# rename "conf" "conf.bak" file*
[root@centos6 data]# ls
file10.conf.bak  file2.conf.bak  file4.conf.bak  file6.conf.bak  file8.conf.bak
file1.conf.bak   file3.conf.bak  file5.conf.bak  file7.conf.bak  file9.conf.bak
復制代碼

刪除文件:慎用!

rm?刪除文件和文件夾

用法:

  • rm[OPTION]… FILE…

選項:同cp:-i|-f|-r|–no-preserve-root(強行刪除根,自殺) ,常用-rf搭配,建議設置alias:alias rm=’mv -i -t /Trash’

shred?安全刪除文件,從數據塊級別刪除,銷毀數據塊

-z 填充0

-v 顯示詳細信息

-u 執行填充后刪除文件

-n # 指定要覆蓋幾次數據塊操作

>BIGFILE? 刪除大文件,立即釋放硬盤空間

目錄操作

?tree?顯示目錄樹

-d 只顯示目錄

-L # 指定顯示的層級數目

-P pattern 只顯示由指定模式匹配到的路徑

?mkdir?創建目錄

-p 自動創建上一層沒有的目錄

-v 顯示創建詳細信息

-m MODE 創建目錄是指定文件夾權限

rmdir?刪除空目錄

-p 遞歸刪除父空目錄

-v 顯示詳細信息

ps:rm -r 遞歸刪除目錄樹,慎用!

三:inode(index node)

?inode是指在許多“類Unix文件系統”中的一種數據結構。每個inode保存了文件系統中的一個文件系統對象(包括文件、目錄、設備文件、socket、管道, 等等)的元信息數據,但不包括數據內容或者文件名。

元數據:

  • 文件類型,權限,UID,GID
  • 鏈接數(指向這個文件名路徑名稱個數)
  • 該文件的大小和不同的時間戳
  • 指向磁盤上文件的數據塊指針
  • 有關文件的其他數據

初識——Linux文件管理

初識——Linux文件管理

初識——Linux文件管理

四:符號(軟)、硬鏈接

鏈接

硬鏈接

在計算,一個硬鏈接是一個目錄條目,一個名字與一個關聯文件一上文件系統。所有基于目錄的文件系統都必須至少有一個硬鏈接,為每個文件提供原始名稱。

  • 創建硬鏈接會增加額外的記錄項以引用文件
  • 對應于同一文件系統上一個物理文件
  • 每個目錄引用相同的inode號
  • 創建時鏈接數遞增
  • 刪除文件時:
    • rm命令遞減計數的鏈接
    • 文件要存在,至少有一個鏈接數
    • 當鏈接數為零時,該文件被刪除
  • 不能跨越驅動器或分區

符號鏈接(軟鏈接)

符號鏈接(軟鏈接)是一類特殊的文件, 其包含有一條以絕對路徑或者相對路徑的形式指向其它文件或者目錄的引用。

  • 一個符號鏈接指向另一個文件
  • ls -l的顯示鏈接的名稱和引用的文件
  • 一個符號鏈接的內容是它引用文件的名稱
  • 可以對目錄進行
  • 可以跨分區
  • 指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數

符號(軟)、硬鏈接的區別

本質:

  1. 硬鏈接相當于一個文件、多個名字
  2. 軟鏈接相當于一個文件的快捷方式,是不同文件

表象:

  1. 鏈接數不同,硬鏈接會增加文件的鏈接數,軟鏈接不會增加被鏈接文件的鏈接數
  2. 硬鏈接不能跨分區創建,軟鏈接則可以跨分區創建
  3. 目錄只能創建軟鏈接,不能創建硬鏈接
  4. 鏈接文件和原始文件的關系:當把原文件刪除硬鏈接不受影響,但是軟鏈接會無法訪問
  5. 軟鏈接的文件大小為被鏈接文件字符長度所占字節,但是硬鏈接則是文件實際大小

?常用創建、查看鏈接的命令

ln?創建文件鏈接

ln 原始文件 鏈接文件 創建硬鏈接

ln -s?原始文件 鏈接文件 創建符號(軟)鏈接

readlink?查看軟鏈接的原文件路徑

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94052

(2)
lidongfeilidongfei
上一篇 2018-03-31
下一篇 2018-03-31

相關推薦

  • linux基礎

    計算機的組成及其功能 計算機初始設計出的時候,就遵循馮諾依曼體系,主要有四部分組成,cpu(中央處理器;運算器和控制器),存儲器,輸入設備和輸出設備 cpu: 運算器、控制器、寄存器,緩存(為了提高cpu性能的加速部件) 存儲器:內存,RAM(隨機訪問存儲器) 輸入:對計算機下指令,提供讓機器操作的數據等;不如鍵盤,鼠標 輸出:輸出數據加工后的結果;比如顯示…

    Linux筆記 2018-06-24
  • Linux基礎之修改提示符格式

    總是保存失敗

    2018-03-29
  • awk小練習

    linux awk

    Linux筆記 2018-05-20
  • 初學者;Linux小總結

    本文關于命令;個人筆記;

    2018-04-01
  • iptables/netfilter、?tcp_wrapper

    iptables/netfilter: Firewall:防火墻,隔離工具;工作于主機或網絡邊緣,對于進出本主機或本網絡的報文根據事先定義的檢查規則作匹配檢測,對于能夠被規則匹配到的報文作出相應處理的組件; 主機防火墻 網絡防火墻 軟件防火墻(軟件邏輯): 硬件防火墻(硬件和軟件邏輯):NetScreen,CheckPoint,。。。 iptables(ne…

    Linux筆記 2018-06-05
  • 二進制安裝MySQL(MariaDB)

    在CentOS上部署MySQL有多種方式,如yum安裝、編譯安裝、二進制安裝。其中后二者可以有更多自定義特性,但安裝過程略繁瑣,本文簡單介紹二進制安裝方式。(請根據自己的情況調整目錄)

    Linux筆記 2018-06-12
欧美性久久久久