Linux-笔记5

#### 计算机硬件组成部分

- 输入设备:键盘、鼠标、触控屏等

- 主机设备:主板、中央处理器(CPU)、主存储器(内存)、网卡、声卡、显示卡等

- 输出设备:屏幕、耳机、打印机、投影仪等

- 外部存储设备:硬盘、软盘、光盘、U盘等、蓝光光驱

- 硬盘:传统硬盘(HDD)==固态硬盘(SSD)

- CPU缓存

- CPU比较主流的厂商

- AMD公司
- Interl公司

- CPU架构

- x86架构,8086架构,80286,80386,x86称号
- 8位、16位、32位、64位,CPU一次可以处理的数据量,
- 32位CPU一次可以从内存中读取大约3.25G左右的数据量
- 64位CPU一次可以从内存中读取大约128G左右的数据量

- CPU核心

- 单核心,一颗CPU只能有一个运算单元
- 多核心,一颗CPU里边有两个以上的运算单元

- 计算机什么最重要?想要让计算机运行起来,足够的电力

![1616909159062](C:\Users\zhiy_\AppData\Roaming\Typora\typora-user-images\1616909159062.png)

#### Linux系统目录介绍

- /(根):系统所有数据都存放在根目录下

- /bin:存放用户和管理员必备的可执行的二进制程序文件

- /boot:存放Linux系统内核及引导系统程序所需要的文件目录

- /dev:存放硬件设备的目录,如键盘、鼠标、硬盘、光盘等等

- /etc:存放服务的配置文件,用户信息文件

- /root:超级管理员的家目录

- /home:系统普通用户的家目录

- /lib:存放系统中的程序运行所需要的共享库及内核模块

- /opt:额外安装的可选应用程序包所放置的位置

- /srv:服务启动之后需要访问的数据目录

- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

- /var:存放系统执行过程中经常变化的文件,如随时都在变化的日志文件就存放/var/log/下

- /mnt、/media :光盘和镜像等预设的挂载点

- /proc:Linux伪文件系统,该目录下的数据存在于内存当中,不占用磁盘空间

- /lib64 :存放函式库

- /run :程序或服务启动后,存放PID的目录

- /sys:存放被建立在内存中的虚拟文件系统

- /usr:操作系统软件资源所放置的目录

- /usr/bin:与/bin目录相同,存放用户可以使用的命令程序
- /usr/lib:与/lib目录相同,存放系统中的程序运行所需要的共享库及内核模块
- /usr/etc:用于存放安装软件时使用的配置文件
- /usr/games:与游戏比较相关的数据放置处
- /usr/include:c/c++等程序语言的档头(header)与包含档(include)放置处
- /usr/lib64:与/lib64目录相同,存放函式库
- /usr/libexec:不经常被使用的执行程序或脚本会放置在此目录中
- /usr/local: 额外安装的软件存放目录
- /usr/sbin:该目录与/sbin目录相同,存放用户可执行的二进制程序文件
- /usr/share: 放置只读架构的杂项数据文件
- /usr/src:一般软件源代码建议存放该目录下

#### 查看内核信息

- uname 命令用于显示系统内核信息

- 命令格式:uname [-选项...]

- 常用选项:

- -s :显示内核名称
- -r :显示内核版本

```shell
[root@localhost ~]# uname
Linux

[root@localhost ~]# uname -rs
Linux 3.10.0-957.el7.x86_64
#解释:
Linux #内核名称
3 #主版本
10 #次版本
0 #修改版本
957 #补丁次数
el7 #Enterprise Linux(企业版Linux)
x86_64 #CPU架构

#Linux内核官网
https://www.kernel.org/
```

#### 查看CPU信息

- /proc/cpuinfo文件用于存放系统CPU信息

- lscpu 用于显示CPU架构信息

- 命令格式:lscpu [-选项]

```shell
#查看/proc/cpuinfo文件内容
[root@localhost ~]# cat /proc/cpuinfo
processor :#系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id : #CPU制造商
cpu family : #CPU产品系列代号
model   : #CPU属于其系列中的哪一代的代号
model name: #CPU属于的名字及其编号、标称主频
stepping  : #CPU属于制作更新版本
cpu MHz  : #CPU的实际使用主频
cache size : #CPU二级缓存大小
physical id : #单个CPU的标号
siblings :#单个CPU逻辑物理核数
core id :#当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores : #该逻辑核所处CPU的物理核数
apicid :#用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu : #是否具有浮点运算单元(Floating Point Unit)
fpu_exception : #是否支持浮点计算异常
cpuid level : #执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp : #表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags : #当前CPU支持的功能
bogomips : #在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size : #每次刷新缓存的大小单位
cache_alignment : #缓存地址对齐单位
address sizes :#可访问地址空间位数
power management : #对能源管理的支持,有以下几个可选支持功能:
```

```shell
#使用lscpu查看cpu信息
[root@localhost ~]# lscpu
 Architecture: #架构
  CPU(s): #逻辑cpu颗数
  Thread(s) per core: #每个核心线程
  Core(s) per socket: #每个cpu插槽核数/每颗物理cpu核数
  CPU socket(s): #cpu插槽数
  Vendor ID: #cpu厂商ID
  CPU family: #cpu系列
  Model: #型号
  Stepping: #步进
  CPU MHz: #cpu主频
  Virtualization: #cpu支持的虚拟化技术
  L1d cache: #一级缓存(google了下,这具体表示表示cpu的L1数据缓存)
  L1i cache: #一级缓存(具体为L1指令缓存)
  L2 cache: #二级缓存
```

#### 查看系统内存信息

- /proc/meminfo文件用于存放系统内存信息

- free 用于查看内存使用情况

- 命令格式:free [-选项]

- 常用选项:-h #以人类易读方式显示大小(KB,MB,GB)

```shell
#查看/proc/meminfo文件内容
[root@localhost ~]# cat /proc/meminfo
MemTotal: 995896 kB #所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree: 244196 kB #表示系统尚未使用的内存。
MemAvailable: 435080 kB #真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers: 2132 kB #用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached: 314632 kB #分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached: 0 kB #被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active: 295908 kB #经常使用的高速缓冲存储器页面文件大小
Inactive: 271552 kB #不经常使用的高速缓冲存储器文件大小
Active(anon): 251528 kB #活跃的匿名内存
Inactive(anon): 13044 kB #不活跃的匿名内存
Active(file): 44380 kB #活跃的文件使用内存
Inactive(file): 258508 kB #不活跃的文件使用内存
Unevictable: 0 kB #不能被释放的内存页
Mlocked: 0 kB #系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal: 0 kB #交换空间总内存
SwapFree: 0 kB #交换空间空闲内存
Dirty: 4 kB #等待被写回到磁盘的
Writeback: 0 kB #正在被写回的
AnonPages: 15100 kB #未映射页的内存/映射到用户空间的非文件页表大小
Mapped: 7160 kB #映射文件内存
Shmem: 100 kB #已经被分配的共享内存
Slab: 9236 kB #内核数据结构缓存
SReclaimable: 2316 kB #可收回slab内存
SUnreclaim: 6920 kB #不可收回slab内存
KernelStack: 2408 kB #内核消耗的内存
PageTables: 1268 kB #管理内存分页的索引表的大小
NFS_Unstable: 0 kB #不稳定页表的大小
Bounce: 0 kB #在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp: 0 kB #FUSE用于临时写回缓冲区的内存
CommitLimit: 22980 kB #系统实际可分配内存
Committed_AS: 536244 kB #系统当前已分配的内存
VmallocTotal: 892928 kB #预留的虚拟内存总量
VmallocUsed: 29064 kB #已经被使用的虚拟内存
VmallocChunk: 860156 kB #可分配的最大的逻辑连续的虚拟内存
```

```shell
#使用free命令查看内存使用情况
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 972M 344M 238M 13M 389M 424M
Swap: 2.0G 0B 2.0G
#解释:Mem 物理内存统计信息
total: #物理内存总量
used: #以使用的内存总量
free: #空闲内存总量
shared: #共享内存总量
buff/cache: #块设备与普通文件占用的缓存数量
available: #还可以被应用程序使用的物理内存大小

#解释:Swap 内存交换空间,当物理内存不足时,可以使用硬盘空间充当内存使用
total: #交换分区内存总量
used: #正在使用的交换分区内存
free: #空闲交换分区内存
```

#### 查看网卡信息

- 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
- ifconfig 用于显示和设置网卡的参数
- 命令格式: ifconfig [网卡名]

```shell
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=“Ethernet“ #网卡类型=以太 ※
PROXY_METHOD=“none“ #代理方式=关闭
BROWSER_ONLY="no“ #只是浏览器=否
BOOTPROTO=“none“ #获取IP地址的方式=固定IP ※
DEFROUTE=“yes“ #是否设置默认路由=是
IPV4_FAILURE_FATAL=“no“ #是否开启ipv4致命检测=否(如果ipv4配置失败禁用设备)
NAME=“ens32“ #物理网卡设备名字 ※
UUID=“3ef0d258-f9a4-49e5-a9da-7b47bc98daa0 “#网卡UUID
DEVICE=“ens32“ #网卡名字 ※
ONBOOT=“yes“ #开机或重启时是否启动网卡 ※
IPADDR=“192.168.0.210“ #IP地址 ※
PREFIX=“24“ #子网掩码 ※
GATEWAY=“192.168.0.254“ #网关 ※
DNS1=“8.8.8.8“ #dns服务器IP地址 ※
DNS2=8.8.4.4 #备用dns服务器IP地址 ※
```

```shell
#使用ifconfig命令查看网卡信息
[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.29 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::8d50:c4d5:97b0:9d64 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b0:cf:c8 txqueuelen 1000 (Ethernet)
RX packets 3948 bytes 1811465 (1.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2538 bytes 459113 (448.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#解释:
ens32: #网卡名称 ※
flags=4163: #标志
UP: #网卡处于活跃状态 ※
BROADCAST: #支持广播
RUNNING: #网线已接入
MULTICAST: #支持组播
mtu 1500: #最大传输单元(字节),表示此网卡一次能传输的最大数据包 ※
inet 192.168.0.29 #IPV4地址 ※
netmask 255.255.255.0 #子网掩码 ※
broadcast 192.168.0.255 #广播地址 ※
inet6 fe80::8d50:c4d5:97b0:9d64 #IPV6地址
prefixlen 64 scopeid 0x20<link> #前缀 64 作用域 0x20
ether 00:0c:29:b0:cf:c8 #网卡MAC地址 ※
xqueuelen 1000 #网卡设置的传送队列长度
(Ethernet) #网卡连接类型
RX packets 3948 #接收正确的数据包 ※
bytes 1811465 (1.7 MiB) #接收的数据量与字节 ※
RX errors 0 dropped 0 overruns 0 frame 0 #接收到的错误包、丢弃的数据包数、由于速度过快而丢失的数据包、发生frame错误而丢失的数据包数 ※
TX packets 100 #发送的正确的数据包数 ※
bytes 8116 (7.9 KiB)#发送的数据量、字节 ※
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #发送时产生错误的数据包数、丢弃的数据包数、由于速度过快而丢失的数据包数、发生carrier错误而丢失的数据包数、冲突信息包的数目 ※

#只查看指定的网卡
[root@localhost ~]# ifconfig ens32


lo: 本地回环网卡,不是物理网卡,通过软件虚拟出来的一个网卡,127.0.0.1,用于测试本机的联通性
[root@localhost ~]# ping 127.0.0.1

virbr0: 虚拟化的网络接口,通过软件技术虚拟出来的一个网卡,192.168.122.1,KVM虚拟化技术的时候
```

#### 查看主机名及修改主机名

- /etc/hostname文件用于存放主机名

- hostname 命令用于显示和设置主机名

- 命令格式:hostname [新名称]

```shell
#查看主机名
[root@localhost ~]# hostname
localhost.localdomain

#查看主机名配置文件
[root@localhost ~]# cat /etc/hostname
localhost.localdomain

#临时修改主机名(立刻生效,服务器重启以后失效)
[root@localhost ~]# hostname test
[root@localhost ~]# hostname
test

#exit/loguot登出系统
[root@localhost ~]# exit
[c:\~]$ ssh 192.168.0.50
[root@test ~]#

[root@test ~]# hostname fhsd.jhglshdjkghjkdfhgkjhgdsahgjklhdsfjghsdhgjlhsd
[root@test ~]# logout

[root@fhsd ~]# hostname sdhjghsdfjkhgkjdfshkgljhsdjfhgjksdhgjkhsdjgjkl
[root@fhsd ~]# exit

#命令行永久修改主机名(立刻生效,不需要重启系统)
[root@localhost ~]# hostnamectl set-hostname test
[root@localhost ~]# exit
```

#### vi/vim文本编辑器

- Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性

- vi/vim 共分为三种模式:命令模式、输入模式、底线命令模式(末行模式)

- 命令模式:刚刚启动 vi/vim,便进入了命令模式

- 输入模式:在命令模式下按 a/i/o 就进入了输入模式

- ESC,退出输入模式,切换到命令模式

- 底线命令模式:在命令模式下按下:(英文冒号)就进入了底线命令模式

- 命令格式:vim 文件名
- 若目标文件不存在,则新创建文件并编辑
- 若目标文件以存在,则打开文件并编辑

- 命令模式:刚刚启动 vi/vim,便进入了命令模式
- i 切换到输入模式,在当前光标所在字符前插入
- a 切换到输入模式,在当前光标所在字符后插入
- o 切换到输入模式,在当前光标所在行下插入新行
- : 切换到底线命令模式,以在最底一行输入命令
- x 在命令模式下删除当前光标所在的单字符
- dd 删除一整行内容,配合数字可删除指定范围内的行
- C 删除当前光标及光标后所有内容并进入输入模式
- u 恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止
- $ 将光标移动至行尾
- 0(零) 将光标移动至行首
- gg 跳转至文件第一行
- G 跳转至文件最后一行
- yy 复制当前行,配合数字可以同时复制多行
- p 粘贴当前光标所在行下
- /关键字 搜索文件内关键字,n从上向下快速定位关键字,N从下向上快速定位关键字

- 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出不保存
- :wq! 强制保存并退出
- :set nu 以行号形式显示文件内容
- :set nonu 取消行号显示
- :行号 快速跳转到指定行
- :r 读入另一个文件的数据 , 文件内容填加到光标的下一行
- :%s 替换文件内容,g替换全文,默认只替换每一行匹配到的第一个关键字
- :nohl 取消高亮显示

```shell
[root@test ~]# vim /etc/services
```

#### 修改网卡IP地址

- 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
- ifconfig #用于显示和设置网卡的参数
- systemctl restart network #重启网络
- ifup 网卡名 #启动该网卡设备
- ifdown 网卡名 #禁用该网卡设备

```shell
#修改IP地址
[root@test ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
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="ens32"
UUID="16085f4c-f690-4058-b29e-d55c73387026"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.0.60" #修改IP地址
PREFIX="24"
GATEWAY="192.168.0.254"
DNS1="114.114.114.114"
IPV6_PRIVACY="no"
~
#重启网络(IP地址发生改变,当前终端会断开)
[root@test ~]# systemctl restart network
[c:\~]$ ssh 192.168.0.60

#关闭网卡并激活网卡
[root@localhost ~]# ifdown ens32;ifup ens32

#查看所有网卡信息
[root@test ~]# ip a
```

- 使用命令修改网卡IP地址

nmcli connection modify 网卡名 ipv4.method manual ipv4.addresses Ip地址/掩码 connection.autoconnect yes

解释:

nmcli connection modify(修改)

网卡名 ipv4.method(配置ipv4地址方法)

manual (手动配置)

ipv4.addresses(ipv4地址)

Ip地址/掩码 connection.autoconnect yes(开机自动连接)

- 激活网卡:nmcli connection up 网卡名
- 关闭网卡:nmcli connection down 网卡名
- 重启网卡:nmcli connection reload 网卡名

```shell
#使用命令修改网卡IPV地址
[root@test ~]# nmcli connection modify ens32 ipv4.method manual ipv4.addresses 192.168.0.50/24 connection.autoconnect yes

#激活网卡
[root@test ~]# nmcli connection up ens32
[c:\~]$ ssh 192.168.0.50
```

#### host命令

- host用于将一个域名解析到一个IP地址

```shell
[root@test ~]# host www.baidu.com
www.baidu.com has address 110.242.68.3
www.baidu.com has address 110.242.68.4
www.baidu.com is an alias for www.a.shifen.com.
www.baidu.com is an alias for www.a.shifen.com.
```

#### nslookup命令

- nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题

```shell
[root@test ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53

Non-authoritative answer:
Name: www.baidu.com
Address: 110.242.68.4
Name: www.baidu.com
Address: 110.242.68.3
```

#### alias别名管理

- alias命令用于设置命令别名,用户可以使用alias自定义命令别名来简化命令的复杂度

- .bashrc 文件存放命令别名

- 命令格式:aliasi [别名]=[命令] #注意事项:等号(=)前后不能有空格

- unalias 别名 #取消别名

```shell
#定义别名
[root@test ~]# alias lsnet='ls /etc/sysconfig/network-scripts/'
[root@test ~]# lsnet
[root@test ~]# alias myls='ls -ldh'
[root@test ~]# myls /opt

#查看当前系统可用命令别名
[root@test ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias lsnet='ls /etc/sysconfig/network-scripts/'
alias mv='mv -i'
alias myls='ls -ldh'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

#两条命令效果相同
[root@test ~]# ls -l hello
-rw-r--r--. 1 root root 426 3月 28 15:00 hello
[root@test ~]# ll hello
-rw-r--r--. 1 root root 426 3月 28 15:00 hello

[root@test ~]# which ls
alias ls='ls --color=auto'
/usr/sbin/ls
[root@test ~]# /usr/sbin/ls
[root@test ~]# ls

#取消本次命令的别名功能“\”
[root@test ~]# \ls

#取消命令别名
[root@test ~]# unalias myls
[root@test ~]# myls
bash: myls: 未找到命令...

#定义别名不要跟系统命令发生冲突
[root@test ~]# alias ls=hostname
[root@test ~]# ls
test

#取消命令别名
[root@test ~]# unalias ls
[root@test ~]# alias

#重新定义别名
[root@test ~]# alias ls='ls --color=auto'
[root@test ~]# ls
```

#### history 管理历史

- history命令用于显示历史记录和执行过的命令,登录shell时会读取~./bash_history历史文件中记录下的命令,当退出或登出shell时,会自动保存到历史命令文件,该命令单独使用时,仅显示历史命令

- 历史命令默认只能存储1000条,可以通过/etc/profile文件修改

- 命令格式:history [-选项] [参数]

- 常用选项:

- -a 追加本次新执行的命令至历史命令文件中
- -d 删除历史命令中指定的命令
- -c 清空历史命令列表

- 快捷操作:

- !# 调用命令历史中第N条命令

- !string 调用命令历史中以strind开头的命令

- !! 重复执行上一条命令

```shell
#获取命令帮助
[root@test ~]# help history

#查看历史命令
[root@test ~]# history

#查看记录历史命令文件
[root@test ~]# cat .bash_history

#将历史命令同步至历史命令配置文件中
[root@test ~]# history -a
[root@test ~]# cat .bash_history

#删除历史命令中655条命令历史
[root@test ~]# history -d 655
[root@test ~]# history -d 637

#清空缓存中所有历史命令
[root@test ~]# history -c
[root@test ~]# history
1 history

#删除历史命令配置文件(该文件删除后系统会再次自动创建)
[root@test ~]# rm -rf .bash_history

#快速调用历史命令中第1条
[root@test ~]# !1
[root@test ~]# !3

#调用历史命令中以cat开头的命令(只调用最近使用的cat历史命令)
[root@test ~]# !cat

#重复执行上一条命令
[root@test ~]# !!

#历史命令默认只能记录1000条,可以通过/etc/profile文件修改
[root@test ~]# vim /etc/profile
...
46 HISTSIZE=100
```

#### date日期时间管理

- date命令用于显示或设置系统日期与时间

- 命令格式:date [-选项] [+格式符] #查看系统日期时间

- date [-选项] [MMDDhhmm[[CC]YY][.ss]] #设置日期时间

- 常用选项:-s 设置日期时间

- 格式符:

- +%Y 年份

- +%B 月份

- +%d 日

- +%H 时

- +%M 分

- +%S 秒

- +%F 年-月-日

- +%X 时:分:秒

```shell
#显示系统日期与时间
[root@test ~]# date
2021年 03月 28日 星期日 17:08:34 CST

#只显示年分
[root@test ~]# date +%Y
2021

#只显示月份
[root@test ~]# date +%B
三月

#只显示几号
[root@test ~]# date +%d
28

#只显示小时
[root@test ~]# date +%H
17

#只显示分钟
[root@test ~]# date +%M
10

#只显示秒
[root@test ~]# date +%S
24

#显示年月日
[root@test ~]# date +%F
2021-03-28

#显示时分秒
[root@test ~]# date +%X
17时12分10秒

#显示年月日时分秒
[root@test ~]# date +%F%X
2021-03-2817时12分39秒

#可以自定义分隔符“-”
[root@test ~]# date +%F-%X
2021-03-28-17时13分38秒

[root@test ~]# date +%F:%X
2021-03-28:17时13分55秒

#修改系统年月日
[root@test ~]# date -s 2020-03-28
2020年 03月 28日 星期六 00:00:00 CST

#修改系统时分秒
[root@test ~]# date -s 17:16:00
2020年 03月 28日 星期六 17:16:00 CST

#修改年月日时分秒
[root@test ~]# date -s '2021-03-28 17:17:00'
2021年 03月 28日 星期日 17:17:00 CST
#解释:
''单引号:引用整体,屏蔽特殊符号的功能
""双引号:引用整体,不会屏蔽特殊符号的功能

#Linux的两种时钟
系统时钟:内核通过CPU的工作频率去计算的时间
硬件时钟:

#显示硬件时间
[root@test ~]# clock
2021年03月28日 星期日 17时23分42秒 -0.945549 秒

#显示并同步系统与硬件时钟
[root@test ~]# man hwclock
-s:把系统时间设置成与硬件时间相同
-w:把硬件时间设置成与系统时间相同
[root@test ~]# hwclock -w
[root@test ~]# date
2021年 03月 28日 星期日 17:27:18 CST

#cal显示日历
[root@test ~]# cal
三月 2021
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

#显示指定的全年月份
[root@test ~]# cal 2021
```

#### wc统计命令

- wc 用于统计文件的字节数、行数,并将统计的结果输出到屏幕

- 命令格式:wc [-选项] 文件名

- 常用选项:

- -c #统计字节数
- -l #统计行数

```shell
[root@test ~]# wc /etc/passwd
43 87 2259 /etc/passwd
行数 单词 字节 文件名

#统计文件字节数
[root@test ~]# wc -c /etc/passwd
2259 /etc/passwd

#统计文件行数
[root@test ~]# wc -l /etc/passwd
43 /etc/passwd

[root@test ~]# wc -l /etc/fstab
11 /etc/fstab
```

#### 管道符

- 管道符“|”:将命令的输出结果交给另外一条命令作为参数继续处理

```shell
[root@test ~]# head -10 /etc/passwd |tail -5

[root@test ~]# head -10 /etc/passwd |tail -5 |wc -l
5

root@test ~]# cat -n /etc/passwd |head -10|tail -5
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin

[root@test ~]# ifconfig ens32 |head -2
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255
```

#### 重定向操作

- 重定向操作:将前面命令的输出结果,写入到其他的文本文件中

- 重定向的表示符号

- \> #重定向输出(覆盖)

- \>> #重定向输出(追加)

- < #输入重定向(覆盖)

- << **#**输入重定向(追加)

- \> 只收集正确的输出结果

- 2> 只收集错误的输出结果

- &> 正确错误都收集

```shell
#将命令的输出结果以覆盖的方式重定向到文件中,(>附带创建文件功能)
[root@test ~]# ifconfig ens32 |head -2 > /opt/ens32.bak
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.50 netmask 255.255.255.0 broadcast 192.168.0.255

[root@test ~]# cat /etc/hostname > /opt/ens32.bak
[root@test ~]# cat /opt/ens32.bak
test

[root@test ~]# free -h > /opt/free.bak
[root@test ~]# cat /opt/free.bak
total used free shared buff/cache available
Mem: 972M 414M 123M 15M 435M 336M
Swap: 2.0G 0B 2.0G

#将命令的输出结果以追加的方式重定向到文件中
[root@test ~]# cat /etc/hostname >> /opt/free.bak
[root@test ~]# cat /opt/free.bak

#“>”只收集正确的输出结果,不收集错误的输出结果
[root@test ~]# ls xxooooxx > /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录

#“2>”只收集错误的输出结果,不收集正确的输出结果
[root@test ~]# ls xxooooxx 2> /opt/xx.txt
[root@test ~]# cat /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录

#“2>”以覆盖的方式将输出结果重定向到文件中
[root@test ~]# cat /etc/abc 2> /opt/ens32.bak
[root@test ~]# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录

#“2>>”以追加的方式将输出结果重定向到文件中
[root@test ~]# ls /etc/abcd 2>> /opt/ens32.bak
[root@test ~]# cat /opt/ens32.bak
cat: /etc/abc: 没有那个文件或目录
ls: 无法访问/etc/abcd: 没有那个文件或目录

#“&>”以覆盖的方式将正确输出与错误输出重定向到文件中
[root@test ~]# lscat &> /opt/abc.txt
[root@test ~]# cat /opt/abc.txt

[root@test ~]# ls /etc/passwd &> /opt/pass.bak
[root@test ~]# cat /opt/pass.bak

[root@test ~]# free -h &> /opt/pass.bak
[root@test ~]# cat /opt/pass.bak

#“&>”以追加的方式将正确输出与错误输出重定向到文件中
[root@test ~]# ifconfig ens32 | head -2 &>> /opt/pass.bak
[root@test ~]# cat /opt/pass.bak

#以覆盖方式将正确输出与错误输出重定向到不同文件中
[root@test ~]# ll -d /root/ bcd >a.txt 2>b.txt
[root@test ~]# cat a.txt
dr-xr-x---. 24 root root 4096 3月 28 18:07 /root/
[root@test ~]# cat b.txt
ls: 无法访问bcd: 没有那个文件或目录
```

#### echo命令与sleep命令

- echo命令用于输出指定的字符串和变量

- 命令格式:echo [-选项] [参数]

```shell
[root@test ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@test ~]# echo xxoo
xxoo

[root@test ~]# echo abc
abc

[root@test ~]# echo 男人好难
男人好难

[root@test ~]# echo 123
123

[root@test ~]# cat /etc/hostname
test

[root@test ~]# echo localhost > /etc/hostname
[root@test ~]# cat /etc/hostname
localhost
```

- sleep命令可以用来将目前动作延迟一段时间

- 命令格式:sleep 时间

- 常用选项: s 秒 m 分钟 h 小时 d 日

```shell
[root@test ~]# sleep 3
```

#### 课后练习

1.查看当前系统内核名称及版本信息

uname -sr

2.请写系统存放cpu配置文件

/proc/cpuinfo

3.请写出查看cpu信息命令

cat /proc/cpuinfo

lscpu

4.请写出系统存放内存配置文件

/proc/meminfo

5.请写出查看内存命令(以人类易读方式显示)

free -h

6.请写出系统存放网卡配置文件路径

/etc/sysconfig/network-scripts/

7.请写出查看网卡配置信息命令

ifconfig(如果系统最小化安装,需要安装net-tools)

ip a (ip address)

8.请写出系统存放主机名配置文件

/etc/hostname

9.请写出查看主机名命令

cat /etc/hostname

hostname

10.将主机名修改为student(永久修改)

hostnamectl set-hostname student

vim /etc/hostname

echo student > /etc/hostname

11.请写出vim的三种模式

命令模式

输入模式

底线命令模式(末行模式)

12.将/etc/passwd文件复制到/opt目录,使用vim打开文件并显示行号

cp /etc/passwd /opt

vim /opt/passwd

:set nu

13.使用vim在/opt/passwd文件中搜索包含root关键字的行

/root

14.使用vim在/opt/passwd文件中将光标快速跳转到第10行,并将光标跳转到行尾

:10 $

15.使用vim在/opt/passwd文件中快速跳转到文件最后一行并删除,在将光标跳转到文件第一行,将刚刚删除的行复制到文件第二行

G dd p

16.使用vim将/etc/hostname文件内容读入到/opt/passwd文件最后一行下

:r /etc/hostname

17.使用vim在/opt/passwd文件中复制前5行内容并粘贴到文件最后一行下

5yy p

18.将本次vim的修改恢复至初始状态,并保存退出

u

:wq

19.将本机IP地址修改为192.168.0.100,并重启动网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens32

systemctl restart network

20.如何获取一个域名所对应的IP地址

host www.baidu.com

21.如何检测本机使用的DNS是否可用

nslookup www.jd.com

22.请将hostname命令设置别名为hn(临时设置)

alias hn=hostname

23.取消hostname命令别名

unalias hn

24.如何查看本机历史命令

history

25.执行命令历史中第20条命令

!20

26.删除命令历史中第5条命令

history -d 5

27.清空所有历史命令

history -c

rm -rf .bash_history

28.查看本机当前系统日期与时间

date

29.将本机日期时间设置与你当前时间一致

date -s '2021-04-10 14:32:00'

30.统计/etc/passwd文件行数,并将命令输出结果重定向至/opt/pass.bak文件中

wc -l /etc/passwd > /opt/pass.bak

31.显示/etc/passwd文件末尾10行的前5行内容,并将输出结果追加至/opt/pass.bak文件中

tail -10 /etc/passwd | head -5 > /opt/pass.bak

cat -n /etc/passwd | tail -10 | head -5 >> /opt/pass.bak

posted @   日光倾城-  阅读(500)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示