shell脚本常用命令

基本命令:

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