1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示
cp、mv、rm。
1.1 cp
copy files and directories.
SYNOPSIS:
- 單源複製:cp [OPTION]… [-T] SOURCE DEST =>[-T]表示DEST是一般文件(-T,–no-target-directory:treat DEST as a normal file)
- SOURCE為一般文件
- 帶[-T],表示DEST是一般文件
- 如果DEST不存在,則事先創建此文件,並複製源文件的數據流至DEST中。
- 提示:可以在複製時直接改名。
- 提示:可以在複製時直接改名。
- 如果DEST存在,則覆蓋目標文件。 =>危險操作,覆蓋後就無法恢復,所以最好帶”-i”選項
- 如果DEST不存在,則事先創建此文件,並複製源文件的數據流至DEST中。
- 不帶[-T],表示DEST可能是一般文件也可能是目錄文件
- 如果DEST是一般文件,則情況同上面”1.SOURCE為一般文件/1.帶[-T],表示DEST是一般文件”。
- 如果DEST是目錄文件,則先在DEST目錄下創建一個與源文件同名的文件,並複製其數據流。
- 帶[-T],表示DEST是一般文件
- SOURCE為目錄文件,則DEST必不能是一般文件,會報錯,沒有目錄複製到文件裡的,所以DEST必是目錄,且OPTION必須帶”-r”,它會複製目錄及目錄中的內容。
- 提示:可以在複製時直接改名。
- 提示:可以在複製時直接改名。
- SOURCE為一般文件
- 多源複製:
- cp [OPTION]… SOURCE… DIRECTORY
- cp [OPTION]… -t DIRECTORY SOURCE… =>-t表示target(-t,–target-directory=DIRECTORY:copy all SOURCE arguments into DIRECTORY)
- 如果DIRECTORY不存在,會顯示錯誤。
- 如果DIRECTORY存在,
- 如果DIRECTORY是非目錄文件,顯示錯誤。
- 如果DIRECTORY是目錄文件,則分別複製每個文件至目標目錄中,並保持原名。
常用OPTION:
- -i,–interactive:交互式複製,即覆蓋之前提醒用戶確認。
- -f,–force:強制覆蓋目標文件。
- -r,-R,–recursive:遞歸複製目錄,即複製目錄及目錄中的內容至目標位置。
- -d:same as –no-dereference –preserve=links。-d是-P(也可以寫成–no-dereference)和–preserve=links(表示保留links屬性)的結合,意指複製符號鏈接本身,而非其指向的源文件。
- 我測試了一下,其實cp -P就可以達到與cp -d一樣的效果,也就是說–preserve=links可以不用,然而我測cp –preserve=links卻達不到與cp -d的效果,反而是複製為一般文件。
- 我測試了一下,其實cp -P就可以達到與cp -d一樣的效果,也就是說–preserve=links可以不用,然而我測cp –preserve=links卻達不到與cp -d的效果,反而是複製為一般文件。
- -a,–archive:相等於-dR –preserve=all,用於實現歸檔,可以理解為做備份的。
- –preserv=
- mode:權限。
- ownership:屬主和屬組。
- timestamps:時間戳。
- context:安全標籤。
- xattr:擴展屬性。
- links:符號鏈接。
- all:上述所有屬性。
1.2 mv
move (rename) files.
SYNOPSIS:
- mv [OPTION]… [-T] SOURCE DEST
- mv [OPTION]… SOURCE… DIRECTORY
- mv [OPTION]… -t DIRECTORY SOURCE…
常用OPTION:
- -i,interactive:交互式。
- -f,–force:強制覆蓋。
1.3 rm
remove files or directories.
注意:儘量不要使用這個命令,因為太危險,我們可以養成習慣將要刪除的文件先移動到一個目錄(模擬回收站),待幾天後確定可以刪除再刪除。
SYNOPSIS:
- rm [OPTION]… FILE…
常用OPTION:
- -i,–interactive:交互式。
- -f,–force:強制執行。
- -r,-R,–recursive:遞歸刪除。
- 注意:刪除目錄常用操作:rm -rf /PATH/TO/DIR =>切記危險操作,尤其是rm -rf /、rm -rf /*,千萬不能做。
- 在CentOS 7的版本,執行”rm -rf /”會有提示而不讓你執行此操作。
2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
2.1 命令執行狀態返回值
bash通過狀態返回值來輸出命令的執行狀態結果:
- 成功:0
- 失敗:1-255
命令執行完成之後,其狀態返回值會保存於bash的特殊變量”$?”中。
2.2 命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄。
{ }:可承載一個以逗號分隔的路徑列表,並能夠將其展開為多個路徑。比如/tmp/{a,b},相當於/tmp/a、/tmp/b。
3. 使用命令行展開功能來完成練習
3.1 創建/tmp目錄下的a_c、a_d、b_c、b_d。
3.2 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄,如下圖:
4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
每一個文件都有兩類數據:
- 元數據:使用stat查看的就是元數據(metadata)。
- 數據:使用cat查看的就是數據(data)。
4.1 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?
4.2 如何修改文件的時間戳信息?
要更改atime、mtime、ctime的時間戳,只要對文件執行touch就會改變。
touch命令:change file timestamps
- SYNOPSIS:touch [OPTION]… FILE…
- OPTION
提示:都不加OPTION,修改所有時間戳。- -c,–no-create:如果FILE存在改時間戳,如果FILE不存在不創建新文件。
- a:change only the access time。
- -m:change only the modification time。
- -t:use [[CC]YY]MMDDhhmm[.ss] instead of current time
- OPTION
5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
5.1 如何定義一個命名的別名?
定義別名:# alias NAME=’COMMAND’。 =>別名最好使用小寫字母
- 注意:命令可以有別名,別名可以與原名相同(此時原名被隱藏)。
- 注意:僅對當前shell進程有效。任何在進程中定義的東西隨進程中止而中止。
- 小技巧:別名的命令,如果要跳脫別名,可以在命令前面加上”\”。
獲取所有可用別名的定義:# alias。 =>當前shell進程上有哪些別名
撤銷別名:# unalias NAME。
5.2 如何在命令中引用另一個命令的執行結果?
強引用:’ ‘,引號內內容不改變。
弱引用:” “,雙引號內的變量會轉換為變量的值。
命令引用:‵COMMAND ‵、$(COMMAND ),建議使用$(COMMAND)。
6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
# ls -d /var/l*[[:digit:]]*[[:lower:]]
提示:[[:digit:]]可以換成[0-9]
7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
# ls -d /etc/[[:digit:]]*[^[:digit:]]
提示:[[:digit:]]可以換成[0-9],[^[:digit:]]可以換成[^0-9]
8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
# ls -d /etc/[^[:alpha:]][[:alpha:]]*
提示:[[:alpha:]]可以換成[a-z] or [A-Z] =>[a-z]與[A-Z]不區分大小寫
9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
# touch /tmp/tfile-$(date +%F-%H-%M-%S)
提示:$(date +%F-%H-%M-%S)可以換成`date +%F-%H-%M-%S` =>` `是鍵盤tab上的”`”
10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
# cp -r /etc/p*[^[:digit:]] /tmp/mytest1/
提示:[^[:digit:]]可以換成[^0-9]
11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
# cp -r /etc/*.d /tmp/mytest2/
12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
# cp /etc/[lmn]*.conf /tmp/mytest3
提示:[lmn]可以換成[l,m,n]
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90025