专栏首页葫芦linux 输入输出重定向

linux 输入输出重定向

文件描述符         缩写             描述
0                        STDIN          标准输入
1                        STDOUT       标准输出
2                        STDERR        标准错误
~~~~~~~~~~~~~~~~~~~~~~~~~~
重定向错误输出
#ls -al badfile 2> test4
#cat test4
ls: cannot access badfile: No such file or directory
用这种方法shell只会重定向错误信息,而非普通数据。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
重定向错误和正常输出,必须用两个重定向符号。
ls -al test test2 test3 badtest 2> test6 1> test7
test 真是存在
cat test6
[root@localhost ~]# cat test7
-rw-r--r-- 1 root root 22 11-21 09:29 test
root@localhost ~]# cat test6
s: test2: 娌℃湁閭d釜鏂囦欢鎴栫洰褰?
s: test3: 娌℃湁閭d釜鏂囦欢鎴栫洰褰?
s: badtest: 娌℃湁閭d釜鏂囦欢鎴栫洰褰?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果想要STDERR和 STDOUT输出重定向到同一个输出文件。
则可以使用 &>
并且显示出来的错误信息优先级大于普通信息会被优先显示。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
日志中心clean清理根目录
[root@localhost ~]# cat tet
#!/bin/bash
echo "This is an error message" >&2
echo "This is an normal output"
[root@localhost ~]# sh tet
This is an error message
This is an normal output
[root@localhost ~]# sh tet 2> ts
This is an normal output
[root@localhost ~]# cat ts
This is an error message
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@aoi ~]# cat t
#!/bin/bash
exec 0< testfile
count=1
while read line
do
echo "Line #$count: $line"
count=$[ $count + 1]
done
[root@aoi ~]# sh t
Line #1: dds
Line #2: faf
Line #3: asfas
Line #4: fsa
Line #5:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
创建输出文件描述符  自定义
[root@aoi ~]# cat r
#!/bin/bash
exec 3>test3out
echo "this should display on the monitor"
echo " and this should be stored in the file" >&3
echo "Then this should be back on the monitor"
[root@aoi ~]# sh r
this should display on the monitor
Then this should be back on the monitor
[root@aoi ~]# cat test3out
and this should be stored in the file
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@aoi ~]# cat f
#!/bin/bash
exec 3>&1
exec 1>test4out
echo "This should store in the output file"
echo " a long with this line."

exec 1>&3
echo "Now thins should be back to normal"
[root@aoi ~]# sh f
Now thins should be back to normal
[root@aoi ~]# cat test4out
This should store in the output file
a long with this line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@localhost ~]# cat 5
#!/bin/bash
exec 6<&0
exec 0< t
count=1
while read line
do
echo "Line #$count: $line"
count=$[ $count + 1 ]
done
exec 0<&6
read -p "Are you done now?" answer
case $answer in
Y|y) echo "GOODbey";;
N|n) echo "SOrry,this the end";;
esac
[root@localhost ~]# sh 5
Line #1: dsafdds
Line #2: sfas
Line #3: safdasbv
Are you done now?n
SOrry,this the end
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@localhost ~]# cat 6
#!/bin/bash
exec 3<> t
read line <&3
echo "Read: $line"
echo "This is a test line" >&3

[root@localhost ~]# cat t
da1
da2
da3
da4
dafasfdsfsd
dasffdasfdasfdas
fasedafsdfasdfsd
[root@localhost ~]# sh 6
Read: da1
[root@localhost ~]# cat t
da1
This is a test line
fsd
dasffdasfdasfdas
fasedafsdfasdfsd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@localhost ~]# cat 7
#!/bin/bash
exec 3> t
echo "This is a  test line of data" >&3
exec 3>&-

cat t
exec 3> t
echo "This'll be bad" >&3
[root@localhost ~]# cat t
da1
This is a test line
fsd
dasffdasfdasfdas
fasedafsdfasdfsd
[root@localhost ~]# sh 7
This is a  test line of data
[root@localhost ~]# cat t
This'll be bad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@localhost ~]# cat 8
#!/bin/bash
exec 3> testfile1
exec 6> testfile2
exec 7< test
lsof -a -p $$ -d0,1,2,3,6,7
[root@localhost ~]# sh 8
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
sh      874 root    0u   CHR  136,0      0t0     2 /dev/pts/0
sh      874 root    1u   CHR  136,0      0t0     2 /dev/pts/0
sh      874 root    2u   CHR  136,0      0t0     2 /dev/pts/0
sh      874 root    3w   REG  253,0        0 65648 /root/testfile1
sh      874 root    6w   REG  253,0        0 65654 /root/testfile2
sh      874 root    7r   REG  253,0       22 65642 /root/tests
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[root@localhost ~]# cat t
fasdfd
fdasasf
fdsafasasdf
fdasasdfasd
fa
sdfdassf

[root@localhost ~]# cat /dev/null >t
[root@localhost ~]# cat t
将/dev/null作为输入文件,可以快速移除现有文件中的数据而不用先删除文件再创建。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux shell创建临时文件

    [root@aoi ~]# cat d #!/bin/bash #creating and using a temp file tempfile=`mkt...

    葫芦
  • python 函数式编程 sorted

    排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直...

    葫芦
  • python list.remove的坑

    那是因为list的遍历是基于下标的,当你删除其中的一个元素的时候,列表实际上已经发生了变化,该元素后面的所有元素都往前移动了一个位置,所以下次遍历的时候就会跳过...

    葫芦
  • Linux基础之文件系统 原

    Linux kernel自2.6.28开始正式支持新的文件系统Ext4,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构。Ext3对Ext2,只是...

    云飞扬
  • 008.Linux文件目录管理命令基础

    CoderJed
  • elastic-job-lite 数据结构分析

    阿伟
  • elastic-job-lite 数据结构分析(排版整理)

    上面整体描述了作业的数据结构,那么这些数据结构是怎么操作呢?在ejl中,存在这么一个服务:io.elasticjob.lite.internal.storage...

    阿伟
  • 怎么让你的网站实现随机壁纸?

    本文章以WordPress为例,以支持背景图API功能的主题为主,这里以后宫学长的H-Siren为例。这里可以参考本站文章:数款二次元wordpress主题,你...

    lollipop72
  • Hack the box-Network

    大家好,今天给大家带来的CTF挑战靶机是来自hackthebox的“Network”,hackthebox是一个非常不错的在线实验平台,能帮助你提升渗透测试...

    Aran
  • Linux系统:centos7下搭建Nginx和FastDFS文件管理中间件

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件上传、文件下载等,解决了大容量存储和负载均衡的问题。

    知了一笑

扫码关注云+社区

领取腾讯云代金券