Shell基础总结

0、linux常用路径及说明:
   /dev/null   回收站
1、 more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
    touch file 检查文件是否存在,不存在则创建它。
2、查看当前环境变量  echo $PATH
   查看当前使用的shell  echo $SHELL
3、进程相关命令:
   ps:  查看瞬间进程状态;
   kill杀死进程
   top 进程实时监控
4、文件描述符:
    0:标准输入   与   stdin(FIEL *类型的变量) 对应
    1、标准输出(默认)  stdout
    2、标准错误输出      stderr
5、重定向
    输出:
  >   是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);
         >>这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
    输入:<无太大意义
6、通配符扩展:
   *匹配任何一个字符串
   匹配单个字符
   []允许匹配方括号内任何一个单个字符 [^]对方括号内字符取反
   {}匹配集合中任何一个字符串
7、权限分配命令:
    chown    改变文件的拥有者和群组
    chgrp    采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户。
    chmod    ls -al查看目录下的权限,如下例子:
              -rwxr-xr-x 1 root root 4961 11-19 09:41 program
              第一个-表示为非目录文件,若为d则为目录文件
              接着三个为一组,表示属主、属主同组、其它用户对该文件的读、写、执行权限。
              每组权限对应一个8进制数字,如上例对应的权限为 755
              此外 ,“+”增加权限 “-”取消权限
8、shell是一种程序设计语言。其基本语法有
  •     变量
    输入:read或直接给变量赋值(不用初始化);输出:echo $name || "$name"
  •     环境变量
    $HOME   家目录
    $PATH   环境变量
    $ 0       脚本的名字
    $$      脚本的进程号
    $#      传递给脚本的参数个数
    $PS1    命令提示符:[\u@\h \W]\$ 用户名+机器名+当前目录名
    $PS2    二级命令提示符   通常为>
    $IFS    输入域分隔符
    SHELL:指当前用户用的是哪种Shell。
     修改和查看环境变量的命令! 下面通过几个实例来说明:     1.echo  显示某个环境变量值 echo $PATH
    2.export  设置一个新的环境变量 export HELLO="hello" (可以无引号)
    3.env  显示所有环境变量
    4.set  显示本地定义的shell变量
    5.unset  清除环境变量 unset HELLO
  •     参数变量
    $@       所有参数,不使用IFS分隔(推荐使用)
    $*       所有参数,使用IFS分隔
    $1 $2... 表示具体的参数
  • 条件判断
    test和[]
    example1:
    if test -f bill.c
    then
    ...
    fi
    example2;      
    if [ -f bill.c ](注意[与被检查的条件之间一定要有空格)
    then
    ...
    fi
    条件类型归为三类:字符串比较,算数比较,文件有关的条件(比较符与表达式间一定要空格
    字符串比较:
        str1 = str2
        str2 != str2
        -n str    不为空则为真
        -z str    为空则为真
    算数比较:
    exp1 -eq exp2
    exp1 -ne exp2
    exp1 -gt exp2
    exp1 -ge exp2
    exp1 -lt exp2
    exp1 -le exp2
    !exp
    文件相关的条件:
    -d    file    file是一个目录则为真
    -f    file    file一个文件则为真
    -g    file    set-group-id位被设置为真
    -u    file    set-user-id位被设置为真
    -s    file    文件大小不为0为真
    -r    file    文件可读为真
    -w    file    文件可写为真
    -x    file    文件可执行为真
  • 控制结构:
     if  then elif then fi
     for variable  in values  do statements  done
     while condition do statement done
    until condition do statement done
    case variable in
        pattern [ | pattern] ...) statements;;
        pattern [ | pattern] ...) statements;;
    esac
  • AND列表和OR列表
    AND列表格式:statement1 && statement2 && statement3
    OR列表:     statement1 || statement2 || statement3
  • 函数
    1、函数实现要放在调用之前,脚本是自上而下执行的。
    实现:func(){...}   调用:func   ;
    2、bash下true和false是内建命令, true命令啥都不做,只设置退出码为0false命令只设置退出码        为1
     3、$?表示上一次程序退出值
    4、return返回一个数字值,让函数返回字符串的方法:
    foo(){echo JAY;}
    result = "$(foo)"
    5、local关键自己可以定义shell函数中的局部变量
  • 命令: 
    (1):冒号命令偶尔用于简化条件逻辑,相当于true,还用于变量的条件设置:$(var := value),如果没有冒号,shell会把$var当作一条命令来处理。
    (2)echo  常用参数 -n不换行,-e确定了反斜杠转义字符。
    (3)eval对参数进行求值:
           foo = 10
           x = foo
           eval y='$'$x
           echo $y   输出为10 若去掉eval则输出为$foo
      (4 )export命令将作为他参数的变量导出到子shell中
    (5 )expr将它的参数作为一个表达式来求值
    (6 )printf与c语言的主要区别是不支持浮点数。
    (7 )trap command signal command为收到signal信号时采取的行动。
    (8)find命令:用于搜索文件的命令
        find [paths] [options] [tests] [actions]
        path很容易理解,相对路径和绝对路径都可以;
        options  常用 -mount不搜索其它文件系统中的目录
                      -maxdepth N 最多搜索N层目录
        tests    常用 -name pattern 名字查询
                      -newer file 比file新
                      -type f  或者 -type d  类型查询
                 命令之间可以用 -not -and -or来连接
                 举例: find . \( -name "f*" -and -newer bill.o \) -type f -exec ls -l {} \;
        actions  常用 -exec    执行一条命令  以 \;  结束
                      -ok      与-exec一样  提示用户确认
                      -print   打印文件名
                      -ls      对当前文件使用ls-dils命令
    (9)grep命令:通用正则表达式解析器 General regular expression parser
        grep [options] Pattern [files]
        -c 输出匹配行的数目,不输出匹配行
        -h 取消输出行的前缀,即不显示匹配查询模式的文件名
        -i 忽略大小写
        -l 只列出包含匹配行的文件名,不输出真正的匹配行
        -v 匹配模式取反
        -E采用扩展表达式
    (10)正则表达式基础:
        正则表达式的特殊字符及其含义:
        ^ 指向一行的开头
        $ 指向一行的结尾
        .任意单个字符
        [] 字符的范围 如[a-z] [^a-z]中的^指字符集取反。
        对于grep命令,如果指定了-E选项,则有另一些字符会遵循正则表达式规则
        ?  匹配可选,最多匹配一次
        *必须匹配0或者多次
        +必须匹配1或者多次
        {n} 必须匹配n次
        {n,}必须匹配n次或以上
        {n,m}匹配次数为n到m次
9、xargs 是一个强有力的命令,它能够捕获一个命令的输出然后传递给另外一个命令
        举例:find /etc -name "*.conf" | xargs ls –l
10、$((...)) 算数扩展,表达式放在双括号内进行简单的算数运算
    $() 命令的执行和获取输出
    ${...}参数的扩展
    $(param:-default)与$(param:=default)作用一样,若param为空则将值赋为default,否则不变。
    $(#param) 给出param的长度
    $(param%word)    从param尾部删除与word匹配最小部分,并返回剩余部分。
    $(param%%word)    从param尾部删除与word匹配最长部分,并返回剩余部分。
    $(param#word)      从param头部删除与word匹配最小部分,并返回剩余部分。
    $(param##word)    从param头部删除与word匹配最大部分,并返回剩余部分。
11、here文档常用于输出大量文本。格式:<<KEYWORD...KEYWORD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值