vim 文本编辑器、shell脚本:

vim 文本编辑器:
    三种主要模式:
        命令模式(默认):移动光标,剪切/粘贴文本
        插入(编辑)模式:修改文本 输入i 进入插入模式
        扩展模式:保存,退出等
    
    快键   
        i: insert, 在光标所在处输入
        I:在当前光标所在行的行首输入
        a: append, 在光标所在处后面输入
        A:在当前光标所在行的行尾输入
        o: 在当前光标所在行的下方打开一个新行
        O:在当前光标所在行的上方打开一个新行
 
        Ctrl+f  向文件尾部翻一屏
        ctrl+b  向文件首部翻一屏
        ctrl+d  向文件尾部翻半屏
        ctrl+u  向文件首部翻半屏
        
        :q 退出
        :q! 强制退出,丢弃做出的修改
        :wq保存退出
        :x 保存退出
    命令模式
        ZZ: 保存退出
        ZQ:不保存退出
        
        w写(存)磁盘文件
        wq写入并退出
        x 写入并退出
        q 退出
        q!不存盘退出,即使更改都将丢失
        r filename 读文件内容到当前文件中
        w filename 将当前文件内容写入另一个文件
    查找并替换
        s: 在扩展模式下完成查找替换操作
        格式:s/要查找的内容/替换为的内容/修饰符
        要查找的内容:可使用模式
        替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
        修饰符:
         i: 忽略大小写
         g: 全局替换;默认情况下,每一行只替换第一次出现;
        查找替换中的分隔符/可替换为其它字符,例如
            [email protected]/[email protected]/[email protected]
            s#/boot#/#i
        
    扩展模式:地址定界
        .: 当前行
        $: 最后一行
        .,$-1 当前行到倒数第二行
        %:全文, 相当于1,$
        
        定制vim的工作特性
            配置文件:永久有效
            全局:/etc/vimrc
            个人:~/.vimrc
            扩展模式:当前vim进
    
bash脚本编程:
    
    bash的配置文件
        全局配置:
            /etc/profile
            /etc/profiel.d/*.sh
            /etc/bashrc
        个人配置:
            ~/.bash_profile
            ~/.bashrc
            
        shell 登录两种方式:
            交互式登录:
                (1)直接通过终端输入帐号密码登录
                (2)使用 su - chen 切换用户
                执行顺序:
                    /etc/profile -> /etc/profile.d/*.sh -> ~/.bashrc_profile -> ~/.bashrc -> /etc/bashrc
                
                非交互式登录:
                    (1)su chen
                    (2)图形界面打开的终端
                    (3)执行脚本
                    执行顺序:
                        ~/.bashrc -> /etc/bashrc-> /etc/profile.d/*.sh
                        
                profile类
                    按功能划分,存在两类:
                        profile:为交互式登录的shell提供配置
                            全局:/etc/profile, /etc/profile.d/*.sh
                            个人:~/.bash_profile
                        功能:
                            (1)用于定义环境变量
                            (2)运行命令或脚本
                            
                        bashrc类:
                            bashrc类:为非交互式和交互式登录的shell提供配置
                            全局:/etc/bashrc
                            个人:~/.bashrc
                            功用:
                            (1)定义命令别名和函数
                            (2)定义本地变量
                            
                        修改profile和bashrc文件后需生效
                            两种方法:
                                1、重新启动shell进程
                                2 . 或source
                                列:
                                .~/.bashrc
                        BASH 退出任务
                            保存在~/.bash_logout文件中(用户)
                            在退出登录shell时运行
                            用于
                                创建自动备份
                                删除临时文件
                                
    编程基础:
        程序:数据+指令
        程序编程风格:
            过程式:以指令为中心,数据服务于指令
            对象式:以数据为中心,指令服务于数据
        shell程序:提供了编程能力,解释执行
            
        编程逻辑处理方式:
            顺序执行
            循环执行
            选择执行
                
    shell 编程:过程式、解释执行
        数据存储:变量、数组
        表达式:a + b
        语句:if
                
    shell格式要求:首行shebang机制
        #!/bin/bash
        #!/usr/bin/python
        #!/usr/bin/perl
                
    shell 脚本的用途:
        自动化常用命令
        执行系统管理和故障
        创建简单的应用程序
        处理文本或文本
                
    创建shell脚本:
        第一步:使用文本编辑器来创建文本文件
        第一行必须包括shell声明序列:#!
            #!/bin/bash
            添加注释
            注释以#开头
                    
        第二步:运行脚本
            给予执行权限,在命令行上指定脚本的绝对或相对路径
            直接运行解释器,将脚本作为解释程序的参数运行
        示列:
            #!/bin/bash     
            #author chen   
            #Versions 1.0
            echo "The host of time: $(date)"   显示当前的时间
            echo "The current directory: $(pwd)"    显示当前所在的目录
        
        脚本调试
            bash -n #### :检查脚本中的语法中的错误
                建议 :每次写完脚本都检测一下
            
            bash -x ####:给脚本添加x执行权限
            
    变量:命令的内存空间
        
        变量的类型:
            作用:
                1、数据存储格式
                2、参与的运算
                3、表示的数目范围
            类型:
                字符
                数值:整型、浮点型
                
            强类型:
                定义变量时必须指定类型、参与运算必须符合类型
                要求:调用未声明变量会产生错误
            弱类型:
                无须指定类型,默认均为字符型;参与运算会自动进行隐式类型转换;变量无须事先定义可直接调用
                
            变量命名法则:
                1、不能使程序中的保留字
                2、只能使用数字、字母及下划线,且不能以数字开头
                3、看到名字知道意思
                4、统一命名规范
                
        bash变量的种类:
            根据变量的生效范围等标准
                本地变量:生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效
                    变量赋值:name=‘value’
                    可以使用引用value:
                        (1)可以是直接字串:name=‘root’
                        (2)变量引用:name="$USER"
                        (3)命令引用:name=`命令`,name=$(命令)
                    变量引用:${name},$name
                        "" 弱引用,其中的变量引用会被替换为变量值
                        ‘‘ 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
                    显示已定义的所有变量:set
                    删除变量:unset name
                    
                    
                    
                    练习:
                1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。
                    vim systeminfo.sh
                    #!/bin/bash
                    #
                    echo "The current host name: $(hostname)"
                    echo "The IPV4: `ifconfig eno16777736 | head -2 | tail -1 | tr ‘ ‘ ‘#‘ | cut -d# -f 10`"
                    echo "The Operating system: `cat /etc/centos-release`"
                    echo "Linux Versions: `uname -r`"
                    echo "CPU model: `cat /proc/cpuinfo | grep "model name" | tail -1 | cut -d: -f2`"
                    echo "memory Size: `cat /proc/meminfo | grep "MemTotal" | cut -d: -f2`"
                    echo "Disk size: `fdisk -l  /dev/sda | head -n 2 | tail -1 | cut -d: -f2`"
                    执行结果:
                    The current host name: localhost.localdomain
                    The IPV4: 192.168.148.121
                    The Operating system: CentOS Linux release 7.2.1511 (Core)
                    Linux Versions: 3.10.0-327.el7.x86_64
                    CPU model:  Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
                    memory Size:         1868692 kB
                    Disk size:  214.7 GB, 214748364800 bytes, 419430400 sectors
               
                2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
                    #!/bin/bash
                    #
                    cp -a /etc/ /root/etc`date +%F`、
                    显示结果:
                    etc2016-12-24
                    
                3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
                    #!/bin/bash
                    #
                    echo "According to maximum utilization rate of hard disk partition: `df -h | grep "sda" | tr -s ‘ ‘ | tr -s ‘ ‘ ‘#‘ | cut -d# -f5 |sort -n | tail -1`"                显示结果:
                    [[email protected] ~]# bash bin/disk.sh
                    According to maximum utilization rate of hard disk partition: 5%
              
                4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
                    #!/bin/bash
                    #
                    echo "Connect the unit of IPV4 addresses to display:"
                    netstat -tnp | tail -n +3 | tr -s ‘ ‘ ‘:‘ | cut -d: -f6 | uniq -c | sort -rn
                    显示结果:
                    [[email protected] ~]# bash /bin/links.sh
                    Connect the unit of IPV4 addresses to display:
                      2 192.168.148.123
                        
                
                环境变量:生效范围为当前shell进程及其子进程
                    变量声明、赋值:
                        export name=VALUE
                        declare -x name=VALUE
                    变量引用:$name,${name}
                    
                    显示所有环境变量:
                        exprot
                        env
                        printenv
                    删除:unset name
                    
                    bash内建的环境变量:
                         PATH、SHELL、USER、UID、HISTSIZE、HOME、PWD、OLDPWD、HISTFILE、PS1
                        
                
                局部变量:生效范围为当前shell进程中某代码片段(通常指函数)
                
                位置变量:$1,$2. . .来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
                    $1,$2,. . .:对应第1、第2等参数。shift[n]换位置
                    $0:命令本身
                    $*:传递给脚本的所有参数,全部参数合为一个字符串
                    [email protected]:传递给脚本的所有参数,每个参数为独立字符串
                    $#:传递给脚本的参数的个数
                        [email protected] $* 只在被双引号包起来的时候才会有差异
                        
                只读变量:只能声时,但不能修改和删除
                    readonly name
                    示列:
                        PS=3.445   定义一个变量
                        [[email protected] ~]# readonly PS  确定 之后就无法修改
                        [[email protected] ~]# echo $PS
                        3.445
                        [[email protected] ~]# PS=3.11  注意:只有脚本运行玩、退出终端exit 才可以修改定义
                        -bash: PS: readonly variable
                    
                    declare -r name
                    
                
            算术运算:
                bash中的算术运算:help、let
                    +、-、/、%取模(取余)、**(乘方)
                    实现算术运算:
                    (1)let var=算术表达式
                        let v3=v1+v2
                        [[email protected] ~]# echo $v3
                                            30
                    
                    (2)var=$[算术表达式]
                        v4=$[v1+v2]
                        [[email protected] ~]# echo $v4
                                            30
                    
                    (3)var=$((算术表达式))
                        v5=$((v1+v2))
                        [[email protected] ~]# echo $v5
                                            30
                    
                    (4)var=$(expr arg1 arg2 arg3. . .)
                        v5=$(expr 1 + 2)
                        [[email protected] ~]# echo $v5        
                                            3
                    
                    (5)declare -i var=数值
                        declare -i v1=100
                        [[email protected] ~]# declare -i v2=100
                        [[email protected] ~]# declare -i v3=v1+v2
                        [[email protected] ~]# echo $v3
                                            200
                    
                    (6)echo `算术表达式` | bc
                    
                        
                乘法符号有些场景中需要转义,如*
                bash有内建的随机数生成器:$RANDOM(1-32767)
                    echo $[$RANDOM%50]:0-49之间随机数
                    
            赋值
                增强型赋值:
                    +=、==、*=、/=、%=
                let varOPERvalue
                    例如:let count+=3
                        自动3后字赋值
               
            练习:
                练习1:写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
                    #!/bin/bash
                    #
                    ID1=$(head -n 10 /etc/passwd | grep "operator" | cut -d: -f3)
                    echo "ID1=$ID1"
                    ID2=$(head -n 20 /etc/passwd | grep "tss" | cut -d: -f3)
                    echo "ID2=$ID2"
                    ID=$[ID1+ID2]
                    echo "Total:$ID"
                    显示结果:
                    [[email protected] bin]# bash sumid.sh
                    ID1=11
                    ID2=59
                    Total:70
                
                练习2:写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
                    #!/bin/bash
                    #
                    K1=`grep -c "^[[:space:]]*$" $1`
                    K2=`grep -c "^[[:space:]]*$" $2`
                    K3=$[K1+K2]
                    echo $K3 | bc
                    显示结果:
                    bash sumspace.sh  /etc/profile  /etc/fstab
                    12
                
                练习3:写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
                    #!/bin/bash
                    C1=`ls /etc/ | wc -w`
                    C2=`ls /var/ | wc -w`
                    C3=`ls /usr/ | wc -w`
                    C=$[C1+C2+C3]
                    echo $C
                    显示结果:
                    [[email protected] bin]# bash sumfile.sh
                    295
               
明天继续脚步发脚本内容

时间: 2024-12-31 04:29:33

vim 文本编辑器、shell脚本:的相关文章

linux中vim文本编辑器

vim文本编辑器 1:vim文本编辑器是什么? Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件.  (来自百度百科) 2:vim 编辑文件 vim 文件名    #保存后即可建立一个文件 3:vim 的四种模式 (1)正常模式:主要用来浏览和修改文本内容的,一般的,打开Vim都是正常模式.在任何模式下,只要按下 Esc 键就可以返回正常模式. (2)插入模式:插入模式则用来向文本中添加内容的 -------------- gg

Linux命令行下的vim文本编辑器

Linux命令行下的vim文本编辑器 vim文本编辑器是一个非常强大的工具,可以做很多事情,比如新建文件,打开文件,编辑文件,保存文件,同时打开多个文件等.下面总结一些常用的vim 编辑器命令: 1. 进入vim编辑器的方式:(进入vim编辑器时,默认的模式是“命令模式”) 在终端输入 vi:进入vim编辑器 vi filename:进入vim编辑器,新建了一个filename文件,光标定位到文件的第一行 vi在工作时,会在当前目录下创建.swp的临时文件,该临时文件也称为交换文件 当vi结束对

vim 文本编辑器

Linux VIM文本编辑器 vim概述 Linux提供了一系列功能强大的编辑器,如vi和ASCIItext,Unicode 是linux系统的第一个全屏幕交互式编辑器.vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface"的缩写,vim是vi IMproved(增强版的vi).在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim.vim有3种工作模式,分别是命令行模式.插入模式.底行模式.  命令行模式: 最初进入的一

Linux命令-vim文本编辑器|文件查找

一.vim文本编辑器 vi      vim      emacs   gedit ---------------------------------------------------------------------------------------- [[email protected] Desktop]# whereis vi vi: /bin/vi /usr/share/man/man1p/vi.1p.gz/usr/share/man/man1/vi.1.gz [[email pr

VIM 文本编辑器常用命令

VIM文本编辑器常用命令 简单介绍 vi 和 vim是Unix / Linux上最常用的文本编辑器而且功能非常强,vim 是vi的升级版.Vi 类似于windows中的记事本,而vim类似于windows中的EmEditor或EditPlus等. 1.VIM三种工作模式之间的转换 2.插入命令 3.定位命令 4.删除命令 5.复制粘贴 6.替换和取消命令 7.退出命令 加油!!!

Linux 下 vi/vim 文本编辑器超详细使用指南

Linux下的编辑器最常用的就是vim或者vi文本编辑.vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能. 大多数的linux/unix 发行版本中都使用 vim 代替了原来的 vi 文本编辑器. 如果是centos或者redhat系统,当系统安装完毕后,vi/vim 文本编辑器默认情况下就已经被安装了.如果是debian/ubuntu系统下,默认情况下,vim编辑器是不会被安装的.你需要在ubuntu系统下手动安装vim编辑. 更多关于vim

vim文本编辑器和yum的搭建

rpm -ivh  软件名-版本信息-.rpm  (安装软件)   rpm -q 软件名   (查看软件是否安装)   rpm -e 软件名    (卸载转件)   因为rpm有依赖关系而yum刚好解决此问题        使用vim创建/修改文本文件     vim文本编辑器      命令模式  (i)插入模式  (ctrl+:)末行模式      在末行模式下,输入:wq 保存并退出                    输入:q! 强制退出      vim 命令模式下   (数字)+y

Vim 文本编辑器的基本使用

Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立.修改.编辑文档或者程序文件,其作用类似与windows系统下的记事本或者notepad++,因此熟练掌握该工具的使用对于使用linux系统是非常有必要的.通过本文记录Vim编辑器的基本使用方法,用以强化记忆或者以备以后复习.(cat与<<EOF结合也可以实现编辑器的部分功能,可以生成和编辑文档:cat >log.txt <<EOF) 主要参考资料有: 1.<鸟哥的Linux私房菜&

Linux系统 vi/vim文本编辑器

Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑.显示文本文件.vim或者vi文本编辑是Linux下最常用的编辑器.vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能. 大多数的linux/unix 发行版本中都使用