• linux shell(2)


    一、什么是Linux Shell?

      概念:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。是在Linux内核与用户之间的解释器程序,现在Linux通常指/bin/bash解释器来负责向内核翻译以及传达用户/程序指令,shell相当于操作系统的“外壳”

    二、Shell的使用方式

    • 交互式---命令行

      --人工干预。智能化程度高
      --逐条解释执行,效率底

    • 非交互式---脚本

      需要提前设计,智能化难度大
      批量执行,效率高
      方便在后台静悄悄地运行

    三、bash的基本功能

    3.1历史命令

    linux可以使用history命令查看历史命令,历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中修改(HISTSIZE属性)
    history命令使用方法:
    history  选项  文件名

    -c  清空历史命令
     -w  将缓存中的历史命令写入文件中
     上下箭头键  查看以前的命令
     !n  重复执行第n条命令
     !!  重复执行上一条命令
     ! 字符串  重复执行最后一条以该字符串开头的命令

    3.2命令补全

    使用tab键可以补全命令或文件名

    命令别名

    命令别名就是为一条命令定义一个命令名,执行这个新的命令名就相当于执行这条命令。
    与命令别名相关的命令
    alias  设置命令别名
    unalias  取消命令别名

    3.3管道

    管道符“|”在用于将linux命令行前一个命令的输出作为后一个命令的输入

    3.4输入输出重定向

    重定向命令列表如下:

    命令说明
    command > file 将输出重定向到 file。
    command < file 将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file 将文件描述符为 n 的文件重定向到 file。
    n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m 将输出文件 m 和 n 合并。
    n <& m 将输入文件 m 和 n 合并。
    << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)

    3.5命令行编辑

    3.6命令行展开

    3.7通配符

    通配符   作用
    匹配任意单个字符
    *  匹配0个或多个任意字符,也就是可以匹配任何内容
    []   匹配中括号中任意一个字符,例如:[abc] 代表一定匹配一个字符,
    或者是a,或者是b,或者是c.
    [m-n] 匹配中括号中任意一个字符,- 代表一个范围。例如:[a-z]代表
     匹配一个小写字母
    [^]  逻辑非,表示匹配不上中括号内的一个字符,例如:[^0-9]代表
     匹配一个不上数字的字符。

    Bash中其它特殊符号

    符号 作用
    '' 单引号;在单引号中所有的特殊符号,如"$"和“ · ”(反引号)都没有特殊含义
    "" 双引号;在双引号中特殊符号都没有特殊含义,但是“$”和“ · ” 和“ ”是例外,
    拥有“调用变量的值”、“”引用命令“和”转义符“的特殊含义
    `` 反引号;反引号括起来的命令是系统命令,在Bash中会先执行它。和$()作用一样,
    不过推荐使用$(),因为反引号非常容易看错。
    $() 和反引号命令一样,用来引用系统命令
    # 在Shell脚本中,#开头的行代表注释
    $ 用于调用变量的值,如需要调用变量name的值时,需要使用$name的方式得到变量的值。
    转义符,跟在 之后的特殊符号将失去特殊含义,变为普通字符。如$将输出”$“符号,而不是
    当做是变量引用

    3.8  Bash变量和环境配置文件

    3.8.1  Bash变量分类

    1)用户自定义变量:只在当前的shell生效
    2)环境变量:主要保存的是和系统操作环境相关的数据
    3)位置参数变量:主要用来向脚本当中传递参数或数据,变量名不能自定义,变量作用书固定的
    4)预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

    3.8.2  Bash变量定义规则

    1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头
    2)在Bash中,变量的默认类型都是字符串型,如果需要进行数值计算,则必须指定变量类型为数值型
    3)变量用等号连接值,等号左右两侧不能有空格
    4)变量的值如果有空格,需要使用单引号或双引号包括
    5)在变量的值中,可以使用“”转义符
    6)如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要使用双引号包含“$变量名”或用${变量名}包含
    7)如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令
    8)环境变量名建议大写,便于区分

    3.8.3  Bash变量定义方法

    • 本地变量

                 变量名= 变量值

    • 环境变量
          export   变量名=变量值 

    3.8.4  查看与添加系统变量

    1)系统查找命令路径
    echo $PATH
    2)PATH变量叠加
    PATH=”$PATH”:/root/sh

    3.8.5  环境变量的配置文件

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.

    并从/etc/profile.d目录的配置文件中搜集shell的设置. 

    /etc/bashrc:为每一个运行bashshell的用户执行此文件.当bash shell被打开时,该文件被读取. 

    ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 

    文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 

    ~/.bashrc:该文件包含专用于你的bashshell的bash信息,当登录时以及每次打开新的shell时,该 

    该文件被读取. 

    ~/.bash_logout:当每次退出系统(退出bashshell)时,执行该文件. 

    另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系. 

    ~/.bash_profile是交互式、login 方式进入 bash 运行的 

    ~/.bashrc是交互式 non-login 方式进入 bash 运行的 

    通常二者设置大致相同,所以通常前者会调用后者。 

    .bash_profile文件在通过控制台(或远程登录, 比如ssh)登录(login)系统的时候被执行的shell脚本. 

    而 .bashrc则是在打开虚拟终端的时候才会起作用,比如在GNOME,KDE中执行rxvt.

    通俗的理解

    ~/.bash_profile是交互式、login 方式进入 bash 运行的 

    ~/.bashrc是交互式 non-login 方式进入 bash 运行的 

    3.9编程

  • 相关阅读:
    小素典会员订阅协议
    vue项目自动构建工具1.0,支持多页面构建
    spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼
    使用 docsify 創建自己的 markdown 文檔系統
    “衣”及其部分屬字
    js原型鏈與js繼承解析
    js 中怎么获取session 值和HTML标签的属性值
    layui table动态表头 改变表格头部 重新加载表格的方法
    throw throws Throwable 关联于区别
    静态代理和动态代理的区别和联系
  • 原文地址:https://www.cnblogs.com/kumunotes/p/10940415.html
Copyright © 2020-2023  润新知