文件管理
1.文件管理
- Linux 下的可执行程序是一个二进制文件。
- 程序启动的时候可能需要加载一些配置文件,这些配置文件一般都是文本文件;程序运行的时候会产生一些日志文件或者中间文件,这些一般也都是文本文件。
- 如果程序产生的日志需要打印到控制台上,那我们操作的也是一个文件,这个文件是标准输出文件:stdout 文件。
- 各个程序之间可能会做数据的交互,比如一个程序的输出是另一个程序的输入,这也需要操作一个文件,这种文件叫管道文件。
- 不同的程序之间通信还可以使用 socket 通信,socket 也是一个文件,我们在 socket 编程的时候就需要打开一个 socket 文件。
- 运行中的程序可能需要访问一些硬件设备,每个硬件设备在 Linux 上也是映射成了文件,比如硬盘一般就是 /dev/sd*。
- 文件本省需要有地方存储,存储文件的东西叫文件夹,文件夹自身也是一种文件。
总结:普通文件、目录、字符设备、块设备和网络设备(套接字)等在Unix/Linux都被当做文件来对待。虽然他们的类型不同,但是linux系统为它们提供了一套统一的操作接口,所有在Linux一切皆文件.
2.Linux目录下的文件
当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc、usr、var、bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件。文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为 树形结构。
文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,它表现为由/ 起始的树形结构。linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
由于linux是开放源代码,各大公司和团体根据linux的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用他人的linux系统的PC。因为你根本不知道一些基本的配置,文件在哪里。。。这就造成了混乱。这就是FHS(Filesystem Hierarchy Standard )机构诞生的原因。该机构是linux爱好者自发的组成的一个团体,主要是是对linux做一些基本的要求,不至于是操作者换一台主机就成了linux的‘文盲’。
根据FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr (软件放置处) | /etc (配置文件) |
/opt (第三方协力软件) | /boot (开机与核心档) | |
可变动的(variable) | /var/mail (使用者邮件信箱) | /var/run (程序相关) |
/var/spool/news (新闻组) | /var/lock (程序相关) |
四中类型:
1.可分享的:
可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
2.不可分享的:
自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
3.不变的:
有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
4.可变动的:
经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
/ (root, 根目录):与开机系统有关;
/usr (unix software resource):与软件安装/执行有关;
/var (variable):与系统运作过程有关
1.bin(二进制) 此文件下存放的都是二进制可执行系统命令文件
2.sbin system binary是系统管理员专用的二进制代码存放目录,主要用于系统管理
3.boot(引导) 存放Linux系统启动的文件,启动配置以及内核的镜像
4.dev(设备) 存放的是系统下的所有设备文件
5.etc 存放系统管理和各种配置文件
6.home 普通用户的家目录,也就是普通用户存放自己东西的地方
7.lib 系统使用函数库的目录。放置的是/bin和/sbin目录下程序所需的库文件
8.media 软盘或者光盘等的挂载点。系统自动挂载会选择的地方这个目录一般情况下是空的当系统非法关机后,这里就存放了一些文件。
9.mnt 系统中可移动设备的挂载点。手动挂载会选择的地方
10.opt optional:“可选择”的意思,作用是安装第三方软件的地方,系统额外安装软件存放的目录。
11.proc process(进程)一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。
12.root root(根),并不是此根(/),(/ 是系统的根)。含义:系统管理员所在的“家”目录,能够对它进行操作。
13.run run(运行)的意思; 含义 : 运行时的临时文件。
14.srv service(服务)的缩写,服务启动后,所需要访问的数据目录。
15.sys system(系统)的缩写。系统文件。
16.tmp temporary(临时的)的缩写 含义:系统临时文件目录。
17.usr 操作系统软件资源存放系统用户文件
18.var variable(可变的)的缩写;含义:系统产生经常变化的文件。存放系统日志文件
一、/etc目录
/etc目录
包含很多文件.许多网络配置文件也在/etc 中.
/etc/rc or/etc/rc.d or/etc/rc*.d
启动、或改变运行级时运行的scripts或scripts的目录.
/etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/fdprm
软盘参数表.说明不同的软盘格式.用setfdprm 设置.
/etc/fstab
启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表.Linux下,也包括用swapon -a启用的swap区的信息.
/etc/group
类似/etc/passwd ,但说明的不是用户而是组.
/etc/inittab
init 的配置文件.
/etc/issue
getty在登录提示符前的输出信息.通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定.
/etc/magic
file 的配置文件.包含不同文件格式的说明,file 基于它猜测文件类型.
/etc/motd
Message Of TheDay,成功登录后自动输出.内容由系统管理员确定.经常用于通告信息,如计划关机时间的警告. 开机登录欢迎界面配置文件
/etc/mtab
当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df命令.
/etc/shadow
在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对root可读.这使破译口令更困难.
/etc/login.defs
login 命令的配置文件.
/etc/printcap
类似/etc/termcap ,但针对打印机.语法不同.
/etc/profile , /etc/csh.login ,/etc/csh.cshrc
登录或启动时Bourne或Cshells执行的文件.这允许系统管理员为所有用户建立全局环境变量配置文件.
/etc/securetty
确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
/etc/shells
列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
/etc/termcap
终端性能数据库.说明不同的终端用什么"转义序列"控制.写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap中查找要做的工作的正确序列.这样,多数的程序可以在多数终端上运行.
二、/var目录
/var/log/messages
系统日志
/var/log/secure
系统登录日志
三、/dev目录
/dev/null
无限数据接收设备,相当于黑洞
/dev/sda
系统中的第一块磁盘
/dev/sda1
系统中的第一块磁盘的第一个分区
/dev/zer
无限零资源,从该设备中可以源源不断的取出数据
/dev/rando
随机数设备
/dev/pts
终端设备文件
3.绝对路径与相对路径
**linux***系统中的绝对路径和相对路径
在linux系统中存在两种路径表示:绝对路径和相对路径
绝对路径:
绝对文件路径定义了在目录结构中该目录的确切位置,以目录的根目录开始,相当于目录的全名;总是以正斜线“/”开始,etc目录下的ssh目录的绝对路径表示:
/etc/ssh
我们如果想切换到此目录下,需要cd命令后面跟此绝对路径全名:
cd /etc/ssh
在CentOS7的命令行中,提示符前显示用户当前所在的目录,不显示全路径名,我们可以适用pwd显示当前的全路径名,我们也可以修改/etc/profile文件,在提示符前显示全路径,方法:
在/etc/profile文件最后加上一行语句:
export PS1='[\u@\h $PWD]$'
生效命令:
source /etc/profile
这样就可以在命令提示符前显示当前用户所在目录全路径名。建议默认值即可,因为路径名过长,非常不方便。
相对路径:
在生产环境中,如果我们经常使用绝对路径的话,是不是太方便了,每次切换目录,都要输入全路径名,即使你已在目录中,切换目录,还要输入全路径,就显得非常繁琐了。
linux系统为了方便切换目录,就引入了相对路径的方式,相对路径不以代表根目录的正斜线“/”开头,是以目录名开始,例如:用户当前所在目录为usr目录,希望切换到local子目录中,可以直接用命令:cd local即可,不用再cd /usr/local。
题外:波浪线”~”代表当前用户的家目录,可以适用命令cd或者cd ~,直接进入当前用户的家目录。
也可以通过使用相对路径,通过cd命令,进入任何系统目录。这就需要使用两个特殊字符来表示所在目录的相对位置。
单点符号:“.”:表示当前目录
双点符号:“..”:表示当前目录的父目录。
对于切换目录来说,单点符号没有什么实质意义。
双点符号对于目录层级的转移非常方便。如果我们在/usr/local,想要切换到/etc/ssh目录,我们就可以:
cd ../../etc/ssh