首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

Linux系统中重定向命令行的技巧总结

http://www.oklinux.cn  2007-11-27   sixth  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

1. 标准输入的控制

语法:命令< 文件将文件做为命令的输入。

例如:

mail -s “mail test” [email protected] < file1 将文件file1 当做信件的内容,主

题名称为mail test,送给收信人。

 

2. 标准输出的控制

语法:命令> 文件将命令的执行结果送至指定的文件中。

例如:

ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。

语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。

例如:

ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。

语法:命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。

例如:

cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。

语法:命令>> 文件将命令执行的结果附加到指定的文件中。

例如:

ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。

语法:命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。

例如:

cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。

 

关于输入、输出和错误输出

在字符终端环境中,标准输入/标准输出的概念很好理解。输入即指对一个应用程序或命令的输入,无论是从键盘输入还是从别的文件输入;输出即指应用程序或命令产生的一些信息;与 Windows 系统下不同的是,Linux 系统下还有一个标准错误输出的概念,这个概念主要是为程序调试和系统维护目的而设置的,错误输出于标准输出分开可以让一些高级的错误信息不干扰正常的输出信息,从而方便一般用户的使用。

在 Linux 系统中:标准输入(stdin)默认为键盘输入;标准输出(stdout)默认为屏幕输出;标准错误输出(stderr)默认也是输出到屏幕(上面的 std 表示 standard)。在 BASH 中使用这些概念时一般将标准输出表示为 1,将标准错误输出表示为 2。下面我们举例来说明如何使用他们,特别是标准输出和标准错误输出。

 

输入、输出及标准错误输出主要用于 I/O 的重定向,就是说需要改变他们的默认设置。先看这个例子:

 

$ ls > ls_result

$ ls -l >> ls_result

 

上面这两个命令分别将 ls 命令的结果输出重定向到 ls_result 文件中和追加到 ls_result 文件中,而不是输出到屏幕上。">"就是输出(标准输出和标准错误输出)重定向的代表符号,连续两个 ">" 符号,即 ">>" 则表示不清除原来的而追加输出。下面再来看一个稍微复杂的例子:

 

$ find /home -name lost* 2> err_result

 

这个命令在 ">" 符号之前多了一个 "2","2>" 表示将标准错误输出重定向。由于 /home 目录下有些目录由于权限限制不能访问,因此会产生一些标准错误输出被存放在 err_result 文件中。大家可以设想一下 find /home -name lost* 2>>err_result 命令会产生什么结果?

 

如果直接执行 find /home -name lost* > all_result ,其结果是只有标准输出被存入 all_result 文件中,要想让标准错误输出和标准输入一样都被存入到文件中,那该怎么办呢?看下面这个例子:

 

$ find /home -name lost* > all_result 2>& 1

 

上面这个例子中将首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 all_result 这个文件中。这样我们就可以将所有的输出都存储到文件中了。为实现上述功能,还有一种简便的写法如下:

 

$ find /home -name lost* >& all_result

 

如果那些出错信息并不重要,下面这个命令可以让你避开众多无用出错信息的干扰:

 

$ find /home -name lost* 2> /dev/null

 

同学们回去后还可以再试验一下如下几种重定向方式,看看会出什么结果,为什么?

 

$ find /home -name lost* > all_result 1>& 2

$ find /home -name lost* 2> all_result 1>& 2

$ find /home -name lost* 2>& 1 > all_result

 

另外一个非常有用的重定向操作符是 "-",请看下面这个例子:

 

$ (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)

 

该命令表示把 /source/directory 目录下的所有文件通过压缩和解压,快速的全部移动到 /dest/directory 目录下去,这个命令在 /source/directory 和 /dest/directory 不处在同一个文件系统下时将显示出特别的优势。

 

下面还几种不常见的用法:

n<&- 表示将 n 号输入关闭

<&- 表示关闭标准输入(键盘)

n>&- 表示将 n 号输出关闭

>&- 表示将标准输出关闭

 

 


上一篇:Firefox在Linux系统配置文件夹的默认路径   下一篇:Linux操作系统终端下 用户通讯四大手段

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Firefox在Linux系统配置文件夹的默认路径
·删除Linux操作系统的启动菜单
·Linux系统上SubVersion定期备份完整脚本
·将Gmail软件设置为默认邮件客户端的方法
·Linux操作系统下安装ISO文件
·解决Samba共享出现乱码的问题
·Linux下轻松设置Wine程序的中文显示
·Linux系统下文件权限设置方法
·虚拟机扩充Linux操作系统容量
·Linux系统下NVIDIA显卡实现双屏显示
·Linux系统定时关机或重启
·Linux操作系统下定时备份目录
·Linux与Windows共享文件SAMBA
·Ubuntu Linux下使用的虚拟机VirtualBox
·在Linux下制作虚拟光盘的方法
·Linux系统下如何生成软件依赖关系图
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·VMWare克隆后Ubuntu的“No such device
·Linux 游戏作弊工具:GameConqueror 0.
·Ubuntu 9.10下jre安装中文字体
·Ubuntu 下使用 apt 快速安装软件
·Ubuntu 9.10用Prism将webQQ桌面化
·Linux系统下读取目录中文件名信息题解
·Linux环境下提高网络传输性能方法简介
·Ubuntu 9.10 图形界面无边框问题解决
·Ubuntu 9.10 下SNORT源码安装及问题解
·Linux apachectl命令详解
·Linux系统调用fork()用法详解
·Ubuntu wubi使用警告
  阅读排行
·安装Ubuntu分区的推荐方案及方法
·Linux下安装tar.gz、rpm、tar.bz2软件
·Windows XP虚拟机vmware中安装Linux步
·新手看招:调试工具GDB基本知识全接触
·Ubuntu下安装苹果MAC风格主题(图)
·Ubuntu 3D桌面特效展示!超绚目(图)
·新手学堂 Ubuntu中安装bin文件
·Ubuntu下安装MP3播放器Audacious
·Linux爱好者入门教程
·Ubuntu下安装aMule并与firefox关联(图)
·Linux操作系统下的串口通信学习笔记
·Ubuntu 8.04下fcitx输入法的安装及使用
·配置nVidia显卡修改Ubuntu分辨率
·Ubuntu看安装Sopcast看网络电视(配图)
·VM中Linux虚拟机下安装VMware Tools
网摘收藏: