什么是文件描述符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. C/C++、Java、Python谁是编译型语言,谁是解释型语言?

    最近各大互联网公司线上笔试,编程题目里的编译器只支持C/C++.Java,甚至有的支持javaScrpit和Pascal,就是不支持Python.让一直以来用惯了Python的我直吐血,于是今天痛定思 ...

  2. C# 时间与时间戳互转 13位|13位時間戳与日期换转

    这里直接上代码 懂C# 的程序猿 一看便知道如何使用的... /// <summary> /// 将Unix时间戳转换为DateTime类型时间 /// </summary> ...

  3. HDU——1019Least Common Multiple(多个数的最小公倍数)

    Least Common Multiple Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  4. [OJ#63]树句节够提

    [OJ#63]树句节够提 试题描述 给定一棵节点数为 N 的有根树,其中 1 号点是根节点,除此之外第 i 个节点的父亲为 fi.每个节点有一个权值 Ai,所有边权均为 1. 给定 Q 个询问,每个询 ...

  5. P1260 工程规划 (差分约束)

    题目链接 Solution 差分约束. 差分约束似乎精髓就两句话: 当我们把不等式整理成 \(d[a]+w<=d[b]\) 时,我们求最长路. 整理成 \(d[a]+w>=d[b]\) 时 ...

  6. [转] Makefile 基础 (1) —— Makefile 介绍

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  7. Linux rpm 命令参数使用

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...

  8. C# 模拟windows文件名称排序(使用windows自带dll)

    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCmpLogi ...

  9. djang中的request.user对象中的方法

    print(dir(request.user)) ['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', ...

  10. 最新版浏览器报错net::ERR_INSECURE_RESPONSE原因

    访问的网址与接口请求的域名不一致,新版的chrome浏览器出于安全的考虑会将请求进行拦截,并报错net::ERR_INSECURE_RESPONSE