bash基础特性

author author     2022-09-09     724

关键词:

对BASH做一下总结


一、命令历史特性: history

shell进程会其会话中保存此前用户提交执行过的命令

historyshell的内置命令

技术分享

       1. 命令语法格式:

  history [-c] [-d OFFSET] [n]

  history -anrw [FILENAME]

  history -ps VALUE [VALUE...]

  -c: 清空命令历史;

  -d offset(偏移量):删除指定命令历史offsethistory显示出来的命令数字

  -r: 从文件读取命令历史至历史列表中;

 -w:把历史列表中的命令追加至历史文件中;

history #:显示最近的#条命令;

      2. 相关环境参数,实现定制环境变量的功能

HISTSIZE:shell进程可保留的命令历史的条数;

HISTFILE:持久保存命令历史的文件,默认为.bash_history

HISTFILESIZE:命令历史文件的存储历史命令数量条数

HISTCONTROL控制命令历史记录的方式

ignoredups:忽略重复的命令;

ignorespace:忽略以空白字符开头的命令;

ignoreboth:以上两者同时生效;

       3. 调用命令历史列表中的命令

    !#:再一次执行历史列表中的第#条命令;

   !-#执行倒数第几条命令;

    !!:再一次执行上一条命令;

    !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

            注:命令的重复执行有时候需要依赖于幂等性;

       4. 调用上一条命令的最后一个参数:

       快捷键:ESC, .

ALT+.  远程终端可能不支持该方法

       字符串:!$

 

 

 

二、BASH补全特性

    1. 命令查找和补全机制:

       (1) 查找内部命令;

       (2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

       (3) 给定的部分字符串如果能惟一标识某命令程序文件,则直接补全;

      不能惟一标识某命令程序文件,再击tab键一次,会给出列表;

    2.路径补全

在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件:

        TAB按键;

如果能惟一标识,则直接补全;

否则,再一次tab,给出列表;

    3.命令行展开

   ~:自动展开为用户的家目录,或指定的用户的家目录;                

  {}:花括号展开。可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

 

 

 

三、命令执行状态结果特性

    1.bash通过状态返回值来输出此结果:

成功:0

失败:1-255

注意:命令正常执行时,有的还有命令返回值:

              根据命令及其功能不同,结果各不相同;

    2.态返回值保存于bash的特殊变量$?

    3.引用命令的执行结果:$(COMMAND)      `COMMAND`

 

 

 

四、命令行编辑特性(快捷键)

Ctrl+a:跳转至命令行行首

Ctrl+e:跳转至命令行行尾

Ctrl+u:删除行首至光标所在处之间的所有字符;

Ctrl+k:删除光标所在处至行尾的所有字符;

Ctrl+l:清屏,相当于clear

 

 

 

五、文件名通配(globbing)特性

    1.globbing:整体文件名匹配,而非匹配部分文件名

     [[email protected] ~]# whatis  glob

glob          (3)  - find pathnames matching a pattern, free memory from glob

glob          (3p)  - generate pathnames matching a pattern

glob          (7)  - Globbing pathnames

glob.h [glob]      (0p)  - pathname pattern-matching types

       [[email protected] ~]# man 7 glob

    2. 匹配模式:元字符(一组代替一个或多个字符的字符)

元字符:具有特殊意义的专用字符,可以用来规定其前导字符在目标对象的出现模式

      *:匹配任意长度的任意字符,包括空字符

      ?:匹配任意单个字符

     []:匹配指定范围内的任意单个字符

      例如[abc][a-z][A-Z][a-zA-Z][A-Z][0-9][a-z0-9]

     特殊格式:

[[:upper:]]:所有大写字母

[[:lower:]]:所有小写字母

[[:alpha:]]:所有字母

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

[[:space:]]:所有空白字符

[[:punct:]]:所有标点符号

            [^]:匹配指定范围外的任意单个字符

例如:[^[:upper:]][^0-9][^[:alnum:]]

 

 

 

六、IO重定向及管道

    1. IO重定向:一切皆文件,包括设备都可以作为IO重定向文件

(1) 程序IO设备

     可用于输入的设备:文件键盘设备、文件系统上的常规文件、网卡等;

     可用于输出的设备:文件显示器、文件系统上的常规文件、网卡等;

(2) 数据流种类:         

         输入的数据流;<-- 标准输入(stdin),键盘;

         输出的数据流:--> 标准输出(stdout),显示器;

         错误输出流:  --> 错误输出(stderr),显示器;

(3) 文件描述符, fd : file  descriptor

标准输入:0

标准输出:1

错误输出:2

(4) 用法说明

         1) 覆盖输出重定向:>

         2) 追加输出重定向:>>

         3) 错误输出重定向:2>(错误覆盖 2>>(错误追加)

         4) 合并正常输出流和错误输出流:

     方法一:&>, &>>

     方法二:COMMAND > /path/to/somefile 2>&1

           COMMAND >> /path/to/somefile 2>&1

         5) 输入重定向:<

         6) Here Document:<<      

      cat << EOF

      cat > /PATH/TO/SOMEFILE << EOF 

         7)  特殊设备:/dev/null    数据黑洞

 # set 命令:

       [[email protected] ~]# type set

         set is a shell builtin

       [[email protected] ~]# help set

        set: set  [--abefhkmnptuvxBCHP]  [-o option-name]  [arg ...]

        Set or unset values of shell options and positional parameters.

        Change the value of shell attributes and positional parameters, or display the names and values of shell variables.

 # set -C     禁止覆盖输出重定向至已存在的文件;

                   此时可使用强制覆盖输出:>|

# set +C    关闭上述特性

    2.管道:组合小程序完成重要任务

连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流

格式:COMMAND1 | COMMAND2 | COMMAND3 | …

 

 

 

七、命令hash特性

    1.hash命令定义:缓存此前命令的查找结果(命令位置,不包括内置命令)

hash缓存---->发起新的额请求

    2.命令的缓存结果和命令的参数无关

    3.hash不是外部命令,所以记录不了自己的位置

         确定并记住每一个给定NAME名称的命令的完整路径

hash:查看hash

-d :忘记每一个已经记住的命令位置,删除指明的命令

       不用给定完整路径,只要给定命令名称即可

-r :忘记所有的位置

         注意:当把命令程序位置改变之后,再次调用该命令程序,系统会先调用现在hash缓存中前一次已经记录下来的命令位置,此时出错。需要清空hash -r

       缓存此命令此前的查找结果:key-value键值格式数据

    4.bash查询命令顺序

命令行模式直接输入、history命令(记录过去所输入过的命令)调用输入

---->hash缓存命令路径(加速、一切皆缓存思想)

---->若未找到,从左向右遍历PATH环境变量所定义的各路径下文件

 

 

 

八、多命令执行控制

    1.并行控制:~]# COMMAND1; COMMAND2; COMMAND3; …

执行次序从左到右,

命令间没有逻辑关系,完成一个之后再进行下一个

    2.逻辑控制执行:与&& 、或||、非!

      ==========状态结果做逻辑运算,给多个命令之间建立执行时的逻辑关系==========

      ==========控制语句的执行的逻辑能减少语句的运行==========

        (1)逻辑运算

    1)运算数:真(true, yes, on, 1)

    假(false, no, off, 0)

               2)与:只有两者为真结果才为真,否则都为假

1 && 1 = 1

1 && 0 = 0

0 && 1 = 0

0 && 0 = 0

               3)或:一个为真就为真

1 || 1 = 1

1 || 0 = 1

0 || 1 = 1

0 || 0 = 0

               4)非:取反

! 1 = 0

! 0 = 1

         (2)短路法则:

      1)~]# COMMAND1 && COMMAND2

COMMAND1为“假”,则COMMAND2不会再执行;

否则,COMMAND1为“真”,则COMMAND2必须执行;

      2)~]# COMMAND1 || COMMAND2

COMMAND1为“真”,则COMMAND2不会再执行;

否则,COMMAND1为“假”,则COMMAND2必须执行;

 示例:~]# id $username || useradd $username

 

 

 

九、bash的配置文件

    1.登录类型

       (1)交互式登录shell进程:

   直接通过某终端输入账号和密码后登录打开的shell进程;

  使用su命令:su - USERNAME, 或者使用 su -l USERNAME执行的登录切换;

       (2)非交互式登录shell进程:

   su USERNAME执行的登录切换;

   图形界面下打开的终端;

  运行脚本

    2.配置文件类型:仅管理员可修改全局配置文件

       (1)profile类:为交互式登录的shell进程提供配置

   功用:用于定义环境变量;运行命令或脚本;

  全局/etc/profile /etc/profile.d/*.sh

 用户个人~/.bash_profile

       (2)bashrc类:为非交互式登录的shell进程提供配置

功用:定义本地变量;定义命令别名;

  全局/etc/bashrc

  用户个人~/.bashrc

    3.bash路径搜索

交互式登录shell进程:

/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录shell进程:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*

    4.定义生效方法

       (1)命令行中定义的特性,例如变量和别名作用域为当前shell进程的生命周期;

       (2)配置文件定义的特性,只对随后新启动的shell进程有效;

让通过配置文件定义的特性立即生效:

1) 通过命令行重复定义一次;

2) 让shell进程重读配置文件;

~]# source /PATH/FROM/CONF_FILE

~]# .  /PATH/FROM/CONF_FILE


08-bash基础特性及基础命令

bash的基础特性  (1)命令历史 history HISTSIZE:命令历史记录的条数: HISTSIZE:~/.bash_history HISTFILESIZE:命令历史文件记录的条数: history-dOFFSET   -c history#:显示历史最近的#条命令: -a:手动追加当前会话... 查看详情

bash基础特性命令引用

bash命令引用:$(COMMAND) 或2.`COMMAND` 这是反引号:就是ESC键下面的那个反引号bash的引用特性: 引用 强引用:‘‘单引号弱引用:""双引号命令引用:$(COMMADN) bash特性:快捷键 ctrl+a:跳转至命令行首ctrl+e:跳转... 查看详情

bash基础特性

对BASH做一下总结一、命令历史特性: historyshell进程会其会话中保存此前用户提交执行过的命令history是shell的内置命令650)this.width=650;"src="http://s5.51cto.com/wyfs02/M00/78/1F/wKiom1Z2ZjWSJrjdAAA9gP4LoMo818.jpg"title="未命名图片.jpg"width="400 查看详情

bash基础特性--卷一

                                 &n 查看详情

2017.10.15bash基础特性及基础命令

一.命令历史,命令补全和路径补全 环境变量:   HISTFILE:命令历史记录的条数  HISTSIZE:~/.bash.history   HISTFILESIZE:命令历史文件记录历史的条数   history:默认显示10条历史纪录  ... 查看详情

bash基础特性-命令历史

shell进程会在其会话中保存此前用户提交并执行过的命令可以使用~]#history进行查看,history命令本身属于shell的内嵌命令命令历史可分为内存中的历史命令以及历史文件中的历史命令,其容量默认大小均为1000条(可修改),从主... 查看详情

bash的基础特性二

1、命令别名    alias是命令别名命令,在生产环境根据常用的命令,可以制作为命令别名,可以提高操作效率    alias:打开当前bash的所有命令别名  定义别名:alias别名=‘执行的命令’ &nb... 查看详情

bash脚本编程——基础特性

650)this.width=650;"src="https://mmbiz.qpic.cn/mmbiz_png/ZjOsibraW8CLWLVibeTRzXWwUY4je8RmicoNXYUKFMuia43wtxTA55grFbFia17sGcMnMFRCl2swpZwm9pBC2NdyHnw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy 查看详情

bash特性

bash的基础特性(1): (1)命令历史history系统中history环境变量:HISTSIZE:命令历史记录的条数;HISTFILE:~/.bash_history;HISTFILESIZE:命令历史文件记录历史的条数; history-dOFFSET(具体删除第几条历史记录)history-c 清空所有... 查看详情

bash的基础特性(代码片段)

bash的基础特性:命令补全:Shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令;命令查找机制:查找内部命令;根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;给定的打... 查看详情

bash的工作特性及命令状态返回查询

bash的基础特性:命令的执行状态结果        命令执行的状态结果:        bash通过状态返回值来输出此结果:         &nb 查看详情

bash的常见特性及文本查看命令

(一)bash的基础特性命令补全shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令;命令查找机制:shell首先会在内部命令中匹配查找,如果没有找到,则会在PATH环境变量设置的目录中,自左向... 查看详情

bash基本特性

bash基本特性bash是Linux中最常使用到的shell,它给用户提供了许多便利的功能和特性,下面就介绍一些bash的基本特性。 1、命令历史historybash能为我们提供命令的存储功能,我们也可以借由history命令来查看我们以往输入过的命... 查看详情

bash脚本编程基础及配置文件

(一)shell脚本编程编程语言的分类:根据运行方式:编译运行解释运行根据编程过程中功能的实现是调用库还是调用外部的程序文件:shell脚本编程:利用系统上的命令及编程组件进行编程完整编程:利用库或编程组件进行编... 查看详情

bash特性小结&bash变量

时间就是金钱效率就是生命一、bash编程 |---------------||应用           ||-----------|   ||壳|库函数 |    | //可以直接针对系统调 查看详情

bashshell相关特性(代码片段)

bash基础特性之:命令历史命令历史:shell进程会在会话中保存此前用户提交执行过的命令;查看历史命令:~]#history定制history的功能,可通过环境变量来实现;HISISIZE:shell进程可保留的命令历史条数;HISIFILE:持久保存命令历史... 查看详情

bash的特性

bash的特性Bash(GNUBourne-AgainShell)是许多Linux发行版的默认Shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,ShellScript大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shel... 查看详情

bash特性

bash特性一、命令别名:(自定义命令) 用alias命令查看 alias命令可以用来定义和现实命令的别名 但是使用alias命令定义的别名,其生命仅为当前shell的生命期 对于每个用户来说,都有一个私有的bash文件,用于保... 查看详情