发布时间:2015-02-02 18:30:48作者:知识屋
echo This is a sample. > temp.txt
可将文本输出到 temp.txt 中,是通过截断文件的方式,也就是说在echo命令写入前先将文件中的内容清空。
echo This is a sample. >> temp.txt
上述命令是追加的方式。
说明重定向之前先了解一下什么是成功和不成功的命令。
当一个命令发生错误并退出的时候,它会返回一个非0的值。成功后会返回0。可以通过 $? 查看返回的值。
ls 2> out.txt
将错误输出到文件中。
你也可以这样:
cmd 2> out.txt 1> temp.txt
将标准错误和标准输出重定向到两个文件中。当然,还有更精简的方式输出到同一个文件中:
cmd 2>&1 out.txt
有时候你并不想保存错误输出,那就将它引向一个“黑洞”(/dev/null)吧,就像错误输出没有产生过一样。
这个时候,如果你既想把输出保存起来,同时又想查看输出,怎么办呢?
command | tee out.txt | cat -n
这个时候command 的结果会保存在 out.txt 中,同时也会通过管道最为标准输出向下传递。 cat -n 将结果加上行号输出。
我们也可以使用 stdin 作为命令参数。只需要将-作为命令的文件名即可。
$ echo who is this | tee -who is thiseho is this
3.原理
默认的重定向操作符使用标准输出。因此 > 等同于 1> 。
4.补充
从 stdin 读取输入的命令能以多种方式接受数据。
将文件重定向到命令,借助重定向,我们可以像使用 stdin 那样从文件中读取数据。
$ cmd < file
自定义文件描述符:
创建一个文件描述符进行文件读取:
$ exec 3<input.txt # 使用文件描述符3打开并读取文件
我们可以这样使用它:
$ echo this is a test > input.txt$ exec 3<input.txt
这就可以在命令中使用文件描述符3了。
$ cat <&3this is a test
如果想再次读取就不能使用3了,需要再次分配读取。
创建文件描述符用于写入:
$ exec 4>output.txt$ echo newline > &4$ cat outlinenewline
dev/stdin -> proc/self/fd/0 -> dev/pts/1
标准操作下的输入输出,指向了虚拟目录下当前进程的终端中。
1.2重定向&管道 原理:
重定向
$ tail -f /var/log/message > abc
然后挂起。 ps 查看一下该进程的进程号是 15551 .
$ cat /proc/15551/fd/?
可以看到:
/proc/15551/fd/0 -> /dev/pts/1/proc/15551/fd/1 -> /roor/test/abc #上述命令的重定向输出文件/proc/15551/fd/2 -> /dev/pts/1/proc/15551/fd/3 -> /var/log/message/proc/15551/fd/4 -> inotify
重定向就是将链接指向执行的文件。
管道
将前面命令的标准输出作为后面命令的标准输入。
注意是 标准输出 也就是说,在管道传递的时候标准错误输出已经被过滤掉了。所以,前面命令的标准错误输出都会打印在终端上.
有很多命令不直接支持标准输入的形式作为输入。
$ which find | ls -l
不能输出 find 的信息。使用如下的方式即可。
$ which find | xargs ls -l
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能