shell脚本常用命令
基本命令:
- declare:用于声明变量和修改变量的属性,与typeset用法完全相同,例如:declare -i number表示声明一个整数变量
- nohup:让运行的命令或者脚本在你退出系统后继续运行,如:nohup java -jar hello.jar > nohup.out 2>&1 & 后台运行java,将标准输出和错误输出都输出到nohup.out
- # helloworld //表示shell脚本单行注释
- : ‘helloworld’ //表示多行注释(注意:和’之间有一个空格)
- 在脚本最上方加上set -e //表示发生错误的时候退出
- 在脚本开头加上set -u //表示当bash使用未声明的变量时退出
- 通过wget下载svn中的文件:wget –http-user=username –http-passwd=password -c -t 5http://svn地址/包名 //-c表示断电续传,-t表示重试次数,5表示5次
- find . -path ./backup -prune -o -type d -name “abc*” -print //查找当前目录下文件夹名为abc的文件夹,并排除当前目录下的backup文件夹
- ssh -t oracle@192.168.1.1 “/tmp/oracle.sh” //执行远程主机192.168.1.1中的oracle.sh脚本
- ls -lrt | head -n 1 //按照时间排序当前目录下文件,并取到第一个文件
- ls -lrt | tail -n 1 //按照时间排序当前目录下文件,并取到最后一个文件
- cd $(dirname $0) //进入当前的脚本的所在路径,一般写脚本放在第一行,就不用重新定义路径
- cmd 2>&1 output.txt //将stderr转换成stdout,将二者都输出到文件中
- cmd &> output.txt //将stderr和stdout都输出到文件中
- echo ${array[*]} //打印数组全部元素
- echo ${#array[8]} //打印数组长度
- echo ${#array[8]} //列出数组索引
- stty -echo //执行后,在终端输入的命令将不显示,可隐藏显示
- stty echo //执行后,在终端输入的命令将再次显示
- bash -x script.sh //调试脚本,查看脚本执行过程
- set -e //通常放在脚本中,当命令返回非0的时候,立即退出脚本执行
- read -n 5 var //从标准输入中读取5个字符后,自动存储变量var中,无需按回车键
- read -s var //用无回显的方式读取密码
- read -p “Enter input:” var //显示提示信息
- read -t 10 var //在特定时间去读取输入,并不是存入变量var
- read -d “:” var //用特定的定界符作为输入行的结束,例如输入helloworld:后才结束
- find . -type f -amin +30 -print //打印访问时间超过30分钟的所有文件,可不加-print
- find . -type f -mmin +30 //打印修改时间超过30分钟的所有文件
- find . -type f -cmin +30 //打印修改时间超过30分钟的所有文件
- cat abc.txt |xargs //将多行文本转换为单行文本
- cat abc.txt |xargs -n 3 //将单行文件划分成多行,每行3个参数
- ps -ef |grep java | xargs kill -9 //获取进程并杀掉进程
- base64 filename > outputfile //通过base64加密文件
- base64 -d filename > outputfile //解码base64数据
- echo -n “helloworld” | base64 //加密字符串
- echo “aGVsbG93b3JsZA==” | base64 –decode //解密字符串
- split -b 10k data.file //将文件分隔成多个文件,每个大小为10k
- !/bin/bash file=abc.txt name=${file%.*} echo ${name} //提取文件名的脚本,通过%操作符实现
- !/bin/bash file=abc.txt name=${file#*.} echo ${name} //提取文件扩展名脚本,通过#操作符实现
- cut -d ” ” -f 1 a.txt //切割文件a.txt的第一列 -d表示指定分隔符 -f 指定提取的第几列
- cut -d ” ” -f 2,3 a.txt //切割文件a.txt的第二第三列,分隔符可能为:也可能为,
- $[ 1+ 3 ] //执行加法运算
- exec 1> output.txt //将脚本的全部标准输出都输出到out.put文件中
- exec 2> errout.txt //将脚本的全部标准错误输出都输出到err.txt文件中