zoukankan      html  css  js  c++  java
  • shell脚本简介及常用文本编辑命令

    什么是脚本?

    脚本简单地说是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的,可以通过记事本打开和编辑

    为什么要学习和使用shell

    shell属于内置脚本

    程序开发的效率非常高,依赖于功能强大的命令可以迅速的完成开发任务(批处理)

    语法简单,代码写起来比较轻送,简单易学

    shell简介

    shell是一个C语言编写的脚本语言,它是用户与linux的桥梁,用户输入命令交给shell处理,shell将相应的操作传递给内核,内核把处理的结果输出给用户

    Linux 基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。

    shell分类

    1:图形界面shell

    GUI shell 是为Unix或者类Unix操作系统构建的一个功能完善操作简单以及界面友好的桌面环境。

    2:命令行界面shell

    CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。

    查看shell 

    shell是一个程序,一般放在/bin或者/user/bin目录下,当前linux系统可用的shell都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看他。

    在现在的linux上,sh已经被bash代替,/bin/sh往往是指向/bin/bash的符号链接

    如果你希望查看当期那linux的默认shell,那么可以输出SHELL环境变量

    $ echo $SHELL
    /bin/bash

    输出结果表明默认的shell是bash

    SHELL是linux系统中的环境变量,他指明了使用的shell程序的位置,也就是使用的哪个脚本

    第一个shell脚本

    用vim打开test.sh

    #!/bin/bash
    echo "Hello world!"

    第一行是指定解释器,第二行是打印Hello World!

    写好后,有三种执行脚本的方法

    方法一:直接用bash解释器执行

    # bash test.sh
    Hello world!

    当前终端会新生成一个子 bash 去执行脚本。

    方法二:添加可执行权限

    # ll
    test.sh -rw-r--r--. 1 root root 32 Aug 18 01:07 test.sh
     # chmod +x test.sh
     # ./test.sh
    -bash: ./test.sh: Permission denied
    # chmod +x test.sh
    # ./test.sh
    Hello world!

    这种方式默认根据脚本第一行指定的解释器处理,如果没写以当前默认 Shell 解释器执行。

    注意,这里在运行时一定要写成 ./test.sh(绝对路径亦可),而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量) 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

     方法三:source命令执行,以当前默认shell解释器执行

    # source test.sh
    Hello world!

    三种方法的区别:

    当shell脚本具有可执行权限时,用bash与绝对路径执行脚本是没区别的。绝对路径是因为当前目录没在PATH中,所以用"."是用来表示当前目录的

    source这个命令其实只是简单地读取脚本里面的语句一次在当前的shell里面执行,没有建立行的子shell。那么脚本里面所有的新建、改变变量的语句都会保存在当前的shell里面

    bash重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell

    shell编程的几个常用命令

    grep命令详解

    过滤来自一个文件或者面准输入匹配模式的内容

    除了grep外,还有egrep。egrep是grep的扩展,相当于grep -E 

    grep常用选项

        选项             

                      描述                                     

    -E,--extended-regexp                                

    模式是扩展正则表达式(ERE)                                

     -i,--ignore-case

    忽略大小写

     -n,--line-number

    打印行号

     -o,--only-matching

    只打印匹配的内容

     -c,--count

    只打印每个文件匹配的行数

     -B,--before-context=NUM

    打印匹配的前几行

     -A,--after-context=NUM

    打印匹配的后几行

    -C,--context=NUM

    打印匹配的前后几行

    --color[=WHEN],

     匹配的字体颜色

    -v,--invert-match

     打印不匹配的行

    cut命令

    使用说明:

    cut命令从文件的每一行剪切字节,字符和字段并将这些字节,字符和字段写至标准输出

    如果不指定file参数,cut命令将读取标准输入

    常用参数:

    -c:以字符为单位进行分割

    -d:自定义分隔符

    -f:与-d一起使用,指定显示哪个区域

    [root@ken ~]# echo "this is ken" | cut -c  4
    s
    [root@ken ~]# echo 'this is ken' | cut -d' ' -f3
    ken

    sort命令

    sort命令用于将文本内容加以排序

    sort可针对文本文件的内容,以行为单位来排序

    常用参数说明:

    *  -n:依据数值的大小排序(默认是根据字符进行排序)

    *  -r:以相反的顺序来排序

    *  -u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)

       -t:<分隔符号>指定排序时所用的栏位分割字符

       -k:根据切割后的那一段进行排序

    uniq命令

    作用:去除重复的行(相邻且相同,认定为重复)

    选项:

      -c:在首行用数字表示该行出现了多少次

      -u:仅仅显示那些没有出现重复过的行

    seq命令

    作用:生成一个数组序列

    [root@ken ~]# seq 5       #终止位5
    1
    2
    3
    4
    5
    [root@ken ~]# seq 2 5     #起始位2,终止位5
    2
    3
    4
    5
    [root@ken ~]# seq 2 2 10  #起始位2,步长为2,终止位10
    2
    4
    6
    8
    10

    tr命令

    作用:突然命令用于转换或者删除文件中的字符

    tr指令从标准输入设备读取数据,经过字符串转义后,将结果输出到标准输出设备

    a-z  任意小写

    A-Z  任意大写

    0-9  任意数字

    替换实例:

    [root@ken ~]# echo "this is ken" | tr a-z A-Z
    THIS IS KEN
    [root@ken ~]# echo "THIS IS KEN" | tr A-Z a-z
    this is ken

    删除特定字符串实例:

    [root@ken ~]# cat test
    6 this:is:ke3
    2 this:is:ke4
    2 this:is:ke4
    2 this:is:ke4
    2 this:is:ke4
    5 this:is:ke2
    6 this:is:ke1
    1 this:is:ke6
    8 this:is:ke7
    [root@ken ~]# cat test | tr -d 's'
    6 thi:i:ke3
    2 thi:i:ke4
    2 thi:i:ke4
    2 thi:i:ke4
    2 thi:i:ke4
    5 thi:i:ke2
    6 thi:i:ke1
    1 thi:i:ke6
    8 thi:i:ke7
  • 相关阅读:
    Android weight属性详解
    设计模式(一)__单例设计模式
    Java中线程的生命周期
    抽象类和接口
    SQL sever 怎样将DBF文件导入到数据库
    JS去除字符串中空格,及常用正则表达式
    Oracle 11g问题1:关于error:ORA12541: TNS: 没有监听器
    access、excel取随机n条记录
    tsql字符串操作
    测试SQL Server执行时间和CPU时间
  • 原文地址:https://www.cnblogs.com/it-ljm1903/p/10867321.html
Copyright © 2011-2022 走看看