关于输入重定向

在bash下我建立了一个文件test,里面的内容是“ifconfig"。
现在用ls < test和sh < test出现了结果,但是没办法解释。
$ ls < test
~ Desktop Downloads Music Public test
code Documents examples.desktop Pictures Templates Videos

$ sh < test
ens33 Link encap:以太网 硬件地址 00:0c:29:0d:e0:fb

      inet 地址:192.168.49.129  广播:192.168.49.255  掩码:255.255.255.0
      inet6 地址: fe80::3d48:580d:25ed:ca63/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
      接收数据包:1003 错误:0 丢弃:0 过载:0 帧数:0
      发送数据包:871 错误:0 丢弃:0 过载:0 载波:0
      碰撞:0 发送队列长度:1000 
      接收字节:671371 (671.3 KB)  发送字节:129401 (129.4 KB)
      中断:19 基本地址:0x2000 

lo Link encap:本地环回

      inet 地址:127.0.0.1  掩码:255.0.0.0
      inet6 地址: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  跃点数:1
      接收数据包:428 错误:0 丢弃:0 过载:0 帧数:0
      发送数据包:428 错误:0 丢弃:0 过载:0 载波:0
      碰撞:0 发送队列长度:1 
      接收字节:45992 (45.9 KB)  发送字节:45992 (45.9 KB)

我理解不了,非常感谢!

阅读 2.2k
1 个回答

< test表示标准输入来自文件test,命令ls是不接受输入的,所以它后面的<test没有意义。

sh能够接受输入,sh < test这样执行就相当于用解释器sh解释执行文件test的内容。