Linux命令大全(超详细版)_linux命令大全手册

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

命令所在路径:/usr/bin/which
执行权限:所有用户 
语法:which  命令 
功能描述:搜索命令所在目录及别名信息 
 
范例:
	$ which ls

#### 3.4 查看命令位置:whereis 命令



#查看命令位置命令名称:whereis

命令所在路径:/usr/bin/whereis 
执行权限:所有用户 
语法:whereis  [命令名称]  
功能描述:搜索命令所在目录及帮助文档路径 
 
范例:
	$ whereis ls

#### 3.5 文本搜索:grep 命令



文本搜索命令名称:grep

命令所在路径:/bin/grep 
执行权限:所有用户 
语法:grep  -iv [指定字串] [文件] 
功能描述:在文件中搜寻字串匹配的行并输出             
	-i  不区分大小写             
 	-v 排除指定字串

# 语法
	grep -参数 要查找的目录范围
	# 参数
		-n 显示查找结果所在行号
		-R 递归查找目录下的所有文件
# 例子
	grep aries /etc
	grep aries /etc/passwd

 
范例:
	# grep mysql /root/install.log
	# grep -v ^# /etc/inittab 去除以#开头的所有行信息,^表示以XXX开头

### 4. 文件链接


#### 4.1、Linux文件管理



文件链接 命令名称:ln

命令所在路径:/bin/ln 
执行权限:所有用户 
语法:ln  -s  [原文件]  [目标文件]                 
 	-s  创建软链接 
功能描述:生成链接文件
 
范例:
	#创建文件/etc/issue的软链接/tmp/issue.soft 
		$ ln -s  /etc/issue  /tmp/issue.soft        
	#创建文件/etc/issue的硬链接/tmp/issue.hard 
		$ ln  /etc/issue  /tmp/issue.hard        

* 模型图


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5dc2444038d74313a814d031d4b7dd7e.png)


* 说明



文件名

该文件的名字

inode

该文件的元数据

datablock

该文件真正保存的数据

* 注意:



> 
> 1、inode中保存的是文件的元数据  
>  2、ls命令查看的都是linux的元数据信息  
>  3、数据块中才是文件的真正数据
> 
> 
> 


#### 4.1.1、硬链接



> 
> 硬链接特征:  
>  1、拷贝cp -p + 同步更新  
>  2、可通过i节点识别  
>  3、不能跨分区  
>  4、不能针对目录使用
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6e1ca50d22564727bda5b49863e46901.png)


* 命令



ln 源文件 硬链接文件


#### 4.1.2、软连接



> 
> 软链接特征:类似Windows快捷方式
> 
> 
> * 1、lrwxrwxrwx l 软链接  
>  **软链接文件权限都为**:rwxrwxrwx
> * 2、文件大小-只是符号链接
> * 3、/tmp/issue.soft -> /etc/issue 箭头指向原文件
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/522fdbd9d0b44adf9a601d19bea53ee9.png)


* 命令



ln -s 目标文件或文件夹 软连接名字


### 5、 权限管理命令


#### 5.1、用户组


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a85be4eb4e0e48e585730a438b27a94a.png)


* 相关命令



  1. 创建组
    groupadd 组名
  2. 删除组
    groupdel 组名
  3. 查找系统中的组
    cat /etc/group | grep -n “组名”
    说明:系统每个组信息都会被存放在/etc/group的文件中

#### 5.2、用户



  1. 创建用户
    useradd -g 组名 用户名
  2. 设置密码
    passwd 用户名
  3. 查找系统账户
    说明:系统每个用户信息保存在/etc/passwd文件中
  4. 切换用户
    su 用户名
  5. 删除用户
    userdel -r 用户名

#### 5.3、权限管理命令


* 问题



> 
> linux系统未来可能有程序员、用户、数据库管理员、项目经理等各种角色各种级别人使用,甚至还有身份不明的人链接到linux,控制不好权限容易导致系统崩溃、数据丢失等问题。
> 
> 
> 


* 权限含义




| 权限字母 | 含义 | 对文件 | 代表命令 | 对文件夹 | 代表命令 |
| --- | --- | --- | --- | --- | --- |
| R® | 读 | 查看文件内容和复制文件 | more cat less cp head tail | 查看文件夹下的文件 | ls |
| W(w) | 写 | 编辑文件 | vi | 在文件夹内创建和删除文件 | rm touch |
| X(x) | 执行 | 执行该文件(执行必须具备r权限) | - | 切换到文件夹 | cd |


* 权限访问控制列表(`ACL access controll list`)


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/55f9fea214574233ba6f3173840f22d1.png)


##### 5.3.1 修改文件权限:chmod 命令





修改文件权限 命令名称:chmod

命令所在路径:/bin/chmod 
执行权限:所有用户 
语法:chmod  [{ugoa}{+-=}{rwx}] [文件或目录]                         
     [mode=421 ]  [文件或目录]                          
     -R  递归修改 
功能描述:改变文件或目录权限
 
权限的数字表示      
r  ---- 4      w ---- 2      x  ---- 1
rwxrw-r--    7   6    4
 
范例:      
	赋予文件testfile所属组写权限  
		$ chmod  g+w  testfile         
	修改目录testfile及其目录下文件为所有用户具有全部权限     
		$ chmod  -R 777  testdir         

权限设置1

语法:chmod u±rwx,g±rwx,o±rwx 文件名
运算符:
	- 删除权限
	+ 添加权限
	= 赋值权限
	
## 给文件的所有者添加执行权限
	chmod u+x 文件名
## 给文件的其他人删除所有权限
	chmod o-rwx 文件名
## 给文件的所属组设置读写权限
	chmod g=wx 文件名

权限设置2


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3911fbf8cafa4626a18d027f1558723a.png)



文件的每个归属方的权限的值使用rwx之和计算出来的。

# 语法
	`chmod [-R] nnn 文件` 
	-R 递归设置文件夹内所有文件
# 设置文件的权限为(所有者可读可写可执行,所属组可读可写,其他人可读)
	chmod 764 文件名

##### 5.3.2 修改文件所有者:chown 命令



设置文件所有者

语法:chown [-R] user名:group名 文件名
参数:-R 如果是文件夹,需要使用这个参数,可以将文件夹及其内部所有文件的所有者和组全部修改
注意:命令权限需要root

命令所在路径:/bin/chown 
执行权限:所有用户 
语法:chown  [用户] [文件或目录]  
功能描述:改变文件或目录的所有者 


范例:
	改变文件test的所有者为zhang
		$ chown  zhang test  

	## 修改文件所有者
		chown 用户名 文件名
	## 修改文件所属组
		chown :组名 文件名
	## 修改文件所有者和所属组
		chown 用户名:组名 文件名
	## 修改文件夹的所有者和所属组
		chown [-R] 用户名:组名 文件夹

##### 5.3.3 修改文件所属组:chgrp 命令



命令名称:chgrp

命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp [用户组] [文件或目录]
功能描述:改变文件或目录的所属组
 
范例:
	改变文件text01的所属组为group01
		$ chgrp group01 text01

##### 5.3.4 默认权限:umask 命令



命令名称:umask

命令所在路径:Shell内置命令 
执行权限:所有用户 
语法:umask [-S]             
	-S   以rwx形式显示新建文件缺省权限 
功能描述:显示、设置文件的缺省权限 
 
范例:
	tips: 新建文件是默认没有x权限(比如:防止木马病毒攻击) 
		$ umask -S

##### 5.3.5 查看权限:ll 命令



查看权限

ls -la 文件
ll 文件

### 6、帮助命令


#### 6.1 帮助:man 命令



命令名称:man

命令所在路径:/usr/bin/man 
执行权限:所有用户 
语法:man  [命令或配置文件] 
   (空格) 或f           翻页               
   (Enter)             换行                 
   q或Q                退出 
功能描述:获得帮助信息
 
范例: 
	$ man ls                
	查看ls命令的帮助信息             
	$ man services                
	查看配置文件services的帮助信息

#### 6.2 获取简介:whatis 命令



命令:whatis
语法:whatis 命令
功能描述:获得命令的简单介绍信息

范例:whatis ls

#### 6.3 获取帮助:help 命令



命令名称:help

命令所在路径:Shell内置命令 
执行权限:所有用户 
语法:help 命令 
功能描述:获得Shell内置命令的帮助信息 
 
范例: 
	$ help umask                
	查看umask命令的帮助信息

### 7、用户管理命令


#### 7.1 添加用户:useradd 命令



命令名称:useradd

命令所在路径:/usr/sbin/useradd 
执行权限:root 
语法:useradd 用户名 
功能描述:添加新用户 

范例:
	$ useradd zhangdapao

#### 7.2 修改密码:passwd 命令



命令名称:passwd

命令所在路径:/usr/bin/passwd 
执行权限:所有用户 
语法:passwd 用户名 
功能描述:设置用户
 
范例:
	$ passwd zhangdapao

#### 7.3 查看登录用户:who 命令



命令名称:who

命令所在路径:/usr/bin/who 
执行权限:所有用户 
语法:who 
功能描述:查看登录用户信息 
 
范例: 
	$ who
	显示所有登录用户信息

#### 7.4 w 命令



命令名称:w

命令所在路径:/usr/bin/w 
执行权限:所有用户 
语法:w 
功能描述:查看登录用户详细信息 
 
范例: 
	$ w

#### 7.5 切换用户:su 命令




| 命令 | 含义 |
| --- | --- |
| su | 切换到root用户 |
| su root | 切换到root用户 |
| su - | 切换到root用户,同时切换目录到/root |
| su - root | 切换到root用户,同时切换目录到/root |
| su 普通用户 | 切换到普通用户 |
| su - 普通用户 | 切换到普通用户,同时切换普通用户所在的目录 |


### 8、压缩解压缩命令


#### 8.1 压缩:gzip 命令



命令名称:gzip

命令所在路径:/bin/gzip 
执行权限:所有用户 
语法:gzip [文件]  
功能描述:压缩文件 
压缩后文件格式:.gz
 
范例:
	gzip text01

#### 8.2 解压缩:gunzip 命令



命令名称:gunzip [= gzip -d]

命令所在路径:/bin/gunzip 
执行权限:所有用户 
语法:gunzip [压缩文件] 
功能描述:解压缩.gz的压缩文件 
 
范例: 
	$ gunzip text01.gz
	tips:只能压缩文件不能压缩目录

#### 8.3 归档管理:tar 命令



> 
> 压缩语法:tar -zcvf 压缩后文件名 被压缩文件  
>  解压缩语法 tar -zxvf 压缩文件名 -C 解压后文件所在目录
> 
> 
> * 参数1
> 
> 
> 
> 
> | 参数 | 描述 |
> | --- | --- |
> | -z | 操作tar.gz文件需要使用 |
> | -x | 解压缩 |
> | -c | 压缩 |
> | -v | 显示压缩或者解压缩的执行过程信息 |
> | -f | 要处理的文件file,必须放在最后 |
> 
> 
> 参数2:-C 指定解压后的文件存放的位置
> 
> 
> 



tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

命令名称:tar

命令所在路径:/bin/tar 
执行权限:所有用户 
语法:tar  选项[-zcf] [压缩后文件名] [目录]                                   
	-c    打包                 
	-v    显示详细信息                 
	-f     指定文件名            
	-z     打包同时压缩 
功能描述:打包目录 压缩后文件格式:.tar.gz
 
范例:        
	$ tar  -zcf   Japan.tar.gz  Japan        
	将目录Japan打包并压缩为.tar.gz文件
 
tar命令解压缩语法:           
	-x     解包           
	-v    显示详细信息           
	-f     指定解压文件           
	-z     解压缩 
范例:
	$ tar  -zxvf  Japan.tar.gz

#### 8.4 zip 命令



命令名称:zip

命令所在路径:/usr/bin/zip 
执行权限:所有用户 
语法:     
	zip  选项[-r]  [压缩后文件名]  [文件或目录]            
	-r    压缩目录 
功能描述:压缩文件或目录 
压缩后文件格式:.zip
 
范例:          
	$ zip  text01.zip  text01             
压缩文件          
	$ zip  -r  zhang.zip  zhang             
压缩目录
	tips:会保留原文件

#### 8.5 unzip 命令



命令名称:unzip

命令所在路径:/usr/bin/unzip 
执行权限:所有用户 
语法:unzip  [压缩文件] 
功能描述:解压.zip的压缩文件 
范例:$ unzip text01.zip

### 9、 网络命令


#### 9.1 write 命令



指令名称:write

指令所在路径:/usr/bin/write 
执行权限:所有用户 
语法:write  <用户名>    
功能描述:给用户发信息,以Ctrl+D保存结束 
 
范例:   
	write zhang

#### 9.2 wall 命令



指令名称:wall

命令英文原意:write all 
指令所在路径:/usr/bin/wall 
执行权限:所有用户 
语法:wall  [message]   
功能描述:发广播信息 
 
范例:   
	wall  HelloWord

#### 9.3 测试网络连通性:ping 命令



命令名称:ping

命令所在路径:/bin/ping 
执行权限:所有用户 
语法:ping  选项  IP地址                      
 -c  指定发送次数 
功能描述:测试网络连通性 
 
范例:  
ping 192.168.1.156

#### 9.4 查看和设置网卡信息:ifconfig



命令名称:ifconfig

命令所在路径:/sbin/ifconfig 
执行权限:root 
语法:ifconfig  网卡名称  IP地址 
功能描述:查看和设置网卡信息 
 
范例:
	ifconfig

#### 9.5 查看发送电子邮件:mail 命令



命令名称:mail

命令所在路径:/bin/mail 
执行权限:所有用户 
语法:mail [用户名] 
功能描述:查看发送电子邮件 
 
范例:
	mail root

#### 9.6 查看登录用户历史信息:last 命令



命令名称:last

命令所在路径:/usr/bin/last 
执行权限:所有用户 
语法:last 
功能描述:列出目前与过去登入系统的用户信息 
 
范例:
	last

#### 9.7 显示网络相关信息:netstat 命令



命令名称:netstat

命令所在路径:/bin/netstat 
执行权限:所有用户 
语法:netstat  [选项] 
功能描述:显示网络相关信息
选项: 
  	-t : TCP协议  
  	-u : UDP协议  
  	      -l : 监听  
  	-r : 路由  
  	-n : 显示IP地址和端口号 
 
范例:  
	netstat -tlun  查看本机监听的端口 
	netstat -an  查看本机所有的网络连接  
	netstat -rn  查看本机路由表
 
查看某一端口是否被占用:netstat -tunlp |grep 2181

#### 9.8 配置网络:setup 命令



命令名称:setup

命令所在路径:/usr/bin/setup 
执行权限:root 
语法:setup 
功能描述:配置网络 
范例:
	setup

#### 9.9 挂载:mount 命令



命令名称:mount

命令位置:/bin/mount
执行权限:所有用户
命令语法:mount [-t 文件系统] 设备文件名 挂载点
 
范例:
	mount -t iso9660 /dev/sr0 /mnt/cdrom

### 10、系统命令(关机重启命令…)



  1. 命令名称:shutdown

    shutdown [选项] 时间
    shutdown now
    选项:
    -c: 取消前一个关机命令
    -h: 关机
    -r: 重启

2.查看ip地址
ip a
ip addr

3.ping网络(测试网络连通)
ip 目标机器的ip

4.查看系统时间
date

5.注销
logout

6.重启
reboot

7.清屏
clear

8.静态查看系统进程
ps -aux

9.实时查看系统进程
top
# 快捷键
↑ 下翻
↓ 上翻
q 退出

10.关闭进程
kill 进程id

11.强制关闭进程(谨慎使用)
kill -9 进程id

12.覆盖输出

# 将命令1的执行结果,输出到后面的文件中。
`覆盖写入`
	命令1 > 文件
# 例子
	date > date.log
  1. 追加输出

    将命令1的执行结果,输出到后面的文件中。

    追加写入
    命令1 >> 文件

    例子

    date >> date.log
    

### 11、Linux服务



> 
> 例如:sshd network firewalld 等
> 
> 
> 



服务器管理命令

systemctl status 服务名

启动服务

systemctl start 服务名

重启服务

systemctl restart 服务名

停止服务

systemctl stop 服务名

禁止服务随linux启动。

systemctl disable 服务名

设置服务随linux启动。

systemctl enable 服务名

### 12、ip设置



> 
> 服务名:network
> 
> 
> 



[root@centos7 dirnew]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
----------------网卡对应的文件内容---------------------
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“none”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“0bd5d8a5-fe1b-42de-82bd-bfa7d2984b95”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“192.168.199.8” # 修改这里的ip地址即可
PREFIX=“24”
GATEWAY=“192.168.199.2”
DNS1=“192.168.199.2”
DNS2=“8.8.8.8”
IPV6_PRIVACY=“no”
[root@centos7 dirnew]# systemctl restart network #重启网卡服务


### 13、防火墙



> 
> 服务名:firewalld
> 
> 
> 



开启防火墙

systemctl start 服务名

关闭防火墙(服务器重启后还会自动开启防火墙)

systemctl stop firewalld

禁止防火墙开机启动

systemctl disable firewalld


### 14、主机名



查看主机名

hostname

设置主机名

hostnamectl set-hostname 主机名


### 15、ip映射


* 域名解析
* 本地hosts编辑



[root@centos7 ~]# vim /etc/hosts
--------------下面是文件------------------
192.168.199.8 centos7


### 16、SSH



远程登录linux

ssh 远程linux的ip或者映射域名


### 17、免密登录



> 
> 简介  
>  ssh登录远程linux,免去输入密码的麻烦
> 
> 
> 



生成公钥和私钥

[root@centos7 ~]# ssh-keygen
------------执行结果-----------
[root@centos7 ~]# tree .ssh
.ssh
├── id_rsa # 私钥
├── id_rsa.pub # 公钥
└── known_hosts

发送公钥

`保存公钥的文件为/root/.ssh/authorized\_keys`

[root@centos7 .ssh]# cat id_rsa.pub > authorized_keys

发送公钥

[root@centos7 .ssh]# ssh-copy-id 目标主机的ip


### 18、远程拷贝



scp 本地的文件 root@远程linuxip:/远程linux的文件路径
scp -r 本地的目录 root@远程linuxip:/远程linux的文件路径


## 三、文本编辑器vim


### 1、Vim常用操作


**Vim 简介:**



> 
> Vim是一个功能强大的全屏幕文本编辑器, 是Linux/UNIX上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。  
>  Vim 没有菜单,只有命令。
> 
> 
> 


#### 1.1 插入命令




| 命令 | 作用 |
| --- | --- |
| a | 在光标所在字符后插入 |
| A | 在光标所在行尾插入 |
| i | 在光标所在字符前插入 |
| I | 在光标所在行行首插入 |
| o | 在光标下插入新行 |
| O | 在光标上插入新行 |


#### 1.2 定位命令




| 命令 | 作用 |
| --- | --- |
| :set nu | 设置行号 |
| :set nonu | 取消行号 |
| gg | 到第一行 |
| GG | 到最后一行 |
| nG | 到第n行 |
| :n | 到第n行 |
| $ | 移至行尾 |
| 0 | 移至行首 |


#### 1.3 删除命令




| 命令 | 作用 |
| --- | --- |
| x | 删除光标所在处字符 |
| nx | 删除光标所在处后n个字符 |
| dd | 删除光标所在行,ndd删除n行 |
| dG | 删除光标所在行到文件末尾内容 |
| D | 删除光标所在处到行尾内容 |
| :n1,n2d | 删除指定范围的行 |


#### 1.4 复制和剪切命令




| 命令 | 作用 |
| --- | --- |
| yy | 复制当前行 |
| nyy | 复制当前行以下n行 |
| dd | 剪切当前行 |
| ndd | 剪切当前行以下n行 |
| p、P | 粘贴在当前光标所在行下或者行上 |


#### 1.5 保存和退出命令




| 命令 | 作用 |
| --- | --- |
| :w | 保存修改 |
| :w 文件名 | 另存为指定文件 |
| :wq | 保存修改并退出 |
| ZZ | 快捷键,保存修改并退出 |
| :q! | 不保存修改退出 |
| :wq! | 保存修改退出(文件所有者和root均可忽略只读权限强制写入) |



> 
> 配置MobaXterm的默认文本编辑器  
>  免去vim命令的麻烦
> 
> 
> 


## 四、软件安装


### 1、软件包管理简介


#### 1.1、软件分类



> 
> 源码包:脚本安装
> 
> 
> 二进制包:RPM包
> 
> 
> 


##### 1.1.1、**源码包**


**源码包的优点是:**


* 开源,如果有足够的能力,可以修改源代码
* 可以自由选择所需的功能
* 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
* 卸载方便


**源码包的缺点**


* 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
* 编译过程时间较长,安装比二进制安装时间长
* 因为是编译安装,安装过程中一旦报错新手很难解决


##### 1.1.2、**RPM包**


**二进制包的优点**


* 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
* 安装速度比源码包安装快的多


**二进制包缺点:**


* 经过编译,不再可以看到源代码
* 功能选择不如源码包灵活
* 依赖性


### 2、rpm命令管理


#### 2.1 、包命名与依赖性


**RPM包依赖性**


* 树形依赖: a→b→c
* 环形依赖: a→b→c→a
* 模块依赖: 模块依赖查询网站:www.rpmfind.net


#### 1.2 安装升级与卸载



> 
> 简介:类似于windows中的.exe程序
> 
> 
> 



  1. 安装rpm软件
    语法:rpm -ivh xxx.rpm
    选项:
    -i(install) 安装
    -v(verbose) 显示详细信息
    -h(hash) 显示进度
    –nodeps 不检测依赖性

  2. 查看系统中是否已安装的过该rpm软件
    语法:rpm -qa 软件名

  3. 卸载rpm软件
    语法:rpm -e 软件名
    选项:
    -e(erase) 卸载
    –nodeps 不检查依赖性

  4. 升级rpm软件
    语法:rpm -Uvh 包全名

     选项:
         -U(upgrade) 升级
    
  5. 例子:安装tree工具
    作用:查看某个目录下的文件信息

    以树状结构查看2层文件信息

     tree -L 2 要查看的路径
    

### 3、yum在线管理



> 
> yum基于rpm实现的,提供了除了rpm的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。
> 
> 
> 


#### 3.1 yum 命令



1.列出所有可以安装的软件包
yum list
查询所有可用软件包列表

2.查找软件包
yum search all 软件名
yum search 关键字
搜索服务器上所有和关键字相关的包

3.安装软件
yum –y install 包名
选项:
install 安装
-y 自动回答yes

4.升级软件
yum -y update 包名
选项:
update 升级
-y 自动回答yes

5.卸载软件
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes


#### 3.2 yum软件组管理命令



yum grouplist
	列出所有可用的软件组列表  

yum groupinstall  软件组名 
	安装指定软件组,组名可以由grouplist查询出来 

yum groupremove  软件组名 
	卸载指定软件组

## 五、shell 编程


### 5.1、shell 概述


#### 5.1.1 shell 是什么


* Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
* Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。


#### 5.1.2 shell 的分类


* Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
* C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
* Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
* Bash: Bash与sh兼容,现在使用的Linux 就是使用Bash作为用户的基本Shell。


### 5.2、shell 脚本的执行方式


#### 5.2.1 echo 输出命令



命令名称:echo

echo [选项] [输出内容] 
	选项:  -e: 支持反斜线控制的字符转换



| 控制字符 | 作用 |
| --- | --- |
| \ | 输出\ |
| \a | 输出警告音 |
| \b | 退格键,向左删除键 |
| \c | 取消输出行末的换行符,和“-n”选项一致 |
| \e | ESCAPE键 |
| \f | 换页符 |
| \n | 换行符 |
| \r | 回车键 |
| \t | 制表符,Tab键 |
| \v | 直制表符 |
| \0nnn | 按照八进制ASCII码表输出字符,0为数字零,nnn为三位八进制数 |
| \xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |


**示例:**



[root@zhangRabbitMQ zhang]# echo -e “ab\bc”
ac

[root@zhangRabbitMQ zhang]# echo -e “a\tb\tc\nd\te\tf”
a b c
d e f


#### 5.2.2 编写脚本



[root@zhangRabbitMQ zhang]# vi /tmp/hello.sh
#!/bin/bash
echo “helloword”


#### 5.2.3 执行脚本



[root@zhangRabbitMQ zhang]# chmod 755 /tmp/hello.sh
[root@zhangRabbitMQ zhang]# /tmp/hello.sh
helloword


### 5.3、Bash的基本功能


#### 5.3.1 历史命令与命令补全



> 
> 历史命令:history
> 
> 
> 



命令名称:history

[root@localhost ~]# history [选项] [历史命令保存文件]

选项:  
-c:  清空历史命令  
-w: 把缓存中的历史命令写入历史命令保存文件    
~/.bash_history 

* 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改


**历史命令的调用**


* 使用上、下箭头调用以前的历史命令
* 使用“!n”重复执行第n条历史命令
* 使用“!!”重复执行上一条命令
* 使用“!字串”重复执行最后一条以该字串开头的命令


**命令与文件补全**


* 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全


#### 5.3.2 命名别名与常用快捷键


**命令别名**



[root@localhost ~]# alias 别名=‘原命令’
#设定命令别名
[root@localhost ~]# alias
#查询命令别名


**命令的执行顺序**


* 1. 第一顺位执行用绝对路径或相对路径执行的命令。
* 2. 第二顺位执行别名。
* 3. 第三顺位执行Bash的内部命令。
* 4. 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。


让别名永久生效,需要把配置写入配置文件/root/.bashrc中


**Bash 常用快捷键**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d8ff624e30f24e02b609e3fddd405004.png)


#### 5.3.3 输入输出重定向


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b2579650623541dd9fe0827eb0374efa.png)  
 **同时输出正确和错误**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4f27e42294204f49a4e8a229aa57feb4.png)


#### 5.3.4 多命令执行与管道符


**多命令顺序执行**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/360153f46f4044c1b3f3f0172ef6057b.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/02c67f234003459984274d267169682e.png#pic_center)


**管道符:|**



命令名称:|

语法,将命令1的输出结果,作为命令2的输入: 命令1 | 命令2

命令格式:
[root@localhost ~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象

例子:
[root@localhost ~]# ll -a /etc/ | more
[root@localhost ~]# netstat -an | grep “ESTABLISHED”

查找aries用户:cat /etc/passwd | grep -n “baizhi”
查找aries组:cat /etc/group | grep -n “baizhi”
查找sshd进程:ps -aux | grep sshd

#### 5.3.5 通配符与其他特殊符号


**通配符**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2796b20fde944f0c94984c88eb3d9318.png)  
 **其他特殊符号**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1631c6280eae4c56a9c16cf35880fb96.png)


### 5.4、Bash 变量


#### 5.4.1 用户自定义变量


**什么是变量**


* 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。


**变量设置规则**


* 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
* 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
* 变量用等号连接值,等号左右两侧不能有空格。
* 变量的值如果有空格,需要使用单引号或双引号包括。
* 在变量的值中,可以使用“\”转义符。
* 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 
 
 
 
 
 变量名”或用 
 
 
 
 变量名”或用 
 
 
 变量名”或用{变量名}包含。
* 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
* 环境变量名建议大写,便于区分。


**变量分类**


* 用户自定义变量  环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
* 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
* 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。


**本地变量**


* 变量定义



[root@localhost ~]# name=“shen chao”


* 变量叠加



[root@localhost ~]# aa=123

[root@localhost ~]# aa="$aa"456

[root@localhost ~]# aa=${aa}789


* 变量调用



[root@localhost ~]# echo $name


* 变量查看



[root@localhost ~]# set
查看当前系统全部变量


* 变量删除



[root@localhost ~]# unset name


#### 5.4.2 环境变量


**环境变量是什么**


* 用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效


**设置环境变量**



export 变量名=变量值
申明变量

env
查询变量

unset 变量名
删除变量


**系统常见环境变量**



PATH:系统查找命令的路径
[root@localhost ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PATH=“$PATH”:/root/sh
PATH变量叠加

PS1:定义系统提示符的变量
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
#:执行的第几个命令
$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

示例:
[root@localhost ~]# PS1=‘[\u@\t \w]$ ’
[root@04:50:08 /usr/local/src]#PS1=’[\u@@ \h # \W]$‘
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]$ ’


#### 5.4.3 位置参数变量


**位置参数变量**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/77fd9b128bb54dfa8160e80237495b1c.png)  
 示例:



#!/bin/bash
num1=$1
num2= 2 s u m = 2 sum= 2sum=(( $num1 + $num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值

[root@zhangRabbitMQ zhang]# /tmp/sum.sh 1 2
3


#### 5.4.4 预定义变量


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e85715faa6a04937b198cb0dfb6c0047.png)


### 5.5、Bash运算符


#### 5.5.1 数值运算与运算符



> 
> declare声明变量类型
> 
> 
> 


**数值运算**



[root@localhost ~]# declare [+/-][选项] 变量名

选项:  
  -:  给变量设定类型属性  
  +:   取消变量的类型属性  
 -i:   将变量声明为整数型(integer)  
 -x:   将变量声明为环境变量  
 -p:   显示指定变量的被声明的类型


方法1:
	[root@localhost ~]# aa=11 
	[root@localhost ~]# bb=22 #给变量aa和bb赋值
	[root@localhost ~]# declare -i cc=$aa+$bb
 
方法2:expr或let数值运算工具 
	[root@localhost ~]# aa=11 
	[root@localhost ~]# bb=22 
#给变量aa和变量bb赋值 
	[root@localhost ~]# dd=$(expr $aa + $bb) 
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格 
 
方法3:“$((运算式))”或“$[运算式]” (推荐)
	[root@localhost ~]# aa=11 
	[root@localhost ~]# bb=22 
	[root@localhost ~]# ff=$(( $aa+$bb )) 
	[root@localhost ~]# gg=$[ $aa+$bb ]

### 5.6、环境变量配置文件


#### 5.6.1 配置文件简介


**source命令**



> 
> source命令通常用于保留、更改当前shell中的环境变量。
> 
> 
> 



[root@localhost ~]# source 配置文件

[root@localhost ~]# . 配置文件


**环境变量配置文件简介**


* 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。
* /etc/profile
* /etc/profile.d/\*.sh
* ~/.bash\_profile
* ~/.bashrc
* /etc/bashrc


#### 5.6.2 环境变量配置文件作用


**配置文件列表如下:**


* /etc/profile
* /etc/profile.d/\*.sh
* ~/.bash\_profile
* ~/.bashrc
* /etc/bashrc


`tips:/etc 目录下的对所有用户都生效`


`~/.bash_profile 和 ~/.bashrc -> 每个用户自己的配置文件,只对用户生效。` 


**配置文件读取顺序**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7ada6021dd584cffa6b2a824e857ff97.png)  
 `上图从左到右如果有叠加。后面的命令会覆盖前面的命令。`


**/etc/profile的作用:**


* USER变量:
* LOGNAME变量:
* MAIL变量:
* PATH变量:
* HOSTNAME变量:
* HISTSIZE变量:
* umask:
* 调用/etc/profile.d/\*.sh文件


**~/.bash\_profile的作用**


* 用了~/.bashrc文件。
* 在PATH变量后面加入了“:$HOME/bin”这个目录


#### 5.6.3 其他配置文件和登录信息


**注销时生效的环境变量配置文件**


* ~/.bash\_logout


**其他配置文件**


* ~/bash\_history


**Shell登录信息**


* 本地终端欢迎信息: /etc/issue


### 5.7、正则表达式


#### 5.7.1 正则表达式与通配符


* 正则表达式用来在文件中匹配符合条件的字符串,`正则是包含匹配`。grep、awk、sed等命令可以支持正则表达式。
* 通配符用来匹配符合条件的文件名,`通配符是完全匹配`。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。


**基础正则表达式**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/46ca8476bacb4dbe9edca6a03fafafbb.png)



示例1:“*” 前一个字符匹配0次或多次

● grep "a\*" test_rule.txt  

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

t ~]# dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格

方法3:“$((运算式))”或“$[运算式]” (推荐)
	[root@localhost ~]# aa=11 
	[root@localhost ~]# bb=22 
	[root@localhost ~]# ff=$(( $aa+$bb )) 
	[root@localhost ~]# gg=$[ $aa+$bb ]

### 5.6、环境变量配置文件


#### 5.6.1 配置文件简介


**source命令**



> 
> source命令通常用于保留、更改当前shell中的环境变量。
> 
> 
> 



[root@localhost ~]# source 配置文件

[root@localhost ~]# . 配置文件


**环境变量配置文件简介**


* 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量。
* /etc/profile
* /etc/profile.d/\*.sh
* ~/.bash\_profile
* ~/.bashrc
* /etc/bashrc


#### 5.6.2 环境变量配置文件作用


**配置文件列表如下:**


* /etc/profile
* /etc/profile.d/\*.sh
* ~/.bash\_profile
* ~/.bashrc
* /etc/bashrc


`tips:/etc 目录下的对所有用户都生效`


`~/.bash_profile 和 ~/.bashrc -> 每个用户自己的配置文件,只对用户生效。` 


**配置文件读取顺序**


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7ada6021dd584cffa6b2a824e857ff97.png)  
 `上图从左到右如果有叠加。后面的命令会覆盖前面的命令。`


**/etc/profile的作用:**


* USER变量:
* LOGNAME变量:
* MAIL变量:
* PATH变量:
* HOSTNAME变量:
* HISTSIZE变量:
* umask:
* 调用/etc/profile.d/\*.sh文件


**~/.bash\_profile的作用**


* 用了~/.bashrc文件。
* 在PATH变量后面加入了“:$HOME/bin”这个目录


#### 5.6.3 其他配置文件和登录信息


**注销时生效的环境变量配置文件**


* ~/.bash\_logout


**其他配置文件**


* ~/bash\_history


**Shell登录信息**


* 本地终端欢迎信息: /etc/issue


### 5.7、正则表达式


#### 5.7.1 正则表达式与通配符


* 正则表达式用来在文件中匹配符合条件的字符串,`正则是包含匹配`。grep、awk、sed等命令可以支持正则表达式。
* 通配符用来匹配符合条件的文件名,`通配符是完全匹配`。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。


**基础正则表达式**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/46ca8476bacb4dbe9edca6a03fafafbb.png)



示例1:“*” 前一个字符匹配0次或多次

● grep "a\*" test_rule.txt  

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值