Linux 输入重定向

输入重定向(从数据文件中获取stdin)

1
< filename

从文件filename中获取stdin,例如: sort < telno.txt

输入重定向(从shell中获得stdin:允许替换)

1
<<word

从shell脚本文件获取数据直到再次遇到定界符word

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# cat << END
> 1
> 2
> 3
> 4
> END
1
2
3
4
[root@localhost ~]#

不加单引号的情况,可以使用$变量名的形式获取变量的值:

[root@localhost 文件管理和目录管理]# cat << END
> hello you home dir is $HOME
> END
hello you home dir is /root
[root@localhost 文件管理和目录管理]# 
1
2
3
4
5
6
7
[root@localhost 文件管理和目录管理]# cat << END
> now:`date`
> you home dir is:$HOME
> END
now:2021年 06月 26日 星期六 17:38:32 CST
you home dir is:/root
[root@localhost 文件管理和目录管理]#

定界符所界定内容加工处理(等同双引号处理):

  • 变量替换,命令替换
  • 不执行文件名生成

输入重定向(从shell中获得stdin:不许替换)

<<word从shell脚本程序获取数据直到再次遇到定界符,定界符两侧加单引号:不允许定界符之间的内容进行替换操作。

定界符加上单引号,禁止替换操作

[root@localhost 文件管理和目录管理]# cat << 'END'
> hello you home sir is $HOME
> END
hello you home sir is $HOME
[root@localhost 文件管理和目录管理]# 

输入重定向(从命令行获取信息作为标准输入)

1
<<<word

直接使用三个大于号后面的单词作为命令的输入。

1
2
3
[root@localhost shell的基本机制]# base64 <<< helloWorld
aGVsbG9Xb3JsZAo=
[root@localhost shell的基本机制]#

在批处理文件中输入重定向的定界符之后还可接着写其他命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost shell的基本机制]# cat InputRedirection.sh 
cat << TOAST
**************************
Now : `date`
My Home Directory is $HOME
**************************
TOAST

pwd
[root@localhost shell的基本机制]# bash InputRedirection.sh
**************************
Now : 2021年 06月 26日 星期六 18:23:20 CST
My Home Directory is /root
**************************
/root/Linux_Test/shell的基本机制
[root@localhost shell的基本机制]#

[root@localhost shell的基本机制]# cat InputRedirection2.sh
cat << ‘TOAST’


Now : date
My Home Directory is $HOME


TOAST

pwd
[root@localhost shell的基本机制]# bash InputRedirection2.sh


Now : date
My Home Directory is $HOME


/root/Linux_Test/shell的基本机制
[root@localhost shell的基本机制]#