设为首页 加入收藏

TOP

linux基础之bash特性(二)
2019-03-04 14:08:21 】 浏览:251
Tags:linux 基础 bash 特性
只表示空格,不是匹配空格,匹配空格要写成
[[:space:]]

      [:punct:]:任意的标点字符,这里只表示标点符号,不是匹配标点符号,匹配空格要写成[[:punct:]]

      案例演示

        列出/var目录下,非字母开头,后面跟任意单个字母的txt文件

          ls  -l  /var/[^[:alpha:]][[:alpha:]].txt

8、bash的快捷键

  ctrl+l:清屏操作,相当于clear命令

  ctrl+a:将光标跳转至命令的首部

  ctrl+e:将光标跳转至命令的尾部

  ctrl+c:取消命令执行

  ctrl+u:删除光标所在位置之前的全部字符

  ctrl+k:删除光标所在位置之后的全部字符

 

9、输入、输出重定向及管道

  程序是由指令加数据组成,那么程序都有读入数据的需求(Input),程序也有输出数据的需求(Output

  程序读入数据的来源有很多:文件、用户键盘输入等

  程序输出数据的地方有很多:保存至文件、输出到屏幕

  那么程序读入数据或者输出数据的选择就有很多,如果程序每一次执行时都需要指定程序读入数据或者输出数据的来源或者去处,这样会很麻烦,因此,就会有缺省或者说默认的值

  缺省输入或者默认输入叫做标准输入默认的或者缺省的输入是键盘输入

    比如说cat命令,这里可以说是cat程序,如果你不指定文件,也就是数据来源,那么它默认从键盘获取你的输入。但是有些命令自身具有默认的数据输入位置,比如ls命令,如果不给定ls命令输入的数据,那么默认以当前位置为输入数据

  缺省输出或者默认输出叫做标准输出,默认的或者缺省的输出是监视器(monitor

  默认的错误输出或者缺省的错误输出叫做标准错误输出

  不管是bash报错还是某个命令自身报错都属于标准错误输出,这个输出是与标准输出不相瓜葛的输出,即是一个独立的输出数据流,但是他的输出位置默认是监视器(monitor

 

I/O重定向:改变标准输入或者标准输出的位置 

  输出重定向( >>> )

  语法

    COMMAND  >  new_pos

    COMMAND  >>  new_pos

  分类

    >:表示覆盖重定向,目标文件原有内容会被覆盖

  案例演示

  

[root@oldboy ~]# ls /var > /tmp/var.txt

    >>:追加重定向,在目标文件原有内容下追加新内容

  案例演示

[root@oldboy ~]# ls /etc/ >> /tmp/etc.txt

  

  注意:输出重定向是非常危险的操作,误操作就可能把你的重要数据给覆盖了。

  问题:bash中有没有可以设置关闭和打开这个输出重定向功能呢?

    解决方式

      set  -C 命令:禁止将内容覆盖输出到已有文件内容,但是不存在的文件是可以进行输出重定向的,这个对标准错误输出也起作用

    另外一个现实:

      输出重定向新问题:bash支持强制输出覆盖:>|

        案例演示

          cat  /etc/fstab  >|  /tmp/a.txt

    set  +C命令:关闭禁止将内容覆盖输出到已有文件内容,也就是可以覆盖输出到已有内容的文件

  标准错误输出

    当我们执行一条有时命令会报错,但是这个错误输出默认是输出到监视器,那么我们怎么重定向这个标准的错误输出呢?

    标准错误输出重定向

      语法

        COMMAND  2> new_pos

        COMMAND  2>> new_pos

      分类

        2>:表示覆盖重定向错误输出流,目标文件原有内容会被覆盖

      案例演示

[root@oldboy ~]# ls /varr 2> /tmp/var.txt

        2>>表示追加重定向错误输出流,在目标文件原有内容下追加新内容

      案例演示

[root@oldboy ~]# ls /etcc/ 2>> /tmp/etc.txt

      我们想把错误的输出或者正确的输出到不同位置

        语法

          COMMAND  >>  new_pos  2>> err_new_pos

          COMMAND  >  new_pos  2>  err_new_pos

 

      错误或者正确的输出流合并至同一个数据流进行重定向

        语法

          COMMAND  &>  new_pos

          COMMAND  &>>  new_pos

          COMMAND  > new_pos  2> &1

          &>:覆盖重定向

          &>>:追加重定向

           2> &1:表示将标准错误的输出流导向与标准输入出流同一个地方,而标准输出流导向了一个文件,那么标准错误输出流也导向与标准输出流同样的地方

 

    输入重定向

      输入重定向使用的意义:有些命令在执行时不能够带文件作为参数的命令,默认只能从标准输入中读数据,那么我们可以强行使用输入重定向让他从文件获取数据

    语法

      COMMAND  < old_pos

        old_pos为一个文件或者其他数据来源

      输入重定向有没有使用两个小于号的必要?其实是有的,<<)两个小于号是用来创建文档的

    案例演示

[root@oldboy ~]# cat <<EOF

> 123

> asd

> qe

> 123

>

> EOF

123

asd

qe

123

    这个有什么用呢?

      默认从键盘键入的字符,输出到的是监视器上,那么我们可以将这些输出的字符重定向到我们指定的文件

    案例演示

    

[root@oldboy ~]# cat >> /tmp/b.txt <<EOF

> hello world

> are you ok?

> thanks

> byebye

> EOF

[root@oldboy ~]# cat /tmp/b.txt

hello world

are you ok?

thanks

byebye

    管道

      基本介绍

        我们可以将一个命令的输出当做另一个命令的输入,并且这个样无限下去

      基本语法

        COMMAND1  |  COMMAND2  |  COMMAND3....

      使用案例

[root@oldboy ~]# echo $PATH | tr 'a-z' 'A-Z'

/USR/LIB64/QT-3.3/BIN:/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/SBIN:/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN

 

未完,待续...... 

 

 

 

 

 

 

 

 

 

&n

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇fmt.Sprintf格式化使用 下一篇Golang基础之函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目