Linux下VIM编译器的使用以及shell编程基础

VIM编译器的安装与使用

vim编辑器安装    在CentOS中,执行:yum -y install vim

普通模式

h: 左移一个字符         j: 下移一行        k: 上移一行        l: 右移一个字符        PageDown(或Ctrl+F):下翻一屏        PageUp(或Ctrl+B):上翻一屏        G:移到缓冲区的最后一行        num G:移动到缓冲区中的第num行        gg:移到缓冲区的第一行

命令行模式

普通模式下按下冒号键        保存、退出命令:        q:如果未修改缓冲区数据,退出        q!:取消所有对缓冲区数据的修改并退出        w filename:将文件保存到另一个文件中        wq:将缓冲区数据保存到文件中并退出        删除数据:        x: 删除当前光标所在位置的字符        dd: 删除当前光标所在行        dw: 删除当前光标所在位置的单词        d$: 删除当前光标所在位置至行尾的内容        编辑数据:        J: 删除当前光标所在行行尾的换行符(拼接行)        u: 撤销前一编辑命令        a: 在当前光标后追加数据        A: 在当前光标所在行行尾追加数据        编辑数据:        r char: 用char替换当前光标所在位置的单个字符        R text: 用text覆盖当前光标所在位置的数据,直到按下ESC键        o: 在当前光标的下一行追加数据        O: 在当前光标上一行追加数据        编辑数据:        i: 在当前光标前插入        I:在当前光标所在行开头插入        复制和粘贴:        yw:复制一个单词        y$:复制到行尾        yy:复制整行        p: 粘贴

可视模式

进入可视模式,应移动光标到要开始复制的位置,并按下v键        查找和替换:        要输入一个查找字符串,就按下斜线(/) 键        使用n键,表示下一个(next)        查找和替换:        替换命令允许你快速用另一个单词来替换文本中的某个单词。        必须进入命令行模式才能使用 替换命令。        命令::s/old/new/        :s/old/new/g:一行命令替换所有old        :n,ms/old/new/g:替换行号n和m之间所有old        :%s/old/new/g:替换整个文件中的所有old        :%s/old/new/gc:替换整个文件中的所有old,但在每次出现时提示

shell编程

#!/bin/bash    echo "Hello Bash"    运行shell    1、可执行权限    chmod +x ./test.sh    2、执行脚本    ./test.sh

变量的定义和使用

  定义变量时,变量名不加美元符号($,PHP语言中变量需要)
  使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变
  使用 unset 命令可以删除变量, unset 命令不能删除只读变量

作用域:
  局部变量(尽在当前shell中有效,其他shell启动的程序无法访问)
  环境变量(所有程序均可访问)

#!/bin/bash        test="test.com"        readonly test        echo $test        test="www.test.com"        echo $test        web="http://test.com"        readonly web        unset web        echo $web

字符串

#!/bin/bash        var=100        #字符串拼接        str1="$var \"test\".c\nom"        str2='w\nww'$var'.test.com'        str3="www"$var".test.com"        #输出字符串长度        echo ${#str1}        #字符串截取        echo ${str2:1:3}        #字符串查找        echo `expr index "$str3" w`        #str3=$var http://www.test.com        #echo -e $str1        #echo -e $str2        #echo $str3

数组

#!/bin/bash        arr1=(1 2 3 4 5 "str")        echo ${arr1[2]}        #使用 @ 符号可以获取数组中的所有元素        echo ${arr1[@]}        #echo ${arr1[*]}        #获取数组长度        echo ${#arr1[@]}        #多行注释        :<<EOF        arr2[0]=100        arr2[3]=200        echo ${arr2[3]}        EOF

参数

#!/bin/bash        echo $0        echo $1        echo $2        echo $3        # $# : 传递到脚本的参数个数        echo "The number of the parameters: "$#        # $* : 以一个单字符串显示所有向脚本传递的参数        echo "All parameters: "$*        # $! : 后台运行的最后一个进程的ID号        # $@:与$*相同,但是使用时加引号,并在引号中返回每个参数        echo "All parameters: "$@        for i in "$*"        do            echo $i        done        for i in "$@"        do            echo $i        done        # $$ : 脚本运行的当前进程ID号        echo "The Progress ID: "$$        # 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误        echo $?        #$- : 显示Shell使用的当前选项

基本运算符

#!/bin/bash        # expr 是一款表达式计算工具,使用它能完成表达式的求值操作        # 表达式和运算符之间要有空格        # 完整的表达式要被 ` ` 包含        i=`expr 2 + 3`        echo $i        a=100        b=100        # 条件表达式要放在方括号之间,并且要有空格        if [ $a != $b -o $a -eq $b ]        then            echo "a = b"        fi        # 乘号(*)前边必须加反斜杠(\)才能实现乘法运算        echo `expr 100 \* 100`        # 关系运算符只支持数字,不支持字符串,除非字符串的值是数字        # -eq 、 -ne 、 -gt 、 -lt 、 -ge 、 -le        if [ $a -eq $b ]        then            echo "eq"        fi        # 布尔运算符! 、 -o 、 -a        if [ $a == 100 -a $b == 100 ]        then            echo "a=100,b=100"        fi        if [[ $a == 100 && $b == 100 ]]        then            echo "a=100,b=100"        fi        # 字符串运算符  = 、 != 、 -z 、 -n 、 str        str1='This'        if [ -z "$str1" ]        then            echo "The length of the string is 0"        fi        if [ -n "$str1" ]        then            echo "The length of the string is not 0"        fi        if [ $str100 ]        then            echo "This string is not empty"        fi        # 文件测试运算符用于检测 Unix 文件的各种属性        # -b 、 -c 、 -d 、 -f 、 -g 、 -k 、 -p 、 -u 、 -r 、 -w 、 -x 、 -s 、 -e        file='/root/shell/hello_bash'        if [ -e $file ]        then            echo "This file exists"        fi

echo

#!/bin/bash        echo 'This is string'        echo "This is string"        # 字符串的引号可以省略        echo This is string        # read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量        echo -n "Please input your age: "        read age        echo "My Age is "$age        # 显示换行:        echo -e "OK! \n" # -e 开启转义        # 显示不换行:        echo -e "OK! \c" # -e 开启转义 \c 不换行        # 显示结果定向至文件:        echo "Learning IT" > test        # 显示命令执行结果:        echo `date`

printf

#!/bin/bash        # format-string: 为格式控制字符串        # %s %c %d %f都是格式替代符        # %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来        printf "%-10s is string %d %.4f" "string" "100" 210        if [ 1 == 1 ]        then            echo "correct"        fi        # test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试        if test 1 == 1        then            echo "test correct"        fi

流程控制

#!/bin/bash        i=2        if [ $i == 1 ]        then            echo "i = 1"        elif [ $i == 2 ]        then            echo "i = 2"        else            echo "i != 1"        fi        --------------------------        #!/bin/bash        for i in 1 2 3 4 5        do            if [ $i -eq 1 ]            then                break            fi            echo $i        done        --------------------------        #!/bin/bash        i=1        while (( $i < 10 ))        do            echo $i            # let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量            let "i++"        done        while :        do            echo "unlimit"        done        while true        do            echo "unlimit"        done        # 无限循环:        # while 去除condition        # while true        # for (( ; ; ))        for (( ; ; ))        do            echo "for unlimit"        done        --------------------------        #!/bin/bash        # until 循环执行一系列命令直至条件为 true 时停止        # until 循环与 while 循环在处理方式上刚好相反        i=10        until (( $i == 0 ))        do            echo $i            let "i--"        done        --------------------------        #!/bin/bash        i=4        # case语句为多选择语句        case $i in            1) echo 'i=1'            ;;            2|3|4) echo 'i=2 or i=3 or i=4'            ;;            *) echo 'i != 1 && i != 2'            ;;        esac

函数

#!/bin/bash        # myfunc 2 2        # function myfunc()        myfunc()        {            echo "myfunc"            # 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)            # 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…            # $10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数            return `expr $1 + $2`        }        myfunc 1 2        # 函数返回值在调用该函数后通过 $? 来获得        echo $?        # myFunc

输入/输出重定向
  如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/
  /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出"的效果

文件包含

#!/bin/bash        source ./public.sh        myfunc
(0)

相关推荐

  • Linux学习Day6:编写Shell脚本、配置计划任务

    Shell脚本命令的工作方式有两种:交互式(Interactive):用户每输入一条命令就立即执行.批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命 ...

  • bash教程摘要

    若想知道您的操作系统支持哪些 Shell 类型,可在终端中输入命令:$ cat /etc/shells显示当前目录名 pwd我们可以使用ls -l命令来罗列出所有文件和目录使用cd命令移动至目标目录. ...

  • 小萌新—> Linux高手系列:包管理【二】

    上期回顾:小萌新-> Linux高手系列:包管理作为一个有追求的测试,如何从一个运维小萌新成长为一个Linux 高手?请持续关注我们的<小萌新 -> Linux高手系列文章>. ...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()]{action;[return in ...

  • 【Linux 笔记】Linux 基本操作 - 02. shell编程基础

    笔记接上篇[Linux 笔记]Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量.笔记大部分源于生信技能树的B站视频教程[生信技能树]生信人应该这样学linux(更新至第14集) ...

  • linux之vim操作快速跳到下一个空格和上一个空格命令

    linux之vim操作快速跳到下一个空格和上一个空格命令

  • Linux下文件搜索、查找、查看命令

    Linux下文件搜索、查找、查看命令

  • linux下vsftpd的安装及配置使用详细步骤

    安装 yum install vsftpd 新建/home/uftp目录作为用户主目录 mkdir /home/uftp 新建用户uftp: useradd -d /home/uftp -s /bin ...

  • Linux下安装配置Tengine:Nginx

    Linux下安装配置Tengine:Nginx 简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和 ...

  • (7条消息) Linux下TCP/IP编程

    本文参考自徐晓鑫<后台开发>,重点复习总结TCP通信流程,读者也可以参考: http://blog.csdn.net/wqc_csdn/article/details/51513543,谢 ...

  • 使用live555 在linux下搭建 rtsp server

    系统环境 Debian 7 x64  / centos 7 x64  都可以 首先去下载源码 http://www.live555.com/liveMedia/public/live555-lates ...

  • Linux下查看已安装软件

    linux安装软件的方式比较多,总结起来有如下几类: 第1类.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字&qu ...

  • Linux 下如何创建 /删除软连接

    软链接,又称符号连接,与硬链接不同的是,软链接不链向索引节点号,而是链向目录.相当于的Windows中的快捷方式.它实际上是一个特殊的文件.在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件 ...