文件操作命令
1、列出文件內容-ls
ls [-alrtAFR] [name...]
選項:
- -a 顯示所有文件及目錄 (. 開頭的隱藏文件也會列出)
- -l 除文件名稱外,亦將文件型態、權限、擁有者、文件大小等資訊詳細列出
- -r 將文件以相反次序顯示(原定依英文字母次序)
- -t 將文件mtime之先後次序列出
- -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
- -R 若目錄下有文件,則以下之文件亦皆依序列出
- -u配合-t選項,顯示並按atime排序
顯示 / 下面文件,並顯示額外信息
[root@localhost ~]# ll / total 20 lrwxrwxrwx. 1 root root 7 May 10 2019 bin -> usr/bin dr-xr-xr-x. 6 root root 4096 Dec 6 10:53 boot drwxr-xr-x. 19 root root 3200 Dec 22 08:54 dev drwxr-xr-x. 78 root root 8192 Dec 19 07:37 etc drwxr-xr-x. 4 root root 48 Dec 14 11:55 home lrwxrwxrwx. 1 root root 7 May 10 2019 lib -> usr/lib lrwxrwxrwx. 1 root root 9 May 10 2019 lib64 -> usr/lib64
將 /bin 目錄以下所有目錄及文件詳細資料列出 :
[root@localhost ~]# ls -lR /bin lrwxrwxrwx. 1 root root 7 May 10 2019 /bin -> usr/bin
列出目前工作目錄下所有名稱是 s 開頭的文件,越新的排越後面
ls -ltr s*
2、查看文件狀態stat
文件的數據分兩種:
一種元數據,既屬性數據:metadata ()
一種就是數據本身:data
文件時間戳
atime:訪問時間(access time),指的是文件最後被讀取的時間,可以使用touch命令更改爲當前時間;
ctime:變更時間(change time),指的是文件本身最後被變更的時間,變更動作可以使chmod、chgrp、mv等等;
mtime:修改時間(modify time),指的是文件內容最後被修改的時間,修改動作可以使echo重定向、vi等等;
[root@localhost ~]# stat bb.txt File: bb.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 802h/2050d Inode: 19461 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2020-12-23 11:16:10.167490395 -0500 Modify: 2020-12-23 11:16:10.167490395 -0500 Change: 2020-12-23 11:16:10.167490395 -0500 Birth: -
文件的元數據包含了文件的大小、塊數量、IO塊大小、文件類型、Inode號、硬鏈接數、訪問權限、屬主、屬組、SELinux安全上下文和時間戳信息等內容。
3、創建空文件和刷新時間-touch
touch命令用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。
touch [-acfm] [-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>] file
- -a 改變atime和ctime時間
- -m 改變mtime和的ctime時間
- -t 設定檔案的時間記錄,格式與 date 指令相同;改變aime和mtime時間
- -c文件不存在,不創建
4、複製文件和目錄-cp
cp [options] source dest cp [options] source... directory
- -a:此選項通常在複製目錄時使用,它保留鏈接、文件屬性,並複製目錄下的所有內容。其作用等於dpR參數組合。
- -d:複製時保留鏈接。這裏所說的鏈接相當於Windows系統中的快捷方式。
- -f:覆蓋已經存在的目標文件而不給出提示。
- -i:與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
- -p:除複製文件的內容外,還把修改時間和訪問權限也複製到新文件中。
- -r:若給出的源文件是一個目錄文件,此時將複製該目錄下所有的子目錄和文件。
- -l:不復制文件,只是生成鏈接文件
將當前目錄下的所有文件複製到新目錄 /home/newtest 下
[root@MiWiFi-R4CM-srv test]# cp -r . /home/newtest
將文件複製到新目錄/home/newtest
[root@MiWiFi-R4CM-srv test]# cp litao laowang /home/newtest/
創建/testdir/rootdir目錄並複製/root下所有文件到該目錄內,要求保留原有權限。
cp -rp /root/* testdir/rootdir/
5、移動和重命名-mv
mv [options] source dest mv [options] source... directory
- -b: 當目標文件或目錄存在時,在執行覆蓋前,會爲其創建一個備份。
- -i: 如果指定移動的源目錄或文件與目標的目錄或文件同名,則會先詢問是否覆蓋舊文件,輸入 y 表示直接覆蓋,輸入 n 表示取消該操作。
- -f: 如果指定移動的源目錄或文件與目標的目錄或文件同名,不會詢問,直接覆蓋舊文件。
- -n: 不要覆蓋任何已存在的文件或目錄。
- -u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
將當前文件及目錄移動到文件夾ingo中
[root@localhost litao]# ls passwd_bak passwd_link passwd_link2 passwd_link4 shadowlink testdir [root@localhost litao]# mkdir ingo [root@localhost litao]# mv passwd_* shadowlink testdir/ ingo/ [root@localhost litao]# ls ingo/ passwd_bak passwd_link passwd_link2 passwd_link4 shadowlink testdir
將 ingo 目錄放入 logs 目錄中。注意,如果 logs 目錄不存在,則該命令將 info 改名爲 logs。
[root@localhost litao]# mv ingo/ logs
6、刪除文件-rm
rm [options] name...
- -i 刪除前逐一詢問確認。
- -f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
- -r 將目錄及以下之檔案亦逐一刪除。
刪除文件可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:
[root@localhost logs]# rm -f ingo/ rm: cannot remove 'ingo/': Is a directory [root@localhost logs]# rm -rf ingo/
ls stat touch cp mv rm