henryzhou Make robot converse with human naturally

Bash学习笔记

2018-07-16
Henryzhou

Bash学习

  • history命令会列出记录的所有bash命令
    • !number:执行.bash_history文件中第n条命令
    • !!:执行上一条命令
    • !command:执行以command开头的最近的一条命令
  • bash下组合按键
    • ctrl+C:终止目前的命令
    • ctrl+D:输入结束(EOF)
    • ctrl+Z:暂停目前的命令
  • 通配符
    • *:代表0到无穷多个任意字符
    • ?:代表一定有一个任意字符
    • []:代表一定有一个在中括号内的字符(非任意字符),例如[abcd],代表一定有一个字符,可能是a,b,c,d这四个中任意一个
    • [-]:若有减号在中括号内,代表在编码顺序内的所有顺序,例如[0-9]代表0到9之间的所有数字
    • [^]:若中括号内的第一个字符为指数符号^,那表示原向选择,例如[ ^abc]代表一定有一个字符,只要是非a,b,c的其他字符就接受的意思
  • bash其他符号
    • #:注释符号,后面内容不执行
    • \:转移符号
    • :管道符号,分隔两个管道命令的界定
    • ~:用户的主文件夹
    • ;:连续命令执行分隔符
    • $:变量前导符
    • &:作业控制,将命令变成背景下工作
    • !:逻辑运算符非
    • /:目录符号
    • >,»:数据流重定向,分别是“替换”和“累加”,1>表示输出正确信息,2>表示输出错误信息,同时输出则为2>&1
    • <,«:数据流重定向,输入导向
    • ``:两个反单引号中间为先执行命令,也可使用$()
  • 数据管理命令
    • cut:对于比较规整的信息,cut可以截取每一行特定部分的字符
    • grep:对输出结果进行查询筛选
    • sort:对输入内容进行排序
    • uniq:对输入去重的操作
    • wc:对输入进行统计计数
    • tee:同时将数据屏幕输出和保存到文件
    • xargs:将输入通过空格符或者断行符分开作为参数
    • -的用途:有些命令需要用到文件名作为参数,可以用-代指srdout和stdin输出的文件名
  • 正则表达式
    • 字符集
      • [:alnum:]:代表英文大小写字符及数字,即0-9,A-Z,a-z
      • [:alpha:]:代表任何英文大小写字符,即A-Z,a-z
      • [:blank:]:代表空格键与[Tab]按键
      • [:cntrl:]:代表键盘上面的控制按键,即包括CR,LF,Tab,Del等
      • [:digit:]:代表数字字符,即0-9
      • [:graph:]:除了空格符(空格键与[Tab]按键)外的其他所有按键
      • [:lower:]:代表小写字符,即a-z
      • [:print:]:代表任何可以被打印出来的字符
      • [:punct:]:代表标点符号
      • [:upper:]:代表大写字符,即A-Z
      • [:space:]:任何会产生空白的字符,包括空格键[Tab]CR等
      • [:xdigit:]:代表十六进制的数字类型,因此包括0-9,A-F,a-f等
    • 基础字符表达式与应用
      • .:代表一定有一个任意字符
      • *:代表重复前一个0到无穷次
      • ^word:待查找的字符串在行首
      • word$:待查找的字符串在行尾
      • [list]:从字符集合的RE字符里面找出想要选取的字符
      • [^list]:从字符集合的RE字符里面中找出不要的字符串或范围
      • [n1-n2]:从字符集合的RE字符里面找出想要选取的字符范围
      • [^$]:指定空白行
      • \{n1,n2\}:连续n到m个的前一个RE字符,若为\{n}则是连续n个的前一个RE字符,若为\{n,}则是连续n个以上的前一个RE字符
    • 扩展的正则表达式
      • +:重复一个或者一个以上的前一个RE字符
      • ?:零个或者一个的前一个RE字符
      • :用或(or)的方法找出数个字符串
      • ():找出”组“字符串
      • ()+:多个重复组的判别
    • sed命令
      • 作用:sed本身是一个管道命令,可以分析stdin,还可以将数据进行替换、删除、新增、选取特定行的功能
      • 语法:sed [n1] [n2] function;function选项如下所示
      • a:新增,a后面可以接字符串,而这些字符串会在新的一行中出现
      • c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
      • d:删除,因为是删除,所以d后面通常不接任何参数
      • i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现
      • p:打印,也就是将某一个选择的数据打印出来,通常p会与sed -n一起运行
      • s:替换,可以直接进行替换的工作,通常这个s的动作可以搭配正则表达式,例如1,20s/word1/word2/g,即将1到20行中word1替换成word2
    • 文件比较工具
      • diff [-bBi] from-file to-file:比较from-file和to-file的差别,注意不要用diff命令去比较不相干的文件,这样没有比较的结果
      • cmp [-s] file1 file2:比较file1和file2,返回第一个发现的不同点字节处和行数

下一篇 Vim的使用

Comments

Content