Linux操作命令

VMware

1.安装VMware

  • 1.下载安装包
    在这里插入图片描述
  • 2.按步骤安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.创建新的虚拟机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.启动CentOS 7

  • 1.配置语言在这里插入图片描述
  • 2.配置安装位置在这里插入图片描述
  • 3.配置网络在这里插入图片描述
  • 4.编辑虚拟网络编辑器的VMnet8-NAT设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 说明
    • 1.桥接模式:虚拟机直接连接路由器,相当于把虚拟机变成一台完全独立的计算机,会占用局域网本网段的一个IP地址,并且可以和网段内其他终端进行通信,相互访问
    • 2.NAT模式NAT模式与外界通话需要经过物理机(NAT)转换,不会多占一个局域网IP,默认情况下外部终端也无法直接访问虚拟机
    • 3.仅主机模式(Host Only):仅主机模式不能上网,互联网局域网都不行,只能与物理机对话

4.网络配置

1.window下网络配置

在这里插入图片描述

  • 1.自动获取ip地址
    • 1.指所在的网络中有一台或多台DHCP服务器,DHCP服务器负责给上网的机器分配ip地址
    • 2.DHCP服务器是自动为计算机分配IP地址和子网掩码的服务器
    • 3.DHCPDynamic Host Configure Protocol,动态主机配置协议)
  • 2.手动配置ip地址
    • 1.需要配置ip地址,子网掩码,默认网关
    • 2.子网掩码是用来识别该台机器的
    • 3.默认网关指该电脑需要上网需要的第一个结构,一般指路由器
  • 3.DNS服务器
    • 1.www.baidu.com是域名,ip才是唯一标识相应机器的地址,要访问某一个机器,需要ip地址
    • 2.域名到ip的映射需要DNS服务器

2.Linux下网络配置

1.网络配置文件

在这里插入图片描述

2.网卡配置文件
  • 1.保存网卡的设备名,IP地址,子网掩码,默认网关等配置信息
  • 2.一块网卡对应一个配置文件
  • 3.网卡配置文件在CentOS7中位于/etc/sysconfig/network-scripts目录中
    ifcfg-网卡类型以及网卡的序号
    例:ifcfg-ens33 , ifcfg-eno16777736
    
3.网卡配置解析
  • 1.vim编辑网卡的配置
    vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
    vim /etc/sysconfig/network-scripts/ifcfg-lo
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    [root@bogon network-scripts]# cat ifcfg-ens33
    TYPE="Ethernet" #网卡类型(通常是Ethemet以太网)
    PROXY_METHOD="none" #代理方式:为关闭状态
    BROWSER_ONLY="no" #只是浏览器:否
    BOOTPROTO="dhcp" #网卡的引导协议【static:静态IP  dhcp:动态IP   none:不指定,不指定容易出现各种各样的网络受限】
    DEFROUTE="yes" #默认路由
    IPV4_FAILURE_FATAL="no" #是否开启IPV4致命错误检测
    IPV6INIT="yes" #IPV6是否自动初始化:是(现在还未用到IPV6,不会有任何影响)
    IPV6_AUTOCONF="yes" #IPV6是否自动配置:是(现在还未用到IPV6,不会有任何影响)
    IPV6_DEFROUTE="yes" #IPV6是否自动配置:是(现在还未用到IPV6,不会有任何影响)
    IPV6_FAILURE_FATAL="no" #是否开启IPV6致命错误检测
    IPV6_ADDR_GEN_MODE="stable-privacy" #IPV6地址生成模型
    NAME="ens33" #网卡物理设备名称
    UUID="a6167286-12aa-4419-91d8-a757aac6ccee" #通用唯一识别码,每一个网卡都会有,不能重复,否则两台linux机器只有一台可上网
    DEVICE="ens33" #网卡设备名称,必须和‘NAME’值一样
    ONBOOT="yes" #是否开机启动,要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes`
    IPADDR=169.254.73.100 # 本机IP
    PREFIX=24 #子网掩码
    GATEWAY=169.254.73.2 #默认网关
    DNS="8.8.8.8" #DNS服务器
    IPV6_PRIVACY="no"
    
    在这里插入图片描述
  • 2.注意:如果采用dhcp动态ip策略,路由器会自动分配一个ip(可能会改变),不需要手动配置ip由虚拟机自动自配,只有设置为static静态模式才需要手动配置虚拟机ip
    在这里插入图片描述
    在这里插入图片描述
4.网卡绑定多个IP地址
  • 1.每个绑定的IP地址需要一个虚拟网卡,手动配置IP地址需要设置static静态策略才会生效

    IPADDR1=x.x.x.128 IP地址
    PREFIX1=24 子网掩码
    IPADDR2=x.x.x.154 IP地址
    PREFIX2=24 子网掩码
    # 注意:
    	# 1.DNS服务器有两个通用的8.8.8.8和114.114.114.114
    

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

5.无法连接外网修复
  • 方式一
    [root@localhost ~]# ping www.baidu.com
    ping: www.baidu.com: Name or service not known
    # 1.静态配置的ip只有一个,而且属性为IPADDR
    # 2.与PREFIX的属性无关
    # 3.GATEWAY属性需要网络设置的网关IP一致
    # 4.DNS服务器可以配置为8.8.8.8或114.114.114.114且需要配置/etc/resolv.conf文件
    # 注意上述参数都不需要带双引号
    
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 方式二
    # 1.VMware Workstation中点开编辑,找到虚拟网络编辑器
    # 2.点击还原默认设置(耐心等待它卸载完又自动安装)
    # 3.cmd中通过ipconfig查看VMnet8的ipv4前三位和虚拟机中ip前三位一致
    
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
6.手动设置修改生效
  • 设置生效的方式有三种
    # 方法1:(针对NetworkManager服务)
    ifdown 网卡接口设备名	#禁用网卡
    (ifdown不能在远程连接的情况下执行,ifdown禁用网卡后,远程客户端就连接不到本台机器)
    ifup 网卡接口设备	#启用网卡
    
    # 方法2:(nmcli网络管理工具)
    nmcli connection reload	#重新装载
    nmcli device disconnect 网卡接口设置名	#断开连接
    nmcli con up ifname 网卡接口设备	# 建立连接
    
    # 方法3:(针对network服务,推荐)
    systemctl restart network.service #重启网卡service network restart	
    
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
7.修改主机名
  • 1.网络中主机名具有唯一性
  • 2.查看主机名:cat /etc/hostname
  • 3.临时设置/更改主机名:hostname 新主机名
  • 4.永久性修改主机名:Hostnamectl set-hostname 新主机名
8.使用ip命令配置网络
  • 1.使用ip命令查看
    在这里插入图片描述
    在这里插入图片描述
    • 1.1:代表第一块网卡,网卡设备名是lo,第一块设备是一个回送设备(loopback),自己访问自己,自己给自己发送数据的一个设备,inet后面跟的是ip地址,ip地址是127.0.0.1
    • 2.2:代表第二块网卡,网卡设备名是ens33,第二块设置是一个广播设备(broadcast),ip地址是192.168.216.131link/ether跟的是它的MAC地址
  • 2.使用ip命令更改IP网络地址
    • 1.ip命令配置的网络是临时生效,如果重启网卡或重启连接或重启机器就会无效
      ip addr [add|del] <CIDR形式的IP地址> dev <网络接口>
      
    • 2.修改网络接口的IP
      ip addr del 192.168.140.3/24 dev 网卡设备名 #删除网卡设备,临时并且即时生效
      ip addr add 192.168.1.3/24 dev 网卡设备名	# 添加网卡设备,临时并且即时生效
      
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 3.使用ip命令设置静态路由
    ip route [add|del] default | <主机地址> | <网络地址> via <网关地址> [dev <流出设备接口>]
    
    ip route add 192.0.2.1 via 10.0.0.1 dev ens33 #添加静态路由
    ip route del 192.0.2.1 via 10.0.0.1 dev ens33 #删除静态路由
    ip route add default via 10.0.0.1 dev ens33 #添加默认静态路由
    ip route del default via 10.0.0.1 dev ens33 #删除默认静态路由
    
9.测试本机和目标主机连通性ping
ping [参数] 主机名或IP地址
# c count:共发出count次信息,不加此项,则发无限次信息,按Ctrl+C停止
# -s 字节数:指定发送的报文的大小,以字节B为单位,预设值是56B,加上8字节的ICMP头,共是64B
# -W timeout:等待接收回应报文的时间间隔,以秒为单位
ping -c 4 192.168.0.1
ping -c 10 -s 2048 192.168.0.1
10.跟踪显示从当前主机到指定主机所经过路径traceroute
traceroute [主机名称或IP地址]
traceroute www.sina.com.cn

5.Linux快照

  • 快照:相当于windows系统中的备份
    在这里插入图片描述
    在这里插入图片描述

6.Linux克隆

  • 1.克隆:根据现有机器复制出一台和原机器配置及状态一致的机器
  • 2.注意: 必须是关机或者关机的快照才可以克隆

1.克隆向导

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.修改克隆机IP

  • 1.编辑网络配置
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    在这里插入图片描述
  • 2.修改IP地址
    IPADDR="192.168.73.101"
    
  • 重启网络服务
    systemctl restart network
    

3.正确的网络配置

  • 如果虚拟机无法连接网络,可以根据以下步骤修改在这里插入图片描述

7.远程连接工具MobaXterm

在这里插入图片描述

  • 下载第一个免安装版,然后通过ssh session输入虚拟机ip即可连接

8.Linux目录结构

1.目录结构图

在这里插入图片描述

2.目录说明

/       根目录
	bin   存放用户二进制文件,Binaries (二进制)
	boot  存放内核引导配置文件
	dev   存放设备文件,Devices (设备)
	etc   存放系统配置文件,Etcetera (等等)
	home  普通用户主目录
	lib   动态共享库,Library()
	lost+found 文件系统恢复时的恢复文件
	media  可卸载存储介质挂载点
	mnt   文件系统临时挂载点
	opt   附加的应用程序包
	proc  系统内存的映射目录,提供内核与进程信息,Processes(进程)
	root  root超级用户主目录
	sbin  存放系统二进制文件,Superuser Binaries (超级用户的二进制文件)
	srv   存放服务相关数据
	sys   sys 虚拟文件系统挂载点
	tmp   存放临时文件,Temporary (临时)
	usr   存放用户应用程序 ,Unix Shared Resources(Unix共享资源)
	var   存放邮件、系统日志等变化文件,Variable (变量)
~ 		表示当前登录用户的用户目录(root账户为/root目录,普通用户为/home/账户名)

3.目录路径

  • 绝对路径
    • 从根目录开头的路径
    • /表示根目录
  • 相对路径
    • 从当前目录开始定位
    • . 表示当前目录(修饰文件或目录表示隐藏文件),./表示在当前目录下
    • ..表示当前目录的上一目录,../表示在上一级目录下
    • ~表示当前登录用户的用户目录

9.Linux启动流程

1.内核的引导

  • 1.计算机打开电源后,首先是BIOS(基本输入/输出系统)开机自检,按照BIOS中的设置l来启动设备(通常是硬盘)
  • 2.操作系统接管硬件以后,首先读入 /boot 目录下的内核文件

2.运行 init

  • 1.init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动
  • 2.init 程序首先是需要读取配置文件 /etc/inittab

3.系统初始化

4.建立终端

5.虚拟控制台
  • 1.启动Linux系统后,系统提供了多个(默认为6个)虚拟控制台
  • 2.每个控制台独立使用互不影响,使用快捷键<Alt+F1>~<Alt+F6>切换

5.用户登录系统

1.账号切换
  • 1.Linux系统中有两类用户:普通用户和超级用户(root
  • 2.超级用户(root)的提示符是#;普通用户的提示符是$
  • 3.使用su -命令(-表示同时切换用户工作环境)切换为超级用户身份,当执行系统管理类命令时再使用exit命令退回普通用户身份
    在这里插入图片描述
2.注销登录
  • 1.在当前的登录终端输入logout命令或使用<Ctrl+D>快捷键
  • 2.Linux系统严格区分大小写

10.Linux环境变量

  • 登入系统时候获得一个 shell 进程时,其读取环境变量顺序如下
    在这里插入图片描述
  • 说明:
    • 1.首先读取全局环境变量文件/etc/profile
    • 2.然后根据其内容读取额外的配置文档/etc/profile.d/etc/inputrc
    • 3.根据不同帐号,读取~/.bash_profile
    • 4.读取失败则会读取~/.bash_login
    • 5.再次失败则读取~/.profile
    • 6.最后根据用户帐号读取~/.bashrc
  • 注意:
    • 1.~/.profile~/.bashrc区别是~/.profile只能登入的时候执行一次;~/.bashrc每次 shell script 的时候都会执行一次
    • 2.export命令显示当前系统定义的所有环境变量(其中PATH变量定义了运行命令的查找路径,以:分割不同的路径)
    • 3.echo $PATH命令输出当前的PATH环境变量的值

1.系统变量

/etc目录下的bashrcprofileenvironment配置文件

  • 1.profile文件用于设置系统级的环境变量和启动程序
    • 1.该文件下的配置会对所有用户生效(不建议在/etc/profile文件中添加环境变量)
    • 2.当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置
    • 3.添加方式:export JAVA_HOME=/usr/java/default;其中可用可不用,一个变量名可对应多个变量值,多个变量值之间需要用分隔
    • 4.添加环境变量后,需要重新登录才能生效,也可以使用 source 命令强制立即生效source /etc/profile
    • 5.查看是否生效:echo $变量名
      在这里插入图片描述
  • 2.bashrc文件用于配置函数或别名
    • 1.该文件对所有用户生效
    • 2.该文件只会对指定的 shell 类型起作用,且只会被 bash shell 调用
  • 3.environment文件为空

2.用户变量

用户目录(root/普通用户/~)下的.bashrc.bash_profile配置文件,注意该文件是隐藏文件

  • 1..bashrc用于配置函数或别名
    • 1.该文件仅对当前用户生效
    • 2.该文件只会对指定的 shell 类型起作用,且只会被 bash shell 调用
  • 2..bash_profile用于配置环境变量和启动程序
    • 1.该文件仅对当前用户生效

3.设置环境变量

  • 1.执行 shell 脚本时,有时需要加上 ./ 才可以正确的运行这个脚本(./hello.sh),中间不能有空格
  • 2.终端是在当前目录,且当前目录中有要执行的文件,但终端无法找到,需要手动指定文件的相对或绝对路径
  • 3.Linux 中,.表示当前工作目录,/是 Linux 中的路径分隔符
  • 4.因为工作目录不包含在环境变量$PATH中,所以需要通过./指定当前工作目录
  • 5.命令 echo $PATH 可以查看当前的环境变量
  • 6.Linux 看命令具体的位置,可以使用 which 命令
  • 7.自定义命令如果不想添加路径,可以把该命令所在路径添加进环境变量

1.临时生效

  • 终端中输入:export PATH=$PATH:/具体路径
    • 生效时间:立即生效
    • 生效期限:当前终端有效,窗口关闭后无效
    • 生效范围:仅对当前用户有效
    • 配置的环境变量中需要加上原来的配置,即$PATH部分,避免覆盖原来配置

2.用户变量

  • 1.修改配置文件.bashrc
    vim ~/.bashrc
    # 在最后一行加上
    export PATH=$PATH:/具体路径
    
    • 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
    • 生效期限:永久有效
    • 生效范围:仅对当前用户有效
    • 如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效
  • 2.修改配置文件.bash_profile
    vim ~/.bash_profile
    # 在最后一行加上
    export PATH=$PATH:/具体路径
    
    • 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
    • 生效期限:永久有效
    • 生效范围:仅对当前用户有效

3.系统变量

  • 1.修改配置文件/etc/bashrc
    # 如果/etc/bashrc文件不可编辑,需要修改为可编辑
    chmod -v u+w /etc/bashrc
    vim /etc/bashrc
    # 在最后一行加上
    export PATH=$PATH:/具体路径
    
    • 生效时间:新开终端生效,或者手动source /etc/bashrc生效
    • 生效期限:永久有效
    • 生效范围:对所有用户有效
  • 2.修改配置文件/etc/profile
    # 如果/etc/profile文件不可编辑,需要修改为可编辑
    chmod -v u+w /etc/profile
    vim /etc/profile
    # 在最后一行加上
    export PATH=$PATH:/具体路径
    
    • 生效时间:新开终端生效,或者手动source /etc/profile生效
    • 生效期限:永久有效
    • 生效范围:对所有用户有效
  • 3.修改配置文件/etc/environment
    # 如果/etc/bashrc文件不可编辑,需要修改为可编辑
    chmod -v u+w /etc/environment
    vim /etc/profile	
    # 在最后一行加上
    export PATH=$PATH:/home/uusama/mysql/bin
    
    • 生效时间:新开终端生效,或者手动source /etc/environment生效
    • 生效期限:永久有效
    • 生效范围:对所有用户有效

Linux命令

1.帮助命令

1.help

[root@localhost /]# cp --help
  • 1.查看命令的信息和参数
  • 2.只能显示shell内部的命令信息
  • 3.help命令第一部分是概述,第二部分是参数详解,第三部分是说明和注意
    在这里插入图片描述
    # 使用语法
    Usage: cp [OPTION]... [-T] SOURCE DEST
      or:  cp [OPTION]... SOURCE... DIRECTORY
      or:  cp [OPTION]... -t DIRECTORY SOURCE...
    # 实现功能
    Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
    # 长参和短参是一样的效果
    Mandatory arguments to long options are mandatory for short options too.
    

2.man

[root@localhost /]# man help
  • 1.查看命令的信息和参数
  • 2.man是在程序安装时安装的帮助文档
  • 3.程序的man帮助文档可能存在多个
    # man文档的序号
    CP(1)                                     User Commands                                    CP(1)
    # 名称和内容
    NAME
           cp - copy files and directories
    # 概要
    SYNOPSIS
           cp [OPTION]... [-T] SOURCE DEST
           cp [OPTION]... SOURCE... DIRECTORY
           cp [OPTION]... -t DIRECTORY SOURCE...
    # 描述
    DESCRIPTION
           Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
    
           Mandatory arguments to long options are mandatory for short options >	too.
    

3.info

[root@localhost /]# info help
  • info指令是man 指令的详细内容

2.开关机命令

1.halt

# 关机,实际上是调用shutdown -H命令
[root@localhost /]# halt

2.reboot

# 重启,实际上是调用shutdown -r命令
[root@localhost /]# reboot

3.shutdown

#  用于安全关闭Linux系统
[root@localhost /]# shutdown now

4.poweroff

#  关闭计算器并切断电源,实际上是调用shutdown -P命令
[root@localhost /]# shutdown now

4.init

  • 1.init是所有进程的祖先,其进程号始终为1
  • 2.init用于切换系统的运行级别,切换是立即完成的
  • 3.init 0命令用于立即将系统运行级别切换为0,即关机
  • 4.init 6命令用于将系统运行级别切换为6,即重新启动。

3.输出命令

1.echo

1.显示普通字符串
echo "It is a test"
双引号可省略
echo It is a test
2.显示转义字符
echo "\"It is a test\""
双引号可省略
echo \"It is a test\"
3.显示变量
#!/bin/sh
# read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量name
read name 
echo "$name It is a test"
[root@www ~]# sh test.sh
OK                     #标准输入
OK It is a test        #输出
4.显示换行
echo -e "OK! \n" # -e 开启转义,echo默认换行
echo "It is a test"
OK!

It is a test
5.显示不换行
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
OK! It is a test
6.显示结果定向至文件
echo "It is a test" > myfile
7.原样输出字符串,不进行转义或取变量(用单引号)
echo '$name\"'
$name\"
8.显示命令执行结果
echo `date`
注意: 这里使用的是反引号 `, 而不是单引号 '
Thu Jul 24 10:08:46 CST 2014

2.printf

转义字符说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f换页(formfeed)
\n换行
\r回车(Carriage return)
\t水平制表符
\v垂直制表符
\一个字面上的反斜杠字符
\ddd表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符
printf  format-string  [arguments...]
  • format-string: 为格式控制字符串
  • arguments: 为参数列表
1.格式化输出
#!/bin/bash

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

# format-string为双引号
printf "%d %s\n" 1 "abc"

# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc"

# 没有引号也可以输出
printf %s abcdef

# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果没有 arguments,那么 %s 用空字符串代替,%d 用 0 代替
printf "%s and %d \n"
1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
and 0
$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>

$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>

$ printf "www.runoob.com \a"
www.runoob.com $                  #不换行
  • 1.%s %c %d %f 都是格式替代符
  • 2.%s 输出一个字符串
  • 3.%d 整型输出
  • 4.%c 输出一个字符
  • 5.%f 输出实数,以小数形式输出
  • 6.%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来
  • 7.%-4.2f 指格式化为小数,其中 .2 指保留2位小数

4.网络命令

1.ping

# 检测出网络连通情况
[root@localhost /]# ping 172.20.10.2

C:\Users\32929>ping 192.168.73.100

2.dhclient

# 动态分配一个ip,临时生效
[root@localhost /]# dhclient

3.ip

# 显示ip信息,其中address可以任意简写 例:a,ad,add,addr,addre,addres
[root@localhost /]# ip address

4.ifconfig

# centos 7之前版本查看ip的命令,已经遗弃
[root@localhost /]# ifconfig
-bash: ifconfig: 未找到命令

5.netstat

netstat [选项]

选项:
-a或–all :显示所有连线中的Socket
-A<网络类型>或–<网络类型> :列出该网络类型连线中的相关地址
-c或–continuous :持续列出网络状态
-C或–cache :显示路由器配置的快取信息
-e或–extend :显示网络其他相关信息
-F或–fib :显示FIB
-g或–groups :显示多重广播功能群组组员名单
-h或–help :在线帮助
-i或–interfaces :显示网络界面信息表单
-l或–listening :显示监控中的服务器的Socket
-M或–masquerade :显示伪装的网络连线
-n或–numeric :直接使用ip地址,而不通过域名服务器
-N或–netlink或–symbolic :显示网络硬件外围设备的符号连接名称
-o或–timers :显示计时器
-p或–programs :显示正在使用Socket的程序识别码和程序名称
-r或–route :显示Routing Table
-s或–statistice :显示网络工作信息统计表
-t或–tcp :显示TCP传输协议的连线状况
-u或–udp :显示UDP传输协议的连线状况
-v或–verbose :显示指令执行过程
-V或–version :显示版本信息
-w或–raw :显示RAW传输协议的连线状况
-x或–unix :此参数的效果和指定"-A unix"参数相同
–ip或–inet :此参数的效果和指定"-A inet"参数相同

# 列出所有端口
netstat -a
# 列出所有TCP端口
netstat -at
# 列出所有UDP端口
netstat -au
# 列出所有处于监听状态的 Sockets
netstat -l
# 列出所有监听tcp端口
netstat -lt
# 列出所有监听udp端口
netstat -lu
# 列出所有监听UNIX端口
netstat -lx
# 输出中显示 PID 和进程名称
netstat -pt
# 直接显示ip地址和端口号
netstat -an
# 持续输出netstat信息,每隔一秒输出网络信息
netstat -c
# 显示核心路由信息
netstat -r
# 找出程序运行的端口
netstat -tunlp | grep ssh
# 找出运行在指定端口的进程
netstat -an | grep ":80"netstat -tunlp | grep ":3306"
# 通过端口找进程ID
netstat -tunlp | grep 3306 | awk '{print $7}' | cut -d/ -f1
# 显示网络接口列表
netstat -i
# 统计TCP各种状态列
netstat -n | awk '/^tcp/{++S[$NF]}END{for(i in S) print i,S[i]}'
  • 1.显示正在侦听的所有 TCPUDP 端口,包括使用端口和套接字状态的服务,一般用于检验本机各端口的网络连接情况
  • 2.TCP连接状态详解
    • 1.LISTEN: 侦听来自远方的TCP端口的连接请求
    • 2.SYN-SENT: 再发送连接请求后等待匹配的连接请求
    • 3.SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
    • 4.ESTABLISHED: 代表一个打开的连接
    • 5.FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
    • 6.FIN-WAIT-2: 从远程TCP等待连接中断请求
    • 7.CLOSE-WAIT: 等待从本地用户发来的连接中断请求
    • 8.CLOSING: 等待远程TCP对连接中断的确认
    • 9.LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
    • 10.TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
    • 11.CLOSED: 没有任何连接状态

6.nc

nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

-g<网关> 设置路由器跃程通信网关,最多可设置8个
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数
-h 在线帮助
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,管控传入的资料
-n 直接使用IP地址,而不通过域名服务器
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p<通信端口> 设置本地主机使用的通信端口
-r 乱数指定本地与远端主机的通信端口
-s<来源位址> 设置本地主机送出数据包的IP地址
-u 使用UDP传输协议
-v 显示指令执行过程
-w<超时秒数> 设置等待连线的时间
-z 使用0输入/输出模式,只在扫描通信端口时使用
监听端口号并向指定端口发送字符串消息数据
# 下载netcat,用于监听端口
yum install nc
# 下载net-tools,用于查看端口号使用情况
yum install -y net-tools
# 下载telnet,用于向端口号发送消息
yum install -y telnet
# 监听端口
nc -lk 9999
# 使用netstat -anpt 查看监听状态
netstat -anpt | grep 9999
# 发送数据
telnet ip 9999
# 右边nc自动接收
  • 用于设置路由器,监听端口

7.ss

ss [选项]

选项:
-a, --all			 列出所有的socket
-h, --help           帮助信息
-V, --version        展示版本信息
-n, --numeric        不解析服务名称
-r, --resolve        解析主机名
-l, --listening      显示监听的socket,列出所有打开的网络连接端口
-o, --options        显示定时器信息
-e, --extended       显示socket的详细信息
-m, --memory         显示socket内存使用情况
-p, --processes      显示使用socket的进程
-i, --info           显示内部TCP信息
-s, --summary        显示socket使用情况摘要

-4, --ipv4          只显示IP版本4的socket
-6, --ipv6          只显示IP版本6的socket
-0, --packet 		显示包socket
-t, --tcp           只显示TCP类型的socket
-u, --udp           只显示UDP类型的socket
-d, --dccp          只显示DCCP类型的socket
-w, --raw           只显示RAW类型的socket
-x, --unix          只显示Unix域socket
-f, --family=FAMILY 显示FAMILY类型的socket

-A, --query=QUERY, --socket=QUERY
   QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE     将TCP套接字的原始信息转储到FILE
-F, --filter=FILE   从文件中读取过滤器信息
   FILTER := [ state TCP-STATE ] [ EXPRESSION ]

例:
ss -nlt
  • 1.ss(socket statistics):获取socket统计信息,内容类似netstat,但更详细更快

8.curl

5.日期命令

1.date

# 显示当前系统时间
[root@localhost ~]# date
20221021日 星期五 19:27:26 CST
# 显示年月日时分秒
[root@localhost ~]# date '+%F %T'
2022-10-21 19:29:43

6.清屏命令

1.clear

# 本质上只是让终端显示页向后翻了一页,向上滚动屏幕还可以看到之前的操作信息
[root@localhost /]# clear
# 快捷操作 ctrl+l

2.reset

# 完全刷新终端屏幕,之前的终端输入操作信息将都会被清空
[root@localhost /]# clear

7.终止命令

  • 1.Ctrl+cCtrl+z都是中断命令
  • 2.ctrl+c是强制中断程序的执行(终止)
  • 3.ctrl+z是将任务中止(暂停),
  • 4.可以使用fg/bg操作继续前台或后台的任务
  • 5.fg命令重新启动前台被中断的任务
  • 6.bg命令把被中断的任务放在后台执行
  • 7.ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF
  • 8.shell中,ctrl+d表示退出当前shell.

8.查看历史命令

1.上下箭头

  • 通过上下箭头即可查看历史命令

2.history

  • 1.查看历史命令
  • 2.历史命令一般存放在~/.bash_history
  • 3.只有当正常登陆退出之后系统才会将缓存中的命令写入文件
  • 4.历史命令最多可以保存1000条,可以在/etc/profile中进行修改,修改后执行source /etc/profile使环境变量生效
  • 5.使用“!n”重复执行第n条历史命令
  • 6.使用“!!”重复执行上一条命令
  • 7.使用“!字串”重复执行最后一条以该字串开头的命令
    在这里插入图片描述

9.自动补全命令

  • 通过Tab键可以自动补全已存在内容

10.目录命令

1.pwd(print work directory)

# 查看当前目录
[root@localhost home]# pwd
/home
# -P :显示出确实的路径,而非使用链接 (link) 路径
# 加上 -P 的选项后,会不显示链接,而显示正确的完整路径

2.cd(change directory)

# 切换目录
[root@localhost home]# cd /opt

3.ls(list files)

# 显示当前目录下的组成
[root@localhost home]# ls
test2.txt  test.txt
# 显示目录本身(.表示当前目录)
[root@localhost ~]# ls -d
.
# 显示以**开头的所有文件(.表示隐藏文件)
[root@localhost ~]# ls -d .*
.   .bash_history  .bash_profile  .cshrc          .oracle_jre_usage  .tcshrc
..  .bash_logout   .bashrc        .mysql_history  .rediscli_history  .viminfo
# 显示隐藏文件
[root@localhost home]# ls -a
.  ..  test2.txt  test.txt
# 显示文件的详细信息
[root@localhost home]# ls -l
总用量 8
-rw-r--r--. 1 root root  15 1022 12:35 test2.txt
-rw-r--r--. 1 root root 836 1022 12:59 test.txt
# 组合使用
[root@localhost home]# ls -al
总用量 8
drwxr-xr-x.  2 root root  39 1022 12:59 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
-rw-r--r--.  1 root root  15 1022 12:35 test2.txt
-rw-r--r--.  1 root root 836 1022 12:59 test.txt
# 显示指定目录中的文件
[root@localhost home]# ls /home
test2.txt  test.txt

在这里插入图片描述

4.mkdir(make directory)

  • 创建目录
[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test2.txt  test.txt
# 级联创建目录
[root@localhost home]# mkdir -p test/spring/springboot
# 创建目录并设置权限
[root@localhost home]mkdir -m 711 test2

5.rmdir(remove directory)

  • 1.删除一个空的目录(-p :从该目录起,一次删除多级空目录)
  • 2.rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录
    在这里插入图片描述

6.tree

tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]

-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外
  • 以树状图列出目录的内容

11.文件命令

1.touch

# 创建一个空文件
[root@localhost home]# touch frist.txt
[root@localhost home]# ls
frist.txt  test  test2.txt  test.txt

2.rm

# 1.删除文件
[root@localhost home]# rm frist.txt
rm:是否删除普通空文件 "frist.txt"?y
[root@localhost home]# ls
test  test2.txt  test.txt
# 2.删除目录,递归删除
[root@localhost home]# rm -r test
rm:是否进入目录"test"? y
rm:是否进入目录"test/spring"? y
rm:是否删除目录 "test/spring/springboot"?y
rm:是否删除目录 "test/spring"?y
rm:是否删除目录 "test"?y
# 3.强制删除文件
[root@localhost home]# rm -f test.txt
[root@localhost home]# ls
test2.txt
# 4.强制递归删除目录
[root@localhost home]# rm -rf test
# -i  互动模式,删除前会询问使用者

3.cp

# 1.复制文件
[root@localhost home]# cp test2.txt test1.txt
[root@localhost home]# ls
test1.txt  test2.txt
[root@localhost home]# cat test1.txt
test springmvc
# 2.复制到指定目录下
[root@localhost home]# mkdir test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cp test1.txt test
[root@localhost home]# ls
test  test1.txt  test2.txt
[root@localhost home]# cd test
[root@localhost test]# ls
test1.txt
# 3.添加-r参数复制文件夹-,递归复制目录
[root@localhost home]# cp -r a b     // a,b是目录,a中的所有内容(包含a)复制到b中
[root@localhost home]# cp -r a/* b   // a中的所有内容(不包含a)复制到b中
# 4.-i:若目标(destination)已经存在时,覆盖时会先询问
# 5.-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

4.mv

[root@localhost home]# mv test2.txt test2
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# cd test2
[root@localhost test2]# ls
test  test2.txt

mv a/abc.txt b  		 # 	 b是目录,则将a中的abc.txt移动到b目录中
mv a/abc.txt b/bcd.txt   # 	将a中的abc.txt移动到b中并改名为bcd.txt(可重命名)
mv a b  				 #	a,b是目录,将a的所有内容(包括a)移动到b目录中
mv a/* b 				 #  将a中所有内容(不包括a)移动到b目录中
# -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
# -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖(默认)

5.find

# 查找文件
# find 起始路径 -name 文件名
[root@localhost home]# find / -name test2.txt
/home/test2/test2.txt

6.scp

# 1.linux机器间进行文件的远程复制
# 2.scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令
# 3.scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版

# 1.语法
scp [可选参数] file_source file_target 
# 2.参数
-r: 递归复制整个目录
-v: 详细方式显示输出
-P port: 注意是大写的P, port是指定数据传输用到的端口号

# 1.复制文件
scp local_file remote_username@remote_ip:remote_folder 
# 或者 
scp local_file remote_username@remote_ip:remote_file 
# 或者 
scp local_file remote_ip:remote_folder 
# 或者 
scp local_file remote_ip:remote_file 
例:
[root@localhost home]# scp test1.txt root@192.168.73.100:/home
The authenticity of host '192.168.73.100 (192.168.73.100)' can't be established.
ECDSA key fingerprint is >	SHA256:feZSpWqNvo1WZWc8kTmO6vJ95xUTZw++EjUnFUEOiII.
ECDSA key fingerprint is MD5:29:83:54:61:f7:79:81:8f:d3:c3:22:74:4b:6c:e6:78.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.73.100' (ECDSA) to the list of known hosts.
root@192.168.73.100's password:
test1.txt                                     100%   15    12.7KB/s   00:00

# 2.复制目录 加上-r参数
[root@localhost home]# scp -r test root@192.168.73.100:/home 或  scp -r test 92.168.73.100:/home
root@192.168.73.100's password:
test1.txt                                     100%   15     4.6KB/s   00:00
[root@localhost home]#

# 3.注意:有时加上root@会报无法创建文件错误,可直接使用远程ip:目录

12.文本命令

1.cat

# 1.将文件全部内容打印到屏幕上(适用于内容较少的)
[root@localhost home]# cat test1.txt
test springmvc
# 2.显示文件全部内容,非空的行输出行号,空行会输出,但不标记行号
[root@localhost home]# cat -b test1.txt
# 3.显示文件全部内容,所有行都输出行号 
[root@localhost home]# cat -n test1.txt
     1  test springmvc

2.tac

从最后一行开始,倒序输出文件的内容
[root@localhost home]# tac test1.txt

3.nl

# 显示文件内容,输出行号,默认情况下空行不记录行号
[root@localhost home]# nl test1.txt
# 空行也输出行号
[root@localhost home]#nl -b a test1.txt
# 默认设置
[root@localhost home]# nl -b t test1.txt
# 设置行号字段占用的位数 
[root@localhost home]# nl -w 100 test1.txt

4.more

# 可以实时显示阅读百分比(less不支持)
# 按空格往下翻一页(适用于内容较多的)
# 按Enter往下翻一行(不能往上一行一行的翻回去)
# 按B键往上翻一页
# :f 可以显示文件名和现在的行数
# q 退出more
# /字串 代表在这个显示的内容当中,向下搜寻『字串』这个关键字
[root@localhost home]# more test1.txt

5.less

# more命令的所有按键less都支持
# ↑↓箭头可以实现一行一行的上下翻
# PageDown/PageUp可以实现一页一页的上下翻
# more会将查看过的内容打印在屏幕上,而less不会
# /字串 向下搜寻『字串』的功能;
# ?字串 向上搜寻『字串』的功能
[root@localhost home]# less test1.txt

6.head

# 默认只显示文件的前10行文本内容
[root@localhost home]# head test1.txt
# head -n 行数 行数指定显示文件的前n行
[root@localhost home]# head -n 5 test1.txt
# 负数表示除去文件结尾的n行,其他的从头开始的所有行都显示出来 
[root@localhost home]# head -n -5 test1.txt

7.tail

# 1.默认只显示从文件最后一行开始的10行文本内容(正序)
[root@localhost home]# tail test1.txt
# 2.tail -n 行数 行数指定显示文件的最后几行
[root@localhost home]# tail -n 5 test1.txt
# 3.tail命令不支持负数,-n -5 执行结果同 -n 5 
# 4.tail -c n 文件名表示输出文件最后n 个字节的内容
[root@localhost home]# tail -c 5 test1.txt
fsd3
# 5.tail -f 文件名 默认显示文件的最后 10 行内容,而且光标不会退出命令,每隔一秒会检查一下文件是否增加新的内容,如果增加就追加到原来的输出结果后面并显示(新终端中通过echo命令向文件中追加数据)
# 6.Ctrl+c 中断 tail 命令
[root@localhost home]# tail -f test1.txt
# tail -f 与 tail -F 与 tailf的区别
# 1.tail -f 根据文件描述符进行追踪,当文件改名或被删除,追踪停止
# 2.tail -F根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。
# 3.tailf 等同于tail -f -n 10(tail -f或-F默认也是打印最后10行),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问

在这里插入图片描述

8.wc

wc [-clw][--help][--version][文件...]

-c或--bytes或--chars :只显示Bytes数
-l或--lines :显示行数
-w或--words :只显示字数
--help :在线帮助
--version :显示版本信息

# 对文件内容进行统计	
# wc -l 文件 统计行数
[root@localhost home]# wc -l test1.txt
5 test1.txt
# wc -w 文件 统计单词
[root@localhost home]# wc -w test1.txt
10 test1.txt
# wc -c 文件 统计字符数
[root@localhost home]# wc -c test1.txt
61 test1.txt
[root@localhost home]#  wc testfile           # testfile文件的统计信息  
3 92 598 testfile       # testfile文件的行数为3、单词数92、字节数598 
  • 计算文件的Byte数、字数、或是列数,若不指定文件名称或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据

13.筛选命令

1.管道

# 管道是一种通信机制,通常用于进程的通信。它的表现是可以组合多个命令,将前一个命令的输出作为下一个命令的输入
# 在屏幕上直接显示所有信息
[root@localhost home]# ls -al
# ls -al 的输出,将作为 less 的输入
[root@localhost home]# ls -al | less
# 在 ls -al 的输出中查找test
[root@localhost home]# ls -al | grep test
# 在进程中查找指定进程
[root@localhost home]# ps -ef | grep test

2.grep

# 1.grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子
# 2.如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。
# 3.正则表达式是描述一组字符串的一个模式,正则表达式的构成模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式
# 4.正则表达式的通配符
	# 1.c*	将匹配 0 个(即空白)或多个字符 c(c 为任一字符)
	[root@localhost home]# grep -n boot* test1.txt
	2:spring boot
	# 2. .	将匹配任何一个字符,且只能是一个字符
	[root@localhost home]# grep -n .  test1.txt
	1:test
	# 3.[xyz]	匹配方括号中的任意一个字符
	[root@localhost home]# grep -n [boot]  test1.txt
	1:test
	2:spring boot
	3:spring boot2
	4:spring boot3
	5:boot spring boot3
	# 4.[^xyz]	匹配除方括号中字符外的所有字符
	[root@localhost home]# grep -n [^boot]  test1.txt
	1:test
	2:spring boot
	3:spring boot2
	4:spring boot3
	5:boot spring boot3
	# 5.^	锁定行的开头
	[root@localhost home]# grep -n ^boot  test1.txt
	5:boot spring boot3
	# 6.$	锁定行的结尾
	[root@localhost home]# grep -n boot$  test1.txt
	2:spring boot

# grep [选项] 模式 文件名
	# 选项:
	# -c	仅列出文件中包含模式的行数
	# -i	忽略模式中的字母大小写
	# -l	列出带有匹配行的文件名
	# -n	在每一行的最前面列出行号
	# -v	列出没有匹配模式的行
	# -w	把表达式当做一个完整的单字符来搜寻,忽略那些部分匹配的行

# 1.文件中搜索关键字,显示包含关键字的行
[root@localhost home]# grep boot test1.txt
spring boot
# 2.grep -n 关键字 文件 显示包含关键字的行以及行号
[root@localhost home]# grep -n boot test1.txt
2:spring boot

14.编辑文件命令

1.命令行模式

  • 1.该模式是进入vi编辑器后的默认模式
  • 2.任何模式下,通过ESC都可以进入命令行模式
  • 3.该模式下输入 vi 命令,输入的任何字符都被当作编辑命令来解释
  • 4.若输入的字符是合法的 vi 命令,则完成相应的动作(所输入的命令并不回显在屏幕上)
  • 5.若输入的字符不是合法的 vi 命令,vi 会响铃报警
  • 6.合法的vi命令
    • 1.【行数】yy 从当前行向下复制指定行数
    • 2.【行数】dd 从当前行向下删除指定行数
    • 3.p 配合yy将复制的内容粘贴到指定位置

2.文本输入模式

  • 1.该模式只能从命令行模式进入
  • 2.该模式进入方式有多种方式,进入成功后底部会显示INSERT
    • 1.附加命令:a 从当前光标的后一位开始输入
    • 2.修改命令:cc 删除当前行并从行首开始输入
    • 3.输入命令:i 从当前光标的前一位开始输入
    • 4.取代命令:r+取代字符 将当前光标字符用取代字符取代
    • 5.替换命令:s 将当前光标字符删除然后从删除位开始输入
    • 6.换行命令:o 将光标移动到当前行的下一行开始输入

3.末行模式

  • 该模式只能从命令行模式进入
  • 命令行模式下,通过进入末行模式,此时 vi 会在显示窗口的最后一行
  • 末行模式命令
    • 1.:q:退出不保存
    • 2.:q!:强制退出不保存
    • 3.:wq:退出并保存
    • 4.:w [文件名]:写入指定文件,若未指定文件则写入当前文件,即vi启动时打开的文档
    • 5.:e!:放弃修改,编辑区恢复为文件原样
    • 6.:e 文件名:打开指定的文件,调入编辑区
    • 7.:r 文件名:读入指定的文件,将文件内容插入到光标位置
    • 8.:f: 在屏幕末行显示文件相关信息

4.vi命令

1.编辑文件命令
# 1.打开(若已存在)或新建文件,并将光标置于第一行首
[root@localhost home]# vi test.txt
# 2.打开文件,并将光标置于第 n 行首
[root@localhost home]# vi +4 test.txt
# 3.打开文件,并将光标置于最后一行首
[root@localhost home]# vi + test.txt
# 4.打开文件,并将光标置于第一个与 redis 匹配的行的行首
[root@localhost home]# vi +/redis test.txt
# 5.恢复上次 vi 编辑时发生系统崩溃
[root@localhost home]# vi -r test.txt
# 6.打开多个文件,依次进行编辑
[root@localhost home]# vi test.txt test2.txt
# 7.使用vim,首先需要安装vim
[root@192 jdk1.8.0_141]# yum -y install vim*
2.屏幕翻滚命令
  • Ctrl+u:向上翻半屏
  • Ctrl+d:向下翻半屏
  • Ctrl+f:向下翻一屏。同pageDown键
  • Ctrl+b:向上翻一屏,同pageUp键
3.光标定位命令
  • 0:光标移至行首,同home键
  • ^ :光标移至行首第一个非空格字符
  • $:光标移至行尾,同end键
  • [n]G:光标移到第n行,未指定n时移到末行
  • H、M、L:光标移到屏幕首、中、尾行行首
4.光标移动命令
  • h、j、k、l :光标左、下、上、右移一个字符,同箭头键
  • b、w:光标移到上一个词,下一个词首
  • e:光标移到词尾
  • 注意
    • 以上光标移动命令前带数字n时,表示重复移动n次(例:2h:左移2格;3e:移到后面第三个词词尾)
5.删除命令
  • x、X:删除光标处、光标前的字符
  • dd:删除光标所在的行
  • D:删除光标右边的文本
  • J:删除当前行尾的换行符,使当前行与下一行合并为一行
  • d+定位符:删除从光标位置到指定位置范围内的字符
    • d0、d^ :删除光标左面的文本,0或^代表行首
    • d$:删除光标右面的文本。$代表行尾
    • dG:删除光标所在行之后的所有行,G代表最后一行
    • db:删除光标处前的字符直到词首,b代表词首
    • de:删除光标处的字符直到词尾,e代表词尾
    • dw:删除光标处的字符直到下一个词的词首,w代表下一次词尾
  • 注意
    • 以上命令带数字n时,表示删除的范围扩大n倍(例:4dd:删除4行;3de:删除从光标开始的三个词)
6.文本修改与替换

1.修改:本质先删除指定范围内的文本,然后插入新文本

  • cc:修改光标所在的行
  • C:修改光标处到行尾的文本
  • c+定位符:修改光标到指定范围内的文本,常用的有:
    • c0、c^:修改光标左边的文本
    • c$:修改光标右面的文本
    • cG:修改光标所在行之后的所有行
    • cb:修改光标处前的字符直到词首
    • cw:修改光标处的字符直到词尾
    • cl:修改光标处的字符
  • 注意
    • 以上命令前带数字n时,表示修改的范围扩大n倍(例:5cc:修改从光标所在处开始的5行;3cw:修改从光标开始的3个词)

2.替换(replace):用一个字符替换另一个字符,这是覆盖操作,替换后文本的长度保持不变

  • r:用输入的字符替换光标处的字符
  • R:用输入的文本逐个替换从光标处开始的各个字符,直到按下Esc

3.替代(substitute):用多个字符取代一个字符或一行,这是先删除后插入操作,替代后的文本的长度一般会发生变化

  • s:用输入的文本替代光标处的字符,用Esc键结束输入,等同于cl
  • S:用输入的文本带带光标处所在的行,用Esc键结束输入,等同于cc
  • 注意
    • 以上命令前带数字n时,表示替换或替代的范围扩大n倍(例:5r:用输入的字符替换从光标处开始的5个字符)
7.文本拷贝与粘贴

1.拷贝(copy):将光标处的文本复制到一个缓冲区中

  • yy:拷贝光标所在的行至缓冲区
  • y+定位符:拷贝光标到指定范围内的文本,常用的有:
    • y0、y^: 拷贝光标左面的文本
    • y$:拷贝光标右面的文本
    • yG:拷贝光标所在行之后的所有行
    • yb:拷贝光标处的字符直到词首
    • yw: 拷贝光标处的字符直到词尾

2.粘贴(paste):将缓冲区中的内容插入到光标处

  • p:若缓冲区中的内容是完整的行,则将这些行插入到光标所在行之后;若不是完整的行,则将这些文本插入到光标处之后
  • P:若缓冲区中的内容是完整的行,则将这些行插入到光标所在行之前;若不是完整的行,则将这些文本插入到光标处之前
  • 注意
    • 以上命令前带数字n时,表示拷贝的范围扩大n倍(例:5yy:拷贝光标所在的行及下列共5行至缓冲区)
8.撤销与重做

1.撤销(undo):消除上一个命令所做的修改,恢复到命令执行前的样子

  • u:撤销上一个命令所做的修改
  • U:撤销最近针对这一行所做的全部修改,在对一行连续做了多处修改后,用此命令可以一次恢复全行
    2.重做(redo):重复执行上一个命令
  • .:重复前一个命令
9.搜索与替换
  • 命令行模式下,输入/字符都将进入末行模式,随后的输入被解释为行命令

1.字符串搜索:执行搜索命令后,光标将停留在第一个匹配字符的首字符处,按 nN 则移到下一个匹配字符串之首,如果不存在匹配的字符串,则会在末行显示“找不到该字符串”

  • / 字符串:从光标处向后搜索与指定模式匹配的字符串,按n向后查找
  • ?字符串:从光标处向前搜索与指定模式匹配的字符串,按N向前查找

2.字符串替:换用s命令,格式::[n1,n2]s/p1/p2/[g][c]

  • n1,n2表示目标行的行号范围,可以用%代表所有行;未指定范围时,目标行就是光标所在行的当前行
  • p1是用作搜索的字符串
  • p2是用作替代的字符串
  • 字符串中可以用^代表行首,$代表行尾
  • s命令可以带gc选项,g表示替代目标行中所有匹配的字符串,没有g的话则只替换目标行中第一个匹配的字符串,选项c表示替换前要求用户确认。
10.全局命令

1.全局搜索:全文中搜索含有与指定字符串相匹配的字符串的行,对匹配的行作标记

  • :g/p1:搜索所有包含p1字符串的行
  • :g!/p1:搜索所有不包含p1字符串的行

2.全局替换:s命令是面向行的字符串替换命令,s命令经常与g命令联合使用

  • g命令/s命令:先用g命令在文件中搜索含有某个字符串的行,并做标记,然后用s命令对所有有标记的行执行搜索和替换
11.行编辑命令
  • 用于对指定的行进行编辑,在指定行范围时,可以用.代表当前行,用$代表最后一行,用%代表所有行
    • :n:跳至第n行
    • :n1,n2con3:将第n1n2行之间的内容拷贝到第n3行下(例:3,7co$:将第3到7行的文字复制到文件末尾处)
    • :n1,n2mn3: 将第n1n2行之间的内容移到第n3行下(例:m10:将当前行移动到第10行下)
    • :n1,n2d: 将第n1n2行之间的内容删除(例:3,7d:删除第3到7行)
    • :p:显示当前行的内容
    • :nu:显示当前行的行号和内容
12.设定vi选项
  • vi是一个高度可定制的编辑器,可以通过设置vi的选项来设定vi的一些外观和行为特性
    • :set all:显示所有选项
    • :set ai:set noai:设定、取消自动缩进
    • :set nu:set nonu:设定、取消行号显示
    • :set hlsearch:set nohlsearch:设定、取消高亮显示搜索到的字符串
    • :set ic:set noic :设定、取消搜索命令中忽略大小写

15.输出重定向

ls -al //在屏幕上输出
ls -al > 文件  //将结果输出到文件中(覆盖写)
ls -al >> 文件  //将结果输出到文件中(追加写)
[root@localhost home]# ls -al
总用量 4
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root  61 1023 13:37 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2
[root@localhost home]# ls -al > test1.txt
[root@localhost home]# cat test1.txt
总用量 0
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root   0 1023 13:55 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2
[root@localhost home]# echo hello > test1.txt
[root@localhost home]# cat test1.txt
hello
[root@localhost home]# ls -al >> test1.txt
[root@localhost home]# cat test1.txt
hello
总用量 4
drwxr-xr-x.  4 root root  48 1023 13:14 .
dr-xr-xr-x. 17 root root 224 1021 18:13 ..
drwxr-xr-x.  2 root root  23 1022 14:17 test
-rw-r--r--.  1 root root   6 1023 13:55 test1.txt
drwxr-xr-x.  3 root root  35 1022 14:24 test2
  • 具体参考Shell编程中的shell 输入/输出重定向

16.链接

  • Linux中的链接类似于Windows中快捷方式,可以为文件添加一个链接,方便用户在不同的位置快速访问原文件

1.硬链接

# 硬链接(hard link)
# 硬链接相当于创建了原文件的一个副本(拷贝),但不会占用额外的空间
# 语法:ln 原文件 链接文件
# 删除原文件不会影响硬链接
# 不能对目录创建硬链接
[root@localhost home]# ls
test  test1.txt  test2
[root@localhost home]# ln test1.txt test1_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1.txt  test2

2.软链接

# 软链接(symbolic link)
# 软连接也称符号链接,保存的是原文件的路径
# 语法:ln -s 原文件 链接文件
# 创建符号链接时,源文件的路径尽量使用绝对路径
# 删除原文件,符号链接将无法使用
# 可以对目录创建符号链接
[root@localhost home]# ln -s test1.txt test1_soft_link.txt
[root@localhost home]# ls
test  test1_link.txt  test1_soft_link.txt  test1.txt  test2

17.进程命令

1.top

# top命令用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况
[root@localhost home]# top
# top -p 进程id  只显示特定进程的信息
[root@localhost home]# top -p 1
# top命令显示结果后,再按M 结果按内存使用率降序排列
# top命令显示结果后,再按P 结果按CPU使用率降序排列

在这里插入图片描述

2.ps

# 1.a:显示一个终端的所有进程,除会话引线外
[root@localhost home]# ps a
PID TTY      STAT   TIME COMMAND
1271 tty1     Ss+    0:00 -bash
1303 pts/0    Ss     0:00 -bash
8522 pts/0    R+     0:00 ps a
# 2.u:显示进程的归属用户及内存的使用情况
[root@localhost home]# ps -u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1271  0.0  0.2 115432  2028 tty1     Ss+  11:59   0:00 -bash
root       1303  0.0  0.2 115436  2036 pts/0    Ss   12:00   0:00 -bash
root       8523  0.0  0.1 155324  1860 pts/0    R+   15:07   0:00 ps -u
# 3.x:显示没有控制终端的进程
[root@localhost home]# ps -x
# 4.-l:查看当前shell产生的进程的详细信息
[root@localhost home]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1303   1290  0  80   0 - 28859 do_wai pts/0    00:00:00 bash
0 R     0   8525   1303  0  80   0 - 38300 -      pts/0    00:00:00 ps
# 5.-e:显示所有进程
[root@localhost home]# ps -e
# 6.-f:显示进程全部信息
[root@localhost logs]# ps -f
# ps aux 查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost home]# ps aux(ps -ef更常用)
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 127956  6480 ?        Ss   11:59   0:01 /usr/lib/systemd/systemd -->switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    11:59   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:59   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   11:59   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    11:59   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    11:59   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    11:59   0:00 [rcu_sched]

在这里插入图片描述

# 查看系统中所有的进程,使用 Linux 标准命令格式
[root@localhost home]# ps -le
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 - 31989 ep_pol ?        00:00:01 systemd
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0      3      2  0  80   0 -     0 smpboo ?        00:00:00 ksoftirqd/0
1 S     0      5      2  0  60 -20 -     0 worker ?        00:00:00 kworker/0:0H

在这里插入图片描述

# ps通常配合管道以及grep命令进行筛选
[root@localhost home]# ps aux | grep user
root       8776  0.0  0.0 112720   980 pts/0    R+   15:46   0:00 grep --color=auto user

3.kill

# kill -l 显示所有的指令(其中SIG可以省略,用后面的代替,也可以使用序号代替。例:kill -9 进程号 等同于 kill -KILL 进程号)
# 1.kill 进程号 杀死进程
[root@localhost home]# kill 993
# 2.kill -KILL/9 进程号 强制杀死进程
[root@localhost home]# kill -KILL 993
[root@localhost home]# kill -9 993
# 3.kill -HUP/1 进程号 重新加载进程
[root@localhost home]# kill -HUP 993
[root@localhost home]# kill 1 993
# 4.kill TERM/15 进程号 正常停止一个进程
[root@localhost home]# kill -TERM 993
[root@localhost home]# kill 15 993

18.解压缩命令

1.压缩文件

1.zip

在这里插入图片描述

# 将test1.txt文件压缩成test.zip文件
[root@localhost home]# zip test1.zip test1.txt
 adding: test1.txt (stored 0%)
[root@localhost home]# ls
test1.txt  test1.zip

# 将test1.txt文件压缩成test.zip文件,并且添加一行注释
[root@localhost home]# zip -c test1.zip test1.txt
 adding: test1.txt (stored 0%)
Enter comment for test1.txt:
zip file : test1.zip	# 在这里添加注释信息

# 压缩文件中删除指定文件
[root@localhost home]# zip test3.zip -d test1.txt
deleting: test1.txt

# 将test1.txt文件压缩成test.zip文件,并指定加密密码
[root@localhost home]# zip -e test1.zip test1.txt
Enter password:	# 在这里输入压缩加密密码
Verify password:	# 再一次输入压缩加密密码
 adding: test1.txt (stored 0%)

# 将test目录(包含目录中的文件)压缩成test3.zip文件
[root@localhost home]# zip -r test3.zip test
 adding: test/ (stored 0%)
 adding: test/test3.txt (stored 0%)

# 将test目录(包含目录中的文件)压缩成test3.zip文件,但排除test/test3.txt文件
[root@localhost home]# zip -r test3.zip test -x test/test3.txt
 adding: test/ (stored 0%)

# 测试压缩文件test1zip的完整性
[root@localhost home]# zip -T test1.zip
[test1.zip] test1.txt password: # 输入压缩加密密码
test of test1.zip OK

# 更新test1.zip压缩文件,添加test2.txt文件
[root@localhost home]# zip -u test1.zip test2.txt
 adding: test2.txt (stored 0%)

#  压缩test2.txt文件并将生成的压缩文件test2.zip的时间与其一致
[root@localhost home]# zip -o test2.zip test2.txt
 adding: test2.txt (stored 0%)
# 如果出现下列异常,则需要下载zip 和 unzip
[root@localhost home]# zip test1.zip test1.txt
-bash: zip: 未找到命令
[root@localhost home]# yum install zip
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 zip.x86_64.0.3.0-11.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
Package        架构              版本                    源               大小
================================================================================
正在安装:
zip            x86_64            3.0-11.el7              base            260 k

事务概要
================================================================================
安装  1 软件包

总下载量:260 k
安装大小:796 k
Is this ok [y/d/N]: y
Downloading packages:

zip-3.0-11.el7.x86_64.rpm                                  | 260 kB   00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 正在安装    : zip-3.0-11.el7.x86_64                                       1/1
 验证中      : zip-3.0-11.el7.x86_64                                       1/1

已安装:
 zip.x86_64 0:3.0-11.el7

完毕!

[root@localhost home]# yum install unzip
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 unzip.x86_64.0.6.0-24.el7_9 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
Package        架构            版本                     源                大小
================================================================================
正在安装:
unzip          x86_64          6.0-24.el7_9             updates          172 k

事务概要
================================================================================
安装  1 软件包

总下载量:172 k
安装大小:369 k
Is this ok [y/d/N]: y
Downloading packages:
unzip-6.0-24.el7_9.x86_64.rpm                              | 172 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 正在安装    : unzip-6.0-24.el7_9.x86_64                                   1/1
 验证中      : unzip-6.0-24.el7_9.x86_64                                   1/1

已安装:
 unzip.x86_64 0:6.0-24.el7_9

完毕!
2.tar

在这里插入图片描述

# tar命令可以将许多文件一起保存进行归档(打包)和压缩,并能从归档和压缩中单独还原所需文件
# tar 默认只是归档不压缩,参数-z归档后进行gzip压缩,参数-j归档后进行bzip2压缩
# 下列参数一般组合使用
-A:追加tar中的文件到归档文件中
[root@localhost home]# tar -Avf test1.tar test2.tar

-c:创建新的归档(打包)文件
[root@localhost home]# tar -cvf boot.tar test1.txt
test1.txt

-C 目的目录:切换到指定的目录 
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt

-f 归档文件:指定归档文件 
[root@localhost home]# tar -tf test2.tar.gz
test2.txt

-r 归档文件:追加文件本身到归档文件末尾
[root@localhost home]# tar -rvf test1.tar test2.tar
test2.tar

-t 归档文件:列出归档文件的内容 -tvf
[root@localhost home]# tar -tf test2.tar.gz
test2.txt

-u 归档文件:追加文件本身
[root@localhost home]# tar -uvf test1.tar test2.tar
test2.tar

-v 归档文件:详细地列出处理的文件
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt

-x 备份文件:从备份文件中还原文件
# 从test3.tar中将test2.txt文件还原到/home/test下
[root@localhost home]# tar -xvf test3.tar -C /home/test
test2.txt

-z 归档文件:通过gzip指定处理归档文件
# 将test1.txt和test2.txt文件通过gzip的方式先通过tar方式打包再压缩成test3.tar.gz文件
[root@localhost home]# tar -zcvf test3.tar.gz test1.txt test2.txt
test1.txt
test2.txt

-j 归档文件:通过bzip2指定处理归档文件
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt

# tar: 不能指定超过一个"-Acdtrux"选项(即这几个选项同一个命令只能存在一个)
-A,r,u:追加
-c:创建
-t:展示
-x:还原

# A,r,u只能追加归档文件(-cvf),不能追加压缩归档文件(-czvf)
# [root@localhost home]# tar -Avf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -rvf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
[root@localhost home]# tar -uvf test1.tar.gz test2.tar.gz
tar: 无法更新压缩归档文件
tar: Error is not recoverable: exiting now
# 如果出现下列异常,则需要下载bzip2
[root@localhost home]# tar -cjvf test3.tar.bz2 test3.txt
test3.txt
tar (child): bzip2:无法 exec: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost home]# ^C
[root@localhost home]# yum -y install bzip2
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/4): base/7/x86_64/group_gz                              | 153 kB   00:01
(2/4): extras/7/x86_64/primary_db                                                                                                            >| 249 kB  00:00:11
(3/4): base/7/x86_64/primary_db                                                                                                              >| 6.1 MB  00:00:18
(4/4): updates/7/x86_64/primary_db                                                                                                           >|  17 MB  00:00:38
正在解决依赖关系
--> 正在检查事务
---> 软件包 bzip2.x86_64.0.1.0.6-13.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

====================================================================================================================================================================
Package                              架构                                  版本                                          源                                   大小
====================================================================================================================================================================
正在安装:
bzip2                                x86_64                                1.0.6-13.el7                                  base                                 52 k

事务概要
====================================================================================================================================================================
安装  1 软件包

总下载量:52 k
安装大小:82 k
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/bzip2-1.0.6-13.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY==-  ]  0.0 B/s |  50 kB  --:--:-- ETA
bzip2-1.0.6-13.el7.x86_64.rpm 的公钥尚未安装
bzip2-1.0.6-13.el7.x86_64.rpm                                                                                                                |  52 kB  00:00:04
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
软件包     : centos-release-7-5.1804.el7.centos.x86_64 (@anaconda)
来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 正在安装    : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1
 验证中      : bzip2-1.0.6-13.el7.x86_64                                                                                                                       1/1

已安装:
 bzip2.x86_64 0:1.0.6-13.el7

完毕!

2.解压文件

1.unzip
# 解压指定文件
[root@localhost home]# unzip test2.zip
Archive:  test2.zip
extracting: test2.txt

# 查看压缩包但不解压
[root@localhost home]# unzip -v test3.zip
Archive:  test3.zip
Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      0  Stored        0   0% 10-24-2022 00:48 00000000  test/
--------          -------  ---                            -------
      0                0   0%                            1 file

# 测试压缩包内的文件是否正常
[root@localhost home]# unzip -t test3.zip
Archive:  test3.zip
    testing: test/                    OK
No errors detected in compressed data of test3.zip.

#  指定解压路经
[root@localhost home]# unzip -d test/ test2.zip
Archive:  test2.zip
extracting: test/test2.txt
2.tar
# 解压gzip格式归档文件
[root@localhost home]# rm -rf test1.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt
[root@localhost home]# tar -xzvf test1.tar.gz
test1.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt

# 解压bzip2格式归档文件
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt
[root@localhost home]# rm test3.txt
rm:是否删除普通文件 "test3.txt"?y
[root@localhost home]# tar -xjvf test3.tar.bz2
test3.txt
[root@localhost home]# ls
test1.tar  test1.tar.gz  test1.txt  test2.tar  test2.tar.gz  test2.txt  test3.tar.bz2  test3.txt

19.用户,组及权限管理命令

  • 1.Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限
  • 2.Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定
    在这里插入图片描述

1.useradd

useradd 选项 用户名

选项:
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建>主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-s Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

例:
useradd –d  /home/wd -m wd
# 创建一个用户wd,-d和-m用来为登录名wd产生一个主目录 /home/wd(/home为默认的用户主目录所在的父目录,可不指定-d,-m,默认自动创建用户目录)
useradd -s /bin/sh -g group –G admin,root wd
# 创建一个用户wd,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于admin和root用户组,其中group用户组是其主组。
# 可能新建组:groupadd group及groupadd admin
  • 1.增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group
1.批量添加用户(存在问题)
  • 1.编辑一个文本用户文件
    • 每一行按照/etc/passwd密码文件的格式书写,注意每个用户的用户名、UID、宿主目录都不可以相同,密码栏可留做空白或输入x
      在这里插入图片描述
  • 2.以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户
    • 执行命令 vipwvi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的主目录是否已经创建
      在这里插入图片描述
      在这里插入图片描述
  • 3.执行命令/usr/sbin/pwunconv
    • /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadowshadow密码栏删掉;方便下一步的密码转换,即先取消 shadow password 功能(此时不存在/etc/shadow文件)
      在这里插入图片描述
  • 4.编辑每个用户的密码对照文件passwd.txt
    • 格式为:用户名:密码
      在这里插入图片描述
  • 5.以 root 身份执行命令 /usr/sbin/chpasswd
    • 创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏
      在这里插入图片描述
  • 6.确定密码经编码写入/etc/passwd的密码栏后
    • 执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow
    • 可以到/home下检查这些用户主目录的权限是否正确,并登录验证用户密码是否正确
      在这里插入图片描述
      在这里插入图片描述

2.userdel

userdel 选项 用户名

选项:
-r 把用户的主目录一起删除

例:
userdel -r wd
# 删除用户wd在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录
  • 1.删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录

3.usermod

usermod 选项 用户名

usermod -s /bin/bash -d /home/z–g developer wd
# 将用户wd的登录Shell修改为bash,主目录改为/home/z,用户组改为developer
# 常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的与useradd命令中的选项一样,可以为用户指定新的资源值

4.passwd

passwd 选项 用户名

选项:
-l 锁定密码,即禁用账号
-u 密码解锁
-d 使账号无密码
-f 强迫用户下次登录时修改密码
  • 1.用户账号刚创建时没有密码,被系统锁定,无法使用,必须为其指定密码后才可以登陆使用
  • 2.指定和修改用户密码的命令是passwd,超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码
  • 3.如果默认用户名,则修改当前用户的密码;如果是超级用户,可以用passwd 用户名指定任何用户的密码

5.groupadd

groupadd 选项 用户组

选择:
-g GID 指定新用户组的组标识号(GID)
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

groupadd group1
# 向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1
groupadd -g 101 group2
# 向系统中增加了一个新组group2,同时指定新组的组标识号是101

6.groupdel

groupdel 用户组
# 删除一个已有的用户组

groupdel group1

7.groupmod

groupmod 选项 用户组

选项:
-g GID 为用户组指定新的组标识号
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
-n 新用户组 将用户组的名字改为新名字

groupmod -g 102 group2
# 将组group2的组标识号修改为102
groupmod –g 10000 -n group3 group2
# 将组group2的标识号改为10000,组名修改为group3

8.newgrp

newgrp 目的用户组
# 用户登录后,可使用newgrp切换到其他用户组

newgrp root
# 当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组

9.chattr

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

-R : 递归处理,将指定目录下的所有文件及子目录一并处理
-v<版本编号> : 设置文件或目录版本
-V : 显示指令执行过程
+<属性> : 开启文件或目录的该项属性
-<属性> : 关闭文件或目录的该项属性
=<属性> : 指定文件或目录的该项属性

# 用chattr命令防止系统中某个关键文件被修改(只读文件)
[root@localhost home]# chattr +i text.txt
[root@localhost home]# lsattr text.txt
----i-------- text.txt
# 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
[root@localhost home]# chattr +a /var/log/messages
  • 改变文件属性

10.chgrp (change group)

chgrp [-R] 属组名 文件名 # 更改文件属组
-R:递归更改文件属组,在更改某个目录文件的属组时,如果加上-R的参>数,该目录下的所有文件的属组都会更改

[root@localhost ~]# chgrp wd hello.sh
  • 1.修改文件和目录的所属组

11.chown (change owner)

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

[root@localhost ~]# chown wd:root hello.sh
  • 1.修改文件和目录的所属用户和所属组

12.chmod (change mode)

数字类型改变文件权限
chmod [-R] xyz 文件或目录

# xyz 数字类型的权限属性,为 rwx 属性数值的相加
# -R 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

例:将权限变成 -rwxr-xr-- ,那么权限的数值就成为 [4+2+1][4+0+1]>[4+0+0]=754
[root@www ~]# chmod 754 text.txt
符号类型改变文件权限
chmod 权限设置 文件名

例:将文件权限设置为 -rwxr-xr-- 
[root@www ~]# chmod u=rwx,g=rx,o=r text.txt
# 拿掉全部人的可执行权限
[root@www ~]# chmod  a-x text.txt
  • 1.修改文件或目录的权限
  • 2.权限有两种设置方法:一种是数字,一种是符号
  • 3.使用数字来代表各个权限,各权限的数字对照:r:4w:2x:1
  • 4.使用符号来代表各个权限,各权限的符号对照:用户:u组:g其他:o全部:a+:加入-:除去=:设定r:读w:写x:执行

13.umask

umask [-S][权限掩码]

-S  以文字的方式来表示权限掩码

在这里插入图片描述

  • 1.指定在建立文件或目录时预设的权限掩码

20.用户及组的系统文件

  • 完成用户管理有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改

1./etc/passwd

在这里插入图片描述

用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录Shell

# 用户名 代表用户账号的字符串,由大小写字母或数字组成,登录名中不能有冒号:,因为冒号:在这里是分隔符,为了兼容起见,登录名中最好不要包含点字符.,并且不使用连字符-和加号+打头
# 密码 代表加密后的用户密码,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患;因此现在许多Linux 系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符x或者*
# 用户标识号 代表标识用户标识,一般它与用户名是一一对应的,如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的密码、不同的主目录以及不同的登录Shell等;通常用户标识号的取值范围是0~65 535;0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始;在Linux系统中,这个界限是500
# 组标识号 代表用户所属的用户组,它对应着/etc/group文件中的一条记录
# 注释性描述 记录着用户的一些个人情况
# 主目录 代表用户的起始工作目录,它是用户登录系统之后所处的目录;各用户的主目录都被组织在同一个特定的目录下/home,而用户主目录的名称就是该用户的登录名;各用户对自己的主目录有读、写、执行(搜索)权限
# 登录Shell 用户登录后要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell
  • 1./etc/passwd中一行记录对应着一个用户,每行记录又被冒号:分隔为7个字段
  • 2.伪用户(pseudo users):这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空;主要是方便系统管理,满足相应的系统进程对文件属主的要求
    伪 用 户 含 义 
    bin 拥有可执行的用户命令文件 
    sys 拥有系统文件 
    adm 拥有帐户文件 
    uucp UUCP使用 
    lp lp或lpd子系统使用 
    nobody NFS使用
    

2./etc/shadow

登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

# 登录名 是与/etc/passwd文件中的用户名一致的用户账号
# 加密密码 是加密后的用户密码
# 最后一次修改时间 表示从某个时刻起,到用户最后一次修改密码时的天数;时间起点对不同的系统可能不一样,SCO Linux 中,这个时间起点是1970年1月1日
# 最小时间间隔 表示两次修改密码之间所需的最小天数
# 最大时间间隔 表示密码保持有效的最大天数
# 警告时间 表示的是从系统开始警告用户到用户密码正式失效之间的天数
# 不活动时间 表示用户没有登录活动但账号仍能保持有效的最大天数
# 失效时间 表示一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期;期满后就不再是一个合法的账号,不能再用来登录

在这里插入图片描述

  • 1.由于/etc/passwd文件是所有用户都可读的,存在安全问题,因此Linux系统都把加密后的密码分离出来,单独存放在一个文件中,这个文件是/etc/shadow,超级用户才拥有该文件读权限,保证了用户密码的安全性
  • 2./etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

3./etc/group

组名:密码:组标识号:组内用户列表

# 组名 是用户组的名称,由字母或数字构成;与/etc/passwd中的登录名一样,组名不应重复
# 密码 用户组加密后的密码,一般Linux 系统的用户组都没有密码,即这个字段一般为空,或者是*/x
# 组标识号 与用户标识号类似,也是一个整数,被系统内部用来标识组
# 组内用户列表 属于这个组的所有用户的列表,不同用户之间用逗号,分隔;这个用户组可能是用户的主组,也可能是附加组

在这里插入图片描述

  • 1.将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段
  • 2.每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
  • 3.当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组
  • 4.用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员
  • 5.用户组的所有信息都存放在/etc/group文件中

21.下载安装命令

  • 1.Linux下的软件包可以细分成两种:源码包二进制包
  • 2.源码包:指源代码程序,需要编译成二进制包才能被计算机识别并使用
  • 3.二进制包:指源码包经过成功编译之后产生的包,是 Linux 下默认的软件安装包(例:xxx.rpm)
    • RPM二进制包的命名需遵守统一的命名规则,通过名称可以直接获取这类包的版本、适用平台等信息
      包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
      
      例:httpd-2.2.15-15.el6.centos.1.i686.rpm
      httped:包名 
      httpd-2.2.15-15.el6.centos.1.i686.rpm: 包全名
      2.2.15:包的版本号,版本号的格式通常为(主版本号.次版本号.修正号)
      15:二进制包发布的次数
      el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用
      centos:表示此包适用于 CentOS 系统
      i686:表示此包使用的硬件平台
      rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装(如果以 src.rpm 作为扩展名的 RPM 包,表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装)
      
      在这里插入图片描述
  • 4.通常RPM 包采用系统默认的安装路径
    在这里插入图片描述
1.rpm
  • 1.rpmRed Hat Linux 发行版专门用来管理 Linux 各项套件(文件后缀为:.rpm)的程序
  • 2.rpm类似于Android中的.apk文件,需要使用rpm命令进行安装
  • 3.rpm软件包的安装和卸载都需要考虑包之间的依赖性,需要注意先后关系
    rpm [-acdhilqRsv][-b<完成阶段><套间档>+][-e<套件挡>][-f<文件>+][-i<套件档>][-p<套件档>][-U<套件档>][-vv][--addsign<套件档>+][--allfiles][--allmatches][--badreloc][--buildroot<根目录>][--changelog][--checksig<套件档>+][--clean][--dbpath<数据库目录>][--dump][--excludedocs][--excludepath<排除目录>][--force][--ftpproxy<主机名称或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主机名称或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<执行指令>][--prefix<目的目录>][--provides][--queryformat<档头格式>][--querytags][--rcfile<配置档>][--rebulid<套件档>][--rebuliddb][--recompile<套件档>][--relocate<原目录>=<新目录>][--replacefiles][--replacepkgs][--requires][--resign<套件档>+][--rmsource][--rmsource<文件>][--root<根目录>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安装平台>+][--test][--timecheck<检查秒数>][--triggeredby<套件档>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
    -a:查询所有套件
    -c:只列出组态配置文件
    -d:只列出文本文件
    -h:显示安装进度
    -i:显示套件的相关信息
    -l:显示套件的文件列表及安装目录
    -q:使用查询模式
    -R:显示套件的关联性信息
    -s:显示文件状态
    -v:显示更详细的信息(执行过程)
    
    [-e <套件>]:卸载指定的套件
    [-f <文件>]:查询拥有指定文件的套件
    [-i <套件>]:安装指定的套件(install)
    [-p <套件>]:查询指定的RPM套件档
    [-U <套件>]:如果该套件没安装过则直接安装;若安装则升级至最新版本
    
    # rpm -q 包名 查询软件包是否安装
    # 注意使用包名,不是包全名。因为已安装的软件包只需给出包名,系统就可以成功识别(使用包全名反而无法识别)
    [root@localhost home]# rpm -q yum
    yum-3.4.3-158.el7.centos.noarch
    
    # rpm -qa:查询系统中所有安装的软件包
    # 可使用管道符查找出需要的内容
    [root@localhost home]# rpm -qa | grep yum
    yum-plugin-fastestmirror-1.1.31-45.el7.noarch
    yum-metadata-parser-1.1.4-10.el7.x86_64
    yum-3.4.3-158.el7.centos.noarch
    
    # 只列出组态配置文件
    [root@localhost home]# rpm -qc yum
    /etc/logrotate.d/yum
    /etc/yum.conf
    /etc/yum/version-groups.conf
    
    # 只列出文本文件
    [root@localhost home]# rpm -qd yum
    /usr/share/doc/yum-3.4.3/AUTHORS
    /usr/share/doc/yum-3.4.3/COPYING
    /usr/share/doc/yum-3.4.3/ChangeLog
    ...
    
    # 显示套件的关联性信息
    [root@localhost home]# rpm -qR yum
    /usr/bin/python
    config(yum) = 3.4.3-158.el7.centos
    cpio
    ...
    
    # 显示文件状态
    [root@localhost home]# rpm -qs yum
    正常/etc/logrotate.d/yum
    正常/etc/yum
    正常/etc/yum.conf
    
    # 显示更详细的信息(执行过程)
    [root@localhost home]# rpm -qvs yum
    正常-rw-r--r--    1 root    root                      100 413  2018 /etc/logr                                                                                    otate.d/yum
    正常drwxr-xr-x    2 root    root                        0 413  2018 /etc/yum
    正常-rw-r--r--    1 root    root                      970 413  2018 /etc/yum.     
    
    # 显示套件的文件列表及安装目录
    [root@localhost home]# rpm -ql yum
    /etc/logrotate.d/yum
    /etc/yum
    /etc/yum.conf
    ...
    
    # rpm -qi 包名:查询软件包的详细信息
    # 此时的-i 选项表示查询软件信息,是 information 的首字母
    [root@localhost home]# rpm -qi yum
    Name        : yum
    Version     : 3.4.3
    Release     : 158.el7.centos
    Architecture: noarch
    Install Date: 2022年10月21日 星期五 18时09分32秒
    Group       : System Environment/Base
    Size        : 5814102
    License     : GPLv2+
    Signature   : RSA/SHA256, 2018年04月25日 星期三 19时52分48秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : yum-3.4.3-158.el7.centos.src.rpm
    Build Date  : 2018年04月13日 星期五 20时58分52秒
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://yum.baseurl.org/
    Summary     : RPM package installer/updater/manager
    Description :
    Yum is a utility that can check for and automatically download and
    install updated RPM packages. Dependencies are obtained and downloaded
    automatically, prompting the user for permission as necessary.
    
    # -p 表示查询未安装的软件包,是package 的首字母
    # 注意:使用包全名,因为未安装的软件包需使用 绝对路径+包全名 的方式才能确定包
    [root@localhost ~]# rpm -qip 包全名
    
    # rpm -qf:命令查询系统文件属于哪个RPM包, file 的首字母
    [root@localhost home]# rpm -qf /bin/ls
    coreutils-8.22-21.el7.x86_64
    
    # 查找未安装软件包的依赖性
    # 绝对路径+包全名
    [root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    
2.yum
# 基本语法
yum [options] [command] [package ...]

options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等
command:要进行的操作
package:安装的包名

# yum常用命令
# 更新
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅更新指定的软件命令:yum update <package_name>

# 安装
1.安装所有可安装软件:yum install 
2.仅安装指定的软件命令:yum install <package_name>
3.重新安装软件包 yum reinstall <package_name>

# 显示列表
1.列出所有可安裝的软件清单命令:yum list
2.查询执行软件包的安装情况:yum list <package_name>
[root@localhost opt]# yum list jdk1.8
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
已安装的软件包
jdk1.8.x86_64                        2000:1.8.0_171-fcs                         installed
3.列出所有可安装的软件包:yum list updates 
4.列出所有已安装的软件包:yum list installed 
5.列出所有已安装但不在 Yum Repository 內的软件包:yum list extras 

# 依赖情况
1.查看程序<package_name> 依赖情况:yum deplist <package_name> 

# 仓库	
1.列出所有仓库:yum repolist all

# 详细信息
1.查询执行软件包的详细信息:yum info <package_name> 
[root@localhost opt]# yum info jdk1.8
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
已安装的软件包
名称    :jdk1.8
架构    :x86_64
时期       :2000
版本    :1.8.0_171
发布    :fcs
大小    :279 M
源    :installed
简介    : Java Platform Standard Edition Development Kit
网址    :http://www.oracle.com/technetwork/java/javase/overview/index.html
协议    : http://java.com/license
描述    : The Java Platform Standard Edition Development Kit (JDK) includes both
      : the runtime environment (Java virtual machine, the Java platform classes
      : and supporting files) and development tools (compilers, debuggers,
      : tool libraries and other tools).
      :
      : The JDK is a development environment for building applications, applets
      : and components that can be deployed with the Java Platform Standard
      : Edition Runtime Environment.
2.列出所有需要更新的软件包信息:yum info updates
3.列出所有已安裝的软件包信息:yum info installed
4.列出所有已安裝但不在 Yum Repository 內的软件包信息:yum info extras
5.列出软件包提供哪些文件:yum provides <package_name> 

# 删除 
1.删除软件包命令:yum remove <package_name>

# 查询
1.查找软件包命令:yum search <keyword>
[root@localhost opt]# yum search jdk1.8
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
================================== N/S matched: jdk1.8 ==================================
jdk1.8.x86_64 : Java Platform Standard Edition Development Kit	

# 清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
  • 1.yum(Yellow dog Updater, Modified):专门为解决包的依赖关系的软件包管理器,类似腾讯电脑管家的软件一键安装,更新和卸载
  • 2.yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中
  • 3.当使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装,从而解决RPM依赖性问题
  • 4.使用 yum 安装软件包之前,需指定好 yum 下载 RPM 包的位置,此位置称为 yum 源yum 源指的就是软件安装包的来源)
  • 5.使用 yum 安装软件时至少需要一个 yum 源yum 源既可以使用网络 yum 源,也可以将本地光盘作为 yum 源
    • 网络yum源
      • 1.一般主机网络正常,可以直接使用网络 yum 源,不需要对配置文件做任何修改
      • 2.网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为*.repo(只要扩展名为 *.repo"的文件都是 yum 源的配置文件)
      • 3.通常情况下 CentOS-Base.repo 文件生效
      • 4.如果修改网络yum源后需要执行:yum clean allyum makecache
      vim /etc/yum.repos.d/CentOS-Base.repo
      
      [base]:容器名称,一定要放在[]中。
      name:容器说明,可以随便写。
      mirrorlist:镜像站点
      baseurl: yum 源服务器的地址。默认是 CentOS 官方的 yum 源服务器
      enabled:此容器是否生效,如果不写或写成 enabled 则表示此容器生效,写成enable=0 则表示此容器不生效。
      gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。
      gpgkey:数字证书的公钥文件保存位置
      
      在这里插入图片描述
3.wget
  • 1.wget是一个从网络上自动下载文件的自由工具,支持通过HTTPHTTPSFTP三个最常见的TCP/IP协议下载(类似于Windows下的迅雷)
  • 2.wget命令用来从指定的URL下载文件
    # 安装wget
    yum install wget
    wget(选项)(参数)
    
    # wget URL:从指定地址下载文件
    [root@localhost opt]#wget https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # 将下载信息存入日志文件
    [root@localhost opt]# wget -a download.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # wget -b url:后台下载
    [root@localhost opt]# wget -b  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    继续在后台运行,pid 为 61922。
    将把输出写入至 “wget-log”。
    
    # wget -c url:继续执行上次终端的任务
    [root@localhost opt]# wget -c  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # wget -d url:调试模式运行指令
    [root@localhost opt]# wget -d  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # wget -h url:显示指令帮助信息
    [root@localhost opt]# wget -h  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    # wget -i url:从指定文件批量获取要下载的URL地址
    [root@localhost opt]# cat > filelist.txt
    https://www.keaidian.com/uploads/allimg/190424/24110307_4.jpg
    https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# wget -i filelist.txt
    
    # wget -q url:不显示指令执行过程
    [root@localhost opt]# wget -q  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    
    #wget -o download.log URL:把下载信息存入日志文件
    [root@localhost opt]# wget -o test1.log  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    [root@localhost opt]# ls
    24110307_8.jpg  jdk-8u171-linux-x64.rpm  test1.log
    [root@localhost opt]# cat test1.log
    --2022-10-25 05:28:41--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在连接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    正在保存至: “24110307_8.jpg”
         0K .......... .......... .......... .......... .......... 16% 2.59M 0s
        50K .......... .......... .......... .......... .......... 32%  775K 0s
       100K .......... .......... .......... .......... .......... 48%  851K 0s
       150K .......... .......... .......... .......... .......... 64% 1.03M 0s
       200K .......... .......... .......... .......... .......... 80% 2.68M 0s
       250K .......... .......... .......... .......... .......... 96%  927K 0s
       300K .......... .                                          100% 15.6M=0.3s
    2022-10-25 05:28:42 (1.16 MB/s) - 已保存 “24110307_8.jpg” [318641/318641])
    
    # wget -O 别名 URL:从指定地址下载文件并起别名
    [root@localhost opt]# wget -O test.jpg  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    --2022-10-25 05:22:31--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 101.26.37.47, 61.179.224.47, 106.74.11.126, ...
    正在连接 www.keaidian.com (www.keaidian.com)|101.26.37.47|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    正在保存至: “test.jpg”
    100%[=============================================================================================================================================>] 318,641     1.12MB/s 用时 0.3s
    2022-10-25 05:22:31 (1.12 MB/s) - 已保存 “test.jpg” [318641/318641])
    [root@localhost opt]# ls
    jdk-8u171-linux-x64.rpm  test.jpg
    
    # wget -P 目录 URL:从指定地址下载文件并保存在指定目录下
    [root@localhost tmp]# wget -P /tmp/nginx_yum_source/ http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    # get reject=xxx(文件格式) url:过滤指定格式下载 
    [root@localhost opt]# wget reject=gif https://www.cnblogs.com/lukelook/p/11201098.html
    
    # wget --spider URL:测试下载连接是否可行
    [root@localhost opt]# wget --spider  https://www.keaidian.com/uploads/allimg/190424/24110                                                                                              307_8.jpg
    开启 Spider 模式。检查是否存在远程文件。
    --2022-10-25 05:34:10--  https://www.keaidian.com/uploads/allimg/190424/24110307_8.jpg
    正在解析主机 www.keaidian.com (www.keaidian.com)... 125.44.96.40, 101.26.37.47, 61.179.22                                                                                              4.47, ...
    正在连接 www.keaidian.com (www.keaidian.com)|125.44.96.40|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:318641 (311K) [image/jpeg]
    存在远程文件。
    
    # FTP下载
    [root@localhost opt]# wget ftp  https://www.cnblogs.com/lukelook/p/11201098.html
    
    在这里插入图片描述
4.绿色软件安装
  • 1.绿色软件:不需要安装,下载可以直接使用(或者解压缩可以直接使用)的软件
  • 2.例:Linux安装Tomcat

22.磁盘管理命令

  • Linux 磁盘管理常用三个命令为 dfdufdisk

1.df(disk free)

df [-ahikHTm] [目录或文件名]

选项:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
-k :以 KBytes 的容量显示各文件系统
-m :以 MBytes 的容量显示各文件系统
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
-H :以 M=1000K 取代 M=1024K 的进位方式
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
-i :不用硬盘容量,而以 inode 的数量来显示

在这里插入图片描述

  • 1.检查文件系统的磁盘空间占用情况
  • 2.默认显示系统内所有的 (不含特殊内存内的文件系统与 swap) 的容量

2.du(disk used)

du [-ahskm] 文件或目录名称

选项:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
-h :以人们较易读的容量格式 (G/M) 显示
-s :列出总量而已,而不列出每个各别的目录占用容量
-S :不包括子目录下的总计,与 -s 有点差别
-k :以 KBytes 列出容量显示
-m :以 MBytes 列出容量显示

# 检查根目录底下每个目录所占用的容量
[root@localhost ~]# du -sm /*

在这里插入图片描述

  • 1.检查文件和目录的磁盘使用量
  • 2.默认会分析当前所在目录里的子目录所占用的硬盘空间

3.fdisk

fdisk [-l] 装置名称

选项:
-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来

在这里插入图片描述

# 第一步
[root@localhost /]# df /  	<==注意:找出磁盘文件名,即/dev/mapper/centos-root
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 3229160 14582296   19% /

# 第二步
[root@localhost /]# fdisk /dev/mapper/centos-root 	<==不要加上数字
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xd7827351 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助)<==等待你的输入!

# 第三步
命令(输入 m 获取帮助):m
命令操作
  a   toggle a bootable flag
  b   edit bsd disklabel
  c   toggle the dos compatibility flag
 d   delete a partition 				<==删除一个partition
  g   create a new empty GPT partition table
  G   create an IRIX (SGI) partition table
  l   list known partition types
  m   print this menu
  n   add a new partition 				<==新增一个partition
  o   create a new empty DOS partition table
  p   print the partition table 		<==在屏幕上显示分割表
  q   quit without saving changes		<==不储存离开fdisk程序
  s   create a new empty Sun disklabel
  t   change a partition's system id
  u   change display/entry units
  v   verify the partition table
  w   write table to disk and exit		<==将刚刚的动作写入分割表
  x   extra functionality (experts only)

命令(输入 m 获取帮助):p

磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd7827351

                 设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):q

4.mkfs(make filesystem)

mkfs [-t 文件系统格式] 装置文件名

-t :可以接文件系统格式,例:ext3, ext2, vfat 等(系统有支持才会生效)

# 查看 mkfs 支持的文件格式
[root@localhost /]# mkfs + 2次Tab键
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.minix
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs
# 将分区 /dev/hdc6(可指定分区) 格式化为 ext3 文件系统
[root@localhost /]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Filesystem label=                <==这里指的是分割槽的名称(label)
OS type: Linux
Block size=4096 (log=2)          <==block 的大小配置为 4K 
Fragment size=4096 (log=2)
251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量
25101 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=515899392
16 block groups
32768 blocks per group, 32768 fragments per group
15712 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done <==有日志记录
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# 这样就创建了所需要的 Ext3 文件系统
  • 磁盘分割完毕后进行文件系统的格式化

5.fsck(file system check)

fsck [-t 文件系统] [-ACay] 装置名称

选项:
-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
-C : 显示完整的检查进度
-d : 打印出 e2fsck 的 debug 结果
-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V : 详细显示模式
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复
-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复

# 查看系统有多少文件系统支持的 fsck 命令
[root@localhost /]# fsck + 2次Tab键
fsck         fsck.cramfs  fsck.ext3    fsck.minix
fsck.btrfs   fsck.ext2    fsck.ext4    fsck.xfs
# 强制检测 /dev/hdc6 分区
# 如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速,若加上 -f 强制检查,才会一项一项的显示过程
[root@localhost /]# fsck -C -f -t ext3 /dev/hdc6 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks
  • 1.检查和维护不一致的文件系统
  • 2.若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查

23.挂载及卸载

  • 1.Linux中的根目录以外的文件要想被访问,需要将其关联到根目录下的某个目录来实现,这种关联操作就是挂载,这个目录就是挂载点,解除关联关系的过程称之为卸载
  • 2.挂载点的目录需要以下几个要求
    • 1.目录事先存在,可以用mkdir命令新建目录
    • 2.挂载点目录不可被其他进程使用到
    • 3.挂载点下原有文件将被隐藏

6.mount

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

# 用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面
[root@localhost /]# mkdir /mnt/hdc6
[root@localhost /]# mount /dev/hdc6 /mnt/hdc6
[root@localhost /]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中间省略.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6
  • 磁盘挂载

7.umount

umount [-fn] 装置文件名或挂载点

选项:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下
-n :不升级 /etc/mtab 情况下卸除

# 卸载/dev/hdc6
[root@localhost /]# umount /dev/hdc6 
  • 磁盘卸载

24.系统命令

1.systemctl

  • 1.systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器
  • 2.systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程

1.检查你的系统中是否安装有systemd并确定当前安装的版本

[root@localhost /]# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT >+UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
# 安装了219版本的systemd

2.检查systemdsystemctl的二进制文件和库文件的安装位置

[root@localhost /]# whereis systemd
systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd >/usr/share/man/man1/systemd.1.gz
[root@localhost /]# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

3.检查systemd是否运行

[root@localhost /]# ps -ef | grep systemd
root          1      0  0 2月05 ?       00:01:21 /usr/lib/systemd/systemd -->switched-root --system --deserialize 22
root        462      1  0 2月05 ?       00:00:15 /usr/lib/systemd/systemd-journald
root        490      1  0 2月05 ?       00:00:00 /usr/lib/systemd/systemd-udevd
root        626      1  0 2月05 ?       00:00:03 /usr/lib/systemd/systemd-logind
dbus        634      1  0 2月05 ?       00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root      40156  22152  0 02:12 pts/0    00:00:00 grep --color=auto systemd
# systemd是作为父进程(PID=1)运行的

4.分析systemd启动进程

[root@localhost /]# systemd-analyze
Startup finished in 930ms (kernel) + 5.071s (initrd) + 19.845s (userspace) = >25.847s

5.分析启动时各个进程花费的时间
在这里插入图片描述
6.分析启动时的关键链
在这里插入图片描述
7.列出所有可用单元(Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元)
在这里插入图片描述
8.列出所有运行中单元
在这里插入图片描述
8.列出所有失败单元
在这里插入图片描述
9.检查某个单元是否启用
在这里插入图片描述
10.列出所有服务(包括启用的和禁用的)
在这里插入图片描述
11.启动、重启、停止、重载服务以及检查服务状态

# systemctl start httpd.service
# systemctl restart httpd.service
# systemctl stop httpd.service
# systemctl reload httpd.service
# systemctl status httpd.service
# systemctl的start,restart,stop和reload不会从终端获取到任何输出内容,只有status命令可以打印输出

12.激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)

# systemctl is-active httpd.service
# systemctl enable httpd.service
# systemctl disable httpd.service

13.屏蔽(让它不能启动)或显示服务

# systemctl mask httpd.service
# systemctl unmask httpd.service

14.使用systemctl命令杀死服务

# systemctl kill httpd
# systemctl status httpd

15.列出所有系统挂载点
在这里插入图片描述
16.挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

# systemctl start tmp.mount
# systemctl stop tmp.mount
# systemctl restart tmp.mount
# systemctl reload tmp.mount
# systemctl status tmp.mount

17.启动时激活、启用或禁用挂载点(系统启动时自动挂载)

# systemctl is-active tmp.mount
# systemctl enable tmp.mount
# systemctl disable  tmp.mount

18.屏蔽(让它不能启用)或可见挂载点

# systemctl mask tmp.mount
# systemctl unmask tmp.mount

其余可参考:https://linux.cn/article-5926-1.htmlhttps://www.cnblogs.com/aaronLinux/p/6861425.html

2.service

  • 1.服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求(mysqld , sshd、防火墙等),因此又称为守护进程
  • 2.centOS7.0 后很多服务不再使用 service ,而是 systemctl
  • 3.service 指令管理的服务在 /etc/init.d 查看
[root@localhost ~]# service 服务名 start|stop|restart|status
start:启动服务;
stop:停止服务;
restart:重启服务;
status: 查看服务状态;

在这里插入图片描述

3.source

source filename
或
.  filename
  • 1.使当前shell读入路径为filepathshell文件并依次执行文件中的所有语句
  • 2.通常用于重新执行刚修改的初始化文件,使之立即生效
  • 3.该命令可以用命令.来替代(相同含义)
  • 4.source filenamesh filename./filename执行脚本的区别
    • 1.当shell脚本具有可执行权限时,用sh filename./filename执行脚本没有区别;./filename是因为当前目录没有在环境变量的PATH中,所有.是用来表示当前目录的
    • 2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell
    • 3.source filename其实只是读取脚本里面的语句依次在当前shell执行,没有建立新的子shell;脚本里面所有新建、改变变量的语句都会保存在当前shell

4.make

make [选项]

make all:编译程序、库、文档等(等同于make)
make install:安装已经编译好的程序,复制文件树中到文件到指定的位置
make unistall:卸载已经安装的程序
make clean:删除由make命令产生的文件
make distclean:删除由./configure产生的文件
make check:测试刚刚编译的软件(某些程序可能不支持)
make installcheck:检查安装的库和程序(某些程序可能不支持)
make dist:重新打包成packname-version.tar.gz

# 一般操作流程:
1、解压缩
tar zxf xxxx.tgz
2、配置
cd xxxx
./configure
3、编译
make
4、安装
make install
5、卸载
make uninstall
  • 1.make是用来编译的

5.nohup (no hang up)

nohup Command [ Arg … ] [ & ]

Command:要执行的命令
Arg:一些参数,可以指定输出文件
&:让命令在后台执行,终端退出后命令仍旧执行

# 后台执行 root 目录下的 runoob.sh 脚本
[root@localhost ~]# nohup /root/runoob.sh &
# 后台执行 root 目录下的 text.jar,并重定向输入到 text.log 文件
nohup java -jar /root/text.jar > text.log 2>&1 &
  • 1.用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
  • 2.默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中
  • 3.终端如果看到以下输出说明运行成功:appending output to nohup.out
  • 4.如果要停止运行,需要使用以下命令查找到 nohup 运行脚本的 PID,然后使用 kill 命令来删除 ps -aux | grep "runoob.sh"ps -ef | grep "runoob.sh"
  • 5.2>&1>&是合并的意思,将标准错误 2 重定向到标准输出 1 ,标准输出 1 再被重定向输入到 text.log 文件中
    • 0 – stdin (standard input,标准输入)
    • 1 – stdout (standard output,标准输出)
    • 2 – stderr (standard error,标准错误输出)

6.uname(unix name)

uname [-amnrsv][--help][--version]

-a或--all  显示全部的信息。
-m或--machine  显示电脑类型。
-n或--nodename  显示在网络上的主机名称。
-r或--release  显示操作系统的发行编号。
-s或--sysname  显示操作系统名称。
-v  显示操作系统的版本。
--help  显示帮助。
--version  显示版本信息。
# 查看linux系统版本
uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# 显示计算机类型
uname -m

7. su(switch user)

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

-m -p 或 --preserve-environment :执行 su 时不改变环境变数
-c command--command=command :变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell :指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help :显示说明文件
--version :显示版本资讯
- -l--login :重新 login 为该使用者,大部份环境变数(HOME SHELL USER等等)都以该使用者(USER)为主,并且工作目录改变,如果没有指定 USER ,内定是 root
USER :欲变更的使用者帐号
ARG :传入新的 shell 参数

# 变更帐号为 root 并在执行 ls 指令后退出变回原使用者
su -c ls root
# 变更帐号为 root 并传入 -f 参数给新执行的 shell
su root -f
# 变更帐号为 wd 并改变工作目录至 wd 的家目录(home dir)
su - wd
  • 变更为其他使用者的身份

8.sudo(super user do)

-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )

# 以root权限执行上一条命令
sudo !!
# 以特定用户身份进行编辑文本
sudo -u wd vi index.html
  • 以系统管理者的身份执行指令

8. exit

  • 1.退出目前的shell
  • 2.执行exit可使shell以指定的状态值退出
  • 3.若不设置状态值参数,则shell以预设值退出;状态值0代表执行成功,其他值代表执行失败

9. which

which [文件...]

-n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
-p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径
-w  指定输出时栏位的宽度
-V  显示版本信息

# 查看指令nginx的绝对路径
[root@localhost home]# which nginx
/usr/sbin/nginx
  • 1.用于查找指令
  • 2.which指令会在环境变量$PATH设置的目录里查找符合条件的指令

10.whereis

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

-b :只查找二进制文件
-B<目录> :只在设置的目录下查找二进制文件
-f :不显示文件名前的路径名称
-m :只查找说明文件
-M<目录> :只在设置的目录下查找说明文件
-s :只查找原始代码文件
-S<目录> :只在设置的目录下查找原始代码文件
-u :查找不包含指定类型的文件

[root@localhost home]# whereis nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
# 以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径
# 查询二进制文件
[root@localhost home]# whereis -b nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx

11.whatis

whatis 命令/系统调用/库函数/特殊文件名

[root@localhost /]# whatis ls
ls (1)               - list directory contents
  • 用于查询一个命令执行什么功能,并将查询结果打印到终端上,相当于 man -f

12. bash

  • bashlinux下默认的shell

13. sh

  • shunix下默认的shell

14.alias

alias[别名]=[指令名称]

[root@localhost /]# alias lx=ls
[root@localhost /]# lx
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  • 1.用于设置指令的别名,若不加任何参数,则列出目前所有的别名设置
  • 2.alias的仅用于该次登入的操作,若要每次登入自动设好别名,可在.profile.cshrc中设定指令的别名

15.fg

  • 重新启动前台被中断的任务

16.bg

  • 把被中断的任务放在后台执行

Linux快捷键

  • 1.直接点击两下Tab键:查看所有的命令
  • 2.vi/vim+目录+点击两下Tab键:查看当前文件夹下的内容
  • 3.cd + -:返回前一个目录
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 操作命令详解 pdf 是一本介绍 Linux 系统常用命令的电子书籍。在该书中,你可以学习到许多与 Linux 操作系统相关的命令及其详细用法。 首先,该书会从 Linux 命令的基础知识开始介绍,包括命令的语法和参数。接着,它将分章节介绍常用的命令,如文件和目录的操作命令、进程管理命令、网络配置和通信命令等。 在文件和目录的操作命令章节中,你将学习到如何创建、复制、移动、重命名和删除文件和目录,以及如何查找和清理文件等。这些命令对于日常的文件和目录管理非常有用。 在进程管理命令章节中,你将了解如何查看当前运行的进程、停止或重启进程,以及如何管理进程的优先级和资源分配等。这些命令对于系统管理员和开发人员来说尤为重要。 而网络配置和通信命令章节则会介绍如何配置网络接口、查看和修改网络配置信息,以及如何进行远程登录和文件传输等。这些命令在网络管理和服务器部署方面起着重要的作用。 除了以上几个主要章节,该书还会介绍其他一些常用的命令,如文本处理命令、压缩和解压缩命令、系统管理命令等。这些命令在日常的工作和学习中也会经常用到。 总结来说,Linux 操作命令详解 pdf 是一本介绍 Linux 命令的电子书籍,通过学习该书,你可以系统地了解和掌握 Linux 操作命令的使用方法,提升在 Linux 系统下的工作效率和技术水平。该书对于初学者和有一定基础的用户都是非常有价值的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值