標簽(空格分隔): Linux入門 linux 運維
—
寫作:N27_李偉 2017-7-13
一、 Linux上常用的文件管理命令都有哪些,使用方法
1. 文件類型的分類
文件類型:
– 普通文件類型
d:目錄文件
b:塊設備
c:字符設備
l:符號鏈接文件
p:管道文件,pipe
s:套接字文件,socket
例如:
[root@loong ~]# ll 總用量 44 -rw-r--r--. 1 root root 26150 7月 9 18:43 install.log
說 明:自左向右:
– 這是一個普通文件
rw- 文件屬主的權限
r– 文件屬組的權限
r– 其他用戶的權限
1 數字表示被硬鏈接的次數
root 文件的屬主,本例中文件屬主是root
root 文件的屬組,本例中文件屬組是root組
26150 文件的大小,字節數
7月…文件最后一次被修改的時間
install.log 文件名
[root@loong ~]# ll /dev 總用量 0 brw-rw----. 1 root disk 8, 0 7月 14 07:44 sda brw-rw----. 1 root disk 8, 1 7月 14 07:44 sda1 brw-rw----. 1 root disk 8, 2 7月 14 07:44 sda2
說明:自左向右
b:塊設備
rw-:屬主權限,可讀寫。
rw-:屬組權限
—:其他用戶權限
1 :被硬鏈接的次數
root:設備文件屬主
disk:設備文件屬組
8,:設備主設備號,標識設備類型
0 :設備次設備號,標識同類型的不同設備
7月….:設備文件最后修改的時間
sda:設備文件名
2. 目錄管理的命令mkdir,rmdir
1. mkdir:創建一個目錄
語法:mkdir [OPTION]… DIRECTORY…
-p:自動創建路徑上不存在的目錄
-v:顯示命令的創建過程
-m:設定權限
例如:在/tmp目錄下建立mydir目錄并在此目錄下再建立名稱為1的目錄
[root@loong ~]# ls / bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var [root@loong ~]# cd /tmp [root@loong tmp]# ls yum.log [root@loong tmp]# mkdir -pv /tmp/mydir/1 mkdir: 已創建目錄 "/tmp/mydir" mkdir: 已創建目錄 "/tmp/mydir/1" [root@loong tmp]# ls mydir yum.log [root@loong tmp]# cd mydir [root@loong mydir]# ls 1
2. rmdir:移除一個目錄。要移除的目錄必須是一個空目錄。
語法:rmdir [OPTION]… DIRECTORY…
-p:刪除某一空目錄后如父目錄為空,則一并刪除。有較大風險,盡量不用
-v:顯示命令的創建過程
例如:刪除上例中建立的目錄
[root@loong tmp]# mkdir -pv /tmp/mydit/1 mkdir: 已創建目錄 "/tmp/mydit" mkdir: 已創建目錄 "/tmp/mydit/1" [root@loong tmp]# ls /tmp mydit yum.log [root@loong tmp]# ls mydit 1 [root@loong tmp]# rmdir mydit/1 //刪除名為1的目錄 [root@loong tmp]# ls mydit/1 ls: 無法訪問mydit/1: 沒有那個文件或目錄 //目錄已刪除 [root@loong tmp]# rmdir mydit //刪除mydit目錄 [root@loong tmp]# ls yum.log [root@loong tmp]#
3.文件查看命令:
主要有cat,tac,head,tail,more,less命令。其中more,less命令分屏查看。
1. cat:
將[文件]或標準輸入組合輸出到標準輸出。
-A, –show-all 等于-vET
-b, –number-nonblank 對非空輸出行編號
-e 等于-vE
-E, –show-ends 在每行結束處顯示”$”
-n, –number 對輸出的所有行編號
-s, –squeeze-blank 不輸出多行空行
-t 與-vT 等價
-T, –show-tabs 將跳格字符顯示為^I
-u (被忽略)
-v, –show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
–help 顯示此幫助信息并退出
–version 顯示版本信息并退出
2. tac:
用法:tac [選項]… [文件]…
將每個指定文件按行倒置并寫到標準輸出。
如果不指定文件,或文件為”-“,則從標準輸入讀取數據
3. head:
head [選項]… [文件]…
將每個指定文件的頭10 行顯示到標準輸出。
如果指定了多于一個文件,在每一段輸出前會給出文件名作為文件頭。
如果不指定文件,或者文件為”-“,則從標準輸入讀取數據。
> 顯示文件前15行
[root@loong etc]# head -n20 passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin
4. more 分屏查看命令
5. less 分屏查看命令。man命令實際上調用less命令來查看幫助手冊
4、文件管理命令cp,rm,mv
– cp:copy,復制文件命令
源文件:—->目標文件
單源復制:cp [OPTION]… [-T] SOURCE DEST
如果目標不存在,則創建之并復制源文件的數據流到目標文件。
如果目標存在:
1、如果目標文件是非目錄文件則覆蓋目標文件
2、如果目標文件是目錄文件,則在其下創建源文件同名的文件并復制源方便的數據流到該文件中。
例如:
[root@loong conf]# pwd /tmp/conf [root@loong conf]# ls mke2fs.conf nsswitch.conf numad.conf prelink.conf request-key.conf rsyslog.conf nfsmount.conf ntp.conf pm-utils-hd-apm-restore.conf readahead.conf resolv.conf [root@loong conf]# cd /tmp/mytest [root@loong mytest]# ls ntp1.conf ntp.conf [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/ //拷貝/tmp/conf/numad.conf到/tmp/mytest目錄下 [root@loong mytest]# ls /tmp/ conf/ .ICE-unix/ mytest/ yum.log [root@loong mytest]# ls /tmp/mytest ntp1.conf ntp.conf numad.conf //在目標目錄下創建同名文件并拷貝完成) [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/ cp:是否覆蓋"/tmp/mytest/numad.conf"? y //再次拷貝,因為已經存在一個同名文件,提示是否覆蓋 [root@loong mytest]#
多源復制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:錯誤;
如果DEST存在:
如果DEST是非目錄文件:錯誤;
如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保 持原名;
例如:復制/tmp/conf下所有的n*.conf文件到/tmp/mytest下
[root@loong mytest]# cp /tmp/conf/ n*.conf /tmp/mytest1 cp: 目標"/tmp/mytest1" 不是目錄 //目標mytest1不存在,報錯 [root@loong mytest]# cp /tmp/conf/n*.conf /tmp/mytest [root@loong mytest]# ls /tmp/mytest nfsmount.conf nsswitch.conf ntp.conf numad.conf //多個文件原名復制到目標目錄下 [root@loong mytest]#
cp命令常用選項:
-i:交互式復制,即覆蓋之前提醒用戶確認;
-f:強制覆蓋目標文件;
-r, -R:遞歸復制目錄;
-d:復制符號鏈接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于實現歸檔;
– rm命令:
rm命令:remove
rm [OPTION]… FILE…
常用選項:
-i:interactive 交互式
-f:force 強制
-r: recursive,目錄遞歸操作1
刪除目錄:rm -rf /PATH/TO/DIR
危險操作:rm -rf /*
注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄;(模擬回收站)
– mv命令
mv命令:move,移動一個文件到指定位置
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE..
常用選項:
-i:交互式;
-f:force
二. bash工作特性之命令執行狀態返回值
命令執行狀態返回值:
在 Linux 下,不管你是啟動一個桌面程序也好,還是在控制臺下運行命令,所有的程序在結束時,都會返回一個數字值,這個值叫做返回值,或者稱為錯誤號 ( Error Number )。這個值保存在特殊環境變量?中,可以用’echo $?‘查看。
[root@loong ~]# ls / bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var [root@loong ~]# echo $? 0 [root@loong ~]#
返回值是0,表示命令操作成功,反之將返回1~255之間的一個數值。但是’$?‘變量只保存最后一條執行命令的返回值。
程序執行也有返回值,對程序執行結果的返回值可以通過'(command)’或’$(command)’來引用。
例:引用pwd的顯示結果,交由ls命令執行
[root@loong ~]# pwd /root [root@loong ~]# ls `pwd` anaconda-ks.cfg install.log install.log.syslog [root@loong ~]# ls $pwd anaconda-ks.cfg install.log install.log.syslog [root@loong ~]#
命令行展開
~ 展開為用戶的主目錄,~username展開為指定用戶的家目錄
{}可承載一個以逗號分隔的列表,并展開為多個路徑。
如:/tmp/{a,b}=/tmp/a,/tmp/b
/tmp/{a,b}/h=/tmp/a/h,/tmp/b/h
練習:
1. 創建/tmp目錄下a_c,a_d,b_c,b_d
[root@loong ~]# ls /tmp conf yum.log [root@loong ~]# mkdir /tmp/{a,b}_{c,d} [root@loong ~]# ls /tmp a_c a_d b_c b_d conf yum.log
2. 創建/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
執行過程:-p表示如父目錄不存在,則自動創建之。-v表示顯示創建過程
tree命令顯示目錄的樹形結構
[root@loong ~]# mkdir -pv /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}} mkdir: 已創建目錄 "/tmp/mylinux" mkdir: 已創建目錄 "/tmp/mylinux/bin" mkdir: 已創建目錄 "/tmp/mylinux/boot" mkdir: 已創建目錄 "/tmp/mylinux/boot/grub" mkdir: 已創建目錄 "/tmp/mylinux/dev" mkdir: 已創建目錄 "/tmp/mylinux/etc" mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d" mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d" mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig" mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts" mkdir: 已創建目錄 "/tmp/mylinux/lib" mkdir: 已創建目錄 "/tmp/mylinux/lib/modules" mkdir: 已創建目錄 "/tmp/mylinux/lib64" mkdir: 已創建目錄 "/tmp/mylinux/proc" mkdir: 已創建目錄 "/tmp/mylinux/sbin" mkdir: 已創建目錄 "/tmp/mylinux/sys" mkdir: 已創建目錄 "/tmp/mylinux/tmp" mkdir: 已創建目錄 "/tmp/mylinux/usr" mkdir: 已創建目錄 "/tmp/mylinux/usr/local" mkdir: 已創建目錄 "/tmp/mylinux/usr/local/bin" mkdir: 已創建目錄 "/tmp/mylinux/usr/local/sbin" mkdir: 已創建目錄 "/tmp/mylinux/var" mkdir: 已創建目錄 "/tmp/mylinux/var/lock" mkdir: 已創建目錄 "/tmp/mylinux/var/log" mkdir: 已創建目錄 "/tmp/mylinux/var/run" [root@loong ~]# 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
文件的元數據信息有哪些,分別表示哪些含義,如何查看
元數據(Metadata),又稱中介數據、中繼數據,為描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,為了達到編制目錄的目的,必須在描述并收藏數據的內容或特色,進而達成協助數據檢索的目的。因此,元數據就是數據的數據。任何文件系統中的數據分為數據和元數據。數據指文件中實際存在的數據,元數據指用來描述該文件的系統特征的數據。諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等。在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性。
文件系統元數據(metadata)的更改都被保存在一份單獨的日志里,當發生系統崩潰時可以根據日志正確地恢復數據。除此之外,日志使系統重新啟動時不必進行文件系統的檢查,從而縮短了恢復時間。
查看元數據的命令是stat
stat [OPTION]… FILE…
[root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-07-19 10:44:44.170998930 +0800 //訪問時間 Modify: 2017-07-19 10:44:44.170998930 +0800 //修改時間,即修改文件內容 Change: 2017-07-19 10:44:44.170998930 +0800 //改變時間,指元數據改變
可以看出獲得的元數據包括了文件名,文件大小的字節數,文件占用的塊數(blocks),文件權限、用戶屬主和屬組信息,以及最后三行的時間戳信息。
修改文件的時間戳信息
使用touch命令來修改時間戳信息
touch [OPTION]… FILE…
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
例:直接touch filename,將文件的時間戳修改為當前時間。會修改所有的三個時間戳。
[root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-05-05 11:30:10.000000000 +0800 Modify: 2017-07-19 10:44:44.170998930 +0800 Change: 2017-07-19 11:37:05.144985181 +0800 [root@loong tmp]# touch numad.conf [root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-07-19 14:38:31.574996407 +0800 Modify: 2017-07-19 14:38:31.574996407 +0800 Change: 2017-07-19 14:38:31.574996407 +0800
例:使用-a選項,僅修改atime,并指定時間為2017-6-21 15:22:05
[root@loong tmp]# touch -a -t 201706211522.05 numad.conf [root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-06-21 15:22:05.000000000 +0800 Modify: 2017-07-19 14:38:31.574996407 +0800 Change: 2017-07-19 14:45:09.950992896 +0800
原創文章,作者:N27_loong,如若轉載,請注明出處:http://www.www58058.com/81788
總結的不錯,相較于上一篇來說,注釋部分使用了’//’,可見是思考之后的,繼續加油~