文件的元數據
文件的數據分為兩類:一類為元數據,既屬性數據;一種就是數據本身:
數據是指普通文件中的實際數據
元數據指用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等
那么如何查看文件的詳細信息?
stat命令:
功能說明:
顯示inode內容
命令用法:
stat [文件或目錄]
演示示例:
顯示/etc目錄下fstab文件的相信信息: [root@localhost ~]# stat /etc/fstab File: "/etc/fstab" Size: 860 Blocks: 8 IO Block: 4096 普通文件 Device: fd00h/64768d Inode: 1048583 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-11-02 22:16:28.604999999 +0800 Modify: 2016-11-02 22:04:35.291999640 +0800 Change: 2016-11-02 22:13:17.833999187 +0800 各參數的含義: File:文件的路徑 Size: 文件大小 Blocks: 這個文件使用的塊的總數 IO Block:這個文件的IO塊大小 普通文件:表示文件的類型 Device:十六進制設備號,設備數量的小數 Inode:Inode號是一個獨特的號碼,操作系統用inode號碼來識別不同的文件 Links:到文件的鏈接數 Access(0644/-rw-r--r--):文件的權限 Uid:文件所有者的UID和用戶名 Gid:文件所有者的GID和組名 access time:表示我們最后一次訪問(僅僅是訪問,沒有改動)文件的時間 modify time:表示我們最后一次修改文件的時間 change time:表示我們最后一次對文件屬性改變的時間,包括權限,大小,屬性等等
補充:
Linux系統上的文件類型:
例如: [root@localhost ~]# ls -l /etc/fstab -rw-r--r--. 1 root root 860 11月 2 22:04 /etc/fstab “-rw-r--r--”最前面的 “ - ”即表示文件的類型 -:常規文件;即f; d:directroy,目錄文件; b:block device,快設備文件,支持以“block”為單位進行隨機訪問; c:character device,字符設備文件,支持以“character”為單位進行線性訪問; major number:主設備號,用于標識設備類型,進而確定要加載的驅動程序 minor unmber:次設備號,用于標識同一類型中的不同設備 8位二進制:0-255 l:symbolic link,符號鏈接文件; p:pipe,命名管道; s:socket,套接字文件;
如何修改文件的時間戳信息?
上面使用stat命令查看文件的詳細信息時顯示了三個關于文件的時間信息, 那么如何修改這三個時間信息呢?
touch命令:
功能說明:
修改文件的時間戳,或者新建一個不存在的文件。
命令用法:
touch [options]… FILE…
常用選項:
-c:指定文件路徑不存在時不予創建
-a:僅修改 access time
-m:僅修改 modify time
-t STAMP :使用指定的日期時間
[[cc]YY]MMDDhhmm[.ss] 即[年]月日小時分鐘[秒]
演示示例:
1、在/tmp/a_c目錄下創建文件test1 [root@localhost ~]# cd /tmp/a_c [root@localhost a_c]# touch test1 [root@localhost a_c]# ll 總用量 0 -rw-r--r--. 1 root root 0 11月 4 01:42 test1 2、修改文件test1文件的access time 首先用stat命令查看到test1的access time時間為2016-11-04 01:46:24 使用touch命令修改: [root@localhost a_c]# touch -a -t 11040201 test1 再次stat:時間已經改為 Access: 2016-11-04 02:01:00.000000000 +0800
定義命令的別名
命令別名:將一個命令用其他名字來代替
獲取所有可用別名的定義:
~]# alias
定義別名:
~]# alias NAME='COMMAND'
注:僅對當前shell進程有效
撤銷別名:
~]# unalias NAME
glob實現文件名通配
所謂通配是指:顯示以指定條件的文件
匹配模式:元字符
*:匹配任意長度的任意字符 ?:匹配任意單個字符 []:匹配指定范圍內的任意單個字符 字符集的表示方法: [[:upper:]]:表示所有大寫字母 [[:lower:]]:表示所有小寫字 [[:alpha:]]:表示所有字母 [[:digit:]]:表示所有數字 [[:alnum:]]:表示所有的字母和數字 [[:space:]]:表示所有空白字符 [[:punct:]]: 表示標點符號 [^]:匹配指定范圍外的任意單個字符,與[]相反,即取反
I/O重定向和管道
輸出重定向:
COMMAND > NEW_POS , COMMAND >> NEW_POS 輸出重定向:> 特性:覆蓋輸出,目標文件匯總的原有內容會被清除 輸出重定向:>> 特性:追加輸出,新內容會追加至目標文件尾部 # set -c 禁止覆蓋輸出重定向至已存在的文件 此時可使用強制覆蓋輸出:> # set +c 關閉上述特性 錯誤輸出流重定向:2>,2>>
輸入重定向:
tr命令: tr [OPTION]... SET1 [SET2] 把輸入的數據當中的字符。凡是在SET1定義范圍內出現的,通通轉換為SET2出現的字符 用法1: tr SET1 SET2 < /path/to/somefile 用法2: tr -d SET1 < /path/to/somefile Here Doucment:<< cat << EOF cat > /path/to/somefile <<EOF
管道:鏈接程序,實現將前一個命令的輸出直接定向后一個程序當做輸入數據流
COMMAND1 | COMMAND2 | COMMAND3 | …
練習:
1、顯示 /var 目錄下所有以 l 開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@localhost ~]# ls -d /var/1?[[:lower:]]
2、顯示 /etc 目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@localhost ~]# ls /etc/[0-9]*[^0-9]
3、顯示 /etc 目錄下,以非字母開頭,
[root@localhost ~]# ls /etc/[^a-z][a-z]*
4、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
5、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
6、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@localhost ~]# cp -r /etc/*.d /etc/mytest2
7、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@localhost ~]# cp -r /etc/[lmn]*.conf /etc/mytest3
原創文章,作者:641348038@qq.com,如若轉載,請注明出處:http://www.www58058.com/57460
總結的不錯~贊~繼續加油~