云顶娱乐手机官网-云顶娱乐网址

热门关键词: 云顶娱乐手机官网,云顶娱乐网址

文件描述符和重定向

2019-11-07 作者:云顶娱乐网址   |   浏览(73)

linux 输入/输出重定向,linux重定向

文本陈说符(fd卡塔 尔(阿拉伯语:قطر‎是与有些展开的文件或数额流相关联的卡尺头。文件陈述符0,1,2是系统留住的。

0 ---- stdin(标准输入)
1 ---- stdout(标准输出)
2 ---- stderr(标准错误)   

输入重定向的命令 < ,输出重定向的命令 > ;
谬误重定向的命令 2>,追加重定向的命令 >> ;

重定向到文件

mkdir /tmp/10
cd /tmp/10
echo "123" > 1.txt
echo "456" >> 1.txt
cat 1.txt
#123
#456

ls + #错误重定向
#ls: cannot access +: NO such file or directory
ls + 2> 1.txt
cat 1.txt
#ls: cannot access +: NO such file or directory

#还可以将stderr转换成stdout,使得stderr和stdout都被重定向到同一文件
#cmd > output.txt 2>&1   或者 cmd &> output.txt
ls + > output.txt 2>&1   #ls + &> output.txt
cat output.txt
#ls: cannot access +: NO such file or directory

#重定向到空设备
#/dev/null是一个空设备,向它写入的数组都会丢弃,但返回状态是成功的
ls + > /dev/null 2>&1
echo $?
#2 表示上条命令没有执行成功
#利用它的返回状态常用if判断中,如:
#检查多个主机是否存活 
for ip in 192.168.217.{1..3};do
        if ping -c 1 $ip >/dev/null;then
        #ping不通则为false
                echo "$ip ok"
        else
                echo "$ip no!"
        fi
done

redirect.sh

#!/bin/bash
cat << EOF >log.txt
Log file head
this is a test log file
function :system statistics
EOF

在cat << EOF >log.txt与下叁个EOF之间的享有文件都会被看作stdin数据。log.txt的源委如下:

sh redirect.sh
cat log.txt
#Log file head
#this is a test log file
#function :system statistics

read命令
read命令从标准输入中读取,并把读取的内容复制给变量。

#-p prompt  提示信息
read -p "please input your name:" name
#please input your name:James
echo $name
#James

#-a array   保存为数组,元素以空格分隔
read -p "please input your hobby:" -a arr
#please input your hobby:basketball pingpang running
echo ${arr[*]}
#basketball pingpang running

#read -d delimiter 持续读取直到遇到delimiter第一个字符退出
read -p "please input number of not 5:" -d 5
#please input number of not 5:4
#6
#5  遇到5返回

#-s 隐藏输入
#-t timeout 等待超时时间,秒


cat a.txt
#a b c
#1 2 3
#x y z
#while循环按行读取文件
cat a.txt |
while read line;do
echo $line
sleep 1
done

#重定向读取
while read line;do
echo $line
sleep 1
done < a.txt

#for循环读取
old_IFS=$IFS
IFS="n"
for i in `cat a.txt`;do
echo $i
sleep 1
done
IFS=$old_IFS


#分别变量赋值
read a b c
#1 2 3
echo $a $b $c
#1 2 3

【系统留住描述符】

0:stdin  标准输入

1:stdout  标准输出

2:stderr  标准错误

正式错误输出的重定向方法:

方法一:cat linux.txt 2>  out.txt

方法二:cat linux.txt &>  out.txt

【tee命令】

tee命令能够将数据重定向到文件,另一面还足以提供黄金时代份重定向数据的别本作为一而再命令的stdin

在终点打印stdout同一时候重定向到文件中:

ls | tee out.txt

ls | tee out.txt | cat  -n

【重定向脚本内的文本片段(多行文本)】

#!/bin/bash

cat <<EOF>text.log

this is a text line1

this is a text line2

this is a text line3

EOF

【自定义文件陈说符】

能够使用exec命令成立自定义文件描述符,文件的开垦情势有只读情势,截断格局和充实方式。

<  操作符用于从文件中读取至stdin:

echo this is a test line > input.txt

exec 3<input.txt  //自定义文件呈报符3展开并读取文件

在指令中央银行使文件叙述符3:

cat <&3

this is a test line.

注意:这里只好读取三回,要重新读取必要重新成立文件陈诉符。

> 操作符用于截断格局的文书写入(数据在文件内容被截断之后写入卡塔 尔(英语:State of Qatar)

exec 4 >output.txt

echo this is a new line >&4

cat output.txt

this is a new line.

>>  操作符用于扩充格局的文本写入(增加内容到文件中,原有内容不会抛弃卡塔尔国

exec 5>output.txt

echo  this is a new line >&5

cat output.txt

this is a new line

this is a appended line

本文由云顶娱乐手机官网发布于云顶娱乐网址,转载请注明出处:文件描述符和重定向

关键词: