首页 > 代码库 > 鸟书shell 学习笔记(一) shell中的重点概念以及命令

鸟书shell 学习笔记(一) shell中的重点概念以及命令

变量

  variableName=value
  1. 等号左右不能有空格
  2. 变量内容有空格需要用"或者‘括起来,但是 v="hello $name" $保持原有功能,单引号则不行,v="hello ‘$name‘"纯文本
  3. 可用转义符\将特殊字符转成普通文本 `命令`,$(命令) ,在文本中提供命令执行信息
  4. 变量累加, name=xiaoyi ; name=$name:‘welcome to hz‘
  5. 子进程能够继承父进程的环境变量但是不能够继承父进程的自定义变量,export 变量名;将自定义变量变成环境变量

从键盘读入数据:
    read -p ‘提示语‘ -t num v # num 时间,v 变量名
数组的申明和使用:
    v[1]=‘hello‘;v[2]=‘xiao‘
    echo ${v[1]}


路径与命令的查找顺序

  1. 以相对/绝对路径执行命令,如/bin/ls
  2. 由alias找到该命令来执行
  3. 由bash内置的命令执行
  4. 通过$PATH这个变量的顺序找到第一个命令来执行


读取shell配置文件的命令
source 或者就是一个点 . ,    由于.bashrc只能在登陆的时候才会被读,如果中途修改了想立即生效的话,我们就需要调用source命令读取当前修改的相应配置文件
eg: source ~/.bashrc equals . ~/.bashrc 


管道命令

场景: 当数据需要经过几次处理之后才能到我们想要的格式的时候
管道之后第一个数据一定是可以接受standard input的命令

选取命令:cut,grep 
  • cut
         cut 按行为单位切出来 cut -d ‘分割字符‘ -f fields ,主要是用于行数据的分割显示
         cut -c 字符范围
         eg:
            echo $PATH | cut -d ‘:‘ -f 5 //选取path中以:分割的第五个路径
  • grep
grep 将一行信息中我们想要的数据分析出来
grep [-acinv] [--color=auto] ‘查找字符串‘ filename
-a 将binary文件以 text的方式查找数据
-c 统计匹配到的数据个数
-i 忽略大小写
-n 输出行号
-v 输出没有匹配内容的那一行
         grep可以结合正则表达使用

排序与统计命令 sort ,wc ,uniq
  • sort 
    sort [-fbMnrtuk] [file or stdin]
    -f 忽略大小写
    -b 忽略最前面的空格
    -M 以月份的名字排序
    -n 使用纯数字排序
    -r 反向排序
    -u 相同的数据项仅出现一项
    -t 分隔符
    -k 以以那个区间进行排序
    eg:
         cat /etc/passwd | sort -t ‘:‘ -k 1 //对以: 分割的第一列排序

  • wc  统计字, 行或者字符数
    wc [-lwm]
    -l 行数
    -w 字数
    -m 字符数 
    eg:
         cat /etc/profile | wc -lwm
  • uniq 重复的数据竟出现一次即可
    uniq [-ic]
    -i 忽略大小写
    -c 进行计数
    eg:
         last | cut -d ‘ ‘ -f1  | grep ‘^xiaoyi‘  | uniq -c

字符转换指令 tr, col, join, paste, expand 
  • tr : tr [-ds] set1
    -d 删除信息当中的set1字段
    -s  替换掉重复的字符
    eg : 小写换大写 last | tr ‘a-z‘ ‘A-Z‘


find ./ -name "*.java" | xargs wc -l
find grep 讲的比较好的链接: http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html

特殊符号:



鸟书shell 学习笔记(一) shell中的重点概念以及命令