CentOS7 学习指南
一、基础知识Shell查看内部命令命令行格式控制台的辅助操作获得命令帮助的方法 二、常用指令一、PWD 查看当前的工作目录二、CD 切换工作目录相对路径相对路径的表示形式 绝对路径 三、ls 列表显示目录内容四、alias 设置别名五、mkdir 创建新目录六、touch 创建文件七、vi | vim 编辑文件内容八、cat 查看文件内容九、rm 删除文件或目录十、cp 复制文件或目录十一、mv 移动文件或目录十二、which 查看指令文件所在目录十三、gzip|bzip2 压缩文件十四、tar 归档命令十五、★du 统计目录及文件空间使用情况十六、★find 查找文件或目录十七、ln 创建链接文件十八、grep 检索和过滤文件内容十九、more 查看内容较多的文件二十、less 查看内容较多的文件二十一、head | tail 查看文件内容开头和结尾二十二、WC 统计文件中的数量等信息二十三、echo 命令 三、进阶知识命令执行的优先级Centos目录结构常见的子目录和解释 常见的软件包封装类型RPM包管理工具RPM命令的格式查询已安装的 RPM 软件信息查询 RPM 软件包文件中信息安装、升级、卸载 RPM 软件包维护RPM数据库1.重建 RPM 数据库2.导入验证公钥最后更新时间:1月25日
一、基础知识
Shell
Linux系统中运行的一种特殊程序在用户和内核之间之间充当“翻译官”用户登陆Linux系统时,自动加载一个Shell程序Bash是Linux系统中默认使用的Shell程序查看内部命令
help
enable
功能:启动或关闭shell内建指令命令用法:如果enable -n cd就会关闭enable cd重新开启
type
用法:如何查看是否是内部/外部命令举例:type ping
命令行格式
命令字
是整条命令中最关键的一部分
唯一确认一条命令
选项
短格式选项:使用”-“符号引导 [字母]
[短格式可以组合使用比如-alh]
长格式选项:使用”–“符号引导[单词]
参数
命令字的处理对象
可以是文件名、目录(路径)名或者用户名等内容
个数可以是零个或者多个
控制台的辅助操作
Tab建:自动补全
反斜杠"\":强制换行
Ctrl + U组合键:清空至行首
Ctrl + K组合键:清空至行尾
Ctrl + L组合键:清屏
Ctrl + C组合键:取消本次命令编辑
Ctrl + a组合键:切换到行首
Ctrl + e组合键:切换到行尾
获得命令帮助的方法
内部命令 help
查看Shell内部命令的帮助信息
使用man命令查阅手册页
使用"↑"、“↓"方向键滚动一行文本
使用PageUp和PageDown翻页
按Q或q键退出阅读模式
按”/"键查找内容,n键向下查找,N键向上查找
二、常用指令
一、PWD 查看当前的工作目录
显示用户当前所在的工作目录位置
二、CD 切换工作目录
cd 或 cd ~ 当前用户的家目录
cd - 切换到上一次目录
相对路径
在当前目录为起点叫做相对路径
相对路径的表示形式
绝对路径
以根号为起点的路径就叫绝对路径
三、ls 列表显示目录内容
显示目录中内容,包括子目录和文件相关属性信息
常用选项
-l、-a、-A、-d、-h、-R、–color
-l 显示权限、大小、用户名、组名、大小、更改时间
-a 显示隐藏文件. .
-A 显示所有文件除了. .
-d 显示目录本身的属性
-R 以递归的方式显示子目录
白色一般文件天蓝色软连接文件
红色压缩文件黄色设备文件绿色可执行文件
结合通配符
“?”:代表任意一个字符,且至少一个
“*”:代表任意数个字符,可以是0个或者1个或者多个
“[]”:表示可以匹配字符组中的任意一个字符
四、alias 设置别名
可用于简化指令,自定义指令别名
举例:
取消别名
五、mkdir 创建新目录
创建一个新的目录
举例:
嵌套创建多个目录 [使用选项-p]
举例:
六、touch 创建文件
单独或批量进行创建文件;更新文件时间标记
举例:单独创建文件 举例:批量创建文件[可选前缀或后缀]
举例:更新时间标记
七、vi | vim 编辑文件内容
vi是unix默认的文本编辑器[vim是它的增强版本]
vi的三种工作模式
命令模式 | 输入模式 | 末行模式
命令和末行不能直接切换,都需要先ESC
举例:
进入文件编辑后
按I键进入编辑模式
按ESC退出编辑模式
开启大写模式后敲击两个ZZ即可保存
八、cat 查看文件内容
只适合查看简短的文件,因为它是直接显示整个文件的内容,所以查看内容过多的文件可能会导致系统处理不过来
常用选项
-n 对所有输出的行数编号
-b 对与空白行不编号
-s 将所有的连续的多个空行替换(压缩)为一个空行
举例:
九、rm 删除文件或目录
选项介绍
-f:删除文件或目录时不进行提醒,而直接强制删除
-i:删除文件或目录时提醒用户确认(y表示删除,n表示不删除)
-r:删除目录时必须使用此选项,表示递归删除整个目录树
举例:使用选项-i 举例:使用选项-r
十、cp 复制文件或目录
常用选项
-f:覆盖目标同名的文件或目录时不进行提醒,而直接强制复制
-i:覆盖目标同名的文件或目录时提醒用户确认
-p:复制时保存文件的权限、属主及时间标记等属性不变
-r:复制目录时必须使用此选项,表示递归复制所有文件及子目录
举例:
十一、mv 移动文件或目录
举例:如果目标位置与源位置相同,则相当于执行重命名操作
举例:
*rename可进行批量执行重命名
十二、which 查看指令文件所在目录
搜索范围由环境变量PATH决定
举例:查找Ping,显示为非内部指令 举例:[echo $PATH] 默认的五个路径从左往右依次查找 举例:使用其对内部命令查询时,将提示找不到对应程序
十三、gzip|bzip2 压缩文件
制作压缩包和解压缩包
常用选项
-9 可以提高压缩比率[默认等级6平衡]
-d 用于解压缩以及压缩过的文件
举例:无选项直接压缩源文件将不会保留 举例:使用选项-d解压
十四、tar 归档命令
制作归档文件和释放归档文件
常用选项
-c:创建.tar格式的包文件-x:解开.tar格式的包文件-C:解压时指定释放的目标文件夹-f:表示使用归档文件-p(小写):打包时保留文件及目录的权限-P(大写):打包时保留文件及目录的绝对路径-t:列表查看包内的文件-v:输出详细信息(Verbose)-j:调用bzip2程序进行压缩或解压-z :调用gzip 程序进行压缩或解压
十五、★du 统计目录及文件空间使用情况
常用选项
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录-h 以更人性化的方式,默认以KB计数,不显示单位-s 只统计所占用空间总的大小–max-depth=n 统计所有小于等于第n层的目录的总大小
★面试题
如何以易读的方式显示文件夹内及子文件夹大小
举例:
★检查异常占用[逐层查]
举例:/proc为虚拟文件系统可以排除
十六、★find 查找文件或目录
采用递归的方式,根据名称、类型、大小等方式进行查找
常用选项
-name 按名称查找;根据目标文件的名称进行查找,允许使用 “*” 及 “?” 通配符-size 按文件大小查找;根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件,常用的容量单位包括kB(注意k是小写)、MB、GB-user按照文件属主查询;根据文件是否属于目标用户进行查找-type按照文件类型查找;根据文件的类型进行查找,文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 举例:[./]为当前目录、类型为普通文件、名字猫猫
各表达式之间使用逻辑运算符
-a 表示而且(and)
-o 表示或者(or)
举例:
find /cat -size +1024k -a -name "dog"find /cat -size +1024k -o -name "dog"
-exec参数后面根Linux命令,它是以分号";“为结束表示,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符”"
一条命令多重操作
举例:可用于执行自动删除日志的功能,通过判断文件的日期大小来进行执行
#一定注意目录,记得备份,以防万一qwq
十七、ln 创建链接文件
为文件或目录建立链接文件(快捷方式)
跨目录创建后会闪红
因为文件名和文件数据是分开保存的
软链接的数据是源路径的数据
相对路径创建的所有数据指向源路径,所以还是会找
当前路径的这个文件,所以无效
绝对路径文件不会丢,创建软链接是源文件的路径一定 要按绝对路径表示
十八、grep 检索和过滤文件内容
查找并显示包含指定字符串的行
常用选项
-i 查找时不区分大小写
-v 显示不包含匹配文本的所有行[反向]
-c 指数粗匹配到的总行数 按行不按次数
-n 显示匹配行及行号
-e 实现可多给查找条件的匹配,逻辑or关系
-E 支持使用扩展正则表达式,相当于egrep
-o 精确匹配。即“仅匹配”之意
查找条件设置
"^. . ."表示以. . .开头
". . .$ "表示以 . . .结尾
"^$"表示空行
举例:
双引号代表一个整体、一个好习惯,如果不加双引号会导致有时候作为一个整体可能会被分割
十九、more 查看内容较多的文件
与cat一次显示全部内容不同,可以分页显示文件内容
交互操作方法
按Enter键向下逐行滚动按空格键向下翻一屏按b键向上翻屏按q键退出 举例:结合管道操作
二十、less 查看内容较多的文件
与more的功能相同,但比more更全面
交互操作方法
按Page Up键向上翻页Page Down键向下翻页按"/"键查找内容,”n“下一个内容,”N“上一个内容通过↑和↓方向键实现上下逐行滚动下翻到最后一页后不会自动退出结合管道操作使用时可以向上翻页
二十一、head | tail 查看文件内容开头和结尾
head 用于查看文件内容开头,可以指定行数,默认为10行
常用选项
-n 显示的行数 *n=行数
举例:查看文件内容前十行 举例:查看文件前5行
tail和head相反它是打印文件的尾部内容
常用选项
-f 动态更新(循环读取)如出现改变将更新
-n 显示文件尾部n行的内容
举例:打印最后三行内容 举例:动态更新
此处使用echo对cat文件进行添加内容,vi下无法更新
单>为覆盖原有内容双>为追加入原有内容
二十二、WC 统计文件中的数量等信息
常用指令
-l 统计行数[空行也算]
-w 统计单词个数[衡量标准为空格分隔]
-c 统计字节数
举例:如不加任何选项则默认同时使用这三个选项
二十三、echo 命令
echo -n 表示不换行输出
echo -e 输出转义字符,将转移后的内容输出到屏幕上
常用的转义字符
\b 相当于退格键,前提是 \b 后面存在字符并且加上双引号才会生效\c 不换行输出,在 \c 后面不存在字符的情况下,相当于echo -n\n 换行,被输出的字符从 \n 处开始另起一行
\f 换行,但是换行后是新行开头位置连接上一行的行尾\v 与f相同\t 插入tab,横向制表符\r 不换行的回车符,但是 \r 后面的内容会覆盖前面的内容,如 \r 后面没有字符时则不覆盖\ 表示插入一个\举例:可用于fdisk,实现无交互创建磁盘分区
echo -e “\n\np\n\n\n\nw\n” | fdisk /dev/sd[]
举例:
echo -e "123\n""123" | passwd
三、进阶知识
命令执行的优先级
第一优先级带上路径去执行命令
绝对路径 /cathome/cat.java 或者相对路径 ./cat.java
第二优先级是别名命令
第三优先级是内部命令
第四优先级是hash命令
Linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找hash表能提高命令的调用速率
第五优先级通过PATH定义的查找顺序查找
如果以上顺序都找不到,就会报“未找到命令…”的错误
Centos目录结构
常见的子目录和解释
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。是一个软链接文件,源文件是/usr/bin
/boot
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux中访问设备的方式和访问文件的方式是相同的
/etc
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve
/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL文件;几乎所有的应用程序都需要用到这些共享库。是个软链接文件/usr/lib
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/media
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/opt
opt 是 optional(可选)的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下;这个目录默认是空的
/proc
proc 是 Processes(进程) 的缩写,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器
/root
该目录为系统管理员,也称作超级权限者的用户主目录
/sbin
s 代表 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序;它是个软连接文件,源文件为usr/sbin
/selinux
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的
/srv
该目录存放一些服务启动之后需要提取的数据
/sys
这是 Linux2.6 内核的一个很大的变化;该目录下安装了 2.6 内核中新出现的一个文件系统 sysfssysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的
devpts 文件系统该文件系统是内核设备树的一个直观反映当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建
/tmp
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的
/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
/usr/bin
系统用户使用的应用程序
/usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序
/usr/src
内核源代码默认的放置目录
/var
var 是 variable(变量)
的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
/run
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
常见的软件包封装类型
RPM包管理工具
由Red Hat公司提出,被众多Linux发行版所采用
建立统一的文件数据库
详细记录软件包安装、卸载、升级等变化
自动分析软件包依赖关系
RPM软件包
软件素材参考:
一般命名格式:
RPM命令的格式
rpm命令能实现几乎所有对RPM软件包的管理功能
执行"man rpm"命令可以获得关于rpm命令的详细帮助信息
RPM的命令功能
查询、验证RPM软件包的相关信息安装、升级、卸载RPM软件包维护重建RPM数据库信息等综合管理操作
查询已安装的 RPM 软件信息
rpm -q 软件名 [查询指定软件是否已安装]rpm -qi 软件名 [显示已安装的指定软件的详细信息]rpm -ql 软件名 [显示已安装的指定软件的文件列表]rpm -qc 软件名 [列出已安装的指定软件的配置文件]rpm -qd 软件名 [列出已安装的指定软件的依赖的软件包及文件]rpm -qf 文件或目录 [查询已安装的指定软件属于哪个安装包]rpm -qa [显示当前系统中以 rpm方式安装的所有软件列表]rpm -qa | grep -i postfix [查询软件postfix是否已安装]查询 RPM 软件包文件中信息
rpm -qpi RPM包文件名 [查询指定软件包的详细信息]rpm -qpl RPM包文件名 [查询指定软件包的文件列表]rpm -qpc RPM包文件名 [查询指定软件包的配置文件]rpm -qpd RPM包文件名 [查询指定软件包的软件包文档的位置]安装、升级、卸载 RPM 软件包
最常用的更新指令:rpm -ivh RPM软件包
常用选项
-i:安装一个新的 RPM 软件包-U:升级某个软件包,若未安装过,则进行安装-F:升级某个软件包,若未安装过,则放弃安装-h:在安装或升级软件包的过程中,以“#”号显示安装进度-v:显示软件安装过程中的详细信息-force:强制安装某个软件包,比如要安装版本更旧的软件包-e:卸载指定名称的软件包–nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
维护RPM数据库
1.重建 RPM 数据库
当 RPM 数据库发生损坏,可通过重建RPM数据库修复
rpm --rebuilddb或者rpm --initdb
2.导入验证公钥
在没有导入用于数字签名验证的公钥文件之前,安装光盘中的一部分RPM软件包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件
mount /dev/sr0 /mnt/rpm --import /mnt/RPM-GPG-KEY-CentOS-7
安装源代码软件包需要编译安装,需要安装支持c和c++程序语言的编译器,如gcc、gcc-c++、make
如果使用rpm方式安装,则需要先安装多个依赖包,这样会很繁琐。这里可以使用 yum方式进行一键安装
(1)配置本地yum源仓库
mount /dev/cdrom /mnt/ # ——把光盘挂载到/mnt目录下cd /etc/yum.repos.d/mkdir repos.bakmv *.repo repos.bakvim local.repo[local]# ——仓库类别name=local# ——仓库名称baseurl=file:///mnt# ——指定URL 访问路径为光盘挂载目录enabled=1# ——开启此yum源,此为默认项,可省略gpgcheck=0# ——不验证软件包的签名yum clean all && yum makecache# ——删除yum缓存并更新yum clean # 可以拆分成两个步骤来进行yun makecache
(2)yum常用的操作命令
yum -y install 软件名# ——安装、升级软件包,“-y”选项表示自动确认yum -y remove 软件名# ——卸载软件包,可自动解决其依赖关系yum -y update 软件名# ——升级软件包yum list# ——查询软件包列表yum list installed# ——查询系统中已安装的软件包yum list available# ——查询仓库中尚未安装的软件包yum list updates# ——查询可以升级版本的软件包yum info 软件名# ——查询软件包的描述信息yum info httpdyum search [all] 关键词# ——根据某个关键词来查找相关的软件包yum search all httpdyum whatprovides 命令# ——查询命令属于哪个软件包yum whatprovides netstat
(3)使用yum方式进行安装
yum install -y gcc gcc-c++ make