运维基础-IO 管道

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

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

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

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

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

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

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

示例:

保存时间戳

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

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

[root@localhost ~]# tail -n 100 /var/log/demsg > /tmp/last-100-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 2 > /tmp/errors
[root@localhost ~]# 

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

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

忽略并丢弃错误消息

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

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

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

进程管道PIping

示例:

将ls长葛市输出分页显示

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





总用量 173472
-rwxr-xr-x.   1 root root      41496 11月  6 2016 [
-rwxr-xr-x.   1 root root     107856 8月   3 2017 a2p
-rwxr-xr-x.   1 root root      11248 8月  10 2017 abrt-action-analyze-backtrace
-rwxr-xr-x.   1 root root      15328 8月  10 2017 abrt-action-analyze-c
-rwxr-xr-x.   1 root root       1345 8月  10 2017 abrt-action-analyze-ccpp-local
-rwxr-xr-x.   1 root root       6821 8月  10 2017 abrt-action-analyze-core
-rwxr-xr-x.   1 root root      11224 8月  10 2017 abrt-action-analyze-oops
-rwxr-xr-x.   1 root root      11232 8月  10 2017 abrt-action-analyze-python

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

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

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

[root@localhost ~]# ls -t | head -n 10 > /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
总用量 8
-rw-------. 1 root root 1635 8月  20 19:18 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 8月  23 18:14 Desktop
-rw-r--r--. 1 root root 1666 8月  20 19:21 initial-setup-ks.cfg
[root@localhost ~]# cat /tmp/saved-output 
总用量 8
-rw-------. 1 root root 1635 8月  20 19:18 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 8月  23 18:14 Desktop
-rw-r--r--. 1 root root 1666 8月  20 19:21 initial-setup-ks.cfg
[root@localhost ~]# 

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

[root@localhost ~]# ls -l | tee /dev/pts/1 | mail -s subject seven_nighter@163.com
总用量 8
-rw-------. 1 root root 1635 8月  20 19:18 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 8月  23 18:14 Desktop
-rw-r--r--. 1 root root 1666 8月  20 19:21 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
  42   82 2146 /etc/passwd
[root@localhost ~]# 
[root@localhost ~]# wc -l /etc/passwd
42 /etc/passwd                 行数
[root@localhost ~]# 
[root@localhost ~]# wc -w /etc/passwd
82 /etc/passwd                 单词数
[root@localhost ~]# 
[root@localhost ~]# wc -c /etc/passwd
2146 /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-3 /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 5
0
1000
1001
107
11
[root@localhost ~]# 
[root@localhost ~]# sort -t: -k3 -n /etc/passwd | cut -d: -f3 | head -n 5
0
1
2
3
4
[root@localhost ~]# 
[root@localhost ~]# sort -t: -k3 -n -r /etc/passwd | cut -d: -f3 | head -n 5
65534
1001
1000
999
998
[root@localhost ~]# 

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

 

posted @ 2018-08-24 10:00 前方、有光 阅读(...) 评论(...) 编辑 收藏