文件名命名規(guī)則
- 文件名大小寫敏感
- 文件名可以使用除/以外的任意字符
- 文件名長(zhǎng)度不能超過255字符
- 以.開頭的文件為隱藏文件
常見目錄的作用
/boot:?jiǎn)?dòng)相關(guān)的內(nèi)核和grub文件
/bin:可執(zhí)行的二進(jìn)制文件
/sbin:只有root才能執(zhí)行的二進(jìn)制文件
/lib:庫文件
/lib64:64位庫文件
/home/username:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動(dòng)設(shè)備掛載點(diǎn)
/mnt:臨時(shí)文件系統(tǒng)的掛載點(diǎn)
/etc:目錄存放著各種系統(tǒng)配置文件
/dev:設(shè)備文件存放目錄
/srv:系統(tǒng)上運(yùn)行的服務(wù)用到的數(shù)據(jù)
/tmp:臨時(shí)目錄
/usr:存放軟件的執(zhí)行程序岔激、庫文件及文檔
/var:存放軟件可變的數(shù)據(jù)
/proc:內(nèi)核與存放進(jìn)程信息的虛擬文件系統(tǒng)
/sys:存放硬件信息的虛擬文件系統(tǒng)
/usr
/usr/bin:保證系統(tǒng)擁有完整功能而提供的程序谢鹊,在centos7中,/bin就是指向這里
/usr/sbin:管理員能夠用的程序
usr/lib:32位程序用到的庫
/usr/lib64:64位程序用到的庫
/usr/include:C程序的頭文件
/usr/share:結(jié)構(gòu)化獨(dú)立的數(shù)據(jù)双谆,列入doc和man
/usr/local:第三方程序的安裝位置
/var
/var/cache:應(yīng)用程序緩存數(shù)據(jù)的目錄
/var/lib:應(yīng)用程序狀態(tài)信息數(shù)據(jù)
/var/local:專用于/usr/local的程序存儲(chǔ)可變的數(shù)據(jù)
/var/lock:鎖文件
/var/log:日志文件
/var/opt:專用戶/opt下的應(yīng)用程序存儲(chǔ)可變的數(shù)據(jù)
/var/run:運(yùn)行中的進(jìn)程相關(guān)數(shù)據(jù)返干,通常用戶存儲(chǔ)進(jìn)程PID文件
/var/spool:應(yīng)用程序數(shù)據(jù)池
/var/tmp:保存系統(tǒng)兩次重啟之間產(chǎn)生的臨時(shí)數(shù)據(jù)
Linux下的文件類型
-:普通文件
d:目錄文件
b:塊設(shè)備
c:字符設(shè)備
l:符號(hào)鏈接文件
p:管道文件pipe
s:套接字文件socket
pwd
顯示當(dāng)前位置的絕對(duì)路徑兴枯,常用選項(xiàng):
- -P:如果當(dāng)前位置為軟連接目錄,則顯示源路徑
- -L:和pwd一樣矩欠,默認(rèn)顯示當(dāng)前位置絕對(duì)路徑
basename
取出基名
[root@centos7 ~]# basename '/etc/sysconfig/network-scripts/ifcfg-eth0'
ifcfg-eth0
dirname
取出目錄名
[root@centos7 ~]# dirname '/etc/sysconfig/network-scripts/ifcfg-eth0'
/etc/sysconfig/network-scripts
cd
進(jìn)入指定目錄财剖,常用選項(xiàng):
- ..:進(jìn)入當(dāng)前所在位置的上一級(jí)目錄
- -:進(jìn)入上一次的目錄,重復(fù)調(diào)用會(huì)在兩個(gè)目錄中來回切換
ls
列出目錄內(nèi)容癌淮,常用選項(xiàng):
- -a:顯示所有的文件峰伙,包括隱藏的文件
- -A:顯示所有的文件,包括隱藏的文件该默,但是不包括.和..
- -l:長(zhǎng)列出瞳氓,顯示屬性信息
- -d:不顯示子文件和子目錄的信息
- -R:遞歸顯示
- -1:以一列的方式顯示
- -S:按文件大小從大到小排序
- -t:默認(rèn)以修改時(shí)間從新到舊排列,而如果使用–time=atime或者–time=ctime栓袖,則以指定的時(shí)間顯示匣摘,–time=atime可以使用-utl來替代
- -rS:按文件大小從小到大排序
- -rt:按時(shí)間從舊到新排序
- -X:按文件的后綴名排序
- -i:顯示文件的inode號(hào)
- -Z:顯示文件的context標(biāo)簽
查看文件狀態(tài)
stat filename
查看文件的三個(gè)時(shí)間戳,還可以通過ls --time=atime/--time=ctime來查看
[root@centos6 ~]# stat /etc/sysconfig/network-scripts/ifcfg-eth0
File: `/etc/sysconfig/network-scripts/ifcfg-eth0'
Size: 231 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 393227 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-05-18 14:11:53.672274700 +0800
Modify: 2018-05-16 05:35:31.131999975 +0800
Change: 2018-05-16 06:15:15.794999624 +0800
時(shí)間戳
access time(atime):訪問時(shí)間
modify time(mtime):數(shù)據(jù)修改時(shí)間
change time(ctime) :元數(shù)據(jù)修改時(shí)間
touch
若文件不存在裹刮,則創(chuàng)建一個(gè)空文件音榜;若文件存在,則更新三個(gè)時(shí)間戳捧弃,常用選項(xiàng):
- -a:更新atime和ctime
- -m:更新mtime和ctime
- -c:若文件存在赠叼,則更新三個(gè)時(shí)間戳,若不存在违霞,則不做任何操作
文件通配符
*:零個(gè)或多個(gè)字符
?:任意單個(gè)字符
~:當(dāng)前用戶家目錄
~J :用戶J家目錄
~+:當(dāng)前工作目錄
~- :前一個(gè)工作目錄
0-9:任意數(shù)字
a-Z:任意大小寫字母
^:取反
[:digit:]:任意數(shù)字
[:lower:] :任意小寫字母
[:upper:]:任意大寫字母
[:alpha:]:任意大小寫字母
[:alnum:]:任意數(shù)字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:] :標(biāo)點(diǎn)符號(hào)
[:print:]:可打印字符
[:cntrl:]:控制(非打幼彀臁)字符
[:graph:] :圖形字符
[:xdigit:]:十六進(jìn)制字符
# 只顯示/etc下的非隱藏目錄
[root@centos6 ~]# ls -d /etc/*/
/etc/abrt/ /etc/oddjob/
/etc/acpi/ /etc/oddjobd.conf.d/
/etc/alsa/ /etc/openldap/
/etc/alternatives/ /etc/opt/
/etc/audisp/ /etc/PackageKit/
/etc/audit/ /etc/pam.d/
練習(xí)
-
顯示/etc目錄下所有以k開頭,以一個(gè)小寫字母結(jié)尾买鸽,且中間出現(xiàn)至少一位數(shù)字的文件或目錄
[root@centos6 ~]# ls /etc/k*[[:digit:]]*[[:lower:]]
-
顯示/proc目錄下名字由任意三位數(shù)字組成的文件或目錄
[root@centos6 ~]# ls -d /proc/[[:digit:]][[:digit:]][[:digit:]]
-
顯示/var/log目錄下文件名包含符號(hào)及數(shù)字的文件或目錄
[root@centos6 ~]# ls /var/log/*[[:punct:][:digit:]]*
-
顯示/usr/share/man目錄下所有以m開頭涧郊,以一個(gè)數(shù)字和x結(jié)尾的文件或目錄
[root@centos6 ~]# ls -d /usr/share/man/m*[[:digit:]x]
-
顯示/etc目錄下,所有以一個(gè)大寫字母開頭眼五,以兩個(gè)數(shù)字結(jié)尾的文件或目錄
[root@centos6 ~]# ls -d /etc/[[:upper:]]*[[:digit:]][[:digit:]]
-
顯示/etc目錄下妆艘,文件名至少包含一個(gè)小寫字母和一個(gè)數(shù)字并以.conf結(jié)尾的文件或目錄
[root@centos6 ~]# ls /etc/*[[:lower:]]*[[:digit:]]*.conf
-
只顯示用戶家目錄下的非隱藏目錄
[root@centos6 ~]# ls -d ~/
復(fù)制文件和目錄
源\目標(biāo) | 不存在 | 存在且為文件 | 存在且為目錄 |
---|---|---|---|
一個(gè)文件 | 新建同名文件并填充內(nèi)容 | 覆蓋內(nèi)容 | 在目錄下新建同名文件并填充內(nèi)容 |
多個(gè)文件 | 提示錯(cuò)誤 | 提示錯(cuò)誤 | 在目錄下新建同名文件并填充內(nèi)容 |
目錄(配合-r選項(xiàng)) | 新建同名目錄和目錄下的文件并填充內(nèi)容 | 提示錯(cuò)誤 | 在目錄下新建同名文件并填充內(nèi)容 |
cp
復(fù)制文件或目錄彤灶,常用選項(xiàng):
- -i:覆蓋時(shí)提示
- -r:遞歸復(fù)制,可以復(fù)制目錄
- -d:默認(rèn)不加-d時(shí)批旺,cp復(fù)制軟連接時(shí)會(huì)將源復(fù)制過去幌陕,加上-d保留鏈接屬性,把軟連接復(fù)制過去
- --preserv=
- mode:權(quán)限不變
- owner[skip]:權(quán)限及owner汽煮,group不變
- time:三個(gè)時(shí)間戳不變
- xattr:acl權(quán)限不變
- links:鏈接不變
- context:文件的selinux上下文關(guān)系不變
- all:所有不變
- -p:相當(dāng)于--preserv=mode搏熄,owner,time
- -a:cp -dr --preserv=all
- -v:顯示復(fù)制過程
- -f:強(qiáng)制覆蓋
- -u:只覆蓋比目標(biāo)文件新的文件逗物,相當(dāng)于更新文件
- –backup=numbered:覆蓋前,將舊文件名的后綴改為.n這種格式
練習(xí)
-
定義別名命令baketc瑟俭,將/etc/目錄下所有文件翎卓,備份到/testdir獨(dú)立的子目錄下,并要求子目錄格式為backupYYYY-mm-dd摆寄,備份過程可見
[root@centos7 ~]# alias baketc='cp -av /etc/* /testdir/backup$(date '+%F')/'
-
創(chuàng)建/testdir/rootdir目錄失暴,并復(fù)制/root下所有文件到該目錄內(nèi),要求保留原有權(quán)限
[root@centos7 ~]# cp -a /root/* /testdir/rootdir/
mv
移動(dòng)和重命名文件微饥,常用選項(xiàng):
- -i:覆蓋時(shí)提示
- -f:強(qiáng)制覆蓋逗扒,不提示
rename
重命名文件,可以批量重命名
[root@centos7 app]$ ls
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt
[root@centos7 app]$ rename txt mp3 *.txt
[root@centos7 app]$ ls
1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3 7.mp3 8.mp3
rm
刪除文件欠橘,常用選項(xiàng):
- -i:刪除時(shí)提示
- -f:強(qiáng)制刪除矩肩,不提示
- -r:遞歸刪除,用來刪除目錄肃续,通常配合-f來直接刪除目錄及目錄下的所有文件和目錄
[root@centos7 ~]# ls /testdir/rootdir/
anaconda-ks.cfg initial-setup-ks.cfg
[root@centos7 ~]# rm -rf /testdir/rootdir/
[root@centos7 ~]# ls /testdir/rootdir/
ls: cannot access /testdir/rootdir/: No such file or directory
tree
目錄操作黍檩,常用選項(xiàng):
- -d:只顯示目錄
- -L level:顯示指定目錄的級(jí)數(shù)
- -P pattern:只顯示由指定pattern匹配到的路徑
[root@centos7 boot]# tree -d
.
├── efi
│ └── EFI
│ └── centos
├── grub
└── grub2
├── fonts
├── i386-pc
└── locale
8 directories
[root@centos7 boot]# tree -L
tree: Missing argument to -L option.
[root@centos7 boot]# tree -L 1
.
├── config-3.10.0-862.el7.x86_64
├── efi
├── grub
├── grub2
├── initramfs-0-rescue-93cbf5565a95463486f2d96ceb77d275.img
├── initramfs-3.10.0-862.el7.x86_64.img
├── symvers-3.10.0-862.el7.x86_64.gz
├── System.map-3.10.0-862.el7.x86_64
├── vmlinuz-0-rescue-93cbf5565a95463486f2d96ceb77d275
└── vmlinuz-3.10.0-862.el7.x86_64
3 directories, 7 files
[root@centos7 boot]# tree -Ld 1
.
├── efi
├── grub
└── grub2
3 directories
mkdir
創(chuàng)建目錄,常用選項(xiàng):
- -p:可以同時(shí)創(chuàng)建多級(jí)目錄
- -v:顯示創(chuàng)建的信息
- -m:創(chuàng)建同時(shí)指定目錄的權(quán)限
[root@centos7 testdir]# mkdir a/b
mkdir: cannot create directory ‘a(chǎn)/b’: No such file or directory
[root@centos7 testdir]# mkdir -p a/b
[root@centos7 testdir]# tree
.
└── a
└── b
2 directories, 0 files
rmdir
刪除空目錄始锚,常用選項(xiàng):
- -p:遞歸刪除空目錄
練習(xí)
-
如何創(chuàng)建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b
[root@centos7 testdir]# mkdir -p /testdir/dir2/{x/{a,b},y} [root@centos7 testdir]# tree dir2/ dir2/ ├── x │ ├── a │ └── b └── y
硬鏈接和軟鏈接
硬鏈接
ln source destination
指向同一個(gè)inode的多個(gè)文件路徑刽酱,目錄不支持硬鏈接,硬鏈接不支持跨文件系統(tǒng)瞧捌,創(chuàng)建硬鏈接會(huì)增加inode引用計(jì)數(shù)棵里,其實(shí)硬鏈接就是在目錄inode中添加一個(gè)路徑和inode的對(duì)應(yīng)關(guān)系
[root@centos7 app]# echo "hello" > test1/a
[root@centos7 app]# cat test1/a
hello
[root@centos7 app]# ln test1/a test2/b
[root@centos7 app]# cat test2/b
hello
[root@centos7 app]# ll test2/b
-rw-r--r--. 2 root root 6 May 19 19:12 test2/b
軟鏈接
ln -s source destination
指向文件路徑的另一個(gè)文件路徑,軟鏈接與原文件時(shí)兩個(gè)獨(dú)立的文件姐呐,各自有自己的inode號(hào)殿怜,對(duì)文件創(chuàng)建軟鏈接不會(huì)增加引用計(jì)數(shù),可以跨文件系統(tǒng)曙砂,刪除原文件稳捆,軟鏈接的路徑就不存在了,就會(huì)失效
file
因?yàn)樵趌inux中麦轰,不會(huì)通過后綴名來區(qū)分文件的類型乔夯,因?yàn)橛形募缶Y砖织,僅僅用來方便用戶和管理員管理,所以可以使用file來判斷文件的類型末荐,常用選項(xiàng):
- -b:顯示文件類型侧纯,但是不顯示文件名
- -f filelist:列出filelist中的文件名的文件類型
- -F:使用指定分隔符替換輸出文件名后默認(rèn)的”;”分隔符
- -L:查看軟鏈接對(duì)應(yīng)文件的文件類型