您的位置:首页 > 运维架构 > Linux

Linux链接文件、管道、重定向讲解

2016-07-30 16:28 357 查看
Linux链接文件、管道、重定向讲解--链接文件-- 硬链接:在inode表中记录一个条目,所有的元数据和原始文件元数据相同。 ·相当于两个名字。 ·删除原始文件,另一个条目也能够找数据本身。 ·不能跨分区链接 ~]#ln [原始文件] 链接文件 软链接:在inode表中记录一个条目,指针指向原始文件条目,删除原始条目,符号连接找不到原始数据。 ·新的inode号。 ·可以跨分区链接, ·可以对目录进行链接 ~]# ln -s [原始文件] 链接文件

标准I/O和管道一、三种I/O设备 linux中给程序提供三种I/O设备
* 标准输入·······0--stdin····默认接收来自键盘的输入 * 标准输出·······1--stdout····默认输出到终端窗口 * 标准错误·······2--stderr····默认输出到终端窗口
I/O重定向:改变默认位置二、把I/O频道重定向入文件--把输出和错误重定向到文件-- 格式为: #命令 操作符合 文件名> 重定向标准输出到文件 ·文件内容会被覆盖 ~]# set -C:禁止蒋内容覆盖已有文件,但可追加 强制覆盖:>| ~]# set +C:允许覆盖>> 原有内容基础上,追加内容
~]# cat /etc/passwd >> ~/a.tx 例:
[root@localhost ~]# cat a.txt
bash: sdfadfa: command not found...
[root@localhost ~]# cat /etc/passwd >> ~/a.txt
[root@localhost ~]# cat a.txt
bash: sdfadfa: command not found...
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
2>: 覆盖重定向错误输出数据流; ##abcdefg 2> ~/a.txt 例:
[root@localhost ~]# abcdefg 2> ~/ab.txt
[root@localhost ~]# cat ab.txt
bash: abcdefg: command not found...
[root@localhost ~]#
2>>: 追加重定向错误输出数据流 ##higklm 2>> ~/a.txt 例:
root@localhost ~]# higklm 2>> ~/ab.txt
[root@localhost ~]# cat ab.txt
bash: abcdefg: command not found...
bash: higklm: command not found...
[root@localhost ~]#


&>覆盖输出重定向 ##同上
&>> 追加输出重定向 #同上
()合并多个程序的STDOUT ##(ls;cat /etc/passwd)> ~/a.txttr】 转换和删除字符 tr [OPTION]... SET1 [SET2] -c:取字符集的补集 -d:删除所有属于第一字符集的字符 -s:把连续重复的字符以单独一个字符表示 -t:将第一个字符集对应字符转化为第二字符集对应的字符--从文件中导入STDIN-- < 重定向标准输入 ~]# tr [a-z] [A-Z] < /etc/issue ·该目录会把/etc/issue中小写字符转换成小写字符例:
[root@localhost ~]# cat /etc/issue;tr [a-z] [A-Z] < /etc/issue
\S
Kernel \r on an \m
The hostname \n
login termi
Welcome to beijing
\S
KERNEL \R ON AN \M
THE HOSTNAME \N
LOGIN TERMI
WELCOME TO BEIJING
[root@localhost ~]# ^C
==把多行发送给STDIN== << 终止符:从键盘把多行重定向给STDIN,直到 终止符 位置的所有文本都发送给STDIN例:
[root@localhost ~]# tr [a-z] [A-Z] <<EFO >>abc.txt
> hello,
> how ,are you !
> EFO
[root@localhost ~]# cat abc.txt
HELLO,
HOW ,ARE YOU !
[root@localhost ~]#

管道 |连接命令 COMMAND1 | COMMAND2 | COMMAND3 | ... 释:·将命令1的输出发送给命令2的输入,命令2的输出发送给命令3的输入 ·标准错误默认不能通过管道转发,可利用 2>&1 或 |& 实现例:
[root@localhost ~]# cat /etc/issue | tac
Welcome to beijing
login termi
The hostname \n
Kernel \r on an \m
\S
[root@localhost ~]# ls sdadfad |& tr 'a-z' 'A-Z'
LS: CANNOT ACCESS SDADFAD: NO SUCH FILE OR DIRECTORY
[root@localhost ~]#

tee 重定向到多个目标 ~]# COMMAND1 | tee 文件名 | COMMAND2 释:把命令1的STDOUT保存在文件名中,然后管道输入给命令2 例:
[root@localhost ~]# who | tee c.txt |tr [a-z] [A-Z]
ROOT     PTS/0        2016-07-30 15:52 (10.1.250.20)
[root@localhost ~]# cat c.txt
root     pts/0        2016-07-30 15:52 (10.1.250.20)
[root@localhost ~]#
·保存不同阶段的输出 ·复杂关东的故障排除 ·同时查看和记录输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 管道 重定向
相关文章推荐