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. anaconda安装第三方库

    用anaconda的pip安装第三方python包 启动anaconda命令窗口: 开始> 所有程序> anaconda> anaconda prompt pip install 第 ...

  2. 【java提高】---HashMap解析(一)

    HashMap解析(一) 平时一直再用hashmap并没有稍微深入的去了解它,自己花点时间想往里面在深入一点,发现它比arraylist难理解很多,好多东西目前还不太能理解等以后自己知识更加丰富在过来 ...

  3. centos 下安装pptp (vpn) 的方法

    废话少说     01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

  4. [菜鸟弄nginx]nginx ---- 同一个server下根据host 配置不同的error_page页

    有一个需求: 两个域名指向同一个nignx,不同的域名404跳转页面不同.如www.y.com跳到www.y.com/error.html ,www.j.com跳到www.j.com/errorxxx ...

  5. Aurora Player 开源啦~~~

    上一年做了很久的项目,是一个完整版的视频播放器,强大.美观!!! 现在转投UWP了,决定开源这个项目. 在你下载本项目之前,请仔细阅读每一行字,以免以后引起不必要的法律纠纷. 本项目最终解释权归本人所 ...

  6. bootstrap validator 使用 带代码

    如何使用bootstrapVlidator插件? 下载bootstrapVlidator插件 在需要使用的页面引入bootstrapVlidator的js文件和css文件 如: 注: 在此基础之前必须 ...

  7. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  8. Nginx 反向代理 负载均衡 虚拟主机配置

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  9. html Embed用法 页面播放视频

    一句话概括所有问题.查资料说在页面播放视频都是一些插件 刚发现一个Html自带的标签 很吊的样子 <div >          <embed  src="${compla ...

  10. LABjs、RequireJS、SeaJS 哪个最好用?为什么?

    感谢玉伯在知乎的奉献,下面全文转载:http://www.zhihu.com/question/20342350/answer/14828786 LABjs 的核心是 LAB(Loading and ...