输入输出重定向及管道

Linux运维之路 基础篇:Linux基础命令(二) 输入输出重定向及管道

标准输入:用0表示(键盘)
标准输出:用1表示(监视器)
标准错误输出:用2表示(监视器)

IO重定向:改变标准位置

标准输出重定向:

>:覆盖重定向,目标文件原有的内容会被清除(set -C:禁止对已有文件进行覆盖重定  向)
 (>|:强制进行覆盖重定向)
>>:追加重定向,目标文件原有的内容会被保留,新内容追加至结尾

标准错误输出重定向:

2>:标准错误输出覆盖重定向
2>>:标准错误输出追加重定向

标准输出和错误输出各自定向至不同位置

命令 > 位置1 2> 位置2 (两个文件都会被创建)

合并标准输出和错误输出为同一个数据流进行重定向

命令 &> 文件或目录 或 命令 > 目录或文件 2>&1

输入重定向:符号 <

tr命令: tr [OPTION]... SET1 [SET2]
不加选项表示将字符1中的字符替换到位置与之对应的字符2中的数据
tr "a-z" "A-Z" 把小写字母转换为大写字母
加特定选项-d,将数据中的和字符1中的数据匹配到的删除
-c或——complerment:取代所有不属于第一字符集的字符
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t例如:--all例如:--all或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

tr [OPTION]... SET1 [SET2] < 文件 表示从给定的文件中读取内容
<< 结束符:将结束符之前的内容合并输出
用处: cat >>/tmp/tese <<EOF 可以向指定文件中写多行内容

[[email protected] ~]# cat &lt;&lt;EOF
my name is root
my version is `lsb_release -d`
EOF
my name is root
my version is Description:  CentOS Linux release 7.4.1708 (Core) 

管道

把前一个命令的输出当做后一个命令的输入(最后一个命令会在当前shell进程的子进程中执行),标准错误输出默认不能通过管道转发,可利用2>&1 或 |& 实现

tee命令:从标准输入读取数据,输出至标准输出和文件中

-a:追加

例:将/etc/passwd文件前五行,转换为大写后,保存至/tmp/passwd中

head -n 5 | tr "a-z" "A-Z" | tee /tmp/passwd

练习:

  1. 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

    [[email protected] ~]# tr [:lowwer:] [:upper:] < /etc/issue > /tmp/issue.out
  2. 将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
    [[email protected] ~]# who | tr ‘a-z‘ ‘A-Z‘ > /tmp/who.out
  3. 一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
    Hello, I am 用户名,The system version is here,please help me to check it ,thanks!操作系统版本信息
    [[email protected] ~]# mail -s "HELP" root <<EOF
    > Hello:
    > I am `whoami`
    > zhe system version is `lsb_release -d`
    > plesas help me to check it
    > thanks
    > `cat /etc/redhat-release`
    > EOF
  4. 将/root下文件列表,显示成一行,并文件名之间用空格隔开
    [[email protected] ~]# ls /root | tr ‘\n‘ ‘ ‘
  5. 计算1+2+3+..+99+100的总和
    [[email protected] ~]# echo {1..100}| tr ‘ ‘ ‘+‘|bc
  6. 删除Windows文本文件中的回车字符 ,即“\r”
    [[email protected] ~]# tr -d ‘\t‘ < win.txt
  7. 处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
    [[email protected] ~]# echo "xt.,l 1 jr#hexdumpmn 2 c*/fe 3 uz 4" | tr -d -c ‘0-9 " "‘
  8. 将PATH变量每个目录显示在独立的一行
    [[email protected] ~]# echo $PATH | tr ":" "\n"
  9. 将指定文件中0-9分别替代成a-j
    [[email protected] ~]# tr ‘0-9‘ ‘a-j‘ < test
  10. 将文件/etc/centos-release中每个单词(由字母组成)显示在独立一行,并无空行
    [[email protected]ing ~]# cat /etc/centos-release | tr -sc ‘[:alpha:]‘ ‘\n‘

原文地址:https://blog.51cto.com/13408885/2392203

时间: 2024-10-03 15:01:14

输入输出重定向及管道的相关文章

3_Shell语言———输入输出重定向和管道概述

一.输入重定向和输出重定向 通常计算机的I/O(输入/输出)设备为键盘和显示器,因此当我们执行cat命令而不加任何参数时,命令会等待用户通过键盘输入数据:而当我们为cat命令增加了参数/etc/rc.d/rc.sysinit后,cat命令的输入源变成了文件/etc/rc.d/rc.sysinit.这个过程就是输入重定向.如果cat的结果不显示在屏幕中,而是输出到某个文件中,其过程就是输出重定向. 二.管道 管道事实上是一种重定向的过程.管道的一方是数据的输入端,一方是接收端.bash也支持管道,

linux学习(三)输入输出重定向和管道功能、cat命令、more命令

目录 输入输出重定向 输出重定向 管道功能 cat命令 more命令 @(输入输出重定向和管道功能) 输入输出重定向 输入重定向可以让用户将某个文件作为输入设备,输出重定向可以把某个文件作为输出设备,从而使文件更加灵活 输入重定向的符号使"<",执行该命令,"<"后面的文件替代用户从键盘的输入内容 例如将file文件的内容发送到某个邮箱 [[email protected] ~]#mail -s "test mail" [email 

linux的输入输出重定向和管道

1. 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux为了跟踪打开文件,而分配的一个数字,(人是根据文件名追踪文件,系统则是根据文件描述符),这个数字有点类似c语言操作文件时候的指针,通过指针就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值. linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出st

linux - 输入输出重定向 及 管道

> 正确结果重定向 2> 错误结果重定向 &> 正确和错误全部重定向 >> 追加,其它同> 标准输出实际上就是显示器,比如我们使用cat命令打开一个文件,文件内容就会输出到屏幕上. $ cat passwd > a.txt $ 重写向之后,屏幕上不再有输出,全部都输出到a.txt $ cat a.txt root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nolog

Ubuntu中输入输出重定向及管道技术简述

输出 1.标准输出 定义:程序在默认情况下输出结果的地方(stdout). 2.输出重定向 定义:用于把数据的输出转移到另一个地方去. 3.Ubuntu中例子 $ls > ~/ls_out  ##不显示在显示器上而是输入到文件ls_out中 uname -r > ls_out  ## output the kernal information to the file of ls_out date > ls_out ##output date to file ls_out uname &g

bash快捷键及输入输出重定向

bash特性之快捷键:     Ctrl+a: 跳转至命令首部     Ctrl+e: 跳转至命令尾部         Ctrl+l: 清屏     Ctrl+c: 中止或取消         Ctrl+u: 删除命令行首至光标所在处的所有字符     Ctrl+k: 删除光标所在处至命令尾部的所有字符     bash特性之输入输出重定向及管道     程序都有输入输出的需求     标准输入:keyboard 0     标准输出:monitor 1     错误输出:monitor 2  

3、输入输出重定向、bash算术、正则表达式 学习笔记

输入输出重定向和管道 INPUT: 标准输入 stdin 0 OUPUT: 标准输出 stdout 1 标准错误 stderr 2 I/O重定向 输入重定向:<, << <: 输入重定向 << EOF: 此处创建文件, Here Document 常用于在脚本中创建文件或生成菜单: 显示如下菜单 c:show cpu info d:show disk inf m:show men info 脚本实现 #!/bin/bash cat << EOF c:show

linux输入输出重定向,及管道

输入输出重定向1,输入输出重定向,是针对过滤器的,不针对,编辑器和交互工具2,>号只把正确的标准输出重定向,输出错误信息,可以用2> 3,新建或清空文件可以直接用>filename,>和2>都会清空目标文件4,&>号可以把正确信息和错误信息全部输出重定向6 5,>>可以把重定向追加到目标文件 6,<为输入重定向,<<为等待输入直接目标出现为止,输入重定向可以将标准输入重定向为文件,如cat 管道输出1,管'道输出可以用|,比如 ls

linux重定向和管道的使用

bash的I/O重定向及管道 程序是由程序+指令组成:或者是数据结构+算法 程序数据来自哪里,处理的结果又存放于哪里? 程序必须能够读入输出然后经过加工来产生结果:程序获取的数据可以使数据也可以hi变量.数据.列表文件等等,程序生产出来的结果可以是变量.数据.列表.文件等.也就是说,程序都有读入数据和输入数据的需求. 读入数据:Input 输出数据:Output 通常对于程序来说,输入输出数据可以是键盘.鼠标.显示器等:当然有时候输入的数据是程序自身内部所具有的,但我们认为这些数据应该是通过外部