注意shell中通配符和正则表达式的区别
通配符:*表示任意的字符0-n个
正则: *表达*号前面的字符匹配0-n个
nohup command & 后台运行
// 例如运行java程序
nohup java -jar test.jar >/dev/null 2>&1 & // 这句话就是说后台运行java程序,但是默认会生成一个nohup.out的日志文件
// 这里我们把输出重定向到/dev/null中,/dev/null就是个黑洞,进去啥都没有了
// 2>&1 这句话意思就是将错误输出重定向到标准输出,因为标准输出重定向到了
// 黑洞中,故这里的错误输出也被重定向到了黑洞中了
// >紧跟的&的意思就是,将后面的1当成标准输出,不要当成名字为1的文本文件了!!
test 测试
字符串测试:
-z 字符串长度不为0,返回真
-n 非空串
==
!=
< 按字典顺序排序
>
文件测试
-d 是否文件夹
-f 是否文件
-e 是否存在
-r 是否可读
-w 是否可写
-x 是否可执行
file1 -nt file2 file1比file2新
file1 -ot file2 file1比file2旧
逻辑操作符
-o or
-a and
! 否
数值测试
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
在(()) 双小括号内可以使用 < <= > >=
test 和 [ 在shell中是命令
[[ 在shell中是关键字
上面三个无论是命令还是关键字,大部分情况下,他们可以通用,但是在[[可以使用< > && || *(通配符) 等
为什么在关键字中可以使用这些符号,而在命令中不可以使用呢?
主要是因为,如果是命令,它会和参数组合在一起被shell解释,比如< > 会被解释成重定向符号,
而在关键字中就不会了。而且在[[中匹配字符串或通配符不需要字符串。