一、回顾

  1、bash基础特性:命令补全,路径补全,命令引用

  2、文件或目录的复制,移动及删除操作

  3、变量:变量类型

    存储格式,数据表示范围,参与运算

二、bash的基础特性

  1、globbing:文件名通配(整体文件名匹配,而非部分)

    a、匹配模式:元字符

      *:匹配任意长度的任意字符

        pa*,*pa*

      ?:匹配任意单个字符,不管是什么必须得有一个

        pa?;   ??pa;  p?a;  p?a?;

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

        有几种特殊格式:

          [a-z],[A-Z],[0-9],[a-z0-9],[abcxyz]

          pa[0-9][0-9],表示200-299之间的数字:2[0-9][0-9]

          [[:upper:]]:用来表示所有大写字母

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

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

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

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

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

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

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

          [^[:upper:]]:匹配大写字母外的任意字符

          [^0-9]:匹配非0-9之外的字符

          [^[:alnum:]]:匹配所有的字母和数字之外的字符

    b、练习

      练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录

[root@node3 ~]# ls -d /var/l?[[:lower:]]
/var/lib /var/log

      练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录

[root@node3 ~]# ls -d /etc/[[:digit:]]*[^[:digit:]]
/etc/3ab23y

      练习3:显示/etc目录下,以非字母开头,后面以一个字母及其他任意长度任意字符的文件或目录

[root@node3 ~]# ls -d /etc/[^a-z][a-z]*
/etc/3ab23y

      练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/magedu.com目录

[root@node3 ~]# cp -r /etc/m*[^-] /tmp/magedu.com/

      练习5:复制/usr/share/man目录下,所有以man开头后跟一个数字结尾的文件或目录至/tmp/man目录下

[root@node3 ~]# cp -r /usr/share/man/man[-] /tmp/man

      练习6:复制/etc目录下,所有以.com结尾且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下

[root@node3 ~]# cp -r /etc/[mnrp]*.conf /tmp/conf.d/

二、IO重定向及管道

  1、程序组成:指令+数据

    a、程序也有IO

    b、可用输入的设备:文件

      键盘设备,文件系统上的常规文件,网卡等

    c、可用于输出的设备:文件

      显示器,文件系统上的常规文件,网卡等

    d、程序的数据流有三种:

      输入的数据流: <-- 标准输入(stdin),默认情况下标准输入是键盘。

      输出的数据流:-->  标准输出(stdout),默认情况下标准输出是显示器。

      错误输出流:  -->    错误输出(stderr),默认情况下错误输出是显示器。

    e、fd:file descriptor,文件描述符

      标准输入:0

      标准输出:1

      错误输出:2

  2、IO重定向

    a、输出重定向:   >

[root@node3 ~]# cat /etc/issue >> /tmp/issue.out && cat /tmp/issue.out
\S
Kernel \r on an \m

      接下来我们可以试着装一波,查看/etc/issue内容并将其重定向至虚拟机终端,此时我们可以在虚拟机中看到对应的内容打印。要注意这个命令是很危险的。

[root@node3 ~]# cat /etc/issue > /dev/tty1

      

      特性:覆盖输出重定向

    b、输出重定向: >>

      特性:追加输出

    c、set命令

      set -C :禁止覆盖输出重定向至已存在的文件,仅对当前shell有效

[root@node3 ~]# set -C
[root@node3 ~]# cat /etc/issue > /tmp/issue.out
-bash: /tmp/issue.out: cannot overwrite existing file
[root@node3 ~]# cat /etc/issue > /tmp/issue.out1

      如果我们set -C了但是我们又想要重定向至已存在的文件时,我们可以使用 >|符号

[root@node3 ~]# cat /etc/issue > /tmp/issue.out1
-bash: /tmp/issue.out1: cannot overwrite existing file
[root@node3 ~]# cat /etc/issue >| /tmp/issue.out1

      set +C:如果要关闭此特性,使用此命令即可

    d、错误输出流重定向:2> ,2>>

[root@node3 ~]# cat /etc/issue1 >/tmp/issue3.err
[root@node3 ~]# cat /tmp/issue3.err
cat: /etc/issue1: No such file or directory

    e、合并正常输出流和错误输出流,使用&即可,即 &>,&>>

    f、把正常输出定向至一个位置,把错误输出定向到正常输出上。

[root@node3 /]# cat /etc/init.d/functions >> /tmp/functions.out >&

    g、合并正常输出流和错误输出流

      (1)、&>,&>>

      (2)、COMMAND > /path/to/somefile 2>&1

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

    h、输入重定向: <

    i、tr命令

      (1)、把输入的数据当中的字符,凡是在SET1定义范围内出现的,统统对位转换为set2出现的字符

      tr abc ABC:将abc转换成ABC

[root@node3 /]# tr [a-z] [A-Z]
how are you?
HOW ARE YOU?
what are you doing?
WHAT ARE YOU DOING?

      接下来看输入重定向

[root@node3 /]# tr [a-z] [A-Z] < /etc/issue
\S
KERNEL \R ON AN \M

      (2)、删除所指明的字符集合中的字符

         

      (3)、注意,不会修改原文件

    j、<<     Here Document,即创建文档

      (1)、cat <<EOF

[root@node3 /]# cat > /tmp/wohaoshuai << EOF
> woahaoshuaia
> wohaoshuai
> EOF
[root@node3 /]# cat /tmp/wohaoshuai
woahaoshuaia
wohaoshuai

      (2)、cat > /PATH/TO/SOMEFILE <<EOF

    k、特殊设备: /dev/null

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

    a、将/etc/issue文件进行大小写转换

[root@localhost ~]# cat /etc/issue |tr 'a-z' 'A-Z'
\S
KERNEL \R ON AN \M

    b、对who命令进行操作

[root@localhost ~]# who
root pts/ -- : (192.168.10.1)
[root@localhost ~]# who |head -
root pts/ -- : (192.168.10.1)
[root@localhost ~]# who |head -|tr 'a-z' 'A-Z'
ROOT PTS/ -- : (192.168.10.1)
[root@localhost ~]# who |head -|tr 'a-z' 'A-Z' |tr -d '0-9'
ROOT PTS/ -- : (...)

    c、tee命令。COMMAND |tee /PATH/TO/SOMEFILE。将COMMAND结果输出到屏幕上并且又保存至指明文件中。

      查看/etc/issue文件,将文件中的内容保存至/tmp/issue.tee文件中并同时通过tr命令进行字符替换

[root@localhost ~]# cat /etc/issue |tee /tmp/issue.tee|tr 'a-z' 'A-Z'
\S
KERNEL \R ON AN \M [root@localhost ~]# cat /tmp/issue.tee
\S
Kernel \r on an \m

三、练习

  1、练习题目

    a、练习1:把/etc/passwd文件的前6行的信息转换为大写字符后输出

[root@localhost ~]# cat /etc/passwd |head - |tr 'a-z' 'A-Z'
ROOT:X:::ROOT:/ROOT:/BIN/BASH
BIN:X:::BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:::DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:::ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:::LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:::SYNC:/SBIN:/BIN/SYNC

linux学习14 Linux运维高级系统应用-glob通配及IO重定向的更多相关文章

  1. Linux教程:基础+中级+运维高级

    视频内容40G:Linux基础视频.Linux中级视频.Linux运维高级视频+赠送 职业素质视频 +查用服务器安卓文档 目录 Linux基础教程81节 常用命令.文件管理命令详解.bash脚本编程. ...

  2. 最新linux运维高级架构课13期 架构师课程

    有会员购买的,分享给大家.完整一套,可以学习一下.     ├─L001-2017linux运维高级架构师13期-运维与自动化运维发展-10节 │      1-1运维职业发展.avi │      ...

  3. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始

    我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...

  4. Linux实战型企业运维工程师试题测评

    Linux实战型企业运维工程师试题答案 作者:尹正杰      最近在网上看到了一套有意思的面试题,我们一起来看一下这些题怎么破吧,哈哈~我先放在这里,有时间了一起来看看.多学点东西终究是没有坏处的! ...

  5. Linux学习笔记-Linux系统简介

    Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...

  6. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  7. Python Linux系统管理与自动化运维

    Python Linux系统管理与自动化运维 前言 第1章Python语言与Linux系统管理1 1.1Python语言有多流行1 1.2Python语言为什么流行3 1.3Python语言有什么缺点 ...

  8. ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...

  9. 全球首款完全开源的堡垒机,符合 4A 的专业运维审计系统Jumpserver

    Jumpserver是全球首款完全开源的堡垒机,是符合 4A 的专业运维审计系统. http://www.jumpserver.org https://github.com/jumpserver/ju ...

随机推荐

  1. linux 1-常用命令

    文件处理命令: 命令格式:命令 [-选项] [参数] 例如:ls -la /etc   多个选项可以写在一起,不区分前后关系,例如 -l 和 -a 一起写成 -la 目录处理命令:ls (就是list ...

  2. excel查找定位操作(for lutai)

    产成品出库的单价要根据订单号和存货编码引用产成品入库的单价 方法一:使用Index 和Match =INDEX(产成品入库!I2:P13    ,IF( ) ,7) 方法二:使用vlookup ,首先 ...

  3. opencv imshow plt imshow

    opencv官方文档上写的,https://docs.opencv.org/master/dc/d2e/tutorial_py_image_display.html Color image loade ...

  4. IntelliJ IDEA启动一个普通的java web项目的配置

    文:朱季谦 这是我很久以前刚开始用IntelliJ IDEA时记录的笔记,正好赶上最近离职了,可以有比较多的时间把以前的记录整理一下,可以让刚接触到IntelliJ IDEA的童鞋学习如何在Intel ...

  5. Echarts 学习系列(1)-5分钟上手ECharts

    目录 写在前面 下载Echarts和主题 绘制一个简单的图表 写在前面 最近,在做某个项目的时候.需要使用的可视化的图表显数据.最后,选择了百度的Echarts. 下载Echarts和主题 1.获取E ...

  6. java jsp文件报错解决方法

    初次使用java开发 下载好代码之后,用maven编译都是ok的,第二天,打开项目一看,好的web项目的jsp文件提示错误,后面,查了下问题,是tomcat没有配置路径导致的问题,现在大致记录一下解决 ...

  7. 一步一步学Spring Boot 2 微服务项目实战 - 黄文毅-2018年8月第一次印刷

    properties 配置文件的优先级高于.yml .在properties文件中配置了server.port=8080 同时在.yml中配置了server.port=8090  Spring Boo ...

  8. Jest单元测试进阶

    Jest 命令行窗口中的指令 在学习Jest单元测试入门的时候,给Jest命令提供了一个参数 --watchAll, 让它监听测试文件或测试文件引入的文件的变化,从而时时进行测试.但这样做也带来一个问 ...

  9. 11、多行文本最后一行显示省略号并截取文本字数(vue)

    1.首先通过css实现多行文本显示省略号: { height: 45px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-li ...

  10. jvm学习笔记之class文件的加载、初始化

    编写的java文件在要真正运行时,会首先被编译成 “.class"结尾的二进制文件,然后被虚拟机加载.那么在虚拟机中一个class文件要成为java实例,需要经历好几个步骤: 1.装载:装载 ...