标准输入输出

标准输入输出和管道 

三种输入和输出设备

把输出和输入重定向到文件

使用管道连接命令

一.标准:

    输入(STDIN)-0,默认是键盘鼠标的输入窗口

    输出(STDOUT)-1,默认设备当前终端窗口

    错误(STDERR)-2,默认当前终端窗口

1:

打开的文件都有一个fd: file descriptor (文件描述符)

二,输入输出重定向;改变文件位置

1,> 输出STDOUT重定向到文件

2>STDERR重定向到文件

   &>把所有输出重定向到文件

     > 文件内容会被覆盖 

    >> 原有内容基础上,追加内容

标准输入的重定向

 

把标准输出,切换到别的终端;用>号。如下图所示

2,定向到文件,如果文件名不存在,它会自己生成文件名

如果说再往 ls.log里定向一个文件,那么它的原有数据就会覆盖

 

举例:下图以ls为例

3.把错误的重定向到文件,用2>号。如下图所示

 

如果>号前边不加2 ,就系相当与把文件清空了文件里什么也没有

如下图

4,如果想把错误的和正确的都放一个文件里,得用&>

如下图所示

 

5,如果想错的对的都放一块,如下图所示

旧版本的系统支持2>&12>&1必须放到最后,命令如下图所示

6,把两个命令的标准输出,都定向到一个文件里得用(命令:命令 )

7,>> 追加到一个文件,数据不会覆盖,如下图

8.>标准输入的重定向,可以代替键盘输入的信息,进行一些批量的处理。

命令如下发一个邮件,执行完后输入内容,最后输.结束

如果我想群发邮件,可以用nano mail.txt ,在里面写上内容 ,就不用一个一个写了。

然后使用标准输入群发邮件。命令如下图

9<<标准输入多行重定向 导入到文件里,输入e结束才会存到f1里.

如下图,

 

 

三,tr命令是转换和删除字符的命令

选项

-c——complerment:取字符集的补集

-d——delete:删除所有属于第一字符集的字符;

-ssqueeze-repeats:把连续重复的字符以单独一个字符表示

-t--truncate-set1:先删除第一字符集较第二字符集多出的字符

1,转小写字符为大写字符,而且可以用标准输入。把全部文件的内容转换为大写,并且定向到f1文件,注意的是/etc/issue本身没有转换为大写,只是一个输入源。下图

2,tr -d abc 删除abc 打头的字符

3,tr -s x把重复的x 用单个的x 来表示

4可以横变竖排序

5  -c 除了补集,全部替换

 

一个linux用户给root发邮件,要求邮件标题为help,邮件正文如下:

Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!

操作系统版本信息

管道

(使用符号|表示)用来连接命令

命令1 | 命令2 | 命令3 | …

将命令1的输出STDOUT发送给命令2的输入STDIN,命令2的输出STDOUT发送到命令3的输入STDIN

管道接收的是标准输出,而不是错误。

如:Cat 是标准输出,通过管道传给mail,作为它的标准输入

错误STDERR默认不能通过管道转发,可利用2>&1 |& 实现

如:下图,错误也行,正确也行

管道也可多次处理,如下图把AD删了。

如果用tee 命令可以在文件里和桌面两面显示,如下图

还可以在转换,删掉回车换行符。下图

set命令

set -c 可以禁止覆盖 ,set +c 可以取消覆盖。

注意,禁止了换个终端或退出登录它不生效。

一般编写脚本用set -c, 防止覆盖,写完正在set+c取消。

1将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中,下图。

2/root/下文件列表,显示成一行,并文件名之间用空格隔开。

 

 

时间: 2024-10-13 11:59:29

标准输入输出的相关文章

管道重定向之重定向标准输入输出句柄

管道重定向之重定向标准输入输出句柄1.如果控制台应用程序数据流中包含中文,则要调用 _tsetlocale(LC_ALL, _T("chs")),否则数据流中的中文字符会被当成中止符而被截断,如printf("abc中文def"),只会输出"abc" 2.printf,cout,wcout中的换行符'\n',会被修改为回车加换行'\r\n'传递到管道中,如有语句printf("abc\r\n"),传递的真实数据流是"

标准输入输出,输出重定向

标准输入输出: 输出重定向: 正确输出和错误输出同时保存:  命令 &>/dev/null 这条指令把正确输出写入文件中,错误输出丢入黑洞 解释: 放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下 1 => stdout 2 => stderr 0 => stdin 换言之 2>1 代表将stderr重定向到当前路径下文件名为1的regular file中,而2>&1代表将stderr重定向到文件描述符

linux 标准输入输出

转:linux 标准输入输出 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket.最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应 0表示标准输入1表示标准输出2表示标准错误输出 >默认为标准输出重定向,与 1>相同 2>&1意思是把 标准错误输出 重定向到 标准输出. &>file意思是把 标准输出 和 标准错误输出 都重定向到文件file中 2>&1

linux 标准输入输出的详解

标准输入输出: 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket.最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应. 0表示标准输入    1表示标准输出    2表示标准错误输出 >默认为标准输出重定向,与 1>相同 2>&1意思是把 标准错误输出 重定向到 标准输出. &>file意思是把 标准输出 和 标准错误输出 都重定向到文件file中. 2>&

T001 A+B(附常见标准输入输出)

国际惯例OJ第一道都是A+B吧..据说为了适应各种OJ的编译器..整理了一下一些常见的标准输入输出 1 #include<stdio.h>//一组数据滚粗 2 3 int main() 4 { 5 int A, B; 6 scanf("%d%d", &A, &B); 7 printf("%d\n", A+B); 8 return 0; 9 } 10 11 #include<stdio.h>//多组数据不结束 12 13 int

《你必须知道的495个C语言问题》笔记--标准输入输出

getchar的返回值 这样的代码有什么问题: char c; while((c = getchar()) != EOF).... getchar返回值变量必须是int型.因为EOF通常定义为-1,二十进制为255的字符会被符号扩展,和EOF比较时会相等,从而 过早第结束输入. feof函数的使用 为什么这些代码最后一行复制了两遍? #include <stdio.h> #include <unistd.h> #include <fcntl.h> #define MAX

C标准输入输出重定向

C中的标准输入输出可以进行重定向到文件. 示例程序:(C Primer Plus示例8.2) // echo_eof.c -- 重复输入,直到文件的结尾 #include <stdio.h> int main(void) { int ch; while ( (ch = getchar()) != EOF) putchar(ch); return 0; } 编译运行.在终端中运行: >echo_eof.exe 则标准输入输出为键盘和显示屏. 同样的,将标准输入重定向到文件echo_eof.

C++标准输入输出

1,cout 1) 用来向标准输出打印. 2) 如果参数是char*类型,则直接输出字符串.如果想要输出地址,则需要强制转换: <<static_cast<void*>(const_cast<char*>(pstr)); 2,cin 1) 将标准输入读入变量,如果输入与变量声明类型不一致,则cin为false,可以用if判断,变量值不确定. double price; //输入asdf cout << price; //输出为0 2) cin结束后在缓存中会

C语言的标准输入输出

欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 标准输入输出 标准输入.输出主要由缓冲区和操作方法两部分组.缓冲区实际上可以看做内存中的字符串数组,而操作方法主要是指printf.scanf.puts.gets,getcha.putcahr等操作缓冲区的方法.在C++以及Java等面向对象的编程语言中,将缓冲区以及操作缓冲区的方法封装成一类对象,这类对象就称为流. 缓冲区最大的特点主要体现在数据的一次性,即数据被printf.