• Shell编程1


     

    目录

    一.    文本处理工具    1

    二.    bash的特效    1

    三.    shell编程    1

     

     

     

     

    1. 文本处理工具

     

    1. grep工具

    grep是行过滤工具,用于根据关键字进行过滤。

    语法:

    # grep [选项] '关键字' 文件名

     

    常用选项:

     

     

    常用:

    grep –color=auto ['要搜索的关键字'] [文件名] //让搜索出来的关键字用颜色标识

    alias grep='grep –color=auto' //临时设置以后输入grep 代表输入grep –color=auto 这样输入grep就有颜色标识,要想永久生效需要把设置的内容放在etc目录下文件配置中,然后输入

    source [配置的文件目录名] ,进行更新以下才能生效。但是现在ubutun默认是已经配置好了的,所有无需此操作。

     

    grep '^root' passwd                             //过滤出passwd文件中以root开头的行

    grep 'bash$' passwd                            //过滤出passwd文件中以bash结尾的行

    grep '^root' 'bash$' passwd                        //过滤出passwd文件中以root开头bash结尾的行

    grep -nB 3 '^ftp' passwd                        //过滤出passwd文件中以ftp开头前三行 //A则是后三行,C前后三行

     

     

    1. cut工具

       

    cut是列截取工具,用于列的截取。

    语法:

    cut [选项] 文件名

     

    常用选项

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

    -d: 自定义分割符,默认制表符

    -f:与-d一起使用,指定截取那个区域

    举例说明:

    head passwd                         //显示passwd文件的前十行

     

     

    1. sort工具

    sort工具用于排序,他将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

     

    1. uniq工具

    uniq用于去除连续的重复行 //只去除连续重复的行,sort 是去除所有的重复行

     

    1. tee工具

    tee工具是从标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)

    无-a每次覆盖,又-a双向追加不覆盖重定向。

     

    1. diff工具

    diff工具用于逐行比较文件的不同

    注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。

    语法和选项

    语法:

    diff [选项] 文件1 文件2

    此处省略……

     

    1. paste工具

    paste工具用于合并文件行

    常用选项:

    -d:自定义间隔符,默认是tab

    -s:串行处理    ,非并行

     

    1. tr工具

    tr用于字符转换,替换和删除,主要用于删除文件中控制字符或进行字符转换

     

    Ubutun拼音配置:https://blog.csdn.net/fx_yzjy101/article/details/80243710

     

    相关进程查看:ps (查静态进程号) top (动态) pgrep(直接查进程号)

     

    1. bash的特效

    1. 文件自动补全

    Tab键自动补全命令和文件

     

    1. 常见的快捷键

     

    1. 常用的通配符

       

    2. bash中的引号

       

      1. shell编程

       

       

    3. 编程分类

     

     

    1. shell简介

      shell介于内核与用户之间,负责命令的解释

      总结:

      shell种类

       

       

       

      shell脚本

      shiell脚本标准执行方式又两种,一种是在相对路径下执行-> /home/dc/1.sh ,一种是相对路径,直接在当前目录执行-> 。/1.sh

      编写shell脚本时,魔法字符一定不要写死->#!/bin/bash ,可以写成#!/bin/env bash ,这种会自己去找系统目录下的解释器路径,但是一般在其他目录里非home里的账户目录下用env执行时会报错,只能用bin/bash,只有在一创建的用户目录下创建的shell脚本才可以用env。

    编写shiell脚本以.sh为后缀名,然后给+x权限后再执行即可。

     

     

    1. 变量定义

     

    1. 变量的定义

      概述:用来临时保存数据,该数据是可以变化的数据。

       

      定义变量

      下图两种方式一样。

      注意:定义变量时"="左右不能又空格,否则报错,如:a = 123或 a =123 都时错误的,正确的定义因该是a=123


      unset [变量名] 可取消临时变量

       

      定义变量注释事项

      1. 变量名区分大小写
      2. 变量名不能又特殊符号

      1. 变量名不能以数字开头

      1. 变量名等号两边不能又空格

       

      1. 变量名尽量做到见名知意,定义一个变量然人一眼知道意思。

     

    1. 变量定义的方式
    2. 基本的定义方式

        上图中${A:2:4}-> A=1234567 第一为数字1 对应的是0,第二位是1,所以A:2:4 中的2对应的是1234567中的3

     

    1. 命令执行结果赋值给变量

      注意:` ` 表示执行里面的结果

     

    1. 交互式定义变量(read)

      目的:用户自己给变量赋值

      语法:read [选项] 变量名

      常用选项

    选项

    释义

    用法

    -p

    定义提示用户的信息(用双引号引起来)

    read -p "input name" name

    -n

    定义字符数(限制变量值的长度)

    read -n 5 -p "input name" name

    -s

    不显示(隐藏输入的内容,输入内容不可见)

    read -s -p "input name" name

    -t

    定义超时时间,默认单位秒(限制用户输入变量值的超时时间,超过输入的时间无效)

    read -t 3 -p "input name" name

     

    用户自己定义变量,变量值由用户自己输入:

    用户定义变量,变量值从文件冲获取

     

     

    1. 定义有类型的变量

       

      目的:给变量做一些限制,固定变量的类型

      用法:declare 选项 变量名=变量值

      举例说明

       

    2. 变量的分类
    3. 本地变量

       

       

       

    4. 简单的四则运算

      算数运算:默认情况,shell只能支持简单的整数运算

      运算内容:加(+),减(-),乘(*),除(/),求余数(%)

       

    5. 条件判断语法结构

      1. 条件判断相关参数

        

    1. 判断文件权限

     

    1. 判断文件新旧

     

    1. 判断整数

     

    1. 判断字符串

     

    1. 多重条件判断

            字符串比较

            

     

    1. 流程控制语句

      1. If结构

      F表示false,为假    T表示true,为真。

      1. If..else结构

      注意:上图中括号判断变量的两边有空格,否则报错->

      还可以直接调用一个变量,在执行script的时候进行传参。

            

    1. If...elif...else结构

     

    1. 层层嵌套结构

     

    1. 应用案例

     

    判断那两台主机是否ping通

     

    1. 判断一个进程是否存在

    补充:pgrep命令

     

    1. 判断一个服务器是否正常

    查看一个网站能否访问,在lamp环境下下载该页面

    wget     ->wget www.itcast.cn    

    crul        ->crul www.itcast.cn    

    elinks     ->elinks www.itcast.cn        elinks -dump www.itcast.cn    把结果打印出来,不进行web页面的交互

     

    1. 判断用户是否存在

     

    1. for循环语句

    for列表循环

    列表for循环:用于将一组命令执行已知的次数

     

    seq 列表的一个程序->seq 5 其含义是:打印1到5的列表

     

    for不带列表循环

    不带列表的for循环执行时由用户指定参数和参数的个数

     

     

     

     

     

     

     

     

     

     

     

     

     

              

     

     

     

     

     

     

     

     

     

     

     

     

     

    《任何事都是有可能的。所以别放弃,相信自己,你可以做到的。---->> 闯 !》
  • 相关阅读:
    (78) C# System.Text.Json
    EF 迁移数据库
    element table
    element-plus 安装
    asp.net core 跨域
    JS常用公共方法 获取弹出层合适的宽高
    一篇文章让你搞懂如何通过Nginx来解决跨域问题
    Dubbo系列讲解之服务注册【3万字长文分享】
    Dubbo系列讲解之扩展点实现原理分析【2万字分享】
    MySQL索引篇之索引存储模型
  • 原文地址:https://www.cnblogs.com/dingchuang666/p/13023147.html
Copyright © 2020-2023  润新知