bashshell相关特性(代码片段)

author author     2022-12-22     526

关键词:

bash 基础特性之:命令历史

命令历史:shell进程会在会话中保存此前用户提交执行过的命令;

  • 查看历史命令:
    • ~]# history
    • 定制history的功能,可通过环境变量来实现;
    • HISISIZE:shell进程可保留的命令历史条数;
    • HISIFILE:持久保存命令历史的文件 (.bash_history);
    • HISIFILESIZE:命令历史文件的大小;
  • 用法:
-c:清空当前历史命令; 
-a:将历史命令缓冲区中命令写入历史命令文件中; 
-r:将历史命令文件中的命令读入当前历史命令缓冲区; 
-w:将当前历史命令缓冲区命令写入历史命令文件中;
-d:删除指定命令历史条目;
  • 显示最近#条历史命令 (history #);
  • 调用历史列表中的命令 ( ! number);
  • 再次执行上一条命令 (!!);
  • 再一次执行历史列表中最近一个以STRING开头的命令 (!STRING);
  • 调用上一条命令的最后一个参数 (ESC+.、file !$、file alt+.);
  • 控制命令历史的方法
    • 环境变量:HISICONTROL
    • 参数:
      ignorespace:忽略以空白字符开头的命令;
      ignoredups:忽略以空白字符开头的命令;
      ignoreboth:以上两者同时生效;
      echo $HISTCONTROL;
    • 修改变量值
      HISICONTROL=Ignorespace

bash 基础特性之:命令补全

  • 命令补全:
    • shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当作命令;
    • 命令查找机制:
    • 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;
    • 给定的打头字符串如果能唯一标识某命令程序文件,则直接补全;
    • 不能惟一标识某命令程序文件,再击打一次tab键,会给出列表;
  • 路径补全:
    • 在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件 (tab);
    • 如果能惟一标识,则直接补全。否则,再一次tab给出列表;

bash 基础特性之:命令行展开

  • ~:自动展开为用户的家目录,或指定的用户家目录;
  • :可承载一个以逗号分割的路径列表;
  • 例如:

    • mkdir /tmp/a,b,相当于 mkdir /tmp/a,mkdir /tmp/b;
    • 创建/tmp/sysroot目录下包含以下文件;
    |--bin
    |--etc
        |--sysconfig
                |--network-scripts
    |--sbin
    |--usr
        |--local
                |--bin
        |--sbin
    |--var
        |--cache
    
    • tree命令:

    [options] [directory] 列出树形目录中目录的内容; -l:level 指定显示的层级;

bash 基础特性之:命令的执行状态结果

  • 命令执行的状态结果
    • bash通过状态返回值来输出此结果 (成功:0,失败:1-255);
    • 命令执行完成后,其状态返回值保存于bash的特殊变量中 " $? ";
    • 命令正常执行时,有的还会有命令返回值,其根据命令及其功能不同,结果各不相同;
  • 两种引用命令的执行结果
    • $(COMMAND)
    • `COMMAND`
    • 示例:mkdir $(date +%H-%M-%S)

bash 基础特性之:引用

  • 强引用:‘ ‘
  • 弱引用:" "
  • 命令引用: ` `

bash 基础特性之:快捷键

  • Ctrl+a:跳转至命令行行首;
  • Ctrl+e:跳转至命令行行尾;
  • Ctrl+u:删除行首至光标所在处之间的所有字符;
  • Ctrl+k:删除光标所在处至行尾的所有字符;
  • Ctrl+l:清屏(等同clear);

bash 基础特性之:globbing

globbing:文件名通配

  • 星号 *:匹配任意长度的任意字符 (pa*,*pa*,*pa,*p*a*);
  • 问号?:匹配任意单个字符(pa?,??pa,p?a,p?a?);
  • 中括号[]:匹配指定范围内的任意单个字符 ([a-z] [A-Z] [0-9] [a-z0-9]);
  • [^]:匹配指定范围外的任意单个字符([^[:upper:]],[^0-9],[^[:alnum:]]);

bash 基础特性之:命令hash

  • hash命令:
    • -d COMMAND,删除
    • -r 清空hash缓存
  • 执行命令的查找顺序: hash、alias、path;
  • 解释:
    • 把命令的查找结果,缓存在缓存中就叫hash;
    • 什么时候需要清空hash表,hash缓存不正确时;

bash 基础特性之:变量

  • 变量是什么?
    • 简单点,变量其实就是内存中的空间、而后在程序运行过程中给取了一个名字并且能找到这段空间的起始地址,即 变量名+指向的内存空间,然后有名称就能直接引用;
  • 变量赋值:
    • 把要存储的数据存储到变量名所指向的内存空间的过程,就叫做变量赋值;
  • 变量定义之变量的类型:
    • 根据存储数据的变量类型不同,其常用环境变量有以下常见几种...
      本地变量:作用域仅为当前shell进程;
      环境变量:当前shell进程及其子进程;
      局部变量:作用域仅为代码片段,对bash shell 而言函数上下文;
      位置参数变量:当执行脚本的shell进程传递的参数;
      特殊变量:指shell内置和有特殊公用的变量;
  • 变量的定义方式:
    • 本地变量
      赋值:(name=value)
      引用方法:$(name),$name
      变量替换:使用双引号,单引号不会被替换值;
      查看变量:set
      撤销变量:unset name
    • 环境变量
      赋值:export name=value | name=value(export name) | declare -x name=value | name=value
      引用:$(name),$name
      示例:firestname=jerry or declare -x firestname
      注意:bash内嵌了许多环境变量(通常为大写字符),用于定义bash的工作环境;
      (PASH,HISTFILE,HISTSIZE,HSIFLESIZE,HSITCONTROL,SHELL,HOME.UID,PWD,OLDPWD)
      查看当前shell:echo $SHELL
      查看环境变量:export、declare-x 、printenv、env
      撤销环境变量:unset name
  • 把一个变量只读格式:
    • declare -r name
    • readonly name,示例readonly firestname
    • 注意:不支持重新赋值且无法撤销,存活时间为当前shell进程生命周期;

bash 基础特性之:执行多条命令(短路与、短路或)

  • 短路 ‘与,&&’、短路或,‘||’
    ~]# COMMAND1;COMMAND2;COMMAND3...(其命令之间有逻辑关系)
  • 逻辑运算:就是判断真或假
    算数如果为真则表示为(true,yes,on,1)
    算数如果为假则表示为(false,no,off,0)
  • 与、或、非、异或
    • 与,表示乘法,叫短路与运算
      1 && 1 =1
      1 && 0 =0
      0 && 1 =0
      0 && 0 =0
      只有参与运算的两个结果都为真,则为真。否则则为假;
    • 或,表示加法,叫短路或运算
      1 || 1 =1
      1 || 0 =1
      0 || 1 =1
      0 || 0 =0
      只有二者都为零,结果才为零,否则,则为1;
    • 非,表示取反,非假即为真
      ! 1 = 0,! 0 = 1
    • 异或,判断是否不同
      两个数字运算的结果不同则为1,相同则为0;
  • 表示法:

    • 与运算:&&
      ~]# COMMAND1 && COMMAND2,将两个命令的执行结果做状态‘与’运算;
      意义是:可实现控制功能,前面的命令运算结果取决于后面运行的命令;
      COMMAND1为‘假’,则COMMAND2不会再执行,否则COMMAND1为‘真’,则COMMAND2必须执行;
    • 或运算:| |
      ~]# COMMAND1 || COMMAND2,将两个命令的执行结果做状态‘或’运算;
      意义是:可实现控制功能,前面的命令运算结果取决于后面运行的命令;
      COMMAND1为‘真’,则COMMAND2不会执行,否则COMMAND2为‘假’,则COMMAND2必须执行;
      ~]# touch /tmp/test.etc && ls /etc > /tmp/test.etc
    • 注意:命令之间存在‘逻辑关系’,前面的命令结果都会取决于后面的命令;

    done

bashshell快捷键学习(待补充)(代码片段)

ps:博主用的mac,似乎alt相关的快捷键用不了,以后再修吧。移动光标ctrl+a:移到行首(a首字母)ctrl+e:移到行尾(end)ctrl+f:右移一个字符(forward)ctrl+b:左移一个字符(backward)ctrl+xx:行首到当... 查看详情

了解dashshell与zshshell(代码片段)

#其他shell:dashshell,zshshelldashshelldashshell特性尽管bashshell和dashshell都以Bourneshell为样板,由于dash的目标是简洁,因此它的环境变量比bashshell少多了。dash变量和bash变量之间有一个巨大的差异,dashshell不支持数组。一、dash命令行参... 查看详情

bashshell命令(代码片段)

3.BashShell命令3.1基础常识1lijunbo@lijunbo-virtual-machine:~/Desktop$用户名@机器名:当前所在目录$等待用户输入~代表当前用户home目录/代表根目录man[命令]:显示该命令的用法Windows盘符,文件目录\\反斜线,Linux一切皆文件,文件目录/正... 查看详情

网格布局之相关特性(代码片段)

...网格布局还有其特有的运用点,本文主要是探讨网格布局相关的独立源、网格分层和网格流动。独立源在web页面中,HTML结构是按照一种类似于树形结构的方向,根据从上到下,从前到后的顺序,依次出现,那么把这些HTML的标签... 查看详情

sh[bashshell脚本模板]#simplebash脚本模板(代码片段)

查看详情

sh检查bashshell脚本中是否存在输入参数(代码片段)

查看详情

bashshell中数组使用举例(代码片段)

bashshell中数组使用举例一背景让我们先来看一个shell脚本的执行过程及结果:[[email protected]~]$sharray.shN2N3N4Theelementsofthisarray2-4are:N2N3N4N1isinarray.N2isinarray.N3isinarray.N4isinarray.Theoriginalarrayisasfollows:N1N2 查看详情

了解基本的bashshell命令(代码片段)

  本节内容主要介绍如何使用bashshell提供的基本命令处理Linux文件和目录;1、启动shell  shell是一个可以交互访问的Linux系统程序,它的运行与普通程序相同,系统启动的shell取决于用户ID的配置;  bash命令常用的参数: ... 查看详情

bashshell合并多个文件内容到一个文件(代码片段)

一、简单版:$cat**/*>merge.fuck二、结合find+xargs+cat版本:$find./-iregex‘.*.(js|scss|tpl)$‘|xargscat>merge.fuckyou  查看详情

bashshell中,select使用举例(代码片段)

Bashshell中,select使用举例一背景在最近的运维工作中,写了很多脚本,在写这些脚本时发现了一些高效的用法,现将select的用法简单介绍一下。二使用举例select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组... 查看详情

centos中环境变量和配置文件(代码片段)

什么是环境变量bashshell用一个叫做环境变量(environmentvariable)的特性来存储有关shell会话和工作环境的信息。即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问它们。在bashshell中,环境变量分为两类:全局变量局... 查看详情

[linux]基础bashshell命令(代码片段)

[Linux]基础操作命令参考书本《Linux命令行与shell脚本大全》复习和查询用,别的用到了在慢慢补充遍历目录目录路径绝对路径cd/usr/bin相对路径cdDocuments返回主目录cd其他实用命令显示当前目录pwd当前目录的父目录…单点表示当前目... 查看详情

android安全与隐私相关特性的行为变更分析(代码片段)

文章目录前言Android131.1新增通知运行时权限1.2新增WIFI运行时权限1.3精细化媒体访问权限1.4Intent调用组件过滤1.5动态广播接收器限制1.6后台访问身体传感器Android122.1剪贴板内容访问提醒2.2软件包可见性的限制2.3限制悬浮窗点击透... 查看详情

android安全与隐私相关特性的行为变更分析(代码片段)

文章目录前言Android131.1新增通知运行时权限1.2新增WIFI运行时权限1.3精细化媒体访问权限1.4Intent调用组件过滤1.5动态广播接收器限制1.6后台访问身体传感器Android122.1剪贴板内容访问提醒2.2软件包可见性的限制2.3限制悬浮窗点击透... 查看详情

android安全与隐私相关特性的行为变更分析(代码片段)

文章目录前言Android131.1新增通知运行时权限1.2新增WIFI运行时权限1.3精细化媒体访问权限1.4Intent调用组件过滤1.5动态广播接收器限制1.6后台访问身体传感器Android122.1剪贴板内容访问提醒2.2软件包可见性的限制2.3限制悬浮窗点击透... 查看详情

android安全与隐私相关特性的行为变更分析(代码片段)

文章目录前言Android131.1新增通知运行时权限1.2新增WIFI运行时权限1.3精细化媒体访问权限1.4Intent调用组件过滤1.5动态广播接收器限制1.6后台访问身体传感器Android122.1剪贴板内容访问提醒2.2软件包可见性的限制2.3限制悬浮窗点击透... 查看详情

物联网之mqtt3.1.1和mqtt5协议(20)mqtt相关开源实现server或broker列表(会不断更新)(代码片段)

...录前言broker列表整体比较(MQTT官网提供)HiveMQ支持特性说明相关资料ActiveMQ支持特性相关资料ActiveMQArtemis支持特性相关资料RabbitMQMosquittoflespiMoscaVerneMQ支持特性相关资料emqx相关资料vertx-mqtt-broker支持特性相关资料**moquette**相关资料Jm... 查看详情

随堂练习bashshell特性和i/o重定向及管道

history 命令语法格式history[-e][-doffset][n]orhistory-anrw[filename]orhistory-psarg[arg...]选项      说明-c      表示清空历史命令-d,offset  删除历史中指定的第offset个命令n       显示最近的n条历史-a    ... 查看详情