【Linux】Rhcsa复习 2
一、Linux文件类型和根目录结构
1.1Linux文件类型
使用“ls-l”命令查看到的第一个字符表示文件类型
1.2Linux系统的目录结构
1.2.1FHS
linux目录结构的特点
使用树形目录结构来组织和管理文件
整个系统只有一个根目录(树根),Linux的根目录用“/”表示
其他所有分区及外部设备(如硬盘,光驱等)都是以根目录为起点,挂接在目录树的某个目录中,通过访问挂载点目录,即可实现对这些分区的访问
文件名 | 描述 |
/ | Linux文件系统的最上层目录,其他所有目录均是该目录的子目录 |
/boot | 存放系统启动时所需要的文件,这些文件若损坏常会导致系统无法启动,一般不要动 |
/root | 超级用户的个人目录 |
/home | 存放一般用户的个人目录 |
/bin | binary的缩写,存放普通用户可执行的程序或命令 |
/sbin | 和/bin类似,这些文件往往用来进行系统管理,只有root可以使用 |
/lib | 是库(library)的缩写,存放系统的各种库文件 |
/lib64 | 存放系统本身需要用到的64位程序的共享函数库 |
/usr | 一般用户程序安装所在的目录,用于安装各种应用程序 |
/opt | 该目录通常提供给较大型的第三方应用程序 |
/etc | 存放了系统管理时要用到的各种配置文件和子目录 |
/var | 通常各种系统日志文件放在这里 |
/run | 保存自系统启动以来描述系统信息的文件 |
/dev | dev是设备(device)的缩写,包含所有的设备文件 |
/mnt和/media | 可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
/tmp | 用来存放不同程序执行时产生的临时文件 |
/srv | srv是服务(server)的简写,服务启动之后需要访问的数据目录 |
/sys | 本目录是将内核的一些信息映射文件,以供应用程序所用 |
/proc | 可以在这个目录下获取系统信息,这些信息是在内存中由系统自己产生的 |
1.2.2路径以及工作目录
1.路径
用“路径”来表示某个文件(或目录)在目录结构中的位置,路径指从树形目录中的某个目录层次达到某一文件或某一子目录的一条线路,路径由以“/”为分隔符的多个目录名组成,可分为:
绝对路径:以根目录“/”为起点来表示系统中的某个文件
相对路径:以当前目录为起点,表示系统中某个文件在目录结构中的位置方式
2.工作目录
用户当前所在的位置,使用pwd命令查看
更改当前的工作目录,即切换目录:cd 路径
二、从命令行管理文件
文件命名规则:
1.不能使用/来当文件名,/是用于做根的,也是用来做路径分隔符的
2.文件名不能超过255个字符
3.区分大小写file File FILE file
4.目录也是文件,在同一路径下,两个不同类型的文件不能同名
4.1创建链接文件
符号链接又叫软链接,和原文件不是一个文件,例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号连接都被破坏了,软链接有自己的node,是Linux特殊文件的一种,作为一个文件,他的数据是她所连接的文件路径,符号链接可以跨越文件系统,也可以为目录建立
创建软链接文件:ln -s 原文件 目标文件
硬链接 只能引用同一文件系统中的文件,他引用的是文件在文件系统中的物理索引(也成为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所使用的是文件的物理数据而不是文件所在结构中的位置
创建硬链接文件:ln 原文件 目标文件
4.2目录操作命令
1.创建目录
mkdir [-p][/路径/]目录名
-p可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v显示创建目录的详细过程
2.统计目录文件以及文件的空间占用情况 --du命令,功能:查看某个目录中各级子目录所占用的磁盘空间数
格式:du[选项][目录名]
选项 | 功能 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-s | 只统计每个文件所占用空间的总大小,而不是统计每个子目录,文件的大小 |
-h | 以K,M,G为单位显示磁盘使用情况,提高信息可读性 |
3.删除目录文件
格式 rm -r -[f] 目录文件名
4.3 创建、删除普通文件
创建普通文件: touch [option] .. file...
touch的两种用法:
如果文件已经存在,更新文件的三个时间,stat可以查看文件的详细信息
如果文件不存在,则创建文件
4.4数据流和重定向
1.数据流
标准输入:默认情况下,标准输入指从键盘获取的输入
标准输出:默认情况下,命令执行所回传正确的信息会输出到屏幕上
标准错误输出:默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的,所以需要用数据流重定向将这两条数据分开,数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传送用的特殊字符如下所示:
标准输入:代码为0
标准输出:代码为1
标准错误输出:代码为2
2.重定向操作符
重定向操作符可以将命令输入和输出数据流从默认设备重定向其他位置,重定向操作符本身不是命令,而是命令中附加的可改变命令的输入输出对象的特殊符号
输出重定向操作符:> , >>
输入重定向操作符:<, <<
适用形式 | 功能 |
命令>文件或1>文件 | 将命令执行后的标准输出信息不在默认的屏幕上显示,而是已覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
命令2>文件 | 将命令执行后所产生的错误信息不在默认屏幕上显示,而是以覆盖的形式写入到指定文件中,若指定文件不存在,则自动创建该文件 |
命令2>/dev/null | 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件中,即将输出的错误信息丢弃掉 |
命令 &>文件或命令 >&文件 | 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
命令>>文件 | 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件 |
命令<文件 | 使命令从指定的文件中读取数据作为输入 |
命令 <<结束表示字符串 | 在命令行读取数据作为输入,直到遇到指定的结束标识字符串 |
3.案例
输出重定向案例
1> 输出重定向(覆盖)
2>输出重定向(追加)
3>错误输出重定向
4>错误和正确都输入到相同位置
5>正确和错误都输入到相同位置
6>重定向到空设备/dev/null
输入重定向案例:
1>标准输入重定向:<或0<,0<<或<<
案例1:从文件读取数据作为cat命令的输入
案例2:标准输入重定向的<<并不表示追加,而表示结束的意思,即为一个结束符
输入到<<右侧的字符时即会自动停止
4.5 tee命令读取数据输出到文件
1>管道符:| 用于两个命令或多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入
2>tee文件:读取标准输入的数据,并且将其内容输出到文件的同时输出到屏幕(即把输出存到文件中,也让他在屏幕上看到内容)tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件
使用方式:
[命令] | tee 文件
写入多个文件
4.6 vim编辑器
在Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数,在日常工作中也避免不了编写文档,这些工作都是需要通过文本编辑器来完成的,vim编辑器中设置了三种模式:命令模式,末行模式和编辑模式,每种模式分别有支持了多种不同的命令快捷键,这大大的提高了工作效率,而用户在习惯后也会觉得相当顺手
1.使用vi/vim编辑文件
每次运行vim编辑器时,默认进入命令模式
4.6.1命令模式下的常用按键:
功能 | 按键 |
光标按单个字符进行移动 | 上下左右键 |
光标按照单词向后跳转 | w |
光标按照单词向前跳转 | b |
光标跳转至首行 | ^ |
光标跳转至行尾 | $ |
文档首行第一个字符 | gg |
文档最后一行第一个字符 | G |
跳转到指定行 | 行号gg或者行号G |
2.复制、粘贴、删除
功能 | 按键 |
删除光标所在行 | dd |
删除光标处开始的n行 | ndd |
删除光标前至行首字符 | d^ |
删除光标及之后的所有字符 | d$ |
复制光标所在行 | yy |
复制从光标处开始的n行 | nyy |
将缓冲区的内容粘贴到光标所在行的下一行 | p |
将缓冲区的内容粘贴到光标所在行的上一行 | P |
撤销操作 | u |
4.6.2 编辑模式
可通过以下任意一种功能键从命令模式切换带编辑模式,按esc键可从编辑模式切换到命令模式
功能 | 按键 |
在光标前插入 | i |
在光标所在行行首第一个非空字符前插入 | I |
在光标后插入 | a |
在光标所在行末尾插入 | A |
在光标所在行上一行插入 | O |
在光标所在行下一行插入 | o |
删除光标所在字符进入插入模式 | s |
删除当前行并进入插入模式 | S |
4.6.3末行模式
按:或者/可从命令模式进入末行模式,按esc可从末行模式进入命令模式
1.查找关键字并替换
功能 | 按键 |
从上而下查找“word”,可以使用n键定位到下一个word | /word |
将当前行中查找的第一个old换为new | :s/old/new |
将当前行中查找的所有old换为new | :s/old/new/g |
在行号n1.n2范围内将所有old变为new | :n1,n2 s/old/new/g |
将整个文件内的字符串“old”换为“new” | :% s/old/new/g |
2.保存退出
功能 | 按键 |
退出,需要未对文件做任何编辑 | :q |
不保存并且强制退出 | :q! |
保存文件 | :w |
将文件另存为dir/file | :w /dir/file |
保存文件内容并退出vim | :wq / ZZ |
强制保退出 | :wq! |
3.其他操作
功能 | 按键 |
在当前文件中读入其他文件内容 | :r /dir/file |
查找含有“word”的行并删除 | :g/word/d |
显示行号 | :set nu |
关闭行号显示 | :set nonu |
删除n1-n2行内容 | :n1,n2 d |
复制n1-n2行到第n行后面 | :n1,n2 co n |