第三章文件管理学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章文件管理学习笔记相关的知识,希望对你有一定的参考价值。

笔记整理起始时间: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,表示文件的最后读取时间

                     有些情况,如网站,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

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

        添加别名:

        alias rm=`mv -t /data`

        

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号

        创建时链接数递增

               目录文件生成之后链接数为2  因为.占一个

               当目录中有子目录时,链接数再+1

        删除文件时:

               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      

        

        

 


以上是关于第三章文件管理学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

操作系统学习笔记 第五章:文件管理(王道考研)

操作系统学习笔记 第五章:文件管理(王道考研)

Spring框架学习笔记

操作系统学习笔记 第六章:设备管理(王道考研)

操作系统学习笔记 第六章:设备管理(王道考研)

学习笔记