Linux基础知识(二)
Linux基础知识(二)
一.Linux发行版的系统目录名称命名规则以及用途
FHS(Filesystem Hierarchy Standard)文件系统层次结构标准是根据无数开发者的经验总结而来的,多数Linux版本采用这种文件组织形式,FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理,并且会维持更新。FHS根据文件系统使用的频繁与否以及是否允许用户随意改动将目录定义为4种交互式形态:
目录描述
/主层次 的根,也是整个文件系统层次结构的根目录
/bin存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat、ls、cp等等
/boot存放引导加载程序文件,例如kernels、initrd等
/dev存放必要的设备文件,例如/dev/null
/etc存放主机特定的系统级配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的UNIX实施文档的早期版本中,/etc表示是“其他(etcetera)目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,文件系统目录标准 FSH 限定 /etc 用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义
/etc/opt存储着新增包的配置文件 /opt/.
/etc/sgml存放配置文件,比如 catalogs,用于那些处理SGML(译者注:标准通用标记语言)的软件的配置文件
/etc/X11X Window 系统11版本的的配置文件
/etc/xml配置文件,比如catalogs,用于那些处理XML(译者注:可扩展标记语言)的软件的配置文件
/home用户的主目录,包括保存的文件,个人配置,等等
/lib/bin/ 和 /sbin/中的二进制文件的必需的库文件
/lib<架构位数>备用格式的必要的库文件。 这样的目录是可选的,但如果他们存在的话肯定是有需要用到它们的程序
/media可移动的多媒体(如CD-ROMs)的挂载点。(出现于 FHS-2.3)
/mnt临时挂载的文件系统
/opt可选的应用程序软件包
/proc以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统(procfs )的挂载点
/root根用户的主目录
/sbin必要的系统级二进制文件,比如, init, ip, mount
/srv系统提供的站点特定数据
/tmp临时文件 (另见 /var/tmp). 通常在系统重启后删除
/usr二级层级存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序
/usr/bin非必要的命令二进制文件 (在单用户模式中不需要用到的);用于所有用户
/usr/include标准的包含文件
/usr/lib库文件,用于/usr/bin/ 和 /usr/sbin/中的二进制文件
/usr/lib<架构位数>备用格式库(可选的)
/usr/local三级层次 用于本地数据,具体到该主机上的。通常会有下一个子目录, 比如, bin/, lib/,share/.
/usr/local/sbin非必要系统的二进制文件,比如用于不同网络服务的守护进程
/usr/share架构无关的 (共享) 数据.
/usr/src源代码,比如内核源文件以及与它相关的头文件
/usr/X11R6X Window系统,版本号:11,发行版本:6
/var各式各样的变量(Variable)文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件
/var/cache应用程序缓存数据. 这些数据是由耗时的I/O(输入/输出)的或者是运算本地生成的结果。这些应用程序是可以重新生成或者恢复数据的。当没有数据丢失的时候,可以删除缓存文件
/var/lib状态信息。这些信息随着程序的运行而不停地改变,比如,数据库,软件包系统的元数据等等
/var/lock锁文件。这些文件用于跟踪正在使用的资源
/var/log日志文件。包含各种日志
/var/mail内含用户邮箱的相关文件
/var/opt来自附加包的各种数据都会存储在 /var/opt/
/var/run存放当前系统上次启动以来的相关信息,例如当前登入的用户以及当前运行的daemons(守护进程)
/var/spool该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列
/var/mail过时的位置,用于放置用户邮箱文件
/var/tmp存放重启后保留的临时文件
二.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
1、文件的元数据包括:文件名(File)、大小(Size)、数据块(Blocks)、IO块(IO Block)、设备(Device)、节点号(Inode)、硬链接(Links)、权限(Access)、文件所属主(Uid)、文件所属组(Gid)、最近访问时间(Access Time)、最近文件修改时间(Modify Time)、最近文件属性更改时间(Change Time)
stat命令:stat – display file or file system status,使用stat 查看文件的元数据
2、通过 touch 命令修改文件的时间戳信息:
-c:指定的文件不存在时不予创建(所有时间都会改变);
-a:仅修改access time(实际change time会随着改变);
-m:仅修改modify time(实际change time会随着改变);
-t:使用指定的日期时间,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time为指定时间,change time为当前系统时间)
示例:
三.软连接和硬连接区别
1、建立软链接和硬链接的语法
软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接
2、什么是软链接和硬链接
2.1,软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的。
2.2,硬链接等于cp -p 加 同步更新。
为了方便说明,我在根分区(/)下建立tmp文件夹,然后新建了一个ly文件
建立软链接和硬链接:
区别: 软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系(从ly.soft->ly可以看出),不是源文件的内容,大小不一样容易理解。
硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。
另外: 对于源文件的内容有修改,硬链接文件会同步更新修改,始终保持和源文件的内容相同,软链接可以显示修改后的内容,但创建时间不会更新。
3、删除源文件多软链接和硬链接的影响
查看软链接文件,查看的文件不存在。和windows一样,删除源文件,快捷方式也用不了。但是删除源文件,为什么硬链接文件还可以查看呢?
这里要简单说下i节点了。i节点是文件和目录的唯一标识,每个文件和目录必有i节点,不然操作系统就无法识别该文件或系统,就像没有上户口的黑户。linux操作系统是不识别些字母的,像这些ly ,ly.hard操作系统根本不知道是什么。
可以看出硬链接文件和源文件i节点号相同,并且一个i节点可以对应多个文件名。
如图,删除了ly,只是删除了从201536742到ly的映射关系,不影响它和ly.hard的映射关系。此图也解释了硬链接的同步更新,对源文件修改,操作系统只认i节点,于是操作系统就将修改内容写进所有i节点相同名字不同的文件。
四.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例
mkdir:创建目录
语法:mkdir [OPTION]… DIRECTORY…
常用选项:
-p:若要建立目录的上层目录目前尚未建立,则会一并建立上层目录,递归创建
-v:显示命令的详细执行过程
-m:建立目录的同时设置目录的权限
示例:~]# mkdir -pv /tmp/a/b/c
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/c’
rmdir:删除空目录
语法:rmdir [OPTION]… DIRECTORY…
常用选项:
-p:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除,递归删除
-v:显示命令的详细执行过程
示例:~]# rmdir -pv /tmp/a
rmdir: removing directory, ‘/tmp/a/b/c’
rmdir: removing directory, ‘/tmp/a/b’
rmdir: removing directory, ‘/tmp/a’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy
tree:用于以树状图列出目录的内容
语法:tree(选项)(参数)
常用选项:
-a:显示所有文件和目录
-d:先是目录名称而非内容
-D:列出文件或目录的更改时间
-f:在每个文件或目录之前,显示完整的相对路径名称
-g:列出文件或目录的所属群组名称,没有对应的名称时,显示群组识别码
-s:列出文件和目录大小
示例:~]# tree /tmp
/tmp
├── ks-script-iuOeuf
├── systemd-private-2446b9f303064c4881dff4c7cfb73af2-chronyd.service-pcxxmY
│ └── tmp
├── vmware-root
└── yum.log
cp:文件复制
语法:单源复制:cp [OPTION]… [-T] SOURCE DEST
多源复制:cp [OPTION]… SOURCE… DIRECTORY
多源复制:cp [OPTION]… -t DIRECTORY SOURCE…
常用选项:
-i:交互式复制,即覆盖之前提醒用户确认
-f:强制覆盖目标文件,即不需要用户再次确认
-r,-R:递归复制目录
-d:当复制符号连接时,把文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-v:显示指令的详细执行过程
mv:对文件或目录重新命名或将文件从一个目录移到别一个目录中
语法:mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
rm:删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件或其子目录删除掉
语法: rm [OPTION]… FILE…
常用选项:
-f:强制删除文件或目录
-i:删除已有文件或目录之前先询问用户
-r,-R:递归删除,将指定目录下的所有文件与子目录一并处理
-v:显示指令的详细执行过程
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。建议创建一个类似回收站的目录,将这些文件存入此目录中,确认是否真的不需要了,再进行此命令。
五.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
- 复制文件至/tmp目录下: cp /etc/profile /tmp/
- vim /tmp/profile 进入文件命令模式下,使用正则表达式 :%s/^[[:blank:]]+//g
执行后结果如下:
这道题中用到的知识点有:
1.地址界定 %表示全
2.替换的格式:格式:s/ 要查找的内容/ 替换为的内容/ 修饰符
\3. 要查找的内容用到正则表达式
\4. 要替换成空格可以用//表示
六.在vim中设置tab缩进为4个字符
设置缩进的方式:set tabstop=num
打开终端,输入命令查看/etc/vimrc ,然后编辑, 在配置文件中加入一行:set tabstop=4 (注意等号前后无空格)