随堂练习 Linux 文件管理

目录结构

名称  作用

/boot  系统启动引导文件存放目录。内核文件(vmlinuxz)以及引导加载器(BootLoader)都存放在此目录下。

/bin  存放所有用户使用的基本命令,该目录不能独立分区,OS 在启动时会使用到该目录下的文件。

/sbin  存放管理类的基本命令,该目录不能独立分区,OS 在启动时会使用到该目录下的文件。

/lib  存放系统启动时程序依赖的基本共享库文件 以及内核模块文件(/lib/modules);还有一个目录叫/lib64 ,他是专用于x86_64 系统上的辅助共享库文件存放位置。

/etc  配置文件目录。

/home  普通用户的家目录。

/root  管理员用户的家目录。

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

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

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

/opt  第三方引用程序的安装位置。

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

/tmp  临时文件存储位置。

/usr   universal  shared,  read-only  data

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

    sbin

    lib:32位使用

    lib64:只存在64位系统

    include:c 程序的头文件

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

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

        bin,sbin,lib,lib64,etc,share

/var  variable data files

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

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

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

    lock:锁文件

    log:日志目录及文件

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

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

    spool:应用程序数据池

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

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

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

/selinux  相关的安全策略等信息的存储位置

 

应用程序的组成部分

二进制程序:/bin/sbin/usr/bin/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

 

文件路径和相关命令

范例:

cd   切换到目标目录名

使用相对路径时,有两个符号有特殊含义:“.” 和 “..”

:表示当前所在目录

..  :表示当前目录的上一级目录,即父目录

范例:

当前目录切换至父目录

[root@localhost etc]# pwd
/etc
[root@localhost etc]# cd ./../
[root@localhost /]# pwd
/

另外使用cd 命令切换时,可以使用 “-” 表示切换至当前目录之前所在的目录,所以使用 “-” 可以切换回去,原因是因为每次切换目录前,会先将当前目录的路径存放在变量 OLDPWD 中。

用 “~” 表示用户的家目录,~USERNAME 表示指定用户的家目录

范例:

[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /etc

1)切换至自己的家目录
[root@localhost etc]# cd ~
[root@localhost ~]# pwd
/root

2)回到切换前所在目录

[root@localhost ~]# cd -
/etc

 

各种文件类型

-  普通文件

d  目录文件

b  块设备block

c  字符设备character

l  符号链接文件link

p  管道文件pipe

s  套接字文件socket

1)普通文件     - 表示普通文件

范例

[root@localhost etc]# ls -l /etc/issue
-rw-r--r--. 1 root root 23 Nov 23 2018 /etc/issue

2)目录文件  d 表示目录文件

[root@localhost etc]# ls -l

drwxr-xr-x. 5 root root 231 Jun 29 17:10 vmware-tools
drwxr-xr-x. 2 root root 33 Jun 29 17:10 wpa_supplicant
drwxr-xr-x. 5 root root 57 Jun 29 17:09 X11
drwxr-xr-x. 4 root root 38 Jun 29 17:09 xdg
drwxr-xr-x. 2 root root 6 Apr 11 2018 xinetd.d
drwxr-xr-x. 6 root root 100 Jun 29 17:10 yum

3)链接文件   l 表示链接文件

[root@localhost etc]# ls -l

lrwxrwxrwx.  1 root root     14 Jun 29 17:09 system-release -> centos-release

4)管道文件   p 表示管道文件

管道文件有以下局限性

  1)自己写的数据不能自己读

  2)数据一旦被读后,便不在管道中存在,不可反复读取

  3)管道采用半双工通信方式,即同一时间数据只能在一个方向上流动

由于管道文件是半双工模式,即同一时间只能一个方向传输数据,而后面介绍的套接字文件支持双全工,所以目前使用不多

常见通信方式有三种:单工,半双工,全双工

单工:即只能向一个方向传输信息,如传统的收音机

半双工:可以双向传输信息,但不能同时进行传输,只能轮流进行,如:对讲机

全双工:可以同时双向传输信息,如:手机

5)字符设备文件   表示字符设备文件

范例:

[root@localhost etc]# ls -l /dev/null /dev/zero /dev/tty*
crw-rw-rw- 1 root root 1, 3 Jun 29 17:33 /dev/null
crw-rw-rw- 1 root tty 5, 0 Jun 29 17:33 /dev/tty
crw--w---- 1 root tty 4, 0 Jun 29 17:33 /dev/tty0
crw--w---- 1 root tty 4, 1 Jun 29 17:33 /dev/tty1
crw--w---- 1 root tty 4, 10 Jun 29 17:33 /dev/tty10
crw--w---- 1 root tty 4, 11 Jun 29 17:33 /dev/tty11
crw--w---- 1 root tty 4, 12 Jun 29 17:33 /dev/tty12
crw--w---- 1 root tty 4, 13 Jun 29 17:33 /dev/tty13
crw--w---- 1 root tty 4, 14 Jun 29 17:33 /dev/tty14

6)块设备文件  b 表示块设备文件

范例:

[root@localhost etc]# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Jun 29 17:33 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun 29 17:33 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jun 29 17:33 /dev/sda2
brw-rw---- 1 root disk 8, 3 Jun 29 17:33 /dev/sda3
brw-rw---- 1 root disk 8, 4 Jun 29 17:33 /dev/sda4
brw-rw---- 1 root disk 8, 5 Jun 29 17:33 /dev/sda5

7)套接字文件   表示套接字文件

范例:

[root@localhost etc]# ls -l

 

树状查看目录 tree

选项:

-a  显示所有文件和目录

-A  使用ASNI绘图字符显示树状图而非以ASCII字符组合

-C  在文件和目录清单加上色彩,便于区分各种类型

-d  显示目录名称而非内容

-D  列出文件或目录的更改时间

-f  在每个文件或目录之前,显示完整的相对路径名称

-F  在执行文件,目录,Socket,符号链接,管道名称,各自加上“*”,“/”,“=”,“@”,“|” 号

-g  列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码

-i  不以阶梯状列出文件或目录名称

-I pattern i 的大写字母选项表示不显示符合pattern 的文件或目录名称

-l(小写的 L )如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录

-n  不在文件和目录清单上加色彩

-N  直接列出文件和目录名称,包括控制符

-p  列出权限标示

-P pattern   只显示符合 pattern 的文件或目录名称

-q  用“?” 号取代控制字符,列出文件和目录名称

-s  列出文件或目录大小

-t  用文件和目录的更改时间排序

-u  列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码

-x  将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

范例:

1)查看指定目录树的层级

[root@localhost etc]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt

2)查看 / 目录下最大层级至二级目录的文件列表

[root@localhost etc]# tree -L 2 /
/
├── bin -> usr/bin
├── boot
│   ├── config-3.10.0-957.el7.x86_64
│   ├── efi
│   ├── grub
│   ├── grub2
│   ├── initramfs-0-rescue-d62b0ba7dcfc4b848244858d3f00df91.img
│   ├── initramfs-3.10.0-957.el7.x86_64.img
│   ├── symvers-3.10.0-957.el7.x86_64.gz
│   ├── System.map-3.10.0-957.el7.x86_64
│   ├── vmlinuz-0-rescue-d62b0ba7dcfc4b848244858d3f00df91
│   └── vmlinuz-3.10.0-957.el7.x86_64
├── data
├── dev
│   ├── agpgart
│   ├── autofs
│   ├── block

3)查看指定目录树中的子目录,不包含文件

[root@localhost etc]# tree -L 1 -d /etc
/etc
├── alternatives
├── audisp
├── audit
├── bash_completion.d
├── binfmt.d
├── chkconfig.d
├── cron.d

4)查看指定目录树中的子目录,不包含文件

[root@localhost etc]# tree -f -p -L 2 /etc/
/etc
├── [-rw-r--r--] /etc/adjtime
├── [-rw-r--r--] /etc/aliases
├── [-rw-r--r--] /etc/aliases.db
├── [drwxr-xr-x] /etc/alternatives
│   ├── [lrwxrwxrwx] /etc/alternatives/ld -> /usr/bin/ld.bfd
│   ├── [lrwxrwxrwx] /etc/alternatives/libnssckbi.so.x86_64 -> /usr/lib64/pkcs11/p11-kit-trust.so
│   ├── [lrwxrwxrwx] /etc/alternatives/mta -> /usr/sbin/sendmail.postfix
│   ├── [lrwxrwxrwx] /etc/alternatives/mta-aliasesman -> /usr/share/man/man5/aliases.postfi

 

创建目录

mkdir 命令格式

mkdir  [-pv] [-m mode] directory ...

选项  说明

-m    指定创建文件的模式(权限),其作用类似 chmod 命令

-p    递归创建目录,默认创建目录所在父目录必须存在,如果父目录不存在,也希望自动创建父目录,可以使用此选项

-v    创建目录时会给出详细说明,并在创建目录时列出他们

范例:

1)创建目录

[root@localhost etc]# mkdir /data/mysql

2)创建目录及父目录

[root@localhost etc]# mkdir /data/dir1/dir2 -p

 

删除目录

语法格式:

rmdir [OPTION] ... DIRECTORY

选项      说明

-p,--parents  删除目录及其空父目录,比如: rmdir -p a/b/c  和 rmdir a/b/c a/b a 功能是相同的

-v,--verbose  输出每个目录的处理信息

 

查看文件列表

ls 语法格式

ls [OPTION]... [FILE]...

选项    说明

-A    显示除隐藏文件 “.” 和 “..” 以外的所有文件列表

-a    显示包括以 “.” 开始的所有文件,默认 “.” 开始的文件为隐藏文件会列出

-b    将文件中的不可输出的字符以反斜线 “ ” 加字符编码的方式输出

-C    多列显示输出结果,这是默认选项

-c    与“-lt” 选项连用时,按照文件状态时间排序输出目录内容,根据文件的索引节点中的ctime 字段排序,与 “-l” 选项连用时,则排序的一句是文件的状态改变时间

--color[=WHEN]  使用不同的颜色高亮显示不同类型的

-d    仅显示目录名,而不显示目录下的内容列表,显示符号链接文件本身,而不显示其所指向的目录列表

-F    在每个输出项后追加文件的类型标识符,具体含义:“*” 表示具有可执行权限的普通文件,“/” 表示目录,“@” 表示符号链接,“|” 表示命令管道FIFO, “=” 表示sockets 套接字。当文件为普通文件时,不输出任何标识符。

--full-time  列出完整的日期与时间

-i    显示文件索引节点号。一个索引节点代表一个文件

-l    以长格式显示目录下的内容列表,输出的信息从左到右依次包括文件名,文件类型,权限模式,硬连接数,所有者,组,文件大小和文件最后修改时间等

-I    与“-C” 选项功能相反,所有输出信息用单列格式输出,本输出为多列

-m    用 “.” 号区隔每个文件和目录的名称

-n    以用户识别码和群组识别码替代其名称

-R    递归处理,将指定目录下的所有文件及子目录一并处理

-r    以文件名反序排列并输出目录内容列表

-s    显示文件和目录的大小,以区块为单位

-t    用文件和目录的更改时间排序

 

文件的时间属性

atime: access time   记录最后一次的访问时间

mtime:modify time  记录最后一次文件数据部分的修改时间

ctime:change time  记录最后一次文件元数据的修改时间

 

查看文件属性信息

stat 格式:

stat [文件或目录]

file 命令语法

file [OPTION...] [FILE...]

选项    说明

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

-c    详细显示指令执行过程,便于排错或分析程序执行的情形

-f FILE  指定名称文件,其内容有一个或多个文件名称时,依序辨识这些文件类型

-L    直接显示符号连接所指向的文件的类别

-i    输出文件对应的MIME的类型

-v    显示版本信息

-z    尝试去解读压缩文件的内容

 

创建文件

touch 语法格式

touch [OPTION]...FILE...

选项          说明

-a          表示只更改访问时间atime

-c,--no-create    不新建任何文件

-m          只更改mtime 时间

-r, --reference=FILE  把指定文件时间设成和参考文件日期时间相同,而非当前时间

-t  STAMP      使用指定的时间,格式为:[[CC]YY]MMDDhhmm[.ss]

--time=WORD    指定特定的时间,WORD为access 或atime ,相当于-a 选项,WORD为 modify 或 mtime ,相当于 -m 选项

--help        在线帮助

--version      显示版本信息  

 

复制文件

格式:cp [OPTION]... [-T] SOURCE DEST

选项         说明

-a,--archive    此参数的效果和同时指定 “-dpR” 参数相同

-b          覆盖已存在的目标文件前先对之做备份

-f,--force      如果目标文件不能打开,先删除后在打开

-i,--interactive     覆盖文件之前先询问用户

-l,--link        对源文件建立硬链接,而非复制文件

-p,--preserve    保留原文件或目录的属性,包括所有者,所属组,权限与时间

-P,--no-dereference    复制软链接本身,而非复制软链接指向的源文件

-R,-r,--recursive  递归处理,将指定目录下的文件与子目录一并处理

-s,--symbolic-link  对源文件建立符号链接,而非复制文件

-u,--update      只会在源文件的修改时间(Modification Time)较目的文件更新时,或名称相对应的目的文件并不存在,才复制文件

-v,--verbose    显示执行过程

-x,--noe-file-system  复制的文件或目录存放的文件系统,必须与cp 指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件

--help        显示在线帮助

--version      显示版本

-S,--suffix=SUFFIX    指定备份文件的后缀,默认为 “~”

--backup[=CONTROL]  指定已存在目标文件的备份文件名的命名方式

源文件                               

一个文件   

目标文件不存在:会先创建DEST文件,再将SRC文件中的内容复制到DEST中   

目标文件存在且为文件:将SRC中的内容覆盖至DEST中,目标文件中的原始数据将会丢失,建议复制使用 -i 选项

目标存在且为目录:在该目录下创建于原文件同名的文件,并将SRC 文件中的内容复制到DEST中

 

源文件

多个文件

目标文件不存在:提示错误

目标文件存在且为文件:提示错误

目标存在且为目录:在该目录下分别创建与源文件同名的文件,并将SRC 文件中的内容依依复制到对应的DEST中

 

源文件

目录文件

目标文件不存在:创建指定DEST 同名目录,复制SRC 目录中有文件至DEST下

目标存在且为文件:提示错误

目标存在且为目录:在DEST 下创建与原目录同名的目录,并将SRC 中的内容复制到新目录中

 

移动及重命名文件

mv 格式:

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

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

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

选项                说明

-b                  当文件存在时,覆盖前,为其创建一个备份

-r                   直接覆盖不再提示

-i                 交互式操作,覆盖前先行提示用户是否覆盖

-u                  当源文件比目标文件新或者目标文件不存在时才执行

--strip-trailing-slashes        删除源文件中的斜杠 “/”

-S,--suffix=SUFFIX          为备份文件指定后缀,而不使用默认的后缀

-t,--tatget-directory=DIRECTORY  指定源文件要移动到目标目录

 

删除文件

rm [OPTION]...FILE...

选项          说明

-f          强制删除文件,即在删除文件时不提示确认,并自动忽略不存在的文件

-i          在删除每个文件之前请求确认

-d:         删除空目录文件,非空目录不能删除

-r,-R,--recursive   递归删除

-v,--verbose      显示详细过程

--no-preserve-root    删除“/” 时使用,此选项在CentOS5版本前默认值

--preserve-root    对“/” 不进行递归删除,此选项在CentOS6版本后为默认值

--help        显示帮助

--version       显示版本

 

硬链接与软链接

选项            说明

-b           覆盖以前先备份

-d,-F,--directory    允许超级用户制作目录的硬链接,因系统限制可能出错

-f,--force        强制执行

-i,--interactive    交互模式,文件存在则提示用户是否覆盖

-n,--no-dereferenc  吧符号链接视为一般目录

-s, --symbolic    软链接(符号链接)

-v,--verbose      显示详细的处理过程

-S,--suffix=SUFFIX  指定备份的文件后缀

--help        显示帮助信息

--version        显示版本信息

两者链接的区别:

1)本质

硬链接:本质是同一个文件起了多个名字

软链接:本质不是同一个文件

2)跨设备

硬链接:不支持

软链接:支持

3)iNode

硬链接:相同

软链接:不同

4)链接数

硬链接:创建新的硬链接,链接数会增加;删除硬链接,链接数会减少

软链接:创建或删除,链接数不会变化

5)文件夹

硬链接:不支持

软链接:支持

6)相对路径

硬链接:原始文件相对路径是相当于当前工作目录

软链接:原始文件的相对路径是相对于链接文件的相对路径

7)删除源文件

硬链接:只是链接数减一,但链接文件的访问不受影响

软链接:链接文件将无法访问

8)文件类型

硬链接:和源文件相同

软链接:链接文件和源文件无关

随堂练习 Linux 文件管理

上一篇:Linux Shell 六 之echo和printf命令


下一篇:shell编程grep命令和正则表达式