【计算机】linux中的输入从定向和输出重定向,输

作者: 计算机网络  发布:2019-09-12

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

文件呈报符(fd)是与有些展开的文书或数额流相关联的整数。文件陈说符0,1,2是系统留住的。

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

输入重定向的命令 < ,输出重定向的命令 > ;
荒唐重定向的命令 2>【计算机】linux中的输入从定向和输出重定向,输出重定向。,追加重定向的命令 >> ;

重定向到文件

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

1. 标准输入输出

价值观的Linux规范输入、输出设备首如若键盘和荧屏。

linux中的输入从定向和输出重定向,linux重定向

linux的正式的输入和出口为如下

计算机 1

咱俩在 linux中奉行命令时,命令暗中认可输出到console中,比很多时候我们要求将指令输出到别的器材上如最广泛的就文件中去,恐怕重文件中输入。那那时候就必要用到linux的输入和输出的重定向了。

常用文件重定向命令:
command >file: 标准输出重定向到三个文书,错误仍旧输出荧屏
command >>file: 规范输出重定向到四个文本(追加)
command 1>file1: 标准输出重定向到叁个文本
command 2>>file2:规范错误重定向到二个文本(追加)
command 1>file 2>&1:规范输出和正规错误一同重定向到三个文书
command>>file 2>&1: 标准输出和专门的学问错误一齐重定向到贰个文本(追加)
command < file1 >file2:以file1做为标准输入,file2做为标准输出
command <file: 以file做为文件标准输入
注:上面包车型大巴command>file 2>&1可以修改为command>file 2>>file

参考

linux的规范的输入和输出为如下 我们在 linux中实行命令时,命令私下认可输出到console中,相当多时候...

行业内部输入设备:键盘/dev/stdin 描述0 规范输出:荧屏/dev/stdout 描述1 正经错误输出:显示屏/dev/stderr 描述2

2、输出重定向

出口的重定向:

[root@localhost ~]# ls -il /etc/ > etc.txt

[root@localhost /]# cat /proc/cpuinfo > cpu

[root@localhost /]# df -Th > df
[root@localhost /]# cat df
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        20G  3.3G   17G  17% /
devtmpfs       devtmpfs  986M     0  986M   0% /dev
tmpfs          tmpfs     994M   84K  994M   1% /dev/shm
tmpfs          tmpfs     994M  8.9M  986M   1% /run
tmpfs          tmpfs     994M     0  994M   0% /sys/fs/cgroup
/dev/sda1      xfs       197M  101M   97M  52% /boot
/dev/sr0       iso9660   3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
[root@localhost /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  3.3G   17G  17% /
devtmpfs        986M     0  986M   0% /dev
tmpfs           994M   84K  994M   1% /dev/shm
tmpfs           994M  8.9M  986M   1% /run
tmpfs           994M     0  994M   0% /sys/fs/cgroup
/dev/sda1       197M  101M   97M  52% /boot
/dev/sr0        3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64

重定向追加写入:

[root@localhost /]# df -h > df.txt
[root@localhost /]# cat df.txt 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  3.3G   17G  17% /
devtmpfs        986M     0  986M   0% /dev
tmpfs           994M   84K  994M   1% /dev/shm
tmpfs           994M  8.9M  986M   1% /run
tmpfs           994M     0  994M   0% /sys/fs/cgroup
/dev/sda1       197M  101M   97M  52% /boot
/dev/sr0        3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
[root@localhost /]# echo  aidu3ndddndd >> df.txt
[root@localhost /]# cat df.txt 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  3.3G   17G  17% /
devtmpfs        986M     0  986M   0% /dev
tmpfs           994M   84K  994M   1% /dev/shm
tmpfs           994M  8.9M  986M   1% /run
tmpfs           994M     0  994M   0% /sys/fs/cgroup
/dev/sda1       197M  101M   97M  52% /boot
/dev/sr0        3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
aidu3ndddndd
[root@localhost /]# 

输出重定向
指令 > 文件 “覆盖格局把命令的没有错输出 输出到钦点文件或配备中”
命令 >> 文件 “追加格局把命令的不易输出 输出到钦赐文件或设施中”
命令 2>(2>>)文件 “覆盖(追加)形式把命令的谬误输出 输出到内定文件或设施中”注意带2的荒谬输出后边无法有空格
指令 >> 文件 2>&1 命令 &>> 文件 把命令的不利或错误续写到文件或配备中
命令 >> 文件1 2>> 文件2 把命令正确输出 输出到钦命文件或设施
一声令下 &> /dev/null 将下令的结果丢入null(成效类似于垃圾箱)中 只进行,不显得

3. 输入重定向

此地给mycms5发一封邮件,邮件是个文件,df.txt

[root@localhost /]# mail mycms5 < df.txt
[root@localhost /]# su - mycms5
Last login: Tue Oct 17 13:03:49 CST 2017 on pts/1
[mycms5@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/mycms5": 2 messages 1 new
    1 root                  Tue Oct 17 13:03  21/642   "bozhou in Ah"
>N  2 root                  Tue Oct 17 13:19  25/999   
& 2
Message  2:
From root@localhost.localdomain  Tue Oct 17 13:19:07 2017
Return-Path: <root@localhost.localdomain>
X-Original-To: mycms5
Delivered-To: mycms5@localhost.localdomain
Date: Tue, 17 Oct 2017 13:19:06  0800
To: mycms5@localhost.localdomain
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  3.3G   17G  17% /
devtmpfs        986M     0  986M   0% /dev
tmpfs           994M   84K  994M   1% /dev/shm
tmpfs           994M  8.9M  986M   1% /run
tmpfs           994M     0  994M   0% /sys/fs/cgroup
/dev/sda1       197M  101M   97M  52% /boot
/dev/sr0        3.5G  3.5G     0 100% /run/media/root/RHEL-7.0 Server.x86_64
aidu3ndddndd

& 
ctrl d 退出
& Held 2 messages in /var/spool/mail/mycms5
You have mail in /var/spool/mail/mycms5
[mycms5@localhost ~]$ logout
[root@localhost /]# cat > file2017.txt << EOF #以EOF结束
> ABC
> 123456
> aidd
> adduduudd
> 293933
> da73633
> eof
> EOF
[root@localhost /]# 

输入重定向(用的少,掌握就能够)
wc 试行后 输入 ctrl d甘休 会计算输入行数 单词数 字母数
wc [选项] [文件名] -c字节数 -l行数 -w单词数
wc < 文件名 用文件的内容作为输入 wc << 标识总括标志到标志再现之间的字符

本文由韦德国际1946发布于计算机网络,转载请注明出处:【计算机】linux中的输入从定向和输出重定向,输

关键词: Linux 伟德国际 JAVA后台开... Linux教程