二、shell命令

  1. $# 传递到脚本的参数个数、$* 以一个字符串展示所有传递到脚本的参数、$$ 脚本运行的当前进程ID号、$!后台运行的最后一个进程号、$@ 与$*相同但是加引号返回、$- 现实shell使用的当前选项类似于set、$?返回命令执行状态;${#str[*]}统计str的个数
  2. ctrl -c 中断任务、ctrl -z转到后台、ctrl -d给文件加上EOF(相当于exit+回车) 、ctrl -\终止所有进程生成core文件、ctrl -s中断控制台输出、ctrl -q恢复控制台输出、ctrl -l清屏
  3. -d判断目录是否存在、-f判断是不是常规文件、-e判断文件是否存在、-s判断文件不为空、-x文件可执行、-h文件为软链接;-n判断字符串不为空、-z判断字符串为空;-o或、-a与、!非;-eq等于、-ne不等于、-gt大于、-lt小于、-ge大于等于、-le小于等于
  4. find:-print 将匹配文件输出到stdout、-exec对匹配文件执行该参数给出的所有shell命令、-ok和-exec一致但执行前给提示更安全、-name按名字找、-mtime -/+ n查找更改时间n天以内/前、-type查找某一类型的文件、-newer file查找更改时间比file新的文件、-size按文件大小查找文件;/V显示所有未包含指定字符串的行、/C显示包含指定字符串的行、/N显示行号、/I忽略大小写
  5. xargs:-a file从文件中读入作为stdin、-e/E flag遇到flag停止、-p执行argument时询问用户、-n执行的时候一次用argument的次数
  6. uniq删除相邻的重复行
  7. 变量相加:$((a+b))
  8. grep命令:
  9. logcat:Android命令行工具,可以用于得到程序的log信息,adb logcat -v time打印log同时打印系统时间,adb logcat -c清除已有log
  10. 常用命令:
    1. 词频统计:cat file.txt|xargs -n1|sort|uniq -c;统计重复行,cat file.txt|xargs -n1|sort|uniq -d,非重复行,换成-u;
    2. 匹配电话号码:987-123-4567,(123)456-7890,grep -E '^([0-9]{3}-|\([0-9]{3}\))[0-9]{3}-[0-9]{4}$'  file.txt,或者使用awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt
    3. 打印文件长度:cat file.txt|wc -l、wc -l file.txt|awk '{print $1}'、grep -c "" file.txt
    4. 删除行:删除第x行,sed "xd" file;删除空行 cat file.txt|awk NF;删除字符串所在行,sed '/string/d' file.txt;去掉不需要的单词,cat file.txt|grep -v -i string 或者 grep -v -i string 
    5. 打印字符串所在行:grep -n "string" file.txt;打印字符串出现次数:grep -o "string" file.txt|wc -l;打印字符串出现行数总数 grep -c "string" file.txt;打印空行 awk "{if(NF==0) print NR }" file.txt;打印字母数小于x的单词awk '{for(i=0,i<=NF;i++){if(length($i)
    6. 打印文件第几x行:sed -n 'xp' file.txt,如果n行为空返回空,awk 'NR==X' file.txt,NR为行、NF为列;打印文件第x至y行:sed -n 'x,yp' file.txt;打印文件倒数第x行,grep -n x file.txt;打印文件倒数x行:tail -nx file.txt
    7. 查找以 A 开头 B 结尾的单次,grep -E ^A.*B$ file
    8. 统计目录下的文件数量:ls -l | grep "^-"|wc -l;统计目录下大于10M的文件find dir -type f -size +10M
    9. 横向合并文档:paste file1 file2 file3
    10. 统计进程占内存总数:awk '{(sum=sum+$6)};END{print sum}' file.txt
    11. 统计数组平均值,第一行是数组长度,剩余是数组元素:awk '{if(NR==1) total=$1;else sum+=$i}END{printf("%.3f",sum/total);}' $1
    12. 读取文件空行,并输出行号
      i=1
      while read line;do
          if [ -z $line ]; then
              echo $i
          fi
          i=$(($i+1))
      done < file.txt

    13. 输出 500以内的7 的倍数
      for i in {0..500..7}
      do
          echo $i
      done

shell排查

  1. 磁盘打满:df -h查看磁盘空间占用情况,df -h --max-depth=1查看占用多的目录或文件,ls -lhs定位目录下具体目录或文件的占用磁盘空间;如果发现文件占用很小,但是报磁盘空间已满,用lsof dir,将对应的进程杀掉,注意将脚本的输出重定向到/dev/null
  2. inode打满:find . -ctime +7 -name "*"|xargs -i rm -rf {} 删除当前目录下7天前的所有数据
  3. 查看端口存货:netstat -anp|grep $port
  4. 查看cpu性能:top
  5. 修改文件权限:chmod -R 777/444/666 file.txt 修改文件使其可读写执行/读/读写,chown -R admin:admin file

cookie:

  1. 作用:在客户端上保存用户数据、起到简单的缓存和身份识别的作用,保存登录态,记录用户行为
  2. 弊端:增加流量消耗,安全性隐患,如果被拦截,信息会背暴露、数量长度有限制过度会被截断
  3. session数据保存在服务端、cookie保存在客户端,session更安全,cookie可以减轻服务器负担
  4. cookie分为会话cookie和持久cookie,会话cookie不设置它的生命周期expires时的状态,离开后则销毁;持久cookie设置了生命周期expires,信息保留至到期才销毁

sed,awk,grep的区别:

  1. grep是以行为单位处理文本的;而awk可以进行更细致的处理,通过分隔符将一行/一条记录分割成多个字段,以字段为单位处理文本;sed是非交互性的文本编辑器,按照一次处理一行的方式处理文件,并输出到屏幕上
  2. grep主要用于字符串搜索,awk、sed主要用于文本处理
  3. grep功能简单,就是一个简单的正则匹配表达式的过滤,awk功能依赖于grep,更强大
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值