主文件
#! /bin/bash
#Shell 输入/输出流 重定向操作(将标准输入和输出从终端,重定向至目标文件)
:<<!
命令 说明
command > file 将输出重定向到 file,执行command然后将输出的内容存入file。
command < file 将输入重定向到 file,本来需要从键盘获取输入的命令会转移到文件读取内容。
command >> file 将输出以追加的方式(不删除文件原有的内容) 重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
!
echo -e "添加到原来的文件:"
date >> 15_test3
echo $(dirname $(readlink -f $0)) >> 15_test3 #将当前文件爱你路径写入文件
cat ./15_test3 #显示文件当中内容
echo -e "\n" $(wc < 15_test3 | awk '{print $1}') #显示文件行数
echo $(wc -l < 15_test3)
echo -e "\n重新载入文件内容"
who > 15_test3
cat ./15_test3
echo -e "\n其他文件导入文件内容"
cat < ./15_test1 > ./15_test3 #command 命令将 stdin 重定向到 15_test1,将 stdout 重定向到 15_test3。
cat ./15_test3
:<<!
Here Document将两个 delimiter 之间的内容(document) 作为输入传递给 command。
注意:
结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
开始的delimiter前后的空格会被忽略掉。
!
echo -e "\n"
#计算有所少行内容
wc -l << EOF
I
am
a
good
boy.
EOF
# /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃
:<<!
&,表示重定向的目标不是一个文件,而是一个文件描述符,内置的文件描述符如下
1 => stdout
2 => stderr
0 => stdin
此处&>或者>&视作整体,分开没有单独的含义
!
# 如果希望屏蔽 stdout 和 stderr,可以这样写:
make > /dev/null 2>&1 #2>&1代表将stderr重定向到文件描述符为1的文件(即/dev/stdout)中
15_test1 文件
我的33
你的232312
15_test2 文件
asda33
fdczs
d232312
15_test3文件
#空文件