Linux文件管理-目录结构
几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为
目录树
。
windows:一多根的方式组织文件C:\ D:\
Linux:以单根的方式组织文件 /
FHS(目录层次的标准)
FHS全称(Filesystem Hierarchy Standard),中文意思是目录层次标准,是Linux的目录规范标准。
FHS定义了两次规范:
1.“/”目录下的各个目录应该放什么文件数据。
2.针对/usr 和 /var 这两个目录的子目录来定义。
Linux系统中也沿用了这种文件结构, 所有目录和文件都在 “根目录"下, 目录名为”/"。FHS(文件系统层次标准)定义了在根目录下的主要目录以及每个目录应该存放什么文件。
目录结构
/ 整个文件系统的根目录,目录的源头
/bin 存放Linux的二进制文件、命令(普通用户和超级用户都可以执行)
/sbin 存放Linux的二进制文件(只有超级管理员可以执行的命令)
/boot 存放系统启动的引导文件
/etc 存放系统所有的配置文件
/home 普通用户的家目录
/root root用户的家目录
/run 存放系统内部正在运行程序的相关文件
/dev 存放设备文件
/tmp 用于存放各种临时文件,是公用的临时文件存储点
/usr 存放第三方软件
/var 存放系统运行时需要改变数据的文件(系统日志等)
/lib 存放库文件的目录(32位)
/lib64 存放库文件的目录(64位)
/opt 存放第三方安装的软件
/mnt 临时挂载的文件目录。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用
/srv 站点的具体数据,由系统提供
/media 存放多媒体的文件
/proc 虚拟文件系统,以目录的形式,将进程的pid号存储下来(系统信息都存放在这个目录下)
/sys 存放和系统有关的文件目录
重点目录
/dev目录
设备文件分为两种:块设备文件(b)和字符设备文件©
设备文件一般存放在/dev目录下,
对常见设备文件作如下说明:
/dev 存放设备文件,比如硬盘,硬盘分区,光驱等
/dev/null 黑洞设备,只进不出,类似于辣鸡回收站
/dev/random 生成随机数的设备
/dev/zero 能远远不断的产生数据,类似于取款机,随时随地取钱
/dev/pts/0 虚拟的Bash Shell终端,提供给远程用户使用,0:一个终端 1:2个终端…
[root@oldboy /]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
# sda 系统中的第一块磁盘
# sda1 磁盘中的第一块分区
# sda2 磁盘中的第二块分区
# sda3 磁盘中的第三块分区
# /dev/null 黑洞,可以吸收任何东西
[root@oldboy /]# echo 'asrgarg' > /dev/null
[root@oldboy /]#
# /dev/zero 可以源源不断的取出数据
# /dev/tty 终端
[root@oldboy /]# tty
/dev/pts/0
# /dev/rundom 随机数设备
/dev/hd[a-t] #IDE设备
/dev/sd[a-z] #SCSI设备
/dev/fd[0-7] #标准软驱
/dev/md[0-31] #软raid设备
/dev/loop[0-7] #本地回环设备
/dev/ram[0-15] #内存
/dev/null #无限数据接收设备,相当于黑洞
/dev/zero #无限零资源
/dev/tty[0-63] #虚拟终端
/dev/ttyS[0-3] #串口
/dev/lp[0-3] #并口
/dev/console #控制台
/dev/fb[0-31] #framebuffer
/dev/cdrom #=> /dev/hdc
/dev/modem #=> /dev/ttyS[0-9]
/dev/pilot #=> /dev/ttyS[0-9]
/dev/random #随机数设备
/dev/urandom #随机数设备
/etc目录
/etc 极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg- 网卡配置文件
/etc/hostname 系统主机名配置文件
/etc/resolv.conf dns客户端配置文件
/etc/hosts 本地域名解析配置文件
# /var/log 系统日志存放的目录
[root@oldboy /]# ls /var/log
anaconda lastlog vmware-network.4.log
audit maillog vmware-network.5.log
boot.log messages vmware-network.6.log
/etc/rc /etc/rc.d ***** #/etc/rc*.d 启动、或改变运行级时运行的scripts或scripts的目录.
/etc/hosts ***** #本地域名解析文件
/etc/sysconfig/network ***** #IP、掩码、网关、主机名配置
/etc/resolv.conf ***** #DNS服务器配置
/etc/fstab ***** #开机自动挂载系统,所有分区开机都会自动挂载
/etc/inittab ***** #设定系统启动时Init进程将把系统设置成什么样的runlevel及加载相关的启动文件配置
/etc/exports ***** #设置NFS系统用的配置文件路径
/etc/init.d/ ***** #这个目录来存放系统启动脚本
/etc/profile ***** #全局系统环境配置变量
/etc/csh.login, /etc/csh.cshrc
/etc/issue ***** #认证前的输出信息,默认输出版本内核信息
/etc/motd #设置认证后的输出信息
/etc/mtab #当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令
/etc/group ***** #类似/etc/passwd ,但说明的不是用户而是组.
/etc/passwd ***** #用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/shadow ****** #在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.
/etc/sudoers ***** #可以sudo命令的配置文件
/etc/syslog.conf ***** #系统日志参数配置
/etc/login.defs #设置用户帐号限制的文件
/etc/securetty #确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
/etc/printca #类似/etc/termcap ,但针对打印机.语法不同.
/etc/shells #列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
/etc/xinetd.d #如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。
/etc/opt/ #/opt/的配置文件
/etc/X11/ #X_Window系统(版本11)的配置文件
/etc/sgml/ #SGML的配置文件
/etc/xml/ #XML的配置文件
/etc/skel/ ***** #默认创建用户时,把该目录拷贝到家目录下
/proc目录
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。
例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
/proc/meminfo ***** #查看内存信息
/proc/loadavg ***** #还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/uptime ***** #就是用 uptime 的时候,会出现的资讯啦!
/proc/cpuinfo ***** #关于处理器的信息,如类型、厂家、型号和性能等。
/proc/cmdline #加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!
/proc/filesystems #目前系统已经加载的文件系统罗!
/proc/interrupts #目前系统上面的 IRQ 分配状态。
/proc/ioports #目前系统上面各个装置所配置的 I/O 位址。
/proc/kcore #这个就是内存的大小啦!好大对吧!但是不要读他啦!
/proc/modules #目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
/proc/mounts #系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!
/proc/swaps #到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions #使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
/proc/pci #在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
/proc/version #核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/* #一些汇流排的装置,还有 U盘的装置也记录在此喔!
/usr目录
默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。
/usr/X11R6 #存放X-Windows的目录;
/usr/games #存放着XteamLinux自带的小游戏;
/usr/doc #Linux技术文档;
/usr/include #用来存放Linux下开发和编译应用程序所需要的头文件;
/usr/lib #存放一些常用的动态链接共享库和静态档案库;
/usr/man #帮助文档所在的目录;
/usr/src #Linux开放的源代码,就存在这个目录,爱好者们别放过哦;
/usr/bin/ #非必要可执行文件 (在单用户模式中不需要);面向所有用户。
/usr/lib/ #/usr/bin/和/usr/sbin/中二进制文件的库。
/usr/sbin/ #非必要的系统二进制文件,例如:大量网络服务的守护进程。
/usr/share/ #体系结构无关(共享)数据。
/usr/src/ #源代码,例如:内核源代码及其头文件。
/usr/X11R6/ #X Window系统版本 11, Release 6.
/usr/local/ #本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin/、lib/、share/.这是提供给一般用户的/usr目录,在这里安装一般的应用软件;
软链接的目录
/bin --> /usr/bin
/sbin --> /usr/sbin
/lib --> /usr/lib
/lib64 --> /usr/lib64
文件定位
- 相对路径:不从 / 开始的路径就是相对路径(~ 除外)
- 绝对路径:从 / 开始的路径就是绝对路径
两个特殊目录
. | 当前目录 | 相对路径 |
---|---|---|
… | 上级目录 | 相对路径 |
cd切换目录
# 进入到当前目录的network-scripts下
[root@oldboy /etc/sysconfig]# cd ./network-scripts/
[root@oldboy /etc/sysconfig/network-scripts]#
# 进入上一级目录的/etc/sysconfig/network-scripts下
[root@oldboy /]# cd ../etc/sysconfig/network-scripts/
[root@oldboy /etc/sysconfig/network-scripts]#
# 进入当前用户的家目录
[root@oldboy /etc/sysconfig/network-scripts]# cd ~
[root@oldboy ~]#
#返回上一次所在的目录
[root@oldboy ~]# cd -
/etc/sysconfig/network-scripts
[root@oldboy /etc/sysconfig/network-scripts]#
# 进入当前用户的家目录
[root@oldboy /etc/sysconfig/network-scripts]# cd
[root@oldboy ~]#