当前位置: 首页 > news >正文

vim命令及shell命令

目录

vim命令

vim三种工作模式

光标的跳转

复制粘贴

剪切删除

撤销回滚替换

翻页

其他

shell编程命令

判断用户的参数

可用的整数比较运算符

常见的字符串比较运算符

if条件测试语句

for条件循环语句


vim命令

vim三种工作模式

Vim编辑器中设置了三种模式: 命令模式、编辑模式、末行模式,每种模式分别又支持多种不同的命令快捷键,大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。

光标的跳转

Shift + g | G                    // 将光标跳转到文件最后一行

gg                                   // 将光标跳转到文件的第一行

Ngg                                // 将光标跳转到指定的行(N为阿拉伯数字)

Shift + 4 | $                    // 将光标跳转到当前所在行的行末

Shift + 6 | ^ | 0               // 将光标跳转到当前所在行的行首

复制粘贴

yy                                  // 复制光标所在行的整行内容

P(大写P)                  // 将复制的内容粘贴到光标所在行的上一行

p(小写p)                   // 将复制的内容粘贴到光标所在行的下一行

Nyy|yNy                       // 将光标所在行整行内容及下面N-1行内容复制 (N为阿拉伯数字)

剪切删除

dd                                // 将光标所在行一整行内容,剪切(删除)

Ndd | dNd                    // 将光标所在行及下面N-1行内容剪切(N为阿拉伯数字)

Shift + d | D                 // 将光标所在字符及后面整行内容剪切(删除)

x                                  // 删除当前光标所在字符

Shift + x | X                 // 将光标所在当前字符的前一个字符删除

d + Shift + g | dG        // 将光标所在行及后面所有行内容删除

撤销回滚替换

u                                 // 撤销上一次操作

Ctrl + r                        // 恢复上一次撤销的操作

r                                 // 替换光标当前所在的一个字符

Shift + r | R                // 从光标所在字符开始进行替换直到按ESC结束

翻页

Ctrl + b                      // 向前翻页

Ctrl + f                       // 向后翻页

其他

:命令               //执行该命令

:整数                //跳转到改行

:set nu                //显示行号

:set nonu                //不显示行号

?字符串                //在文本中从下到上搜索该字符串

/字符串                //在文本中从上到下搜索该字符串

shell编程命令

处理方式:交互式+批处理

echo $SHELL

/bin/bash

判断用户的参数

文件测试所用参数

文件测试所用的参数
运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行
  • && 逻辑与,当前面的命令执行成功后,才会执行后面的命令。返回 0 为真,else为假
  • ||    逻辑或,当前面的命令执行失败后,才会执行后面的命令。返回 0 为真,else为假
  • !  逻辑非,把条件测试中的结果取相反值

可用的整数比较运算符

可用的整数比较运算符
运算符作用

示例

-eq是否等于

liyanqiu@192 ~ % [10 -eq 10]  

zsh: bad pattern: [10

liyanqiu@192 ~ % [ 10 -eq 10 ]

liyanqiu@192 ~ % echo $?

0

-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

[root@192 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:            1638        1279          35          11         418         359
Swap:           2047         140        1907
[root@192 ~]# free -m |grep -i mem
Mem:            1638        1327          47           9         356         310
[root@192 ~]# free -m |grep -i mem |awk '{print $4}'   //-i忽略大小写
47
[root@192 ~]# FreeMem = `free -m |grep -i mem |awk '{print $4}'`。//FreeMem = 有空格导致报错,使用反引号``把命令执行的结果返回给FreeMem
bash: FreeMem: 未找到命令...
[root@192 ~]# FreeMem=`free -m |grep -i mem |awk '{print $4}'`
[root@192 ~]# echo $FreeMem 
44补充知识点:
\    \后面的一个变量变为单纯的字符串
''    转义其中所有的变量为字符串
""    保留变量属性,不进行转义处理
``    把其中的命令执行后,返回结果

查看内存是否小于1024 ,若小于则输出:mem is less

[root@192 ~]# [ $FreeMem -lt 1024 ] && echo "mem is less"
mem is less

常见的字符串比较运算符

常用的字符串比较运算符
运算符作用示例
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空判断String字符串是否为空:

if条件测试语句

单语句

---格式:

if 条件测试操作

then 命令序列1

fi

#需求:检查/medim/cdrom目录是否存在,若不存在则创建目录,存在则结束命令。[root@192 ~]# cat mkcdrom.sh 
#! /bin/bash
DIR=/medim/cdrom
if [ ! -e $DIR ]            #-e 目录等于,! -e 目录不等于,即不存在
then 
mkdir -p  $DIR            #递归创建目录/medim/cdrom
fi
[root@192 ~]# /bin/bash mkcdrom.sh 
[root@192 ~]# ls -l mkcdrom.sh 
-rw-r--r--. 1 root root 71 10月 31 22:35 mkcdrom.sh
[root@192 ~]# 

双语句

---格式:

if 条件测试操作

then 命令序列1

else 命令序列2

fi

[root@192 ~]# cat chkhost.sh 
#! /bin/bash
ping -c 3 -i 0.2  -W 0.5 8.8.8.8 >/dev/null        #-c指定ping的次数,-i指定ping间隔,-W 指定超时等候时间 ,>执行命令后的结果输出写入到/dev/null中
if [ $? -eq 0 ]        #如果ping不通,返回非零数值,ping的通返回0 ,-eq:判断是否等于0
then
echo "host 8.8.8.8 is online"
else
echo "host 8.8.8.8 is offline"
fi[root@192 ~]# /bin/bash chkhost.sh 
host 8.8.8.8 is online
[root@192 ~]# ping 8.8.8.8 -c 2
PING 8.8.8.8 (8.8.8.8) 56(84) 比特的数据。
64 比特,来自 8.8.8.8: icmp_seq=1 ttl=53 时间=38.4 毫秒
64 比特,来自 8.8.8.8: icmp_seq=2 ttl=53 时间=41.2 毫秒--- 8.8.8.8 ping 统计 ---
已发送 2 个包, 已接收 2 个包, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 38.442/39.826/41.211/1.384 ms
[root@192 ~]# 

多语句

---格式:

if 条件测试操作1

then 命令序列1

elif 条件测试操作2

then 命令序列2

else

        命令序列3

fi

#成绩(85-100],great ,(59-85],pass ,否则fail[root@192 ~]# cat chkscore.sh 
#! /bin/bash
read -p "please input your score (0-100):" GRADE
if [ $GRADE -ge 85 ]&&[ $GRADE -le 100 ]; 
thenecho "grate,very good!"
elif [ $GRADE -ge 59 ]&&[ $GRADE -le 85 ];
thenecho "pass,ok !"
elseecho "fail not ok !"
fi
[root@192 ~]# /bin/bash chkscore.sh 
please input your score (0-100):90
grate,very good!
[root@192 ~]# /bin/bash chkscore.sh 
please input your score (0-100):70
pass,ok !
[root@192 ~]# /bin/bash chkscore.sh 
please input your score (0-100):10
fail not ok !
[root@192 ~]# 

for条件循环语句

for 变量名 in 取值列表

do 

        命令序列

done


http://www.mrgr.cn/news/62998.html

相关文章:

  • 前端 常见开发工具使用
  • elcipse工具使用记录
  • 【论文阅读】ESRGAN
  • 安全日志记录的重要性
  • defer和async的区别
  • 嵌入式linux PPS校时方案
  • cdp(Chrome DevTools)检测分析
  • 基于MPC控制器的混合动力EMS能量管理系统simulink建模与仿真
  • 线程的状态及其查看
  • 入门 | Kafka数据使用vector消费到Loki中使用grafana展示
  • 【Canal 中间件】Canal使用原理与基本组件概述
  • 优雅的LUA数据记录方法-serpent序列化+LUA Table
  • 2023 年 Github 万圣节彩蛋
  • windows C#-类型系统(下)
  • NLP segment-01-聊一聊分词 AI 的基础
  • street gaussion 耗时分析
  • 数据结构作业day4
  • pyecharts地图类型
  • 暴力破解漏洞
  • node.js_npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1
  • [java][高级]FilterListenerAjax
  • 双瑞股份上会,业绩增速放缓,与部分供应商交易合理性不足
  • 使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(四) annaconda和pytorch
  • Unity DOTS
  • 防爆电机技术要点、选型,一文搞定!
  • 必应Bing国内搜索广告代理商,必应广告如何开户投放?