尖括号(< 和 >)
重定向
- <<< 部分匹配某个字符串
- > 输出重定向到文件或设备 覆盖原来的文件
- >! 输出重定向到一个文件或设备 强制覆盖原来的文件
- >> 输出重定向,进行追加,不会覆盖之前的内容
- << 标准输入来自命令行的一对分隔号的中间内容(这个可以看EOF的实例)
- < 输入重定向到一个程序,将后面文件作为前面命令的输入
test.sh > filename
:重定向 test.sh 的输出到文件 filename 中。如果 filename 存在的话,那么将会被覆盖。
test.sh &> filename
:重定向 test.sh 的 stdout(标准输出)和 stderr(标准错误)到 filename 中。
test.sh >&2
:重定向 test.sh 的 stdout 到 stderr 中。
test.sh >> filename
:把 test.sh 的输出追加到文件 filename 中。如果 filename 不存在的话,将会被创建。
之前提到了一些,详细看 关于 < <、<、>、>>
竖线(|)
管道
分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法。
vim b.sh
输出的内容均变为了大写字母。
破折号(-)
选项,前缀
在所有的命令内如果想使用选项参数的话,前边都要加上“-”。
用于重定向 stdin 或 stdout
下面脚本用于备份最后 24 小时当前目录下所有修改的文件。
需要理解的知识点
关于tar命令
tar cvf etcbak.tar etc/ 打包一个tar
tar xvf etcbak.tar 解开一个tar
tar cvzf etcbak.tar.gz etc/ 打包压缩一个 tar
tar zxvf etcbak.tar.gz 解压一个tar
archive=${1:-$BACKUPFILE} 什么意思?
理解$0-$9 。如果有输入参数,archive的值用第一个输入参数,如果没有,archive的值设置为$BACKUPFILE
花括号中的1,代表脚本或者函数里的第一个参数
波浪号(~)
目录
~
表示 home 目录。