Linux学习笔记10——管道和重定义

计算机的组成有:运算器,控制器,存储器,输入输出设备。于是就有了地址总线,数据总线,控制总线。事实上在机器里面总线是复用的,一个总线三种功能。
地址总线:内存寻址
数据总线:传输数据
控制总结:控制指令

寄存器:CPU暂时存储器

程序在运行时要从输入设备获取指令,通过输出设备输出作为人机交互。那么系统在什么地方获取输入输出键盘鼠标硬盘还是哪里?那么系统就需要设定默认的输入输出。

系统设定

  • 默认输出设备:标准输出,STDOUT, 1(1为描述符号)
  • 默认输入设备:标准输入, STDIN, 0
  • 标准错误输出:STDERR, 2

标准输入:键盘
标准输出和错误输出:显示器(廉价,不像打印机)

I/O重定向(输入输出重定向):改变数据的输入来源,改变数据的输出来源。
在Linux中输出重定向符号为“>” 输入重定向“<”



输出重定向
一个大于号> : 覆盖输出
两个大于号>> :追加输出
比如:ls /etc 将etc的目录输出到屏幕,输出重定向:ls /etc > /tmp/etc.out 将etc的文件目录输出到文件中
如果在生产中输出的时候不小心用到了覆盖输出可以用 set -C来设置。
set -C: 禁止对已经存在文件使用覆盖重定向;
在-C的情况下如果想强制覆盖输出,则使用 >|
set +C: 关闭上述功能

如果输出重定向的时候使用了错误的输出,同时也想将错误的输出输出到文件中,那么如何使用?
2>: 重定向错误输出
2>>: 追加方式

既想定向标准输出,也想定向错误输出:
ls /varr > /tmp/var.out 2> /tmp/war.errout (如果命令正确,将标准输出输出到/tmp/var.out 。如果命令错误,将错误命令输出到/tmp/var.errout)同时也可以定向到同一个文件中。

&>: 重定向标准输出或错误输出至同一个文件
ls /varr &> /tmp/var.out



输入重定向
<:输入重定向
例如:tr ‘a-z‘ ‘A-Z‘ < /etc/fstab(将/etc/fatab这个文件的所有小写换成大写)

<<:Here Document(在此处生成文档)
例如:cat << END
打印一些数据
END结尾会输出这些数据

例如:cat >>/tmp/myfile.txt << END
the first line
the seconf line
cat /tmp/myfile.txt
the first line
the seconf line



管道:前一个命令的输出,作为后一个命令的输入
Linux的重要哲学思想:组合小命令完成复杂任务
命令1 | 命令2 | 命令3 | ...

例如echo "hello world" | tr ‘a-z‘ ‘A-Z‘
HELLO WORLD

echo "redhat" |passwd --stdin user(将user用户的密码改为redhat)

cut -d : -f3 /etc/passwd |sort -n

原文地址:http://blog.51cto.com/13691207/2105420

时间: 2024-11-05 13:43:07

Linux学习笔记10——管道和重定义的相关文章

Linux学习笔记之管道、重定向与正则表达式

管道:前一个命令的输出,作为后一个命令的输入 命令1 | 命令2 | 命令3| 命令4 #tee  即在显示器显示,又在文件在保存文件 例#echo "hello ,word" | tee /tmp/ hello.out 例#wc -l /etc/passwd | cut -d' ' -f1 I/O重定向 >     输出重定向 ,覆盖输出 > > 追加输出 #set -C   禁止对已存在文件使用覆盖重定向,强制覆盖输出,则使用 >| #set +C   关闭

Linux学习笔记10——文件I/O之一

UNIX系统中的大多数文件I/O只需要用到5个函数:open,read,write,lseek以及close 文件描述符 文件描述符是一个非负整数,所有打开的文件都通过文件描述符引用 文件描述符的变化范围是0-OPEN_MAX,OPEN_MAX是每个进程最多打开的文件 1.open函数 #include<fcntl.h> int open(const char* pathname, int flag, mode_t mode ); //若成功则返回文件描述符,若出错则返回-1 flag打开方式

Linux学习笔记10

创建文件 touch touch filenames 创建文件夹 mkdir mkdir dir3 dir4 dir5 建立多个文件夹 mkdir ~/games  在登录用户的本目录之下建立games文件夹 mkdir -p dir6/dir7/dir8 建立多层文件夹 复制  复制文件夹 例如     -->tomcat    源文件夹待拷贝   |  其他 |   文件夹 |    tomcat_2   目的文件夹  空文件夹 步骤 #cd tomcat 进入tomcat文件夹 #cp -

Linux程序设计学习笔记----进程间通信——管道

转载请注明出处: http://blog.csdn.net/suool/article/details/38444149, 谢谢! 进程通信概述 在Linux系统中,进程是一个独立的资源管理单元,但是独立而不孤立,他们需要之间的通信,因此便需要一个进程间数据传递.异步.同步的机制,这个机制显然需要由OS来完成管理和维护.如下: 1.同一主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO),消息队列(Message Queue)和共享内存(Share Memory).无名管道多用于亲

Linux学习笔记——例说makefile 增加宏定义

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Android:日常学习笔记(10)———使用LitePal操作数据库

Android:日常学习笔记(10)---使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表.増删改查的操作.并且LitePal很"轻",jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别.目前LitePal的源码已经托管到了GitHub上. 关

Redis学习笔记7--Redis管道(pipeline)

redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client.基本的通信过程如下: Client: INCR X Server: 1 Client: INCR X Server: 2 Client: INCR X Server: 3 Client: INCR X Server: 4

嵌入式Linux学习笔记之LED驱动

最近在学习嵌入式Linux驱动开发,大致了解了驱动的基本开发流程,本文主要针对字符设备驱动开发做一个简要介绍,也当作是对这几天工作的一个小小总结. 计算机系统是由软硬件相互协调共同完成工作的,作为专用计算机系统的嵌入式系统也不例外,既要有CPU.SDRAM.FLASH.IO等硬件,同时也少不了操作系统和应用软件等软件的支持,而作为应用程序与硬件的桥梁--驱动程序,是整个嵌入式系统开发过程中的关键环节.驱动开发涉及底层,而了解底层作用机制对于整个系统的开发意义重大. Linux内核中有60%以上是