文件系統:
文件有兩類數據:元數據和數據
元數據與數據存在相關的關係,但並不存放在一起。
查看詳細的元數據:#stat /etc/issue
Access:文件訪問時間
Modify:文件修改時間(文件內容數據更新的時間)
Change:文件改動時間(元數據變化的時間)
查看數據:#cat /etc/issue
文件名規則:
1、包括路徑在內文件名稱最長4095個字節,用/分隔的路徑不能超過255個字節。
2、藍色-->目錄;綠色-->可執行文件;紅色-->壓縮文件;淺藍色-->鏈接文件;灰色-->其他文件
3、除了斜槓(/)和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,有些字符需要 用引號來引用它們。
4、標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如:MAIL,Mail,mail, mAiL
eg:新建一個文件爲“-mm”
#nano
如下圖新建:
刪除這種特殊命名的文件,必須使用絕對路徑方可刪除,如下圖:
三、文件系統結構:
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
/bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
/lib64:專用於x86_64系統上的輔助共享庫文件存放位置
/etc:配置文件目錄
/home/USERNAME:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動設備掛載點
/mnt:臨時文件系統掛載點
/dev:設備文件及特殊文件存儲位置
b: block device,隨機訪問
c: character device,線性訪問
/opt:第三方應用程序的安裝位置
/srv:系統上運行的服務用到的數據
/tmp:臨時文件存儲位置
/usr:universal shared, read-only data
bin: 保證系統擁有完整功能而提供的應用程序
sbin:
lib:32位使用
lib64:只存在64位系統
include: C程序的頭文件(header files)
share:結構化獨立的數據,例如doc, man等
local:第三方應用程序的安裝位置
bin, sbin, lib, lib64, etc, share
/var:variable data files
cache: 應用程序緩存數據目錄
lib: 應用程序狀態信息數據
local:專用於爲/usr/local下的應用程序存儲可變數據;
lock: 鎖文件
log: 日誌目錄及文件
opt: 專用於爲/opt下的應用程序存儲可變數據;
run: 運行中的進程相關數據;通常用於存儲進程pid文件
spool: 應用程序數據池
tmp: 保存系統兩次重啓之間產生的臨時數據
/proc: 用於輸出內核與進程信息相關的虛擬文件系統
/sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置
四、應用程序的組成部分:
二進制程序:/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
五、CentOS7對比CentOS6的變化:
/bin 和/usr/bin
/sbin 和/usr/sbin
/lib 和/usr/lib
/lib64 和/usr/lib64
六、文件類型:
-:普通文件
d: 目錄文件
b: 塊設備
c: 字符設備
l: 符號鏈接文件
p: 管道文件pipe
s: 套接字文件socket
塊設備和字符設備,如下圖:
塊設備都是隨機訪問的,會有緩存的;字符設備必須是順序訪問的,一般沒有緩存的。
eg:
從0設備讀取內容輸入到指定的文件中,命令:# dd if=/dev/zero of=f1 bs=1k count=2
查看二進制文件的命令#hexdumpfilename (如需顯示全部的二進制內容,可添加-v選項即可)或者xxd filename
如下圖:
修改文件二進制數據內容,命令:#hexeditfilename
在Linux中將Windows的文本文件轉換成純文件,命令:#dos2unix filename
Linux文本轉換成Windows的文本,命令:#unix2dos filename
七、顯示當前工作目錄:
每個shell和系統進程都有一個當前的工作目錄;
查看路徑的命令爲:#pwd(顯示當前shellCWD的絕對路徑)
八、cd更改目錄
1、到上一級目錄:#cd..
2、回到自己的主目錄:cd
3、回到以前的目錄(即上一條命令操作的目錄):cd –
相關的環境變量:
PWD:保存了當前目錄路徑
OLDPWD:上一次所在目錄路徑
顯示軟鏈接的真實路徑:
切換到軟鏈接的真實路徑:
九、相對路徑和絕對路徑:
絕對路徑:以正斜槓開始;完整的文件的位置路徑;可用於任何想指定一個文件名的時候
相對路徑名:不以斜線開始;指定相對於當前工作目錄或某目錄的位置;可以作爲一個簡短的形式 指定一個文件名
當前目錄相對路徑:
十、羅列目錄的內容:列出當前目錄的內容或指定目錄
使用格式:ls[options] [files_or_dirs]
使用選項:
ls -a包含隱藏文件
ls -l顯示額外的信息
ls -R目錄遞歸通過
ls -ld目錄和符號鏈接信息
ls -1(數字1)文件分行顯示
ls -S 按從大到小排序
ls -u 配合-t選項,顯示並按atime從新到舊排序
ls -U 不排序按目錄存放順序顯示
將文件以大小的數值顯示出來,以便我們閱讀獲取信息,如下圖:
顯示目錄本身:# ls -ld /etc/
目錄遞歸顯示:# ls -R
文件分行顯示:
顯示文件從大到小的顯示:ll -S
顯示文件從小到大的顯示:ll -Sr
按照字母倒敘排序(列排序):ls -r
不排序按目錄存放順序顯示
顯示並按atime從新到舊排序# ls-utl
十一、文件狀態(stat):
三個時間戳:
access time:訪問時間,atime,讀取文件內容
modify time: 修改時間, mtime,改變文件內容(數據)
change time: 改變時間, ctime,元數據發生改變(更改文件名、屬主或者屬組、增加文件大小等可 以改變元數據)
查看文件狀態時間命令:#ll--time=atime/mtime/ctime filename
mtime查看:
atime和ctime查看:
鎖死和解鎖:chattr +A filename和 chattr –A filename,以達到讓訪問文件後,atime不發生 改變。
十二、文件通配符:
* :匹配零個或多個字符
?: 匹配任何單個字符
~: 當前用戶家目錄
~username:用戶家目錄
~+: 當前工作目錄
~-: 前一個工作目錄
[0-9:]匹配一個數字範圍
[a-z]:大寫和小寫字母
[A-Z]:大寫字母
[wxc] 匹配列表中的任何的一個字符
[^wxc]匹配列表中的所有字符以外的字符
預定義的字符類:#man7 glob(man幫助查看)
[:digit:]:任意數字,相當於0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:空格
[:punct:]:標點符號
十三、空文件的創建於刷新時間:
touch命令:
用法格式:touch[OPTION]... FILE...
用法選項:-a: 僅改變atime
-m: 僅改變mtime
-t:STAMP:[[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存在,則不予創建
-d:#touch –d yesterday filename
十四、CP:複製文件或目錄:
用法格式: cp[OPTION]...[-T] SOURCE DEST
cp[OPTION]... SOURCE... DIRECTORY
cp[OPTION]... -t DIRECTORY SOURCE...
1、複製的源是文件,目標也是文件:
如果目標文件不存在:新建目標文件,並將源文件中內容填充至新建的目標文件中
如果目標存在:是文件,將源文件中的內容覆蓋至目標文件中(基於安全,建議爲cp命令使用-i選 項)
如果目標是目錄:在目標目錄下新建與原文件同名的文件,並將源文件中內容填充至新文件中
2、複製的源是多個文件,目標必須存在,且爲目錄,其它情形均會出錯;
複製的源是目錄:此時使用選項:-r;
A、如果目標不存在:則創建指定目錄,複製源目錄中所有文件至新建的目標目錄中;
B、如果目標存在:則直接將源目錄下的文件複製過去填充到目標目錄下;
C、如果目標是文件:直接報錯;
3、如果複製的源是多個目錄:(如果複製的源目錄是一個,而目標目錄不存在,則將源目錄複製過去並以目標目錄的名稱重命名)
如果目標目錄不存在,則直接報錯;
如果目標目錄存在,則將源的多個目錄複製到目標目錄下作爲子目錄
複製源文件(一個或者多個),到目標文件(或目錄下)的情形,如下圖:
CP選項使用:
-i:交互式
-r, -R: 遞歸複製目錄及內部的所有內容;
-a: 歸檔,相當於-dR--preserv=all
-d:--no-dereference --preserv=links 不復制原文件,只複製鏈接名[--preserv[=ATTR_LIST](mode: 權限;ownership:屬主屬組;timestamp: ;links;xattr;context;all)]
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force(相當於將目標文件刪除後,重新建一個與目標文件名稱一樣的文件)
十五、命令別名(alias):
顯示當前shell進程所有可用的命令別名:#alias
定義別名NAME,其相當於執行命令VALUE:#alias name=””
# alias vinet="vi /etc/sysconfig/network-scripts/ifcfg-eno16777736"
取消別名:unalias name:
#unalias vinet
在命令行中定義的別名,僅對當前shell進程有效
如果想永久有效,要定義在配置文件中:
僅對當前用戶:~/.bashrc ;對所有用戶有效:/etc/bashrc
編輯配置給出的新配置不會立即生效,bash進程重新讀取配置文件,執行如下命令:
#source /path/to/config_file 或 #. /path/to/config_file
如果別名同原命令同名,如果要執行原命令,可使用“\COMMAND”或 ’COMMAND’/PATH/COMMAND:外部命令
十六、移動和重命名文件(mv):
用法格式: mv[OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE...DIRECTORY
mv [OPTION]... -t DIRECTORYSOURCE...
常用選項:-i: 交互式
-f: 強制
Root用戶和普通用戶使用mv不同:root使用mv會提示是否覆蓋;而普通用戶則強行直接覆蓋(操作需謹慎)。
十七、刪除(rm):
用法格式:rm[OPTION]... FILE...
常用選項:-i: 交互式
-f: 強制刪除
-r: 遞歸
--no-preserve-root
強行刪除一個目錄(不是空目錄),命令使用:#rm –rf /path/file 或#\rm –r /path/file
** 刪除一個比較的大的文件,如果該文件有用戶在使用,使用rm –f /filename刪除,磁盤空間不會馬上釋放出來;使用命令# > /path/filename 直接將文件刪除掉,並把該文件的空間直接從磁盤上釋放出來**
例:rm –f / (該命令操作需要謹慎,但在從CentOS6和CentOS7版本開始,該命令不能夠直接執行使用)
如果確實需要刪除 / :則需要添加--no-preserve-root選項,命令:#rm –rf--no-preserve- root /
十八、目錄的操作:
命令tree :顯示目錄樹
格式選項:-d : 只顯示目錄
-L level:指定顯示的層級數目
-P pattern: 只顯示由指定pattern匹配到的路徑
命令mkdir:創建目錄
-p: 存在於不報錯,且可自動創建所需的各目錄;
-v: 顯示詳細信息
-m MODE: 創建目錄時直接指定權限;
命令rmdir:刪除空目錄
-p: 遞歸刪除父空目錄
-v: 顯示詳細信息
rm -r遞歸刪除目錄樹
十九、練習:
1、 顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
ls /var/l*[[:digit:]][[:lower:]]
2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄
ls/etc/[[:digit:]*][^[[:digit:]]]
3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄
ls/etc[^[:alpha:]][[:alpha:]]*
4、顯示/etc目錄下所有以m開頭以非數字結尾的文件或目錄
ls/etc/m*[^[:digit:]]
5、顯示/etc目錄下,所有以.d結尾的文件或目錄
ls-d /etc/*.d
6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄
ls /etc/[mnrp]*.conf
7、使用別名命令,每日將/etc/目錄下所有文件,備份到/testdir/下獨立的新目錄下,並要求新目錄格式爲backupYYYY-mm-dd,備份過程可見
alias cpb=”cp –rpv /eetc/ /testdir/ backup`date+%`”
8、先創建/testdir/rootdir目錄,再複製/root所有下文件到該目錄內,並要求保留原有權限
cp –rp /root/ /testdir/rootdir
9、 如何創建/testdir/dir1/x,/testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a,/testdir/dir1/y/b
mkdir–pv /testdir/dir1/{x/{a,b},y/{a,b}}
10、如何創建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b
mkdir -pv/testdir/dir2/{x/{a,b},y}
11、如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir3,
/testdir/dir5/dir4
mkdir –pv /testdir/dir{3,4,5/dir{3,4}}
二十、作業:
1、 只顯示指定目錄隱藏文件
ls –d /etc/.*
2、 只顯示指定目錄下的子目錄(不看文件)
ls -d /etc/*/