第二周作業
一、Linux上的文件管理類命令有哪些,其常用的使用方法以及相關實例演示
演示用結構
[root@centos01 yanshi]# tree -a /tmp/yanshi/ /tmp/yanshi/ ├── a │ └── 1 ├── b │ └── 2 └── c └── 3
cp:將源文件復制至目標文件,或將多個源文件復制至目標目錄。
使用方法:
-
cp [選項]…(-t)源文件…目標
-
如果目標不存在:新建DEST,并將SRC中內容填充至DEST中;
[root@centos01 yanshi]# pwd /tmp/yanshi [root@centos01 yanshi]# cp a/1 b [root@centos01 yanshi]# ls b 1 2
-
如果目標存在:如果DEST是文件則將SRC中的內容覆蓋至DEST中;此時建議為cp命令使用-i選項;
[root@centos01 yanshi]# cp -i a/1 b cp:是否覆蓋"b/1"? y [root@centos01 yanshi]# ls b 1 2
-
如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件
[root@centos01 yanshi]# cp b/2 c/ [root@centos01 yanshi]# ls c 2 3
-
cp [選項]…源文件(多個)…目錄
-
如果源文件為多個文件,則目標必須存在,且為目錄,其它情形均會出錯
[root@centos01 yanshi]# cp c/2 c/3 a/ [root@centos01 yanshi]# ls a 1 2 3 [root@centos01 yanshi]# cp c/2 c/3 d/ cp: 目標"d/" 不是目錄
-
cp [選項]… -t 目錄 文件…目標
此時使用選項:-r(遞歸復制)
-
如果目標不存在:則創建指定目錄,復制SRC目錄中所有文件至DEST中;
[root@centos01 yanshi]# cp -r c d [root@centos01 yanshi]# ls d/ 2 3
-
如果目標存在:
目標是文件:報錯;
目標是目錄:在目標目錄創建一個與源目錄名字相同的目錄并把數據導入其中
[root@centos01 yanshi]# cp -r c a/1 cp: 無法以目錄"c" 來覆蓋非目錄"a/1" [root@centos01 yanshi]# cp -r c a [root@centos01 yanshi]# ls a 1 2 3 c [root@centos01 yanshi]# ls a/c 2 3
常用選項:
-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:強制
mv: move,移動文件
使用方法:
-
mv [選項]… [-T] 源文件 目標文件(若目標存在且為文件,則只覆蓋其中內容,名字不變)
[root@centos01 tmp]# cd yanshi [root@centos01 yanshi]# mv a/1 b/2 mv:是否覆蓋"b/2"? y [root@centos01 yanshi]# ls b 2
-
mv [選項]… 源文件… 目錄
[root@centos01 yanshi]# mv b/2 c/ [root@centos01 yanshi]# ls c 2 3
-
mv [選項]… -t 目錄 源文件…
[root@centos01 yanshi]# touch 1 [root@centos01 yanshi]# ls 1 a b c [root@centos01 yanshi]# mv 1 a b [root@centos01 yanshi]# ls b c [root@centos01 yanshi]# ls b 1 a
rm: remove,刪除
-
使用方法:rm [OPTION]… FILE…
[root@centos01 yanshi]# ls b 1 a [root@centos01 yanshi]# rm b/1 rm:是否刪除普通空文件 "b/1"?y [root@centos01 yanshi]# ls b a [root@centos01 yanshi]# cd / [root@centos01 /]# rm -rf /tmp/yanshi/ [root@centos01 /]# ls /tmp/yanshi ls: 無法訪問/tmp/yanshi: 沒有那個文件或目錄
常用選項:
-i: 交互式
-f: 強制刪除
-r: 遞歸
rm -rf
二:bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其實例演示
-
命令的執行結果狀態
-
成功
-
失敗
-
bash使用特殊變量$?保存最近一條命令的執行狀態結果:
-
1-255:失敗
-
0:成功
-
程序執行有兩類結果:
-
程序的執行狀態結果;
-
程序的返回值;
-
命令行展開
-
~USERNAME:展開為指定用戶的主目錄
-
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
-
/tmp/{1,2}/3 = /tmp/1/3, /tmp/1/3
-
/tmp/{1,2} = /tmp/1, /tmp/2
-
~: 展開為用戶的主目錄
[root@centos01 /]# mkdir -p /tmp/cl/{1,2} [root@centos01 /]# tree /tmp/cl /tmp/cl ├── 1 └── 2
三:請使用命令行展開功能來完成以下練習(咳!題目就不打了)
-
第一小題
[root@centos01 /]# mkdir /tmp/{a,b}_{c,d} [root@centos01 /]# ls /tmp/ 1 2 a_c a_d b_c b_d beifen cl keyring-s3kIrK orbit-gdm orbit-root pulse-H1wCMLNcXyJa pulse-s2Fn1pYsBx3W pulse-uRDqWcz2n2en virtual-root.TdFWCr yum.log
-
第二小題
[root@centos01 /]# mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}} [root@centos01 /]# tree /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 24 directories, 0 files
四:文件的元數據信息有哪些?分別表示什么含義,如何查看?如何修改文件的時間戳信息
-
元數據是用來描述數據的數據,使信息的描述和分類可以實現格式化,從而為機器處理創造了可能。
[root@centos01 /]# stat /tmp/mylinux/ File: "/tmp/mylinux/" Size: 4096 Blocks: 8 IO Block: 4096 目錄 Device: fd00h/64768d Inode: 534289 Links: 14 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-12-14 01:53:51.445997820 +0800 Modify: 2016-12-14 01:53:47.721989299 +0800 Change: 2016-12-14 01:53:47.721989299 +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:表示我們最后一次對文件屬性改變的時間,包括權限,大小,屬性等等
-
如何修改文件的時間戳信息
三個時間戳:
access time:訪問時間,簡寫為atime,讀取文件內容
modify time: 修改時間, mtime,改變文件內容(數據)
change time: 改變時間, ctime,元數據發生改變
使用touch [OPTION]… FILE…
-a: 只修改 atime
-m: 只修改 mtime
-t STAMP:指定具體時間的格式
[[CC]YY]MMDDhhmm[.ss]
-c: 如果文件不存,則不予創建
如何定義一個命令的別名,如何在一個命令中引用另一個命令的執行結果
-
別名:
通過alias實現:
alias:顯示當前shell進程所有可用的命令別名
alias 別名=‘原命令’ (為避免空格,原命令兩端加入單引號)
注意:在命令行中定義的別名,僅對當前shell進程有效,如果想永久有效,需修改配置文件
僅對當前用戶:~/.bashrc
對所有用戶有效:/etc/bashrc
修改配置文件后不會像在命令行中一樣立即生效,不關閉當前shell進程的情況下,需重新讀取配置文件
bash進程:source /….或. /……
注:修改別名前確認不要和別的命令相沖突,可使用tab補全試一試
-
管道:COMMAND1 | COMMAND2 | COMMAND3 |…
顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符的文件或目錄)
[root@centos01 /]# ls -d /var/l*[0-9]*[a-z] ls: 無法訪問/var/l*[0-9]*[a-z]: 沒有那個文件或目錄 [root@centos01 /]# mkdir /var/ls33b [root@centos01 /]# ls -d /var/l*[0-9]*[a-z] /var/ls33b
顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
[root@centos01 /]# ls -d /etc/[0-9]*[^0-9] ls: 無法訪問/etc/[0-9]*[^0-9]: 沒有那個文件或目錄 [root@centos01 /]# mkdir /etc/9854a [root@centos01 /]# ls -d /etc/[0-9]*[^0-9] /etc/9854a
顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度字符的文件或目錄
[root@centos01 /]# ls -d /etc/[^[:alpha:]][[:alpha:]]* ls: 無法訪問/etc/[^[:alpha:]][[:alpha:]]*: 沒有那個文件或目錄 [root@centos01 /]# mkdir /etc/5adjoayud [root@centos01 /]# ls -d /etc/[^[:alpha:]][[:alpha:]]* /etc/5adjoayud
在/tmp目錄下創建以tfile開頭,后面跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
[root@centos01 /]# touch /tmp/tfile-$(date +%F-%H-%M-%S) [root@centos01 /]# ls /tmp/t* /tmp/tfile-2016-12-14-04-01-09
復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
cp -rf /etc/p*[^0-9] /tmp/mytest1
復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -r /etc/*\.d /tmp/mytest2
復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
cp -r /etc/[l,n,m]*\.conf /tmp/mytest3
原創文章,作者:Net25_青梅煮茶,如若轉載,請注明出處:http://www.www58058.com/63680
贊~總結的內容是沒啥問題,其中解決的方法不止一種~建議多進行擴展一下~繼續加油~