zoukankan      html  css  js  c++  java
  • linux -- shell 基础

         linux -- shell基础

        

    一、概述

      1、shell 功能

        

      2、shell 分类

        

    二、脚本执行方式

      1、echo

          

        

        

        

    三、bash 基本功能

      1、历史命令

        配置文件:/etc/profile

        命令格式:history [options] file 

             - c :清空历史命令

             - w :把缓存中的历史命令写入历史保存文件 ~/.bash_history

      2、别名设置

        配置文件:/root/.bashrc

        命令格式:

             设置别名:alias 别名=‘原命令’(不可有空格存在)

             查询别名:alias

             删除别名:unalias

      3、快捷键

        

      3、输入 输出 重定向

        概念理解:

          键盘     -- /dev/stdin -- 0 -- 标准输入

          显示器  -- /dev/sdtout -- 1 -- 标准输出

          显示器  -- /dev/sdterr -- 2 -- 标准错误输出

        输出重定向

          标准输出重定向:

            覆盖:命令 > 文件

            追加:命令 >> 文件

          标准错误输出重定向:

            覆盖:错误命令 2> 文件

            追加:错误命令 2>> 文件

          正确输出与错误输出同时保存:

            覆盖:命令 > 文件1 2> 文件2

            追加:命令 >> 文件1 2>> 文件2

          # &>/dev/null(黑洞,垃圾箱)

        输入重定向:

          

      4、多命令顺序执行 与 管道符

        多命令: (;) (||)(&&)

          

          

          

        管道符: (|)

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

          grep:

            grep  [options]  “搜索内容”  文件名

              [options]

              - i :忽略大小写

              - v:反转输出结果  example:grep -v "#"  grep -v "^$"

              - c:相当于将其传递给 wc 程序

              - n:显示行号,多用于编译时使用

              - w:精确匹配

              - r:在目录里面递归搜索

              - A,B,C:

              --color=auto :搜索出的关键字用颜色显示

          example:

            

      5、通配符 与 其他特殊符号

        通配符:

          ?    匹配任意一个字符

          *  匹配任何内容

          []  匹配括号中的任意一个字符

          [-]   匹配中括号钟任意一个字符,- 代表范围

          #  注释

          $  用于调用变量的值

             转义符,在跟 之后的特殊符号将失去特殊含义,变为普通字符

          [^]      逻辑非,表示匹配不是中括号内的一个字符。

        其他特殊符号:

          ’ ’      在单引号中所有的特殊符号都没有特殊含义

          “ ”     在双引号中特殊符号都没有特殊含义

              但是“$”(调用变量的值)、“ ' ”(引用命令)、“”(转意符)是例外

              

          $()  和反引号作用一样,用来引用系统命令

              

    四、bash 变量(重难点)

      

      1、用户自定义变量

        1)、什么是变量

          变量是计算机内存的单元,其中存放的值是可以改变的。

        2)、变量设置规则

          可以由字母,数字,下划线组成,但是不能以数字开头

          变量的默认类型都是字符串型。

          变量要用等号连接值,等号左右两侧不能有空格

          变量的值如果有空格,需要使用单引号或者双引号包括

          变量的值中,可以使用 “” 转义符

          可以把命令的结果作为变量值赋予变量,则需要使用 反引号 $() 包含命令

          如果是把命令的结果作为变量值,那么可以进行变量值得叠加。不过变量需要用 “$变量名”${变量名} 包含

          环境变量名建议大写,便于区分

        3)、变量分类(背)

          用户自定义变量:自由定义(只要符合规则)

          环境变量:这种变量中主要保存的是和操作系统环境相关的数据

          预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的

          位置参数变量:这种变量主要是用来向脚本当中传递参数(严格来说是预定义变量中的一种)

        4)、设置:变量名=变量值

        5)、调用:echo

        6)、变量查看:set

        7)、变量删除:unset name

      2、环境变量

        1、定义:

          用户自定义变量只是在当前的 shell 中生效,而环境变量会在当前 shell 和这个 shell 的所有子 shell 的所有子 shell 当中生效

          如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的 shell 中生效

        2、设置环境变量

          概述:   环境变量,对于所有的环境都会影响

          export:  export 申明为全局变量

          env:                   

          unset:           

          pstree:进程树

        3、系统常见环境变量

          PATH:

            系统查找命令的路径

            

            example(临时生效)

              (并不习惯如此)

              使用变量叠加的方式,把自己存放脚本的位置添加到环境变量当中

          PS1:

            定义系统提示符的变量

            

            

      3、位置参数变量

        

        

        

        

        

        ($* 和 $@ 的区别)

      4、预定义变量

        

        

      # 接收键盘输入

        

        - p: “ 提示信息 ”,在等待 read 输入时,输出提示信息

        - t : “ 秒数 ”,read命令会一直等待用户输入,使用此选项可以指定等待时间

        - n: “ 字符数 ”,read命令只接受指定的字符数,就会执行

        - s: “ 隐藏 ”, 隐藏输入的数据,适用于机密信息的输入

        

    五、bash 运算符

      1、数值运算 与 运算符

        1)、linux 默认的变量是 字符串类型(integer)

          

        2)、declare 声明变量类型

          

      2、变量测试 与 内容替换

          

    六、环境变量配置文件

      1、环境变量配置文件简介

        source命令:

        定义:

        类型:

      2、环境变量配置文件作用

        

    insist on yourself ; never initate , every great man is unique .
  • 相关阅读:
    挑战程序设计竞赛 第2章习题 poj 1017 Packets 贪心模拟
    挑战程序设计竞赛 2章习题 poj 2376 Cleaning Shifts
    Leetcode 27. 移除元素 双指针
    Leetcode 26. 删除有序数组中的重复项 双指针
    Leetcode 31. 下一个排列
    webserver 发布问题
    [转]机器学习中的各种距离
    VUE3 + TYPESCRIPT 开发实践总结
    我和ABP vNext 的故事
    ABP Framework 为什么好上手,不好深入?探讨最佳学习姿势!
  • 原文地址:https://www.cnblogs.com/-cjzsr-/p/7688965.html
Copyright © 2011-2022 走看看