shell总结(3)
学习shell这么多天,感觉也收获了不少知识,今天再最后写一篇关于这个的博客吧,我们的操作系统实验里涉及到了把文件的内容输出重定向到另一个文件里,我就总结一下输入输出重定向和文件有关的知识吧
输入输出重定向
一般情况下我们都是通过键盘输入命令,然后将结果输出到显示器上,这里用的是标准的输入和输出stdin和stdout,即默认的输入和输出。但是有时候我们也会用到一些特殊的操作,下面我来介绍一下:
输入重定向
如果我们想把文件当做输入的话,可以这样写: command < file,这样想要从键盘输入的命令就可以从文件中读取了。
输出重定向
$ command >file 可以把输出重定向到文件中,不过这样会覆盖原文件,里面原来的东西就没了。
比如
$ echo “haha wo hao shuai” > test.sh
$ chmod + x ./test.sh
$ ./test.sh
haha wo hao shuai
如果不想覆盖原来的内容,就可以使用>>进行追加
$ echo “zheng de hao shuai ma?\n dang ran le” >> test.sh
$ chmod + x ./test.sh
$ ./test.sh
haha wo hao shuai
zheng de hao shuai ma?
dang ran le
下面总结一下常用的命令:
命令 | 说明 |
---|---|
command > file | 将输出重定向到 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 之间的内容作为输入。 |
/dev/null 文件
如果希望执行某个命令,但又不希望在显示器上输出,就可以将输出重定向到/dev/null文件中。
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出“的效果。
$ command > /dev/null
有关文件的一点操作
如果你想包含外部脚本的话有两种方法:
1. . filename
2. source filename
比如你创建了一个文件 tesh.sh,之后又创建了一个文件test1.sh,想在test1.sh里面包含test.sh
可以这样写:
#!/bin/bash
. ./test.sh
echo “haha”
然后执行脚本就只需要执行test1.sh就行了。