Centos 7 文件和目录管理

前端之家收集整理的这篇文章主要介绍了Centos 7 文件和目录管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如若有错,请评论,虚心请教。

文件系统结构:

/boot:系统引导文件,内核

/bin:用户的基本命令

/dev:设备文件

/etc:配置文件

/home:用户家目录

/root:root用户家目录

/sbin:管理类的基本命令

/tmp:临时文件存放地

/usr:共享的只读数据

/mnt:临时文件系统挂载点

/media:移动设备挂载点

/opt:第三方应用程序的安装位置

/srv:系统运行的服务用到的数据

/var:变化的数据文件

/proc:用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统


文件类型:用ls -l filename 即可查看

-:普通文件

d:目录文件

b:块设备文件

c:字符设备

l:符号链接

p:管道

s:套接文件socket



pwd:显示当前的工作目录

#pwd 显示当前的工作目

直接输出pwd命令,会显示出当前所在的完整路径

wKioL1eZvyXQHLgQAAAYP_FoK0A299.png

#$PWD 保存了变量当前目录路径

pwd命令调用PWD变量内的值,当用户切换目录时,会自动更新变量内的值,输入pwd命令就会引用变量的值。

wKiom1eZvyXCyqj2AAAYq96HzA0285.png

#$OLDPWD 保存了上一次所在的目录路径

wKiom1eZvyWCxdLNAABwhrQCUUk918.png



cd:切换目录

#cd /PATH/TO/SOMEFILE 切换当前工作目录到指定目录(只能是目录,不能是文件

[root@localhost tmp]# cd /etc/sysconfig/network-scripts/

#cd - 切换到上一个工作目录

[root@localhost network-scripts]# cd -

/tmp

[root@localhost tmp]#

#cd ..切换到上一层目录

[root@localhost tmp]# cd ..

[root@localhost /]#

#cd /cd ~ :切换到用户的家目录

[root@localhost /]# cd

[root@localhost ~]#

[root@localhost etc]# cd ~

[root@localhost ~]#

#cd -P /bin:切换到软链接的实际地址

#cd ~ - /sysconfig 切换到当前目录的上一层然后在进入指定层。

[root@localhost bin]# cd ~-/etc/

[root@localhost etc]#

当前目录路径为/bin,然后使用'~-/etc' 就切换到etc下,因为bin的父目录为 / ,然后etc的父目录也为 /,那么就是bin切出去一层在进入etc。

#cd ~+/sysconfig 切换到当前目录的指定层

[root@localhost etc]# cd ~+/sysconfig/network-scripts/

[root@localhost network-scripts]#

在当前目录路径上切到子目录。




ls:列出当前目录或指定目录的文件和目录

-a :显示包含隐藏文件的所有文件

[root@localhost /]# ls -a

. .. .autofsck .autorelabel bin boot dev etc home lib lib64 //这里我没复制完。 带点‘.’的为隐藏文件

- l : 显示文件或目录的详细信息

[root@localhost /]# ls -l

第一列 第二列 第三列到第五列 第六到八列 第九列

dr-xr-xr-x. 2 root root 4096 Jul 25 10:37 bin

dr-xr-xr-x. 5 root root 1024 Jul 25 09:10 boot

drwxr-xr-x 20 root root 3840 Jul 25 11:44 dev

drwxr-xr-x. 102 root root 12288 Jul 25 12:28 etc

drwxr-xr-x. 3 root root 4096 Jul 25 09:20 home

dr-xr-xr-x. 11 root root 4096 Jul 25 09:04 lib

-rw-r--r-- 1 root root 151 Jul 25 14:10 testnet

lrwxrwxrwx. 1 root root 14 Jul 25 09:03 system-release -> centos-release

// 列出当前目录的目录和文件的详细信息,其中:

第一列第一位位字母:表示文件类型

- : 表示普通文件

d: 表示目录

l: 表示符号链接文件

b: 表示块设备文件

c: 字符设备文件

p: 命令管道

s: 套接文件

第一列第2到10位字母:表示权限,每三位一组

第一组三位权限owner(r,w,x):表示属主的权限,属主为第三列的 root,只有属主本身才能使用此类权限

第二组三位权限group(r,w,x ):表示属组的权限,属组为第四列的root,包含在此组的所有用户可用此类权限进行访问

第三组三位权限other(r,w,x ) :表示其他用户的权限,除了不是本文件的属组,或包含在属组里的用户之外的权限

第二列数字:表示此文件被硬链接次数

第三列到第四列字母:表示此文件的属主(onwer)和属组(group)

第五列为此文件的大小(size)

第六到第八列为此文件的mtime(更改时间)

第九列:文件

-R:递归目录下的文件

//显示目录下的目录和文件

[root@localhost /]# ls -R /etc/

/etc/abrt:

abrt-action-save-package-data.conf abrt.conf gpg_keys plugins


/etc/abrt/plugins:

CCpp.conf oops.conf python.conf

/etc/acpi:

actions events

/etc/acpi/actions:

power.sh

/etc/acpi/events:

power.conf video.conf

-d:目录自身,配合 -l 选项使用

//列出目录自身的详细属性,不列出其内部的文件或目录

[root@localhost /]# ls -ld /

dr-xr-xr-x. 25 root root 4096 Jul 25 13:01 /

[root@localhost /]#

-1:每个文件分行显示

//将目录下的所有文件或目录每个文件为独立一行来显示

[root@localhost /]# ls -1

bin

boot

dev

etc

home

tmp

usr

var

-S: 按文件大小排序(从大到小排序)

[root@localhost /]# ls -lS /

total 106 此列为文件大小

drwx------. 2 root root 16384 Jul 25 08:59 lost+found

drwxr-xr-x. 102 root root 12288 Jul 25 12:28 etc

dr-xr-xr-x. 2 root root 4096 Jul 25 10:37 bin

drwxr-xr-x. 3 root root 4096 Jul 25 09:20 home

drwxr-xr-x 20 root root 3840 Jul 25 11:44 dev

dr-xr-xr-x. 5 root root 1024 Jul 25 09:10 boot

drwxr-xr-x 2 root root 0 Jul 25 11:44 misc

drwxr-xr-x 13 root root 0 Jul 25 2016 sys

文件通配(glob)

*:匹配0个或多个任意字符

//显示’ / ‘ 下面的以’ t ‘ 开头,后面跟0次或多次的任意字符的目录或文件

[root@localhost /]# ls -d /t*

/testdir /tmp


?:匹配任意单个字符

// 显示’ / ‘ 下面的以’ s ‘ 开头,后面跟两个任意的1个字符的目录或文件

[root@localhost /]# ls -d /s??

/srv /sys

[]:指定范围内的任意单个字符[a-c]=aAbBc

//显示’ / ‘ 下面的以’ d ‘ 开头,中间为 a到z 之间的任意一个字符,以b结尾的目录或文件。其中[a-z]包括(a,A,b,B,c,C,d,D.....到z,不包括大写Z)

[root@localhost /]# ls -d /l[a-z]b

/lib

[^]:指定范围外的任意单个字符[^a-c]=[aAbBc]

//显示’ / ‘ 下面的以’ d ‘ 开头,中间为非数字,以b结尾的文件[root@localhost /]# ls -d /l[^0-9]b

可用于[],[^]的常用元字符。

[0-9]:指定0-9之间的任意一个数字

[a-z]:指定a-z之间的任意一个字母(其中有 a,D,e,E......一直到小z)

以下元字符用在[],[^]里,列如:

[root@localhost /]# ls -d /s[[:alpha:]]*

/sbin /selinux /srv /sys/sTmp

//表示以s开头,中间是字母(不区分大小写),以任意一个或个多字符结尾的目录或文件

[:lower:]:所有小写字母

[:upper:]:所有大写字母

[:punct:]:所有标点字符

[:digit:]:所有数字

[:alnum:]:所有字母和数字

[:alpha:]:所有字母(不区分大小写)

[:space:]:所有空格字符

stat:查看文件或目录状态

stat FILE...

[root@localhost /]# stat /test

File: `/test' //文件

Size: 12288 //文件大小Blocks: 24 IO Block: 4096 directory

Device: fd00h/64768d //设备地址Inode: 1179649 //索引节点 Links: 102 //链接次数

Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) //访问此目录权限,以及此文件属主和属组

Access: 2016-07-25 12:38:37.884763443 +0800 //最后一次访问此文件时间

Modify: 2016-07-25 12:28:44.165763586 +0800 //最后一次更改此文件的时间

Change: 2016-07-25 12:28:44.165763586 +0800 //最后一次改变此文件的时间

文件有两个数据:

元数据:matedate

//文件属性

数据:date

//文件内的文本数据

元数据内的时间戳:

access time(atime):访问时间,在读取文件或者执行文件时更改

modify time(mtime) : 修改时间,,在写入文件时随文件内容的更改而更改。

change time (ctime):改变时间,在文件属性值更改儿更改,如更改权限、大小、索引值等。





用ls查看文件指定时间戳

wKioL1eZxF6x55h7AAFxVI6_xqM779.png


touch:创建空文件课刷新文件时间戳

touch [OPTION]... FILE....

-a:仅改变文件的atime(访问时间)

1、当使用 -a 重复创建已存在的文件时,会更改文件的访问时间和改变时间为当前系统时间。,因为-a相当于重新创建一次,只是内容没变罢了,所以属性值也就不一样了。每重复创建一次修改一次。

wKioL1eZwObAstQjAAIsNzTRF5c119.png


2、当对此文件进行(如 cat)查看文件或执行时,只会更改文件的访问时间为当前系统时间,其余不会更改。

wKiom1eZwOjhj0nHAAJvjKQ-3T4<a href=502.png" src="http://s4.51cto.com/wyfs02/M02/85/1A/wKiom1eZwOjhj0nHAAJvjKQ-3T4502.png">


3、当对此文件编辑(如 vi )编辑文件内容时,所有时间(atime,mtime,ctiam)都会更改为当前系统时间,因为用编辑文件已经(查看或执行atime)、更改文件内容(mtime)、文件内容改变大小也就改变了(ctime),所以三个时间都会更改,每修改一次更改一次。

wKiom1eZwOihf486AAIi1hpSpCM736.png


4、当对此文件进行追加内容(如 echo "123" >> /testdir/testnet)时,atime不会改变,因为我们并没有实际的去查看文件,但mtime和ctime会改变,因为我追加内容文件更改了文件内容数据,那么mtime就会改变,那么文件内容数据更改了,文件属性也变了,自然也更改了ctime。

wKioL1eZwOrQgqXsAAI-Hdxfceo746.png


-m:仅改变文件的mtime(修改时间)

1、当使用 -m 重复创建已存在的文件时,会更改文件的更改时间(mtime)时间和改变时间(ctime)为当前系统时间。因为mtime时间更改之后系统会认为更改了数据,从而也更改ctime。每重复创建一次修改一次。

wKioL1eZwOuzU76PAAHrrkAz71k604.png


-t:手动指定时间更改文件时间,格式为:[[CC]YY]MMDDhhmm[.ss]

wKiom1eZwOzzRzrnAAIPGhljysc391.png


cp:复制文件或目录

选项[OPTION]

-i:与用户交互

//复制时会给用户发出确认信息。

-r:递归复制目录

//复制目录时加上此选项会复制目录内的所有内容

-f:强制覆盖目标文件

//复制文件或目录时,若目标存在时,可以加此选项对其进行强制覆盖

-d:复制符号链接本身,并不是链接指向的地址

//复制文件类型为符号链接时,加此选项可以只复制链接,不复制链接的实际地址。

-p:保留源文件属性

//复制文件或目录时保留原有的属性

-a:-dR --preserve=all 用于实现归档备份,复制所有属性信息

//其中preserve有:mode(权限)、ownership:属主属组、timestamps(时间戳)、context(安全标签)、xattr(扩展属性)、links:符号链接、all(以上所有属性


[OPTION]... [-T] SOURCE DEST

单源复制:

如果目标不存在:

则新建与源文件名相同的文件,并将内容填充至DEST中

如果目标存在:

如果为文件

将源文件内容覆盖至原有的文件内,用 i 选项可以与用户交互。

如果为目录:

在目标目录里新建一个与源文件同名的文件,并将源文件内容填充至文件

[OPTION]... SOURCE... DIRECTORY多源复制:

如果目标不存在:错误

如果目标为文件:报错

如果目标为目录:

在目标目录里新建一个与源文件同名的文件,并将源文件内容填充至文件



[OPTION]... -t DIRECTORY SOURCE

复制目录:

创建于源目录同名的目录,并将目录内的所有文件填充到目标目录内

如果目标为文件错误

在存在的目标目录内新建与源目录同名的目录,并将内容填充至目录内。



练习:复制

1、使用别名命令,每日将/etc/目录下所有文件,备份到/testdir/下独立的新目录下,并要求新目录格式为 backupYYYY-mm-dd ,备份过程可见。

定义别名,然后自定义别名名称,使用cp -rpv 复制目录到指定路劲,其中 r=递归复制目录下的所有目录和文件 p=保留源目录或文件属性值 v:显示复制的详细过程,这里只截图了一小部分。

backup后面的反引号代表命令引用,引用date命令加%F 参数实现备份的时候创建目录为backup+当前日期,如第二张图。

wKiom1eZwgSQxvPiAAQFXAa6BL8493.png


我们执行完别名命令之后就可以看到testdir目录下的“backup+当前日期的目录了”

用ls查看一下,这题完成了。

wKioL1eZwgWxF6czAAAZJrJESk0620.png


2、创建/testdir/rootdir目录,再复制/root所有下文件到该目录内,并要求保留原有权限

复制root家目录到/testdir/rootdir中,题目要求说创建/testdir/rootdir,然后再复制root家目录的文件,这里我并没有先创建/testdir/rootdir,而是直接开始复制,简单说明一下,这里我们使用cp 复制目录,就涉及到上面的cp复制目录的知识,当cp复制目录到另一个地址时,如果目标目录不存在,即会创建指定的目录名称并把内容填充至指定的目录里,所有这里我们并没有先创建目标目录。当然先创建目标目录也可以,如果先创建好目标目录再复制源目录,那么源目录只会放在目标目录的下一层并且保留原名。

其中,r=递归复制目录,a=归档存放,--preserve=mode表示源目录权限不变。

wKiom1eZwgWgJitQAAAnQVPqFIU678.png


用ls -ld 查看对比一下两个文件夹的大小以及权限等。

wKioL1eZwgXz8j5JAABvNIwTN2U346.png





mv:移动 用法和上述cp相同

mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE..





rm:删除目录或文件

也可以递归删除目录,但是如果删除的是链接文件,那么删除的只是链接文件,而不是链接的实际文件

rm [OPTION]... FILE...

-i: 与用户交互

//在删除某目录或某文件时会跟用户发出确认信息,回复 n 则不删除,y 则删除

wKiom1eZwt6SWfwFAAB_lWeUcXY918.png

-f: 强制删除文件或目录

//递归删除目录时默认会向用户发出确认信息,加 - f 之后直接删除不确认了。

wKioL1eZwt6SFMMtAABiWwHxRVw679.png



-r / R: 递归目录

//递归删除某目录,删除其目录内的所有数据(包括目录自己也删除)。

wKiom1eZwt-j_47dAAEiKKlS1O0678.png

-v:显示详细过程:

//删除目录或文件时会显示删除的过程

wKioL1eZwt-h8KpKAAEiKKlS1O0126.png

-no-preserve-root:递归删除根,如同 rm -rf / 但后者只限用于centos6以下版本,centos6以上就只能用前者删除根了。

没事的童鞋可以试一试:rm -rf --no-preserve-root /




tree:用树状性显示层级目录,不加路径则默认显示当前目录的结构

-d: 只显示目录

//只列出当前路径内的目录,不包括文件

wKiom1eZwyODZAWAAABJ3-uu3sI333.png

-L level:指定显示的层级数目

//显示当前路径内的目录及文件,但只列出两层。

wKiom1eZwyOzE5hHAABUrGdVw14567.png


-P pattern: 只显示由指定pattern匹配到的路径




mkdir :创建目录

-p: 自动创建所需的各目录

创建目录时,命令就会一层一层往下找目录一直到最后,如果发现没有要找的目录就自动创建目录直到最后。如图示,过程中没有的目录会创建出来。


wKioL1eZw0uD3aIOAAEM-z2YtHg139.png

-v: 显示创建的详细信息,如上图。


-m MODE: 创建目录时直接指定权限;

//创建目录时给定权限,权限为属主(读、写、执行),属组(读、写、执行)其他用户(读、执行)。

wKioL1eZw0vCOYHMAABRuhNQYHY207.png




rmdir: 删除空目录

-p: 递归删除父空目录

//用-p选项会删除指定路径的目录,如果指定路径目录被删除之后其父目录为空,也会将其删除,一直到非空为止。

wKiom1eZw4OCuClMAAFN0vvJrEI475.png

-v: 显示删除详细信息,如上图。




练习:创建目录

(1) 如何创建目录/testdir/dir1/x,/testdir/dir1/y,/testdir/dir1/x/a,/testdir/dir1/x/b,/testdir/dir1/y/a,/testdir/dir1/y/b

wKioL1eZw62SN-pPAADbE8ib_xw207.png

(2) 如何创建目录/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

wKiom1eZw63yHmHVAACRvXJl8xc888.png

(3) 如何创建目录/testdir/dir3,/testdir/dir4,/testdir/dir5,/testdir/dir5/dir3,/testdir/dir5/dir4

wKioL1eZw66AsxGRAACm7ieUpVQ293.png

猜你在找的CentOS相关文章