CTRL+C CTRL+D :前者用于结束一个程序,后者用于结束终端输入。
--符号
*:匹配任意长度的任意字符
?:匹配任意一个字符
#: shell 中表注释
\: 脱意符号
[]:任意属于字符组的字符
{}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
>>:附加到指定文件的结尾
>:输出重定向
<:输入重定向
|:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
||:逻辑或
&&:逻辑与,前面命令成功后执行后面命令
&:在后台执行,前面命令后执行后面命令,不强调成功与否
 
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
shell 脚本的优点:
 1.一次性完成目标
 2.不用重复键入一系列命令
 3.简化用户的操作
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
二、常用的Shell类型
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
常用Shell:Bourne Shell,Bourne Again Shell ,C Shell, Korn Shell,Perl Shell
Bourne Again Shell: 简称Bash ,提供,命令历史,命令补全,命令编写等功能,只需命令行键入bash并回车
Korn Shell:简称Ksh,较强的作业控制能力,如挂起,后台执行,唤醒,终止以及窗口功能
Perl Shell(Practical Extraction和Report Language):用来编写web应用程序的通用网关接口(GCI)
Bourne Shell:简称bsh,简单,编写能力强,但操作使用不够方便,不支持后台运行,
       总是接管屏幕和键盘的控制,只需命令行键入sh并回车
C Shell:提供方便的用户界面设计,提供命令行编辑,拼写校正,命令历史替换,作业控制等功能。命令行键入csh回车,tcsh回车
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
三、Shell基本语法
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
1.注释:#注释内容、  #!:操作系统使用哪一个Shell,绝对路径名。
2.大小写区分:UNIX与Linux都是区分大小写的,Shell脚本同样也区分大小写
3.IO重定向:在Linux系统中,数据流可以分为三种:数据输出,数据输入,错误输出。相应地,每一个进程也都有三个特殊的文件描述    指针:标准输入(standard input,stdin,文件描述指针为0),标准输出(standard output,stdout,文件描述指针为1),标             准错误输出(standard error,stderr,文件描述指针为2)。这三个特殊的文件描述指针使得进程在通常情况下接受标砖输入             设备的输入,由标准输出设备显示输出。
   *标准输入通常是指传给一个命令的键盘输入,例如运行ls -al 其中-al是传给ls命令的标准输入
   *标准输出时一个命令的执行结果,例如运行cat /file1.Doc命令后所看到的文件内容,标准输出通常是被定向到显示器的
   *标准错误通常也被定向到显示器,例如运行cat /file1.Doc:没有此文件或目录。
   !有两种基本的方法可以用来重定向标准输入和标准输出和标准错误:可以利用管道把这些数据流之一输送给另一条命令,也可  以利用I/O重定向把这些数据流之一重定向到另一个文件。管道以及I/O重新定向是Linux系统中特有的噶年。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另一个命令的输入,其代表符号是'|'.所谓I/O重定向是指将命令执行的结果重新导出到其他设备或文件(以>或>>来表示),或是重新导入到其他的设备或文件(以<或<<来表示)
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    常用输入输出重定向命令格式说明
    命令1 > 文件1: 将命令1的输出结果重定向到文件1(错误信息显示在屏幕)
    命令1 &>文件1: 将命令1的输出结果和标准错误输出一起重定向到文件1(不会显示在屏幕)
    命令1 >>文件1: 将命令1的输出结果追加到文件1中
    命令1 2>文件1: 将命令1的标准错误输出结果重定向到文件1中(错误信息输入到文件中,不会显示在屏幕)
    命令1 < 文件1: 将文件1作为命令1的标准输入
    命令1 <<字符串1:允许连续输入数据,直到接收到字符串1    
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
4.输出重定向和输入重定向: 前者是将命令或程序的执行结果通过屏幕或文件输出,
              后者是将输入设备(如键盘或文件)提供给命令来执行。
       
四、变量
1、系统变量和局部变量
    env: 列出用户的变量()全局变量
    env |grep '^a':过滤以a开头的变量
    set:列出用户的变量  
    export a=1 :声明变量
    bash  : 
    unset a : 取消变量
    单引号:强引用,解析特殊字符    b='echo $a' echo $b      echo $a
    双引号:弱引用,脱意           b="echo $a" echo $b          echo 1
    反引号:解析引号中命令的结果    b=`echo $a` echo $b    1
2. $PS1='[\u@\h \W] \$ ' 
    \u:username  ;
    \h:hostname ; 
    \W:相对path,最后一个目录 
    \$:[$,#]如果是root时,提示符为:# ,普通用户则为:$  
    \w: 绝对路径,家目录为~;\v :BASH的版本信息 ;

    \d :代表日期,格式为weekday month date,例如:"Mon Aug1" 
    \t :显示时间为24小时格式,如:HH:MM:SS 
 
五、cut 

 作用:按列提取文件
 参数: 

    -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
  -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  -c :以字符为单位进行分割。
  -d :自定义分隔符,默认为制表符。
  -f :与-d一起使用,指定显示哪个区域。
  -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除
 语法: cut -b 8,3-5
  3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦 
  cut -b -3
  -3表示从第一个字节到第三个字节
  cut -b 3-
  3-表示从第三个字节到行尾
  cut -b -3,3-
  输出整行,不会出现连续两个重叠的
  cut -c 
  -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,

    cut -d : -f 1,3-5

  提取按照:分割的第一列,第三列到第五列
  sed -n l file
  空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母


六、sort 

 作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序
 参数: -b 忽略每行前面开始出的空格字符。
  -c 检查文件是否已经按照顺序排序。
  -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f 排序时,将小写字母视为大写字母。
  -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -k 选择以哪个区间进行排序。
  -m 将几个排序好的文件进行合并。
  -M 将前面3个字母依照月份的缩写进行排序。
  -n 依照数值的大小排序。
  -o<输出文件> 将排序后的结果存入指定的文件。
  -r 以相反的顺序来排序。
  -t<分隔字符> 指定排序时所用的栏位分隔字符。
  -u 去除重复行

  +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
 语法:sort -n -t 'ch' -k num file
  ch 字符的第num 段按照数值排序

七、wc: Word Count
 作用:计算文件的单词数,行数,字符数,并将统计结果显示输出 
 参数:-c 统计字节数。
  -l 统计行数。
  -m 统计字符数。这个标志不能与 -c 标志一起使用。
  -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
  -L 打印最长行的长度。
  -help 显示帮助信息
  --version 显示版本信息
 语法:wc fileNM 
  7 8 70 test.txt
  行数 单词数 字节数 文件名
八、uniq

作用: 报告或忽略文件中的重复行,一般与sort 连用。

选项:-c count 在每列前显示该行重复出现的次数
    -d repeated, 仅显示重复出现的行列
    -f skip field 忽略比较指定的栏位
    -s skip chars 忽略比较指定的字符
    -u unique 仅显示出现一次的行列
    -w 字符位置
实例:
    显示不重复行数据
    uniq file / sort file |uniq  / sort -u file 、uniq -u file 
    统计各行出现的次数
    sort file |uniq -c 
    显示重复行数据
    sort file |uniq -d
九、tee
作用:将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin . 简单的说就是把数据重定向给文件和屏幕上。
注意:存在缓存机制,每1024 字节输出一次, 若从管道接受数据,应该是缓存区满,才将数据转存到指定的文件中。若文件内容不到1024字节, 则接受完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。
选项:-a 向文件中重定向时使用追加模式
      -i 忽略终端(interrupt)信号
实例:ls |tee out.txt |cat -n
十、tr 
 作用:标准输入中通过替换或删除操作进行字符转换
 语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
 参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
  -d 删除字符串1中所有输入字符。
  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
 字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
  [a-z] a-z内的字符组成的字符串。
  [A-Z] A-Z内的字符组成的字符串。
  [0-9] 数字串。
  \octal 一个三位的八进制数,对应有效的ASCII字符。
  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
 tr中特定控制字符的不同表达方式
  速记符含义八进制方式
  \a Ctrl-G 铃声\007
  \b Ctrl-H 退格符\010
  \f Ctrl-L 走行换页\014
  \n Ctrl-J 新行\012
  \r Ctrl-M 回车\015
  \t Ctrl-I tab键\011
  \v Ctrl-X \030
 语法:cat file | tr "abc" "xyz" > new_file
  将文件中的abc 替换为 xyz
  cat file | tr -d "Snail" > new_file
  凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -s [a-zA-Z] > new_file
  删除“连续着的”重复字母,只保留第一个
  cat file | tr -s "\n" > new_file
  删除空行

lesson - 10 课程笔记的更多相关文章

  1. lesson - 11 课程笔记

    一.sed  作用: sed 是一种流编辑器,它是文本处理中非常重要的工具, 能够完美的配合正则表达式使用.处理时,把当前处理的行存储在临时缓冲区中, 称为“模式空间(pattern space)”, ...

  2. lesson - 7 课程笔记 vim

    vim :修改文件 模式: 默认进来是一般模式.i 编辑模式.esc 退出编辑 .shift+: 底行模式 参数: w: write/q:quit/! force 编辑模式:  /a:光标之后插入内容 ...

  3. lesson - 5 课程笔记 which/ type / whereis /locate /pwd / etc/passwd/ shadow/ group / gshadow /useradd /usermod /userdel /passwd / su sudo

    一.which 作用: which 命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录, which 命令会在环境变量$PATH 设置的目录里查找符合条件的文件.也 ...

  4. lesson - 12 课程笔记

    一.w 命令 作用: 用于显示已经登录系统的用户列表, 并显示用户正在执行的指令. 执行这个命令可得知目前登入系统的用户有哪些人, 以及他们正在执行的程序.  单独执行w 命令会显示所有的用户, 您也 ...

  5. lesson - 9 课程笔记

    一. yum          作用:                     yum 命令是在Fedora 和RedHat 以及SUSE 中基于rpm 的软件包管理器,它可以使系统管理人员交互和自动 ...

  6. lesson - 8 课程笔记 tar / gzip /bzip2 / xz /

    作用:为linux的文件和目录创建档案,也可以在档案中改变文件,或者向档案中加入新的文件即用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的  语法:tar[必要参数][选择参数][ ...

  7. lesson - 6 课程笔记

    一.df  作用:  显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...

  8. 《Neural Networks and Deep Learning》课程笔记

    Lesson 1 Neural Network and Deep Learning 这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第一门课程的课程笔记. 参考了其他人的笔记继续归纳 ...

  9. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

随机推荐

  1. Mysql update in报错 [Err] 1093 - You can't specify target table 'company_info' for update in FROM clause

    Mysql update in报错 解决方案: [Err] 1093 - You can't specify target table 'company_info' for update in FRO ...

  2. java基础回顾(一)

    java的特点:开源.安全.跨平台.简单易懂.一次编译可多处运行. JDK:java开发工具包 JDK = JRE+JAVA开发工具 保证能够实现java开发的最小单元 JRE:java运行环境 JR ...

  3. 14. 监视ZooKeeper实例

    ZooKeeper服务可以通过以下两种方式进行监控: 使用一组四个字母的单词命令来监视健康状态 使用ZooKeeper内置的Java管理扩展功能 四个字母的单词命令 ZooKeeper响应一组命令,每 ...

  4. codeblocks+mbedtls库配置

    网上都没有找到window下mbedtls的相关配置,或许是太简单了.希望可以帮助那些像我这样的小白一枚. 下载 github的下载:https://github.com/ARMmbed/mbedtl ...

  5. Windows Intellij环境下Gradle的 “Could not determine Java version from ‘9.0.1’”的解决方式

    当我导入Gradle项目初试Java spring的时候,遇到下面报错: Gradle complete project refresh failed Error:Could not determin ...

  6. Jsoup(一)Jsoup详解(官方)

    一.Jsoup概述 1.1.简介     jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API, 可通过DOM,CSS以及类似于jQu ...

  7. Java读取打印机自定义纸张.

    打印出现截断? 对于自定义纸张打印, 一定要先在打印机配置那边添加, 不然会出现截断. 例如打印1000*500, 出来是正常的, 打印216*139, 出现了截断. 因为java默认的打印, 会从打 ...

  8. Java爬虫——网易云热评爬取

    爬取目标网址 :   http://music.163.com/#/song?id=409649818 需要爬取信息 :   网易云top13热评 使用之前的 HttpURLConnection 获取 ...

  9. 》》QQ-注册

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. jenkins+github持续集成中的坑

    1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...