shell

@(软件测试技术栈)

Linux基础命令

文件类命令

1.磁盘与目录

  • df
  • ls
  • midir
  • cd
    cd /d,进入d盘,不是cd d:,CMD是d:
    cd ~,跳转直自己的home目录
  • pwd
  • $PWD

2.文件编辑

  • vi、vim
    vi 1.txt
    i:insert
    a:append
    ESC:退回命令模式

    w:write
    q:quit
    ! 强制
  • sed

3.文件权限
drwxrwxr-x 2 25172814 25172814 4096 Dec 8 10:38 12
-rw-rw-r-- 1 25172814 25172814 2018 Dec 21 15:04 4.text
第1位:表示文件夹类型,d表示目录 ,-表示文件
第2-4位,所有者权限标识
第5-7位,组用户权限标识
第8-10位,其他用户权限标识
三种身份
当前用户u
当前组用户g
非同组用户o
三种权限
r,读
w,写
x,执行
参考:https://www.cnblogs.com/vivian-test/p/5071488.html

  • ll,查看文件权限
  • chmod,更改文件模式(权限)
    chmod o+w 1.txt,o表示非同组用户,+表示增加权限,w表示写权限,1.txt是文件名
    chmod a-x 1.txt,a表示全部用户,-表示去掉权限
  • chown,更改文件所有者和所属群组
  • chgrp,更改文件所属群组

4.文件搜索

  • find

5.文件内容

  • cat
  • more
  • less
  • grep

6.特殊文件

  • ln,软链,相当于windows的快捷方式
    ln -s 1.txt 3.txt,设置软链后编辑3.txt就等于编辑1.txt
    image

7.文件

  • rm 删除文件和目录
    rm 1.txt
  • cp 复制文件或目录
    cp 1.txt 2.txt,复制1.txt,名称为2.txt,如果2.txt存在直接覆盖
    cp 目录1/11.txt 目录2/22.txt,从目录1复制文件到目录2
  • mv 移除和重命名
    mv 4.txt 5.txt,4.txt从命名为5.txt
    目录1/11.txt 目录2/33.txt,可以写上路径,从目录1移动到目录2

进程类命令

  • ps,进程快照
    ps aux
    ps -ef
  • top,持续交互式

网络类命令

  • netstat
    netstat -tlnp,当前对外开放的端口
    netsta -tnp,当前连接
  • curl

管道

1.输入与输出

  • read,用来读取输入,并赋值给变量


    image

    把123赋值给x

  • ehco,输出变量

  • printf,输出变量

  • file,将输出重定向到另一个文件,每次都覆盖


    image
  • file,将输出追加重定向到另一个文件
    [图片上传中...(image-529af8-1590217226563-7)]


  • image
  • 管道,前一个命令的输出传给后一个命令的输入
    管道会开启一个新的进程,与read组合使用时要注意。


Linux三剑客

gerp,基于正则表达式查找满足条件的行

grep pattern file
pattern:正则表达式
file:没给文件时,会找标准输出
1.grep的参数

  • -i,忽略大小写
  • -v,不显示匹配的行
  • -o,每个匹配内容用独立的行显示
  • -E,使用拓展正则表达式
  • -r,递归搜索文件夹

2.基本正则表达式
使用正则表达式,最好用单引号括住表达式

  • ^开头


    image
  • $结尾

  • [a-z]、[0-9]区间,其中任意一个

  • [^a] 不匹配a

  • *表示0个或多个

  • .表示任意字符

3.拓展正则表达式
使用拓展正则表达式,需要加上-E参数

  • ? 非贪婪匹配
  • +表示一个或多个
  • () 分组
  • {} 范围限定
  • | 匹配多个表达式中的一个

awk,根据定位到的数据行处理其中的分段

语法:awk 'pattern{action}
掌握字段数据处理

image

  • -F参数,指定字段分隔符,没有指定默认以空格为分隔符
  • (0,代表当前的记录,为避免)符号与引用变量的$混淆,需要使用{}括起来
  • $1,代表第一个字段
  • $N,代表第N个字段
  • PWD |awk -F '/' '{print $2}'`
    image

以/为分隔符,打印第二个字段

sed,根据定位到的数据行修改其中的数据

image
  • s代表搜索
  • /可以是其他符号,一般用/
  • g代表全局搜索修改
  • -e可以使用多个表达式
    echo $PWD |sed -e's/1/a/g' -e's/h/999/'
    [图片上传中...(image-1c07c0-1590217226563-10)]

Bash语言

变量

1.变量定义

  • = 左右不要有空格
  • 如果内容有空格,需要使⽤单引号或者双引号
  • 双引号⽀持转义 $开头的变量会被⾃动替换

2.变量引用
$

逻辑控制

1.if
❖ if [ condition ] ; then …;fi
❖ if [ condition ] ; then …;else …;fi
❖ if [ condition ] ; then …;elif …;fi
❖ 简单的逻辑可以使⽤ && || 去替代
❖ [ -f file ] && echo file exist || echo file not exist
❖ 条件可以⽤命令返回值代替

2.for

  • ⽤于递归数组
    arry=(1 2 3 4);for i in ${arry[@]};do echo $i;done

    image

  • 用于递归以空格隔开的字符串序列
    ss="aa bb cc dd";for x in $ss;do echo $x ;done

    image

  • 用于递归某个命令的返回值
    for x inls;do echo $x ;done

    image

3.while

  • 设置循环条件
    i=0;while ((i<3));do echo $i;((i=i+1));done

    image

  • ⼀⾏⾏的读取⽂件内容
    while read line; do echo $line ; done < 3.txt

    image

4.退出控制

  • return 函数返回
  • exit 脚本进程退出
  • break 退出当前循环
  • continue 跳过当前的循环,进⼊下⼀次循环

函数

1.注释
2.传参
❖ 1 ,3 分别表⽰第⼏个参数。默认shell只⽀持9个参 数,使⽤shift可以传递更多的参数。
❖ (@,)* 表⽰所有的参数,不含{:1:3}, ({:)#} 来表⽰多个参数。
3.定义函数

image

4.执行函数
5.调试函数 -x

你可能感兴趣的:(shell)