文档章节

Linux 输入和输出

年少爱追梦
 年少爱追梦
发布于 2016/05/03 10:49
字数 620
阅读 31
收藏 4

                                                                Linux

  必须要知道一个东西:Linux系统将每个对象当作文件处理,输入输出对象也是如此。

  Linux 标准文件描述符:

文件描述符 缩写 描述
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误

解释,对终端接口,标准输入是键盘。很多bash命令通过STDIN接受输入,eg,cat命令 cat>testcat 将接受的输入重定向到testcat文件。对终端接口:标准输出是终端监视器。,eg ,ls -l > testls 将标准输出重订向到testls文件。STDERR,表述shell处理运行错误,运行脚本时,对这种错误其实是很关注的,记录下来很有用。

使用shell 的时候 ">"表示输出重定向,1>,2>两种组合,就是对标准输出,和错误输出两种的区别。

[root@iZ28npved5eZ tmp]# ls -l test sad//不区分的时候
ls: cannot access sad: No such file or directory
-rwxr--r-- 1 root root 49 May  3 10:19 test

    对标准输出进行重定向:

ls -l test sad 1>tets
ls: cannot access sad: No such file or directory

    对标准错误进行重定向:

ls -l test sad 2>tets
-rwxr--r-- 1 root root 49 May  3 10:19 test

    热身结束了,在脚本中重定向来了。

    临时重定向:

[root@iZ28npved5eZ tmp]# cat test
#!/bin/bash
#this is stderr
echo "this is error" >&2 //标记成标准错误
echo "this is sucess"

//使用
[root@iZ28npved5eZ tmp]# ./test 2>error
this is sucess
//标准错误就被定向到error文件中,之所以称为临时重定向在与 ./test 2>error 可以任意修改成 ./test 1>sucess 
这样又是另外一种结果了。

    永久重定向:

cat test
#!/bin/bash
#this is stderr
exec 1>sucess //将标准输出重定向到sucess文件
echo "this is error" >&2
echo "this is sucess"

//使用
./test
this is error

    更复杂一点的就是多种重定向在一个脚本中同时存在,就需要,自己注意永久重定向所申明的位置。(也可以自己定义重定向文件描述符)

    文件重定向输入(其实和管道用处很相似,将某个文件的内容当标准输入重定向进来)

cat test
#!/bin/bash
#this is stderr
exec 0<script //将script文件内容当标准输入重定向进来
while read line
do
echo $line
done

//用法
./test
{
grep -c $1 chen
}

    还有一些比较偏的用法:禁止命令输入:重定向到 /dev/null 文件就会直接把定向的全部丢弃。

© 著作权归作者所有

年少爱追梦
粉丝 35
博文 189
码字总数 119531
作品 0
杭州
程序员
私信 提问
Linux 中几个高效过滤命令

过滤器是一个程序,它从标准输入读取数据,在数据上执行操作,然后把结果写到标准输出。 因此,它可以用来以强大的方式处理信息,例如重新结构化输出以生成有用的报告,修改文件里面的文本,...

问题终结者
2018/05/15
113
1
linux shell数据重定向(输入重定向与输出重定向)详细分析

导读小文:【http://www.ibm.com/developerworks/cn/linux/l-iotips/】 技巧:Linux I/O重定向的一些小技巧 简介: Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞...

无明时空
2013/03/06
3.3K
0
xilinx-arm-linux交叉编译链安装

首先,说明为什么要装xilinx-arm-linux编译链,因为要使用Xilinx的Zedboard开发:需要在Linux系统上面,使用xilinx-arm-linux交叉编译链,编译C文件,将编译后的文件拷贝到Zedboard即可。安装...

weixin_40651304
2018/04/17
0
0
介绍 Linux 中的管道和命名管道

要在命令间移动数据?使用管道可使此过程便捷。 在 Linux 中, 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便...

作者: Archit Modi
2018/09/08
0
0
linux shell 使用循环方式读取交换机端口状态

求学习linux和交换机的人帮帮忙 我写一个脚本希望实现读取交换机端口的状态(up|down|error),并将这些状态输入数据库中。现在下面这个脚本已经实现读出状态这一功能,写数据库这个功能则暂...

一路好梦
2014/03/19
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Xss过滤器(Java)

问题 最近旧的系统,遇到Xss安全问题。这个系统采用用的是spring mvc的maven工程。 解决 maven依赖配置 <properties><easapi.version>2.2.0.0</easapi.version></properties><dependenci......

亚林瓜子
42分钟前
4
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
7
0
Set 和 Map

Set 1:基本概念 类数组对象, 内部元素唯一 let set = new Set([1, 2, 3, 2, 1]); console.log(set); // Set(3){ 1, 2, 3 } [...set]; // [1, 2, 3] 接收数组或迭代器对象 ...

凌兮洛
今天
1
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.9K
19

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部