[bingo]Linux Shell复习笔记
1. 文件权限设置中,文件本身权限受文件所在目录权限的影响。
2. find
a. find . -name "[A-B]*.log" -exec ls -l {} \;
文件名使用模式[A-B],*等的时候,需要用引号引起来
-exec对find匹配的文件执行后面的shell命令。后面固定格式{} \;
b. find /tmp -mtime -3 -print
-mtime -3 匹配3天以内的文件
c. find ~ -newer tmpfile -print
显示比tmpfile新的文件,可以用touch -t设置一个指定时间的临时文件
! -newer filename 比filename文件老的文件
d. find . -size +1000000c -print
显示大于1M的文件
e. -exec "command line" {} \;
对find匹配的文件执行后面的shell命令。后面固定格式{} \;
-ok "command line" {} \;
对每个要运行SHELL的文件,进行确认。-ok rm {} \;
find . -name "*.c" -print |xargs grep "stdio.h"
xargs用管道来处理find匹配的文件,在某些系统中对-exec的参数长度有限制时就用xargs
3. crontab
-e 编辑
-l 列表
-r 删除
0,30 18-23 * * * * echo "hello">/dev/tty1
每天18点到23点,每半小时显示hello.
分 小时 日 月 周 命令
4. tee
输出到标准输出的同时,输出到文件中,-a追加
5. 0标准输入 1标准输出 2错误输出
./a.out 2>&1 | tee -a tmp
2>&1 将错误输出输出到标准输出上
./a.out > filename 创建文件
command <&m 把文件描述符m作为标准输入
command <&- 关闭标准输入
6. 顺序执行命令
命令1 && 命令2 当命令1成功执行时就执行命令2
命令1 || 命令2 当命令1执行失败时就执行命令2
cp /home/bingocn/tmp /tmp || echo "copy error"
7. ` 反引号,将输出作为输入
echo `date` 将显示出现在的系统时间
8. $# 参数个数
第一个参数
$$ 当前Shell的进程号
$? 显示最后命令的退出状态,0成功
9. 条件测试
a. 测试文件状态 [ condition ] 或者 test condition
test -x tmpfile; echo $? 测试tmpfile是否是可执行文件
-d 检测目录
-f 普通文件
-s 非空
b. [ -r tmpfile1 -a -w tmpfile2 ] ; echo $? 测试文件一只读,并且文件二可写
-a 与
-o 或
! 非
c. 字符串测试 [ str1 string_operator str2 ] 或者 test "str1" string_operator "str2"
[ "$var" = "tmp" ] ; echo $? 测试变量var是否为tmp
= 相等
!= 不相等
-z 空串
10. expr 对整数、字符串进行操作
expr 2+3 输出2+3
expr 2 + 3 输出5
loop=0;loop=`expr $loop + 1`;echo "$loop"