关于输入重定向
对于输入重定向来说,其需要用到的符号以及作用如表 1 所示。
命令符号格式 | 作用 |
---|---|
命令 < 文件 | 将指定文件作为命令的输入设备 |
命令 << 分界符 | 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串 |
命令 < 文件 1 > 文件 2 | 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。 |
以 /etc/passwd 文件(存储了系统中所有用户的基本信息)为例,执行如下命令:
[root@localhost ~]# cat /etc/passwd #这里省略输出信息,读者可自行查看 [root@localhost ~]# cat < /etc/passwd #输出结果同上面命令相同
注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以 /etc/passwd 文件作为输入设备。
【例 2】
[root@localhost ~]# cat << 0
>c.biancheng.net
>Linux
>0
c.biancheng.net
Linux
可以看到,当指定了 0 作为分界符之后,只要不输入 0,就可以一直输入数据。常见的分界符有EOF
【例 3】 首先,新建文本文件 a.tx,然后执行如下命令:
[root@localhost ~]# cat a.txt
[root@localhost ~]# cat < /etc/passwd > a.txt
[root@localhost ~]# cat a.txt #输出了和 /etc/passwd 文件内容相同的数据
可以看到,通过重定向 /etc/passwd 作为输入设备,并输出重定向到 a.txt,最终实现了将 /etc/passwd 文件中内容复制到 a.txt 中。
cat命令介绍
cat
命令是concatenate(连接)的缩写,默认情况下,他接受一个文件作为参数,然后把这个文件的内容链接到标准输出上,同时接收多个文件作为参数时,可以将这些文件的内容连接到一起,输出到标准输出上
当键入cat直接按回车时,系统会等待从标准输入获取输入,输出到标准输出上
<<和<<-的区别。
在我们使用cat <<EOF时,我们输入完成后,需要在一个新的一行输入EOF结束stdin的输入。EOF必须顶行写,前面不能用制表符或者空格。
比如,下面的语句就不会出错:
cat <<EOF
Hello,world!
EOF
如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。
而<<-就是为了解决这一问题:
cat <<-EOF
Hello,world!
EOF
上面的写法,虽然最后的EOF前面有多个制表符和空格,但仍然会被当做结束分界符,表示stdin的结束。
这就是<<和<<-的区别。
使用cat 和EOF写入数据到文件:
第一种:
cat <<EOF >phpinfo.php <?php phpinfo(); ?> EOF
第二种:
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF DEVICE="eth0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no" EOF
cat> 文件名<<eof
用来创建文件
在这之后输入任何东西 都是在 文件里的
输入完成之后EOF结尾 代表结束