shell常用
2016-05-18 00:00
387 查看
shell 特殊变量
含义 | |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
if [ 条件表达式 ]
then
command
command
command
else
command
command
fi
条件表达式
文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行
整数变量表达式
if [ int1 -eq int2 ] 如果int1等于int2
if [ int1 -ne int2 ] 如果不等于
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字符串变量表达式
If [ $a = $b ] 如果string1等于string2
字符串允许使用赋值号做等号
if [ $string1 != $string2 ] 如果string1不等于string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空
if [ $sting ] 如果string 非空,返回0 (和-n类似)
参考:http://www.dutycode.com/post-46.html
------------------------------------------------------------------------------------
所有UNIX命令,要取结果或输出,都要用$( )或反引号` `
------------------------------------------------------------------------------------
find $mypath -regex "${file_type}" | grep -v ".*test_" | xargs egrep -H "(${log_type})" | awk -F':'|~
'{print $1}' | sort |uniq | awk -F'/' '{print $NF}' |sort|uniq> $file_list
shell脚本regex正则表达式 和 字符串替换
参考:http://blog.163.com/keyan0002@126/blog/static/1704258202013926102515776/
其余命令均参考:http://www.cppblog.com/niewenlong/archive/2013/06/07/200843.html
------------------------------------------------------------------------------------
参考:http://www.cppblog.com/niewenlong/archive/2013/06/07/200843.html
------------------------------------------------------------------------------------
find ./ -regex "...."
find本身就是支持正则表达式的
find path -regex "xxx"
find path -iregex "xxx"[iregex忽略大小写]
但是给出的正则表达式必须要匹配完整的文件路径
比如:find / -regex "find" 这样子是找不到/usr/bin/find的,要find / -regex ".*find"或者更精确一点find / -regex ".*/find"
find 的-regex 与 -name的区别
1. 与-name, -iname最大的区别就在于 -regex是把find输出的整个结果(有别于绝对路径名)作为要匹配的对象, 而不仅仅是结果的最后一部分
[code=plain]举例 /tmp目录下有aaa, aa, 1, 2 这些文件 find -name "a*"可以找到aaa和aa 而find /tmp -regex "a*"就不行, 它一个都找不到, 因为找到的每个结果是这样的 /tmp/aaa /tmp/aa -name 是对结果中的"aaa"和"aa"这个部分进行匹配, 而-regex却是对完整的 "/tmp/aaa"和"/tmp/aa"进行匹配. 所以你要写作find /tmp -regex ".*a.*"
2. 注意上面的是.*而不是*
-name所能解释的是基于shell中file glob的匹配字符, 包括:
(1)*表示任意长度字符串
(2)?表示任意的单个字符
(3)[set] 表示一个可选字符集合
(4)[^set]或[!set]表示以ASCII为全集对[set] 求补集的一个集合 (5)brace expansion, 即把/tmp/{a,b,c}扩展为三个字串 /tmp/a /tmp/b 和/tmp/c 注意 shell的file globing机制往往不被认为是正则表达式. -regex接受的是"正统"的正则表达式 这个说起来东西多了, 基本上它跟emacs文档里讲的regex是一样的, 因为find手册里regex的解释部分实际就是链接到emacs 中讲解regex的那个部分. 在上面例子中最大区别就是.* 来表示任意长度字符串.
Linuxshell文件查找命令find详述,xargs : http://www.2cto.com/os/201409/336203.html
shell中Find命令的使用: http://blog.csdn.net/caomiao2006/article/details/12572965
find命令的使用要点:http://www.cnblogs.com/johnnyliu/archive/2013/04/09/3010384.html
相关文章推荐
- LINUX SHELL控制结构while
- linux shell编程学习--循环流程while,for,until命令
- Linux Shell for循环写法总结
- shell脚本
- shell-6.shell read 命令
- powershell小工具
- learn shell
- Shell script for logging cpu and memory usage of a Linux process
- bash 复合命令
- 转:shell杀死指定名称的进程
- 随笔1:shell递归遍历文件夹
- linux shell script脚本数组的建立和使用
- bash & && || ; & 使用方法
- 通过adb获取手机信息
- shell-printf命令详解
- Linux Shellcoding学习
- shell 写的响应时间监控程序
- linux启动java进程的shell脚本(包括启动,停止,重启)
- shell脚本判断变量是否是数字的方法
- shell命令操作ftp