-
-eq //等于
-ne //不等于
-gt //大于 (greater )
-lt //小于 (less)
-ge //大于等于
-le //小于等于
查看文件或者目录是否存在,经常用到-d,-e,-f,其中区别如下
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真[ -z STRING ] “STRING” 的 长度为零 / 为空 则为真。
[ -n STRING ] or [ STRING ] “STRING” 的长度为非零 non-zero则为真 -
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。2>/dev/null 将标准错误stderr删掉 0——标准输入(stdin),1——标准输出(stdout),2——标准错误(stderr)
/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃
-
cat 命令
1) $ cat hello.txt
显示hello.txt文本文件中的内容
2)$ cat -n file
-n选项,可以显示文件的内容和行号
3)$ cat -b file
-b选项,与-n类似,但只标识非空白行的行号(空白行仍显示)
4) $ cat -e file
-e选项,将在每一行的末尾显示“$”字符,在需要将多行内容转换成一行时非常有用。
5) $ cat
只输入cat命令的话,它只是接收标准输入的内容并在标准输出中显示,所以在输入一行并按回车后会在接下来的一行显示相同的内容。
如:$ cat
hello world!
hello world!
$
重定向的话:
$ cat >hello
hello world!
(ctrl+D组合键退出,输入的内容 hello world! 会写入到文件hello中)
$ cat hello
hello world!
$
重定向操作符有两个: >和>>,前者是内容覆盖,后者是在文件的最后追加。
6) 连接多个文件的内容到一个新文件
$ cat test test1 > test2
$ cat test2
结果将显示test和test1中的内容。
7) cat * | wc -l 查询当前文件夹下的文件的总行数,原理就是统计了文件中换行符的数量。
-
sed "s/$//;s/ *//g;/^$/d"各自代表的含义 Linux之sed命令详解 | 《Linux就该这么学》 (linuxprobe.com)
s/$// 在每一行后面追加空。
s为搜索。如:s/a/b/ ,搜索a将替换为b ,并只替换一次。
s/ *//g 将空格删除。
g代表搜索到的全部替换 。
“空格星”( " *") 代理多个空格。
/^$/d 删除空行
替换操作:s命令
替换文本中的字符串:
sed 's/book/books/' file
-n选项和p命令一起使用表示只打印那些发生替换的行:
sed -n 's/test/TEST/p' file
直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books
sed -i 's/book/books/g' file
全面替换标记g
使用后缀 /g 标记会替换每一行中的所有匹配:
sed 's/book/books/g' file
当需要从第N处匹配开始替换时,可以使用 /Ng:
echo sksksksksksk | sed 's/sk/SK/2g' skSKSKSKSKSK echo sksksksksksk | sed 's/sk/SK/3g' skskSKSKSKSK echo sksksksksksk | sed 's/sk/SK/4g' skskskSKSKSK
5. | 运算符
管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。
用法:
command 1 | command 2
他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2
6. bcp 导入导出数据
BCP可以执行的4种操作
(1) 导入
这个动作使用in命令完成,后面跟需要导入的文件名。
(2) 导出
这个动作使用out命令完成,后面跟需要导出的文件名。
(3) 使用SQL语句导出
这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
(4) 导出格式文件
这个动作使用format命令完成,后而跟格式文件名。
示例:
bcp {dbtable | query} {in | out | queryout | format} 数据文件
[-m 最大错误数] [-f 格式化文件] [-e 错误文件]
[-F 首行] [-L 末行] [-b 批大小]
[-n 本机类型] [-c 字符类型] [-w 宽字符类型]
[-N 将非文本保持为本机类型] [-V 文件格式版本] [-q 带引号的标识符]
[-C 代码页说明符] [-t 字段终止符] [-r 行终止符]
[-i 输入文件] [-o 输出文件] [-a 数据包大小]
[-S 服务器名称] [-U 用户名] [-P 密码]
[-T 可信连接] [-v 版本] [-R 允许使用区域设置]
[-k 保留空值] [-E 保留标识值]
[-h"加载提示"] [-x 生成xml 格式化文件]
7. awk 语法格式:awk [选项] '指令' 操作文件
awk可以使用自身变量NR和FNR来处理多个文件。
NR:表示awk开始执行程序后所读取的数据行数。
FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。
NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。
8. substr函数格式 (俗称:字符截取函数)
格式1: substr(string string, int a, int b);
格式2:substr(string string, int a) ;
解释:
格式1:
1)string 需要截取的字符串
2)a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3)b 要截取的字符串的长度
格式2:
1)string 需要截取的字符串
2)a 可以理解为从第a个字符开始截取后面所有的字符串。
9.
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
10. 双引号和单引号的区别
以单引号' '
包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。
以双引号" "
包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
11. SELECT TOP 1 * FROM 其中,top 1子句含义为查询结果只显示首条记录
12. 通过find 查找特定的名字来删除特定的文件,通过 xargs rm -f 可以把find命令查找到的结果删除
find ./ -name *.bak -mtime +$ReserveDay | xargs rm -rf