第三章文件管理学习笔记

文件系统结构元素

创建和查看文佳

复制、转移和删除文件

使用Nautilus来管理文件

软和硬链接

笔记整理起始时间:2018年3月31日16:16:55

 

本章内容

文件系统结构元素

创建和查看文佳

复制、转移和删除文件

使用Nautilus来管理文件

软和硬链接

 

文件系统

文件和目录被组织成一个单根倒置树结构

文件系统从根木兰路下开始,用”/”表示

根文件系统:rootfs,root filesystem

文件名称,默认ext4,xfs下区分大小写

以.开头的文件为隐藏文件

路径分隔的/

文件有两类数据

元数据:metadata

数据:data

文件系统分层结构:LSB,Linux Standard Base

FHS:(Filesystem Hierarchy Standard)

 

文件名规则

文件名最长255个字节

包括路径在内文件名最长4095个字节

蓝色–>目录

绿色–>可执行文件

红色–>压缩文件

浅蓝色–>链接文件

灰色–>其他文件

除了/和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用

有些字符需要用引号来引用它们。

标准Linux文件系统ext4,xfs下区分大小写,如mail,Mail等

 

文件系统结构

/boot:引导文件存放目录,内核文件(vmlinuz),引到加载器(bootloader)

/bin:供所有用户使用的基本命令;不能关联至独立分区,os启动即会用到程序

/sbin:管理类的基本命令,不能关联至独立分区,os启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件/lib/modules

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc:配置文件目录

/home/houstname:普通用户家目录

/root:管理员的家目录

/media:便携式移动设备挂载点

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

/dev:设备文件及特殊文件存储位置

b:block device,随即访问

c:character device,线性访问

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

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

/tmp:临时文件存储位置

/usr:universal shared,read-only data

/usr/bin:保证系统拥有完整功能而提供的应用程序

/usr/sbin:

/usr/lib:32位使用

/usr/lib64:只存在64位系统

/usr/include:C程序的头文件(header files)

/usr/share:结构化独立的数据,例如doc,man等

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

bin,sbin,lib,lib64,etc,share

/var:variable data filesystem

cache:应用程序缓存数据目录

lib:应用程序状态信息数据

local:专用于为/usr/local下的应用程序存储可变数据

lock:锁文件

log:日志目录及文件

opt:专用于为/opt下的应用程序存储可变数据

run:运行中的进程相关数据,通常用于存储进程pid文件

spool:应用程序数据池

tmp:保存系统两次重启只见产生的临时数据

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

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

/selinux:security enhanced Linux,selinux相关的安全策略等信息的

存储位置

 

Linux上的应用程序的组成部分

二进制程序:/bin,/sbin,/usr/sbin,/usr/local/bin,/usr/local/sbin

库文件:/lib,lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64

配置文件:/etc,/etc/DIRECTORY,/usr/local/etc

帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,

/usr/local/share/doc

 

Linux下的文件类型

-:普通文件

d:目录文件

b:块设备

c:字符设备

l:符号链接文件

p:管道文件pipe

s:套接字文件socket

 

CentOS 7目录变化

/bin 和/usr/bin

/sbin 和/usr/sbin

/lib 和/usr/lib

/lib64 和/usr/lib64

 

显示当前工作目录

每个shell和系统进程都有一个当前的工作目录

CWD:current work directory

显示当前shell CWD的绝对路径

pwd:printing working directory

-P   显示真实物理路径

-L    显示链接路径(默认)

如:cd /bin,

pwd,输出结果为:/bin,

pwd -P ,输出结果为:/usr/bin

 

绝对和相对路径

绝对路径

以/开始

完整的文件的位置路径

可用于任何想指定一个文件名的时候

例如:cd /root/Downloads

相对路径名

不以斜线开始

指定相对于当前工作目录或某目录的位置

可以作为一个简短的形式指定一个文件名

例如:cd ../Downloads/

基名:basename

目录名:dirname

如:

basename /root/Music/file1 输出结果为:file1

dirname /root/Music/file1    输出结果为:/root/Music

 

cd   更改目录

cd           更改目录,可使用相对或绝对路径

cd    /home/wang

cd    home/wang

cd .. 切换至父目录

cd           切换至当前用户家目录

cd – 切换至上一个工作目录

cd ~wang      切换至wang用户家目录

cd -P /bin      进入绝对路径

相关变量

PWD:当前目录路径

OLDPWD:上一次目录路径

 

ls     列出当前目录的内容或指定目录

用法:ls [options] [files or dirs]

ls -a 显示所有文件或目录,含隐藏

ls -l 显示文件详细信息,==ll

ls -R 递归,显示目录里面的内容

ls -ld      目录和符号链接信息

ll -d 目录/  对于普通目录,加和不加/都会显示目录信息,但是对于链接

目录,比如/bin,加/会显示链接目的目录信息,不加/会显示链接

文件本身的信息。

ls -1 单列显示

ls -S 按大小从大到小排序

ls -t 按mtime排序

ls -u 需配合-t使用,显示并按atime从新到旧排序

ls -U       按目录存放顺序显示

ls -X 按文件后缀排序

ls -r 倒序排列

 

stat  查看文件状态

三个时间戳

access time,   atime,表示文件的最后读取时间

modify time,       mtime,表示文件的最后修改时间

change time,      ctime,表示元数据发生改变的时间

 

文件通配符

*             匹配零个或多个字符

?           匹配任何单个字符

~            当前用户家目录

~mage   用户mage家目录

~+          当前工作目录

~-          前一个工作目录

[0-9]       匹配列表中的任何一个字符

[a-Z]       匹配任意字母

[wang]    匹配列表中的任何一个字符

[^wang]  匹配列表中的所有字符意外的字符

预定义的字符类:man 7 glob

[:digit:]    任意数字,相当于0-9

[:lower:]  任意小写字母

[:upper:]  任意大写字母

[:alpha:]  任意大小写字母

[:lanum:] 任意数字或字母

[:blank:]  水平空白字符

[:space:]  水平或垂直空白字符

[:punct:]  标点符号

[:print:]    可打印字符

[:graph:]  图形字符

[:cntrl:]    控制(非打印)字符

[:xdigit:]   十六进制字符

 

小练习:

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数

字的文件或目录

ls -d /var/l*[0-9]*[[:lower:]]

 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录

ls -d /etc/[0-9]*[^[:digit:]]

 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符

的文件或目录

ls -d /etc/[^[:alpha:]][a-Z]*

 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符

的文件或目录

ls -d /etc/rc[0-6]*

 5、显示/etc目录下,所有以.d结尾的文件或目录

ls -d /etc/*.d

 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

ls -d /etc/[mnrp]*.conf

 7、只显示/root下的隐藏文件和目录

ls -d /root/.*

 8、只显示/etc下的非隐藏目录

####      ls -d /etc/[^.]*/

 

touch命令     创建空文件和刷新时间戳

touch [OPTION]…FILE…

-a    仅改变atime和ctime

-m 仅改变mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]      指定atime和mtime的时间戳

-c    如果文件不存在,则不予创建

用法:文件存在,刷新时间戳,文件不存在,则创建文件

touch file{1..5}       创建file1..file5

 

cp复制文件和目录

用法使用规则

cp SRC DEST

复制单个文件到单个文件

如文件名不存在,则创建

cp Music/file3 f3

如文件名已存在,则覆盖,root账号默认使用别名-i,会询问是否覆盖

cp Music/file3 f3 此时f3已存在

复制单个文件到目录

在目标DEST下新建与源SRC同名的文件,并将SRC内容填充到新文件

复制多个文件到单个文件

不管文件名是否存在,均会报错

cp: target ‘f3’ is not a directory

复制多个文件到目录

在目标DEST下新建与源SRC同名的文件,并将SRC内容填充到新文件

cp Music/file1 Music/file2 Videos/

如目标文件名已存在,则覆盖,默认root账号会询问

复制目录到单个文件

如DEST已存在,直接报错

cp: cannot overwrite non-directory ‘f3’ with directory ‘Music/’

如DEST不存在

创建指定的DEST同名目录,复制SRC目录中所有内容至新目录

复制目录到目录

在DEST中新建与SRC同名目录,且复制SRC中内容到新目录

如目录已存在,默认root账号会提示覆盖

PS:如复制目录,必须加-r选项

 

cp -i       覆盖前提示

cp -n      不覆盖,必须在-i后面才有效

cp -a      归档,相当于-dR –preserv=all

cp -d      –no-dereference –preserv=links 不复制源文件,只复制链接

–preserv[=ATTR_LIST]

mode:权限

ownership:属主属组

timestamp:

links

xattr

context

all

cp -p     等同于–preserv=mode,ownership,timestamp

cp -v      –verbose过程可视

cp -f      –force   强制

cp -u      –update 只复制源比目标更新文件或目标不存在的文件

cp -=backup=numberd      如目标存在,覆盖前先备份加且加数字后缀

 

mv 移动和重命名文件

mv,用法规则和cp类似

mv -i 覆盖前提示

mv -f 强制

 

rm 删除

rm file1   删除file1

rm -i file1       删除前询问

rm -f 强制删除,不再询问

rm –no-preserve-root 删除/

如:

rm -rf / –no-preserve-root

自杀,删除根目录下-所有文件,史上最危险命令

 

tree 显示目录树

tree /etc         显示指定目录树

tree -d          只显示目录

tree -L level,       指定显示的层级数

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

tree -p                  显示tree的时候显示文件类型(-,d,b..)

 

mkdir 创建目录

mkdir /root/f1       在root下创空目录f1

mkdir -p /root/go1/go2/go3/go 递归创建,即父目录不存在则自动创建

mkdir -v        是过程可视

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

 

rmdir 删除空目录

rmdir /root/f1 删除root下空目录f1

rmdir -p /root/go1/go1/go2/go3/go

递归删除,如删除目标之后父目录空,则一起删除

rmdir -v               显示详细信息,是过程可见

 

 

索引节点:

一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组

中的唯一一个元素对应,系统给每个索引节点分配了一个号码,也就是该节点

在数组中的索引号,索引节点号。

 

Linux为每个文件分配一个inode(索引节点编号),可以将inode简单理解成

一个指针,它永远指向本文件的具体存储位置,系统是通过inode来定位每一

个文件。

inode(index node)表中包含文件系统所有文件列表

一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括

文件类型,权限,uid,gid

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据

文件名可以随时更改,但是索引节点对文件是唯一的,并且随文件的存在而存在

 

目录:

文件系统引用一个文件是用inode号

人是通过文件名来引用一个文件

一个目录的数据部分记录的信息为:

目录下文件名和文件inode号之间的映射

 

cp和inode:

在cp的命令执行时:

分配一个空闲的inode号,在inode表中生成新条目(inode编号)

在目录中创建一个目录项(新映射),将名称与inode编号关联

拷贝数据生成新的文件

 

rm和inode

rm命令执行过程:

链接数递减,从而释放的inode号可以被重用

把数据块放到空闲列表中

删除目录项

数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

 

mv和inode

如果mv命令的目标和源在相同的文件系统,作为mv命令

用新的文件名创建对应新的目录项(映射)

删除旧目录条目对应的旧的文件名

不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动。

如果目标和源在一个不同的文件系统,mv相当于cp和rm

 

硬链接:

创建硬链接会增加额外的记录项以引用文件

对应于同一文件系统上一个物理文件

每个目录引用相同的inode号

创建时链接数递增

删除文件时:

rm命令递减计数的链接数

文件要存在,至少有一个链接数

当链接数为零时,该文件被删除

不能跨越驱动器或分区

语法:

ln filename [linkname]

如 ln /root/f3 /root/Music/fgo1

 

 

符号(软)链接

一个符号链接指向另一个文件

ls -l 显示链接的名称和引用的文件

一个符号链接的内容是它引用文件的名称

可以对目录进行

可以跨分区

指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少

目标文件inode的引用计数

语法:

ln -s filename [linkname]

ln -s /data/f5 /root/f5_link

PS:如使用删除命令rm删除软链接

rm -rf /root/f5_link

此命令如最后不加/,会删除软链接本身,

如使用tab键补全命令,后面默认会带/,此时删除的将会是目f5下所有文件

 

readlink /root/f5_link          显示软链接指向的源文件

 

确认文件内容

file f1                    显示f1的文件类型

file -b f1              累出文件辨识结果时,不显示文件名称

file -f filelist    列出文件filelist中所有文件名的文件类型

file -F , 34             使用指定分隔符号(,)替换输出结果文件名后默认

的:分隔符

flie -L            查看对应软链接对应文件的文件类型

 

 

 

笔记整理完成时间:2018年4月1日15:24:49

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94224

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code