什么是文件描述符FD或者文件句柄?

通过构建一个带有编号标记的通道(文件描述符)的进程结构来管理打开的文件。今晨连接到文件,从而达到这些文件所代表的的数据内容或者设备。通过使用通道0、1、2(称为标准输入,标准输出,标准错误)的默认连接创建进程。进程使用3号及以上标号的通道连接其他文件。

掌握常见文件描述符的作用

 表示stdin(标准输入),默认连接为键盘,仅读取

 表示stdout(标准输出),默认连接为终端,仅写入

 表示stderr(标准错误),默认连接为终端,仅写入

+ 表示filename(其他文件),可以读取/写入

示例:

保存时间戳

[root@localhost ~]# date
2018年 08月 24日 星期五 :: CST
[root@localhost ~]# date > /tmp/saved-timestamp
[root@localhost ~]# cat /tmp/saved-timestamp
2018年 08月 24日 星期五 :: CST
[root@localhost ~]#

将一个文件的最后100行保存到另一个文件

[root@localhost ~]# tail -n  /var/log/demsg > /tmp/last--boot-messages
[root@localhost ~]#

将四个文件合并为一个

[root@localhost ~]# cat file1 file2 file3 file4 > /tmp/all-four-in-one
[root@localhost ~]#

累出家目录中的隐藏文件名和常规文件名保存到文件中

[root@localhost ~]# ls -a > /tmp/my-file-names
[root@localhost ~]# cat /tmp/my-file-names
.
..
anaconda-ks.cfg
.bash_history
.bash_logout
.bash_profile
.bashrc
.cache
.config
.cshrc
.dbus
Desktop
.gitconfig
initial-setup-ks.cfg
.mozilla
.pki
.ssh
.tcshrc
.viminfo
.xauthKYrxVH
.Xauthority
[root@localhost ~]#

使用普通用户对系统目录进行访问会被拒绝,将错误从定向到文件

[root@localhost ~]# find /etc -name passwd  > /tmp/errors
[root@localhost ~]#

将命令的输出和错误消息分别保存到单独的文件中

[root@localhost ~]# find /etc/-name passwd > /tmp/output  > /tmp/errors
[root@localhost ~]#

忽略并丢弃错误消息

[root@localhost ~]# find /etc/ -name passwd > /tmp/output > /dev/null
[root@localhost ~]#

基于输出及输入重定向实现管理

head /tail/wc/cut/sort/uniq/diff/patch/tr/grep

进程管道PIping

示例:

将ls长葛市输出分页显示

[root@localhost ~]# ls -l /usr/bin/ | less

总用量
-rwxr-xr-x. root root 11月 [
-rwxr-xr-x. root root 8月 a2p
-rwxr-xr-x. root root 8月 abrt-action-analyze-backtrace
-rwxr-xr-x. root root 8月 abrt-action-analyze-c
-rwxr-xr-x. root root 8月 abrt-action-analyze-ccpp-local
-rwxr-xr-x. root root 8月 abrt-action-analyze-core
-rwxr-xr-x. root root 8月 abrt-action-analyze-oops
-rwxr-xr-x. root root 8月 abrt-action-analyze-python

计算ls输出的行数并且保存到文件

[root@localhost ~]# ls | wc -l > /tmp/how-many-files
[root@localhost ~]# cat /tmp/how-many-files [root@localhost ~]#

将ls输出的前10行保存到文件

[root@localhost ~]# ls -t | head -n  > /tmp/ten-last-changed-files
[root@localhost ~]# cat /tmp/ten-last-changed-files
Desktop
initial-setup-ks.cfg
anaconda-ks.cfg
[root@localhost ~]#
只有三行。。。

在终端商显示ls列表,同时将文件列表存储到文件中

[root@localhost ~]# ls -l | tee /tmp/saved-output
总用量
-rw-------. root root 8月 : anaconda-ks.cfg
drwxr-xr-x. root root 8月 : Desktop
-rw-r--r--. root root 8月 : initial-setup-ks.cfg
[root@localhost ~]# cat /tmp/saved-output
总用量
-rw-------. root root 8月 : anaconda-ks.cfg
drwxr-xr-x. root root 8月 : Desktop
-rw-r--r--. root root 8月 : initial-setup-ks.cfg
[root@localhost ~]#

确定当前窗口的终端设备,将ls结果作为邮件发送,并在此窗口查看输出内容

[root@localhost ~]# ls -l | tee /dev/pts/ | mail -s subject seven_nighter@.com
总用量
-rw-------. root root 8月 : anaconda-ks.cfg
drwxr-xr-x. root root 8月 : Desktop
-rw-r--r--. root root 8月 : initial-setup-ks.cfg
您在 /var/spool/mail/root 中有邮件
[root@localhost ~]#

掌握参数传递机制Xargs

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具,它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并且将其转换成特定的命令的参数。xargs也可以将单行或者多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令时echo,空格是默认的定界符,这就意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代,xargs是构建单行命令的重要组件之一。

具体操作百度。。

wc - print newline, word,and bytes counts for each file

计算文件的行数,单词数,字节数

[root@localhost ~]# wc /etc/passwd
/etc/passwd
[root@localhost ~]#
[root@localhost ~]# wc -l /etc/passwd
/etc/passwd 行数
[root@localhost ~]#
[root@localhost ~]# wc -w /etc/passwd
/etc/passwd 单词数
[root@localhost ~]#
[root@localhost ~]# wc -c /etc/passwd
/etc/passwd 字节数
[root@localhost ~]#

按列提取文件

-d 指明列分隔符 默认tab

-f 选择输出的区域

-c 指定字符位置

[root@localhost ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
[root@localhost ~]# cut -c1- /etc/passwd
roo
bin
dae
adm
lp:
syn
shu

sort - sort lines of text files

排序输出,默认按照首字符从头至尾的顺序排序

-r 逆序(倒叙)

-n 按数字排序

-t 指明分隔符 与 -k 连用

-k 按指定的域排序

[root@localhost ~]# sort -t: -k3 /etc/passwd | cut -d: -f3 | head -n 

[root@localhost ~]# 
[root@localhost ~]# sort -t: -k3 -n /etc/passwd | cut -d: -f3 | head -n 

[root@localhost ~]# 
[root@localhost ~]# sort -t: -k3 -n -r /etc/passwd | cut -d: -f3 | head -n 

[root@localhost ~]# 

。。。。更加纤细的请自行百度。

运维基础-IO 管道的更多相关文章

  1. Linux系统运维基础测试题

    1    Linux运维基础测试题(第一关) 通过这段时间学习Linux基础命令,为了检测自己对Linux基础命令掌握的情况,从网上整理13到测试题,并将其整理出来供大家参考学习. 1.1    习题 ...

  2. 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍

    01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...

  3. Linux运维基础采集项

    1. Linux运维基础采集项 做运维,不怕出问题,怕的是出了问题,抓不到现场,两眼摸黑.所以,依靠强大的监控系统,收集尽可能多的指标,意义重大.但哪些指标才是有意义的呢,本着从实践中来的思想,各位工 ...

  4. Linux运维基础

    一.服务器硬件 二.Linux的发展史 三.Linux的系统安装和配置 四.Xshell的安装和优化 五.远程连接排错 六.Linux命令初识 七.Linux系统初识与优化 八.Linux目录结构 九 ...

  5. linux运维基础知识

    linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...

  6. HBase运维基础--元数据逆向修复原理

    背景 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据”的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等.总的来说,就是想更深层 ...

  7. linux运维基础__争取十月前研究的差不多

    转来的一编,考虑在十月前研究的差不多 linux运维人员基础 1.很多地方经常会用到的rsync工具 实施几台服务器的同步效果 我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章 ...

  8. 网络配置——Linux运维基础

    今天把Linux的网络配置总结了一下,尽管并不难可是是个比較重要的基础.然后我也不知到自己以后是否会做运维,可是我知道自己比較喜欢刨根问底.还有就是我很珍惜我以前掌握过的这些运维的技能.今天突然间问自 ...

  9. [转帖] Linux运维基础知识学习内容

    原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell pyt ...

随机推荐

  1. cf359D Pair of Numbers

    Simon has an array a1, a2, ..., an, consisting of n positive integers. Today Simon asked you to find ...

  2. CodeForces 618D Hamiltonian Spanning Tree

    题意:要把所有的节点都访问一次,并且不能重复访问,有两种方式访问,一种是根据树上的路径 走和当前节点连接的下一个节点cost x, 或者可以不走树上边,直接跳到不与当前节点连接的节点,cost y 分 ...

  3. 转 Python爬虫入门七之正则表达式

    静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串 ...

  4. 呕心沥血之作:完美解决Informix的中文乱码问题

    Informix是IBM旗下的一款数据库,要不是这个项目需要,估计这辈子我都不知道居然还有这么一款数据库.想来公司的项目遍布全国各地,各种部署环境各种应用场景应有尽有,七七八八的问了一大堆的各项目组兄 ...

  5. python 操作系统和进程

    一. 操作系统介绍 多道程序系统 多道程序设计技术       所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...

  6. react-hot-loader 的配置【局部刷新】--{create-react-app}

    安装 1.安装create-react-app npm install -g create-react-app 2.创建项目 create-react-app my-app 配置 1.弹出配置文件 n ...

  7. 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂

    链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子   时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...

  8. Flink起步安装和使用

    下载安装 下载地址 下载对应操作系统和版本的flink  # 首先确认下Java环境 $ java -version  java version "1.8.0_111" Java( ...

  9. AngularJS中使用Directive、Controller、Service

    AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉. (1)Directive 指令 (2)Controller 控制器 (3)Service ...

  10. GitBook一个专注于帮助文档的工具

    官网:https://www.gitbook.com GitHub组织:https://github.com/gitbookio GitBook一个专注于帮助文档的工具,比如: 1.简单的左侧列表右侧 ...