重定向

作者: Luyc_Han | 来源:发表于2017-11-02 11:31 被阅读10次
  • wc
输入重定向->语法
wc获取到的三个重要信息
    语法结构: wc 文件名称
    第一个参数: 文本行数
    第二个参数: 文本词数
    第三个参数: 文本字节数

注意:
输入重定向需要cat配合
cat 文件名
________________________________________________________
输出重定向
在temp.sh中添加:

echo "重定向到2" > temp2.sh

这个是把temp2.sh的内容替换为"重定向到2"

echo "重定向到2" >> temp2.sh

这个是追加到后面
重定向输入和输出还有错误的概念:
shell脚本语言将: 输入,输出,错误分为了三中描述符:
输入: 0
输出: 1
错误: 2
::::::::::::::::::

第一种:STDIN标准输入->0->也就是键盘输入
使用:
直接在终端输入cat
然后输入任何字符点击回车就是打印刚才输入的内容例子:
xiaojie@bogon Desktop $ cat
111
111
222
222
::::::::::::::::::::::::::::::::::::::::::::::::::::::
第二种非标准输入:非STDIN-> 文件输入;也就是读取文件内容,输出到控制台
例子
xiaojie@bogon Desktop $ touch han.txt
xiaojie@bogon Desktop $ open han.txt 
xiaojie@bogon Desktop $ cat han.txt 
111
222
33
4
说明:open打开文件han.txt输入内容;

::::::::::::::::::::::::::::::::::::::::::::::::::::::
第三种: STDOUT-> 标准输出->1->对应终端显示
例子:属于输出
xiaojie@bogon Desktop $ cat han.txt 
111
222
33
4
再例子:
who >> sh.sh 
who说明:意思是输出当前用户信息到控制台;而此处的意思是追加用户信息到sh.sh到文件中;
重定向错误信息->输出到文件中
例子:
如果当前文件shs.sh不存在则执行:
xiaojie@bogon Desktop $ ls -l shs.sh
会报如下错误
ls: shs.sh: No such file or directory
此时将错误信息输入到文件中需要执行:
ls -l shs.sh 2> sh.sh 
如果是覆盖那就使用>如果是追加就使用>>

说明:
如果是查看多个文件可以在后面追加例如:
ls -l shs.sh shs1.sh shs2.sh  
标记重定向 >&2
例如在文件sh.sh中写入内容
echo "我是错误标记" >&2
echo "我是正确的"
在终端输入:
./sh.sh 2> error.sh 
结果打开open error.sh可以看到
我是错误标记
永久重定向
exec命令 批量输出
例如:在sh.sh中输入一下内容
exec 1> error.sh
echo "你好"
echo "我好"
echo "大家好"

执行文件:  ./sh.sh
我们会在error.sh中看到
你好
我好
大家好

说明:
如果改成错误2是不会打印的必须标记错误标识  >&2
exec 2> error.sh
echo "你好" >&2
echo "我好"
echo "大家好"
以上执行命令只会打印:
你好
创建自定义重定向
exec 3>&1
exec 1>temp.sh
echo "你好"
echo "你好1"
echo "你好2"
exec 1>&3
其实我也没咋搞明白这个有什么意义
把3定向到1;最后再把1给定向到3

例子
exec 6<&0
exec 0<temp.sh

count=1
while read line
do
echo "当前行数:$count 读取内容:$line"
count=$[$count + 1]
done
#恢复到之前文件描述符
exec 0<&6
read -p "你是不是一个好人?" isNo
case $isNo in
Y|y) echo "好人";;
N|n) echo "坏人";;
*) echo "不好不坏";;
esac
这段也是没咋明白哈哈哈
创建读写文件描述符
作用:一个文件既可以读也可以写
exec 3<>temp.sh
#读取文件内容
read line <&3
echo "Read: $line"

#写入内容
echo "My Name is Tom" >&3
创建文件读写描述符"<>"
#!/bin/bash
#创建文件描述符
exec 3<>temp.sh
#循环读取内容
while read line<&3
do
echo "读取到的数据: $line"
done
#向temp.sh写入内容
echo "读取结束" >&3
关闭文件描述符">&-"
#!/bin/bash

exec 3<>temp.sh
while read line<&3
do
echo "读取到的数据: $line"
done
#关闭文件描述符
exec 3>&-

echo "读取结束"

同时需要说明:
关闭之后是不能再使用3的不然会报错

相关文章

  • 第07章重定向管道

    输出重定向案例 > < 脚本中使用重定向 2.输入重定向及结合案例 管道 | 重定向和管道的符号对比。重定向输出到...

  • shell 笔记 Day1

    重定向: (覆盖重定向), >>(追加重定向) , 2>(重定向错误信息) , &>(错误正确都重定...

  • 《Linux就该这么学 》笔记(六)| 管道符、重定向和环境变量

    1. 重定向 重定向技术的 5 种模式 标准覆盖输出重定向 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重...

  • 永久性重定向和302临时性重定向

    什么是重定向? 所谓重定向就是将网页自动转向重定向,即:301永久性重定向和302临时性重定向。实施301后,新网...

  • 2019-06-13 重定向301和302

    什么是重定向? 所谓重定向就是将网页自动转向重定向,即:301永久性重定向和302临时性重定向。实施301后,新网...

  • 重定向

    输出重定向 输入重定向 错误重定向 管道 shell中特殊符号

  • Linux重定向day13

    1.重定向概述2.重定向的输出输入3.进程管道技术 一、重定向概述 什么是重定向:Linux重定向是指修改原来默认...

  • Linux高级

    一.重定向命令 学习目标 能够使用重定向命令将终端显示内容重定向到文件 1. 重定向命令的介绍 重定向也称为输出重...

  • vue-router -其他

    一、 重定向 重定向也是通过 routes 配置来完成,下面例子是从 /me重定向到/home`: 重定向的目标也...

  • uos 输入输出与重定向

    1、实验-输出重定向 2、实验-错误重定向 3、实验-双重输出重定向 4、实验-输入重定向 5、实验-管道 6、实...

网友评论

      本文标题:重定向

      本文链接:https://www.haomeiwen.com/subject/gejopxtx.html