linux学习14 Linux运维高级系统应用-glob通配及IO重定向
一、回顾
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重定向的更多相关文章
- Linux教程:基础+中级+运维高级
视频内容40G:Linux基础视频.Linux中级视频.Linux运维高级视频+赠送 职业素质视频 +查用服务器安卓文档 目录 Linux基础教程81节 常用命令.文件管理命令详解.bash脚本编程. ...
- 最新linux运维高级架构课13期 架构师课程
有会员购买的,分享给大家.完整一套,可以学习一下. ├─L001-2017linux运维高级架构师13期-运维与自动化运维发展-10节 │ 1-1运维职业发展.avi │ ...
- Linux 学习笔记 1 使用最小的系统,从分区安装系统开始
我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...
- Linux实战型企业运维工程师试题测评
Linux实战型企业运维工程师试题答案 作者:尹正杰 最近在网上看到了一套有意思的面试题,我们一起来看一下这些题怎么破吧,哈哈~我先放在这里,有时间了一起来看看.多学点东西终究是没有坏处的! ...
- Linux学习笔记-Linux系统简介
Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...
- Linux学习之三-Linux系统的一些重要配置文件
Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0 ...
- Python Linux系统管理与自动化运维
Python Linux系统管理与自动化运维 前言 第1章Python语言与Linux系统管理1 1.1Python语言有多流行1 1.2Python语言为什么流行3 1.3Python语言有什么缺点 ...
- ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计
ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...
- 全球首款完全开源的堡垒机,符合 4A 的专业运维审计系统Jumpserver
Jumpserver是全球首款完全开源的堡垒机,是符合 4A 的专业运维审计系统. http://www.jumpserver.org https://github.com/jumpserver/ju ...
随机推荐
- Akka-CQRS(11)- akka-http for http-web-service: Marshalling-数据序列化
前面几篇讨论了关于gRPC方式的前后端连接集成方式.gRPC也是一个开放的标准,但讲到普及性就远远不及基于http/1.1协议的web-service了.特别是gRPC的前端编程还是有一定的门槛,所以 ...
- Java学习:接口(interface)的使用于注意事项
接口 接口就是一种公共的规范标准.只要符合规范标准,就可以大家通用. 接口就是多个类的公共规范.接口是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式 如何定义一个接口的格 ...
- 谨记不要在MySQL中使用“utf8”编码
掉坑回顾: 最近在工作中遇到一个BUG,用于记录客户昵称的数据表,在插入带有表情的字符时候报错.使用的存储引擎是INNODB,当我查看数据库字段的时候确实是设置的utf8,我传入的字符也是utf8的编 ...
- SQL Server的常用提示
在SQL Server中,有许多SQL语句的提示,本文总结一些比较常用的提示. OPTION LOOP/MERGE/HASH JOIN提示 该提示可以改变整个SQL语句中所有JOIN的关联算法,所以请 ...
- php for循环a到z
首先先介绍2个php内置函数 ord(string):函数返回字符串的首个字符的 ASCII 值.//string:必需.要从中获得 ASCII 值的字符串. chr(ascll): 函数从指定的 A ...
- SQL 查询表外键_T-Sql 2016——级联删除外键查询
SELECT fk.name AS foreign_key_name, oSub.name AS table_name, SubCol.name AS table_column, oMain.name ...
- tf.random_shuffle()函数解析
tf.random_shuffle(value, seed=None, name=None) 函数就是随机地将张量沿第一维度打乱 value:将被打乱的张量. seed:一个 Python 整数.用于 ...
- centos7 下gcc离线安装
1.在centos安装镜像文件ios中的Packages文件夹中需找安装文件: 把需要的文件直接复制出来就行. 这里提醒的一点是,如果用命令行进入该文件夹,因为文件路径带空格,所以需要加上双引号: [ ...
- axios + vue导出excel文件
(使用到了elementUI框架) <template> <el-button type="primary" size="mini" @cli ...
- Cheat Engine 指针
打开游戏 扫描时间的流程就不多说了 扫描结果 寻找基地址 右击扫描到的地址,选择什么改写了这个地址 会弹出如下窗口 不用管这个窗口,去改变一下游戏时间,出现如下图 随便打开一个,找到了数据块地址和偏移 ...