什么是文件描述符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. 【Luogu】P3745期末考试(三分)

    题目链接 我是怎么把“期末考试”在本地写成“假期计划”的 qwq???? 本题把学生和卷子都排个序,按出成绩最晚时间三分. 三分之后可以O(n)的时间统计答案,因为修改卷子出成绩的时间可以贪心计划. ...

  2. POJ——1195Mobile phones(二维树状数组点修改矩阵查询)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 17764   Accepted: 8213 De ...

  3. 广东工业大学2016校赛决赛重现——E积木积水(方法据说很多)

    Problem E: 积木积水 Description 现有一堆边长为1的已经放置好的积木,小明(对的,你没看错,的确是陪伴我们成长的那个小明)想知道当下雨天来时会有多少积水.小明又是如此地喜欢二次元 ...

  4. UVa——540Team Queue(STL练习map、queue数组的综合使用)

    Team Queue Time Limit:                                                        3000MS                 ...

  5. [luoguP3302] [SDOI2013]森林(主席树 + 启发式合并 + lca)

    传送门 显然树上第k大直接主席树 如果连边的话,我们重构小的那一棵,连到另一棵上. 说起来简单,调了我一晚上. 总的来说3个错误: 1.离散化写错位置写到了后面 2."="写成了& ...

  6. vue学习:解决Apycharm的 * is only available in ES6(use 'esversion: 6') 问题

    使用pycharm打开main.js,代码前出现黄点,js报错了 把鼠标移至import的波浪线上,出现提示:W119 - ‘import’  is only available in ES6(use ...

  7. 我要好offer之 搜索算法大总结

    1. 二分搜索 详见笔者博文:二分搜索的那些事儿,非常全面 2. 矩阵二分搜索 (1) 矩阵每行递增,且下一行第一个元素大于上一个最后一个元素 (2) 矩阵每行递增,且每列也递增 3. DFS 深度优 ...

  8. CSS3-文本渐变色

    在活动中,文字的颜色经常采用渐变的效果,在此,做一下笔记 <span>你好呀!</span> span{ background-image: linear-gradient(t ...

  9. MySql----on duplicate key

    mysql on duplicate key 语句是解决key 冲突的问题,同时 ,key 包括 primary key 和 unique key 等

  10. Java出现错误“Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )”的问题分析

    若出现:Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )这样的问题,一般是转义字符的问题,下 ...