Linux就该这么学--VIM编辑器

4.1 Vim文本编辑器

命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

输入模式:正常的文本录入。

末行模式:保存或退出文档,以及设置编辑环境。

第4章 Vim编辑器与Shell命令脚本。第4章 Vim编辑器与Shell命令脚本。

[root@myserver ~]# vim new.txt
[root@myserver ~]# cat new.txt 
This is a test 

Vim 有三种可视模式。

使用 Vim 编辑文本时,可视化模式对于识别要操作的文本块非常有用.Vim 的可视模式有三个模式:字符、行和块。进入每种模式的按键是:

字符模式:  v (小写)

 行模式:  V (大写)

 块模式:  Ctrl+v

命令	用途
Esc	退回到普通模式
v	激活面向字符的可视模式
V	激活面向行的可视模式
Ctrl + v	激活面向列块的可视模式
gv	重选上次的高亮选区
o	切换到高亮选区的活动端

(1) 按下  v 键进入可视化字符模式。单词  VISUAL 将出现在屏幕底部。 使用箭头来高亮显示所需的文本。你可以使用其他导航命令,例如  w 高亮显示至下一个单词的开头, $ 来包含该行的其余部分。在文本高亮显示后,按下  d 删除文本。如果你删除得太多或不够,按下  u 撤销并重新开始。 将光标移动到新位置,然后按  p 粘贴文本。改你还可以高亮显示要替换的一段文本。

w选中部分单词,然后d,然后u撤销   效果如图: 

(2) 将光标放在要操作的文本的第一行或最后一行的任何位置。按下 V 进入行模式。单词  VISUAL LINE 将出现在屏幕底部。使用导航命令(上下方向键)高亮显示多行文本。高亮显示所需文本后,使用命令来操作它。按下  d 删除,然后将光标移动到新位置,按下  p 粘贴文本,结果如下图

 

(3)按下  Ctrl+v 进入可视化块模式。单词  VISUAL BLOCK 将出现在屏幕底部。敲击键盘上下键将要注释的行先先高亮显示,再点击大I 再注释 再按esc键,效果如下图:

 

 4.1.2 配置主机名称

第1步:使用Vim编辑器修改“/etc/hostname”主机名称文件。

第2步:把原始主机名称删除后追加“linuxprobe.com”。注意,使用Vim编辑器修改主机名称文件后,要在末行模式下执行:wq!命令才能保存并退出文档。

第3步:保存并退出文档,然后使用hostname命令检查是否修改成功

或者hostnamectl set-hostname  linuxprobe

[root@myserver c]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.88 myserver
[root@myserver c]# 

4.1.3 配置网卡信息

第1步:首先切换到/etc/sysconfig/network-scripts目录中(存放着网卡的配置文件)。

第2步:使用Vim编辑器修改网卡文件ifcfg-eno160,逐项写入下面的配置参数并保存退出。由于每台设备的硬件及架构是不一样的,因此请读者使用ifconfig命令自行确认各自网卡的默认名称

设备类型:TYPE=Ethernet

地址分配模式:BOOTPROTO=static

网卡名称:NAME=eno160

是否启动:ONBOOT=yes

IP地址:IPADDR=192.168.1.88

子网掩码:NETMASK=255.255.255.0

网关地址:GATEWAY=192.168.1.2

DNS地址:DNS1=114.114.114.114

第3步:重启网络服务并测试网络是否联通

[root@myserver c]# nmcli connection  reload
[root@myserver c]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=5 ttl=128 time=372 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=6 ttl=128 time=371 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=7 ttl=128 time=371 ms
^C
--- www.wshifen.com ping statistics ---
7 packets transmitted, 3 received, 57.1429% packet loss, time 128ms
rtt min/avg/max/mdev = 371.288/371.707/372.365/0.685 ms
[root@myserver c]# 

4.1.4 配置Yum仓库

第1步:进入到/etc/yum.repos.d/目录中(因为该目录存放着Yum软件仓库的配置文件)。

第2步:使用Vim编辑器创建一个名为rhel7.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面加粗的配置参数并保存退出(不要写后面的中文注释)

第3步:按配置参数的路径挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中。

第4步:使用“yum install httpd -y”命令检查Yum软件仓库是否已经可用。

配置本地yum源

[root@myserver c]# cat /etc/yum.repos.d/redhat.repo 
#
# Certificate-Based Repositories
# Managed by (rhsm) subscription-manager
#
# *** This file is auto-generated.  Changes made here will be over-written. ***
# *** Use "subscription-manager repo-override --help" if you wish to make changes. ***
#
# If this file is empty and this system is subscribed consider
# a "yum repolist" to refresh available repos
#
[localREPO]
name=localhost8
baseurl=file:///media/BaseOS
enable=1
gpgcheck=0

[localREPO_APP]
name=localhost8_app
baseurl=file:///media/AppStream
enable=1
gpgcheck=0
[root@myserver c]# 

测试yum源的有效性

[root@myserver c]# yum install -y httpd
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Extra Packages for Enterprise Linux Modular 8 - x86_64                                                                      1.4 kB/s | 9.1 kB     00:06    
Extra Packages for Enterprise Linux 8 - x86_64                                                                              4.3 kB/s | 7.6 kB     00:01    
localhost8                                                                                                                  2.7 MB/s | 2.7 kB     00:00    
localhost8_app                                                                                                              3.1 MB/s | 3.2 kB     00:00    
Dependencies resolved.
============================================================================================================================================================
 Package                              Arch                     Version                                                Repository                       Size
============================================================================================================================================================
Installing:
 httpd                                x86_64                   2.4.37-10.module+el8+2764+7127e69e                     localREPO_APP                   1.4 M
Installing dependencies:
 redhat-logos-httpd                   noarch                   80.7-1.el8                                             localREPO                        25 k
 apr                                  x86_64                   1.6.3-9.el8                                            localREPO_APP                   125 k
 apr-util                             x86_64                   1.6.1-6.el8                                            localREPO_APP                   105 k
 httpd-filesystem                     noarch                   2.4.37-10.module+el8+2764+7127e69e                     localREPO_APP                    34 k
 httpd-tools                          x86_64                   2.4.37-10.module+el8+2764+7127e69e                     localREPO_APP                   101 k
 mod_http2                            x86_64                   1.11.3-1.module+el8+2443+605475b7                      localREPO_APP                   156 k
Installing weak dependencies:
 apr-util-bdb                         x86_64                   1.6.1-6.el8                                            localREPO_APP                    25 k
 apr-util-openssl                     x86_64                   1.6.1-6.el8                                            localREPO_APP                    27 k
Enabling module streams:
 httpd                                                         2.4                                                                                         

Transaction Summary
============================================================================================================================================================
Install  9 Packages

Total size: 2.0 M
Installed size: 5.4 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                    1/1 
  Installing       : apr-1.6.3-9.el8.x86_64                                                                                                             1/9 
  Running scriptlet: apr-1.6.3-9.el8.x86_64                                                                                                             1/9 
  Installing       : apr-util-bdb-1.6.1-6.el8.x86_64                                                                                                    2/9 
  Installing       : apr-util-openssl-1.6.1-6.el8.x86_64                                                                                                3/9 
  Installing       : apr-util-1.6.1-6.el8.x86_64                                                                                                        4/9 
  Running scriptlet: apr-util-1.6.1-6.el8.x86_64                                                                                                        4/9 
  Installing       : httpd-tools-2.4.37-10.module+el8+2764+7127e69e.x86_64                                                                              5/9 
  Running scriptlet: httpd-filesystem-2.4.37-10.module+el8+2764+7127e69e.noarch                                                                         6/9 
  Installing       : httpd-filesystem-2.4.37-10.module+el8+2764+7127e69e.noarch                                                                         6/9 
  Installing       : redhat-logos-httpd-80.7-1.el8.noarch                                                                                               7/9 
  Installing       : mod_http2-1.11.3-1.module+el8+2443+605475b7.x86_64                                                                                 8/9 
  Installing       : httpd-2.4.37-10.module+el8+2764+7127e69e.x86_64                                                                                    9/9 
  Running scriptlet: httpd-2.4.37-10.module+el8+2764+7127e69e.x86_64                                                                                    9/9 
  Verifying        : redhat-logos-httpd-80.7-1.el8.noarch                                                                                               1/9 
  Verifying        : apr-1.6.3-9.el8.x86_64                                                                                                             2/9 
  Verifying        : apr-util-1.6.1-6.el8.x86_64                                                                                                        3/9 
  Verifying        : apr-util-bdb-1.6.1-6.el8.x86_64                                                                                                    4/9 
  Verifying        : apr-util-openssl-1.6.1-6.el8.x86_64                                                                                                5/9 
  Verifying        : httpd-2.4.37-10.module+el8+2764+7127e69e.x86_64                                                                                    6/9 
  Verifying        : httpd-filesystem-2.4.37-10.module+el8+2764+7127e69e.noarch                                                                         7/9 
  Verifying        : httpd-tools-2.4.37-10.module+el8+2764+7127e69e.x86_64                                                                              8/9 
  Verifying        : mod_http2-1.11.3-1.module+el8+2443+605475b7.x86_64                                                                                 9/9 
Installed products updated.

Installed:
  httpd-2.4.37-10.module+el8+2764+7127e69e.x86_64                                 apr-util-bdb-1.6.1-6.el8.x86_64                                           
  apr-util-openssl-1.6.1-6.el8.x86_64                                             redhat-logos-httpd-80.7-1.el8.noarch                                      
  apr-1.6.3-9.el8.x86_64                                                          apr-util-1.6.1-6.el8.x86_64                                               
  httpd-filesystem-2.4.37-10.module+el8+2764+7127e69e.noarch                      httpd-tools-2.4.37-10.module+el8+2764+7127e69e.x86_64                     
  mod_http2-1.11.3-1.module+el8+2443+605475b7.x86_64                             

Complete!
[root@myserver c]# 

4.2 Shell脚本

交互式(Interactive):用户每输入一条命令就立即执行。

批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令

 如果想查看当前htop信息利用命令执行如下(htop利用epel-release源安装)

接收用户的参数

[root@myserver c]# cat example.sh 
#!/bin/bash
#output message
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1,第5个为$5。"
[root@myserver c]# sh example.sh 1 2 3 4 5 
当前脚本名称为example.sh
总共有5个参数,分别是1 2 3 4 5。
第1个参数为1,第5个为5。
[root@myserver c]# 

判断用户的参数

[root@myserver c]# [ -d /etc/fstab ]
[root@myserver c]# echo $?
1
[root@myserver c]# [ -f /etc/fstab ]
[root@myserver c]# echo $?
0
[root@myserver c]# [ -e /dev/cdrom ] && echo "Exist"
Exist
[root@myserver c]# [ $USER = docker ] || echo "user"
user
[root@myserver c]# 

整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。因此一定要使用规范的整数比较运算符来进行操作

[root@myserver c]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1966        1095         223           8         646         683
Swap:          2095         261        1834
[root@myserver c]# free -m | grep Mem:
Mem:           1966        1095         223           8         646         683
[root@myserver c]#  free -m | grep Mem: | awk '{print $4}'
223
[root@myserver c]# FreeMem=`free -m | grep Mem: | awk '{print $4}'`
[root@myserver c]#  echo $FreeMem 
223
[root@myserver c]#  [ $FreeMem -lt 1024 ] && echo "Insufficient Memory"
Insufficient Memory
[root@myserver c]# 

 

4.3 流程控制语句

if条件测试语句

if条件测试语句可以让脚本根据实际情况自动执行相应的命令。从技术角度来讲,if语句分为单分支结构、双分支结构、多分支结构;其复杂度随着灵活度一起逐级上升。

if条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。单分支的if语句属于最简单的一种条件判断结构,语法格式如图4-17所示。
第4章 Vim编辑器与Shell命令脚本。第4章 Vim编辑器与Shell命令脚本。

脚本主要使用ping命令来测试与对方主机的网络联通性,需要通过-c参数来规定尝试的次数,并使用-i参数定义每个数据包的发送间隔,以及使用-W参数定义等待超时时间

 在Linux系统中,read是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量,-p参数用于向用户显示一定的提示信息。在下面的脚本示例中,只有当用户输入的分数大于等于85分且小于等于100分,才输出Excellent字样;若分数不满足该条件(即匹配不成功),则继续判断分数是否大于等于70分且小于等于84分,如果是,则输出Pass字样;若两次都落空(即两次的匹配操作都失败了),则输出Fail字样

[root@myserver ~]# cat chkscore.sh 
#!/bin/bash
read -p "Enter your score(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
	echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
	echo "$GRADE is Pass"
else
	echo "$GRADE is Fail" 
fi
[root@myserver ~]# sh chkscore.sh
Enter your score(0-100):80
80 is Pass
[root@myserver ~]# sh chkscore.sh
Enter your score(0-100):60
60 is Fail
[root@myserver ~]# sh chkscore.sh
Enter your score(0-100):70
70 is Pass
[root@myserver ~]# 

猜你喜欢

转载自blog.csdn.net/yanghuadong_1992/article/details/112443896
今日推荐