shell基础及变量2018.03.20

一、Shell概述

   Shell的作用——命令解释器,shell作为一个人机接口用于解释用户输入的命令,将命令解释为Linux内核可执行的二进制代码,并将执行的结果返回在标准终端上。

二、查看支持的shell种类

       cat  /etc/shells

         /bin/sh

         /bin/bash

        /sbin/nologin

        /bin/tcsh

        /bin/csh

三、shell的分类

     BourneShell:从1979起Unix就开始使用,BourneShell的主文件名为sh。

    CShell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名。

     shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容

四、shell基础

      1.history:查看最近的命令行

           n:数字,意思是要列出最近的n笔命令行

           -c:将目前的shell中所有的history内容全部消除

           -a:将目前新增的history命令新增入histfiles中,若没有加histfikes,则默认写入~/.bash_history、

           -r :将histfiles的内容读到目前这个shell 的history 记忆中;

           -w :将目前的history 记忆内容写入histfiles中

           注:历史命令会默认1000条,可以在环境变量配置文件/etc/profile中进行修改

              历史命令的调用:

         使用上下箭头调用以前的历史命令

         使用“!n”重复执行第n条历史命令

          使用“!!”重复执行上一条命令

          使用“!字串”重复执行最后一条一该字串开头的命令

2.alias:命令别名

        alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一个Shell,或者重新登录,则这些alias将无法使用。好在linux中提供alias永久化的方法:

       <1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc

       <2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc

 

               删除别名:unalias 别名

   

3.多名令顺序执行

      ;:多名令顺序执行,无逻辑关系

       &&:逻辑与,命令1正确才执行命令2,命令1不正确则不执行命令2

       ||:逻辑或,命令1正确则不执行命令2,命令1不正确才执行命令2

 

4.管道符 |

   命令1 | 命令2

   命令1的正确输出作为命令2的操作对象

 

5.cut:信息剪切

       -d :后面接分隔字符。与-f 一起使用;

       -f :依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思;

      -c :以字符(characters) 的单位取出固定字符区间;

6.tee:用于将数据流处理过程中某段信息存下来

7.echo:输出命令

       \a 发出警告声;

      \b 删除前一个字符;

      \c 最后不加上换行符号;

     \f 换行但光标仍旧停留在原来的位置;

     \n 换行且光标移至行首;

     \r 光标移至行首,但不换行;

    \t 插入tab

    \v 与\f相同;

    \\插入\字符;

     \nnn插入nnn(八进制)所代表的ASCII字符;

 

五、为什么要使用shell脚本

         使用脚本编程语言的好处是,它们多半运行在比编译型语言还高

    的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的

    效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还

    是值得的:花一个小时写成的简单脚本,同样的功能用c或C++来

    编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够

    快了,快到足以让人忽略它性能上的问题。

 

六、shell脚本的基本元素

    1)#! /bin/bash    这个是必须的,指出shell的类型

    2)#  注释

 

七、常用的运行脚本的方法

    1. sh ./文件名.sh

    2. chmod+x 文件名.sh

       ./文件名.sh

 

八、shell中的变量和符号

     shell 变量可以保存如路径名、文件名或者一个数字

     变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。

     在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

1.变量分类

      本地变量(用户变量)局部变量只在创建它们的Shell中使用,可以在shell程序内 任意使用和修改它们。

     环境变量可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们。还能在shell中加以修改。

     内部变量由系统提供的。与环境变量不同,但用户不能修改它们。

 

2.本地变量

    用户现在的shell生命期的脚本中使用

     变量名=值

     注意:

  (1)      等号两边不可以有空格

  (2)      取值包含空格,必须用双引号括起来

  (3)      Shell变量可以用大小写字母,区分大小写

 

3.变量的声明和使用

   (1)变量是弱类型的(不用声明类型)

   (2)变量声明及赋值格式:变量=值

   (3)变量的引用:$变量名  或者   ${变量名}

     当变量名为1个字符时建议使用方式一,多于1个时,建议使用方式二。

 

4.echo:显示输出

    -n不要在最后自动换行

    -e打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\t 插入tab;\\插入\字符;

 

5.清除变量名

   unset name(注意,name前没有$)

 

6.内部变量

      部分内部变量是:

        $# ——传送给shell程序的位置参数的数量

        $?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他任何值表明有错误。

        $0——shell程序的名称

        $*——调用shell程序时所传送的全部参数的单字符串,“参数1”“参数2”…形式保存的参数

          $@“参数1参数2”…形式保存的参数

        $n第n个参数

        $$本程序的PID

 

   7.shell中的特殊符号

      (1)注释符#

      (2)美元符 $:变量符使其后的普通字符作为变量名

      (3)单引号:被引起来的字符全部做普通字符,即全部原样

      (4)双引号:引号内的内容,除$、转义字符\、倒引号`这三个保留特殊功能,其他字符均做普通字符

     (5)倒引号:引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。

     (6)反斜线:转义字符,他能把特殊字符变成普通字符,注意:在单引号括起来的字符串中,反斜线也成为普通字符,而失去转义字符功能

     (7)获取字符串长度:string=”abcd”

                          echo ${#string}

     ()提取子字符串:string="runoobis a greatsite"

                                 echo${string:1:4} # 输出unoo

 

 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值