shell使用总结

1、shell的语法
  • shell 中的变量
    创建变量
    variable=value
    访问变量
    $variable、"hello"$variable"、"$variable"、'$variable'

    默认符号以空白符分隔,单引号中的’$‘符号不会展开变量,双引号中的’$'符号会对后续符号进行展开

  • shell中的环境变量

    环境变量说明
    $HOME当前用户的加目录
    $PATH以冒号分隔的用来搜索命令的目录列表
    $IFS输入分隔符,它们通常是空格、制表符和换行符
    $0shell脚本的名字
    $#shell脚本的参数个数
    $$shell脚本的进程号
    $1,$2,…脚本程序的参数
    $*所有参数,参数之间以$IFS的第一个字符分隔开
    $@所有参数,参数默认以空格分隔开
  • shell中的控制流

    • test 或 [ 判断语句
    • if…then…elif…fi判断语句
    • for语句
    • while语句
    • case语句
    • break命令
    • continue命令
  • shell中的与或非

    • &&
    • ||
    • !
  • shell中命令的执行

    • $(command)

    • `command`

    • 算术扩展

      x=2
      y=$(($x+1))
      

      两对圆括号用户算术替换

    • 参数扩展

      for i in 1 2
      do
      	process $(i)_tmp
      done
      //1_tmp  2_tmp
      
      说明
      param:-default}如果param为空,就把它设置为default值
      aram}给出param的长度
      ram%word}从param的尾部开始删除与word匹配的最小部分,然后返回剩余部分
      ram%%word}从param的尾部开始删除与word的最长部分,然后返回剩余部分
      ram#word}从param的头部开始删除与word匹配的最小部分,然后返回剩余部分}
      ram##word}从param的头部开始删除与word匹配的最长部分,然后返回剩余部分
  • shell中的函数

    • function定义函数
    • return 返回值
2、shell中的可执行程序
  • echo
  • read
  • .命令
    通常,当一个脚本执行一条外部命令时,它会创建一个新的环境,在命令执行完后,留下退出码返回给父shell
  • exec命令
    exec的典型用法, exec wall "hell world"
    ecec第二种用法是修改但钱文件的描述符exec 3< file,这使得文件描述符3被打开便从文件file中读取数据
  • exit
  • export
    export命令将作为它参数的变量导出到子shell中,并使之在子shell中有效
  • return
  • set
    set建立变量,影响$1、$2等变量
  • shift
    shift n 把所有参数左移指定n的次数
  • find
  • grep
  • eval
    foo=10
    x=foo
    y='$'$x
    echo $y
    >> $foo
    ------------------------
    foo=10
    x=foo
    y='$'$x
    eval $y
    >> 10
    
3、here文档

在shell脚本程序中向一条命令传递输入的一种特殊方法是使用here文档,它允许一条命令在获得输入数据时就好像在读取一个文件或键盘一样,而实际是从脚本程序中得到输入数据。

4、sed和awk命令

sed命令

sed是一个很好的文件处理工具,主要是以行为单位进行处理,可以将数据进行替换、删除、新增、选取等特定工作。

sed [-nefri] 'command' 输入文本

/*
 * -n:使用silent模式,在一般sed的用法中,一般输出都会列出到STDIN,加上此参数后,则只有经过**sed处理的那一行**才会被列出来。
 * -i:直接修改输入文本内容,而不是在屏幕输出
 * /
/*
 * a:追加,a得后面可以接字符串,而这些字符串出现在新一行(支持转义)
 * c:取代,c的后面接字符串,这些字符串取代n1,n2之间的行
 * d:删除,后面不接任何字符串
 * i:插入,同a
 * p:打印,
 * s:取代,参考vim
  • sed中的模式查询
//输出test.txt文件中包含关键字$的所在行
sed -n '/\$/p' test.txt  

//替换匹配行中的某个字符串
sed -n '/pattern/s/replacesrc/replacedst/g' test.txt

awk命令

awk是一个解释器,用法为awk pattern {action} input,它将文本的每一行作为输入来处理。

  • pattern的形式
BEGIN
END
expression
expression, expression
  • awk中的环境变量
变量名说明
ARGCnumber of command line arguments
ARGVarray of command line arguments
FILENAMEname of the current input file
NFnumber of fields in the current record
NRcurrent record number in the total input stream
FNRcurrent record number in FILENAME
RSinput record separator, initially = “\n”
FSsplit records into fileds as a regular expression
  • 用例
//读入有'\n'换行符分割的一条记录,将records按指定域分割符划分,$0表示所有域,$1表示第一个域,$n表示第n个域。
last -n 5 | awk '{print $1}'

cat /etc/passwd | awk -F ':' '{print $1}'

cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'

//先执行BEGIN(仅执行一个{}),然后读入文件,接着输出BEGIN后面的花括号,最后执行END后面的语句
cat /etc/passwd | awk -F':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'

//awk的模式匹配
awk -F: '/root/{print $7}' /etc/passwd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值