bash特性总结

一、命令历史

history 命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 。

命令历史保存的条数:

   环境变量:HISTSIZE

   1

用户退出时命令历史的持久保存位置:

   环境变量:HISTFILE,通常默认为用户家目录下的.bash_history

   2

      此文件中可保存的最大数目:

      环境变量:HISTFILESIZE

      图片3

HISTCONTROL: 控制命令历史中的输入内容

    ignoredups: 忽略重复的命令(连续的相同命令才会被视为重复)(若是重复的 命令,命令历史中只记录一条命令)

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

    ignoreboth: 以上二者同行生效;

    图片9

    图片10

history命令用法:

  history N: 显示最近的N条,包括当前命令自身;

  图片4

  history -c: 清空命令历史

  history -d offset: 删除指定的偏移处的命令条目

  history -a [/path/to/some_history_file]: 将当前会话中的命令历史写入指定文件(命令历史一般在用户退出时才会保存,也可用-a手动保存)

bash调用命令历史列表中的命令:

  !#: 执行命令历史中的第#条命令(#表示数字)

  !!: 执行上一条命令

  !string: 执行命令历史中最近一次以string开头的命令;

  !$: 调用上一条命令的最后一个参数

  ESC, . :功能同上(按ESC键后按’.’键)(调用上一条命令的最后一个参数)

图片5

图片6    

二、命令补全

根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令

    如果用户指定的开头字符串能惟一标识某命令,则按tab键可补全此命令

    否则,则按两次tab键可显示所有以指定字串开头的命令

    图片7

    图片8 

三、路径补全

以用户指定的起始路径进行文件名补全查找(敲tab键,用法同命令补全。)

每个绝对路径都可以切割为两部分

   基名

      basename  /path/to/somewhere

      结果为somewhere

   目录名

      dirname /path/to/somewhere

      结果为/path/to

图片11

四、命令行展开

~: 用户家目录

~USERNAME: 指定用户的家目录

{}: 花括号展开

例如:

    /tmp/{x,y}

        /tmp/x, /tmp/y

    /tmp/{x,y}/z

        /tmp/x/z, /tmp/y/z

练习1:创建/tmp/x/z, /tmp/y/z, /tmp/x/m, /tmp/y/m

    /tmp/{x,y}/{z,m}

练习2:创建/tmp/ a_b, c_b, a_d, c_d

mkdir -pv /tmp/{a,c}_{b,d}

五、命令别名和命令引用

alias :查看和设置命令别名

    alias : 查看所有的命令别名

    alias ALIAS=COMMAND :设置命令别名

生效范围:命令行定义的别名,其生效范围为当前会话;(要命令别名长期有效,可在配置文件中设置。在当前回话中设置命令别名,起效快,但不能长期有效)

图片12

 图片13

别名与命令同名时,要使用命令,有两种方法:

(1)使用命令的绝对路径

(2)\COMMAND

图片14

unalias [ALIAS] :撤销命令别名

    -a: 撤消所有别名

图片15

bash支持的引用:

    '' :单引号

    "" :双引号(要引用变量时不能使用单引号,要使用双引号)

    ``:引用一个命令的执行结果

    $() :引用一个命令的执行结果(推荐用这种方式)

    图片16

六、文件名通配(globbing)

*: 任意长度的任意字符(任意长度:长度可为0)

    p*d, pad, pbd, pd

    *ab*c :以‘c’结尾,中间包含’ab’

?: 匹配任意单字符

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

    [abc]  :字母集{a,b,c}

    [a-z] :所有字母的集合(不区分大小写)

    [0-9] :所有数字的集合(10个数字)

    [0-9a-z] :所有数字和字母的集合

    字符集合:

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

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

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

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

    [:digit:] :所有数字

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

    [:alpha:] :所有字母

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

    [^0-9a-z]

七、输入、输出重定向和管道

程序输入:标准输入

程序数据输出:标准输出 和 标准错误输出

由于计算机处理数字的速度远远大于处理字符的速度,所以常用一个数字来描述文件,这个数字被称为文件描述符。

FD(file descriptor):文件描述符在形式上是一个非负整数。实际上,它是一个索引值, 指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。

文件:文件系统(内核)

    标准输入:FD为0 (计算机从来都是从0开始计数)

        键盘(默认)

    标准输出:FD为1

        监视器(默认)

    错误输出:FD为2

        监视器(默认)

重定向意味着:改变其标准位置

输出重定向:

    COMMAND > POSITION:覆盖输出

    COMMAND >> POSITION: 追加输出

    图片18

错误重定向:

    COMMAND 2> POSITION:覆盖输出

    COMMAND 2>> POSITION: 追加输出

    图片20

合并重定向:

    COMMAND &> POSITION :合并重定向(覆盖)

    COMMAND &>> POSITION :合并重定向(追加)

    COMMAND > POSITION 2>&1 :(覆盖)(&表示引用文件描述符)

    图片21

分别重定向

    COMMAND > POSTIION 2> POSTION2

输入重定向:

     COMMAND < POSITION

     <<:Here Document(此处文档)

    图片22

   (EOF作为输入结束符,也可以使用END作为输入结束符,输入结束符是自定义的。)(cat命令特有的用法)

管道:|

    管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入

多道输出:

    COMMAND | tee POSITION

    图片23 

   (同时输出到显示器和a.txt文件中,多道输出)

八、快捷键的使用

Ctrl+a: 跳转至命令行首

Ctrl+e: 跳转至命令行尾

Ctrl+u: 删除命令行首至当前光标所在处之前的所有内容

Ctrl+k: 删除当前光标所在处至命令行尾的所有内容

Ctrl+l: 清屏

Ctrl+c: 中止或取消

Ctrl+z: 把当命令送至后台

bash还有很多特性,现在就不继续说下去,以后补充!

  

 

 

你可能感兴趣的:(bash,特性)