1.bash特性之命令补全与路径补全

命令补全:敲击Tab按键

shell程序在接收到用户执行命令的请求且分析完成后,最左侧字符串将被当作命令去分析$PATH标量所指定的各路径下去查找

查找机制:

1.查找内部命令

2.查找外部命令:去$PATH变量下所指定的各路径下,自左而右逐个搜索各目录下的文件名:打头的字符串如果能唯一标识,则直接补全;不能唯一标识,在敲击一次Tab按键,可给出列表;

3.错误:没有任何命令被识别,则无响应

路径补全:

在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目录下的每个文件

2.bash特性之命令行展开

把命令行给定的特殊符号自动转化为相应的字符串的机制

例:

“~”:自动切换为家目录

“~ username”:切换到指定用户的家目录

“{}”:可承载一个以逗号分割的路径列表,能够将其展开为多个独立的路径

  1. #批量创建空文件夹
  2. mkdir /tmp/{x,y,z} = mkdir /tmp/x /tmp/y /tmp/z
  3. mkdir /tmp/{x/y,m/{m,n}} = mkdir /tmp/x/y /tmp/m/m /tmp/m/n
  4. mkdir /tmp/{x,y}/z = mkdir /tmp/x/z /tmp/y/z

3.bash的特性:命令执行的状态结果

命令的正常输出结果,叫做命令的返回值

命令执行的状态结果:成功,失败

bash用一特殊变量来保存最接近一次的命令执行状态结果:“$?”

  1. echo $? #显示命令执行的结果

显示的结果中,0表示命令执行成功,1-255表示没有成功

命令的输出结果通过引用来保存下来或直接调用,例如:

  1. mkdir -v `echo $?`

结果是创建以相应数字为文件名的空文件夹

使用“ `` ”(反引号)

"''"(引号):强引用

""""(双引号):弱引用

"``"(反引号):命令引用

4.bash的特性之glob通配符

glob:文件名通配符,能够快速引用多个文件,只指文件名,不包括路径

、文件名匹配度检测

元字符:基于元字符可编写匹配模式(pattern)

"*"(米字符):匹配任意长度的任意字符

例:

p* :以p开头的任意字符串,文件名。。。

pa*:以pa开头的

*p:以p结尾的

  • p *a:中间有p,结尾为a的

"?"(问号):匹配任意单个字符

例:

p?a:代表三个字符,其中中间的为任意字符

p?两个字符

p??,三个字符

“[ ]”(中括号):匹配指定集合内的任意单个字符

例:[a-z],[A-Z]:此时不区分大小写

[0-9]:

[a-z0-9]:字母与数字

[[:upper:],[A-Z]]:所有大写字母,只显示大写

[[:lower:]],只显示小写

[[:digit:]]

[[:alpha:]]

[[:alnum:]]

[[:space:]]

[[:punct:]]

[]:匹配指定集合外的任意单个字符,如[[:alpha:]]

5.bash特性之变量

程序=指令+数据

数据:文件、变量

变量:内存空间,有名称,名称即为变量

变量赋值:NAME=VALUE

=:为赋值符号,把VALUE存储到NAME指向的内存空间中

变量命名:只能使用字母、数字和下划线;而且不能以数字开头;

变量引用:${NAME}, $NAME

变量替换:把变量引用符号出现的位置替换为其指向的内存空间中的数据;

bash变量种类:

1.本地变量:作用域为当前shell进程;不包括其子进程;

2.环境变量:使用域为当前shell进程及其子进程;

3.局部变量:作用域:生效范围,也即可引用到的范围;

4.位置参数变量

5.特殊变量

6.bash特性之IO重定向

1.输出重定向:重定向程序正常执行的结果

  1. COMMAND > /PATH/TO/SOMEFILE
  2. 覆盖重定向:覆盖目标文件中的原有内容;
  3. COMMAND >> /PATH/TO/SOMEFILE
  4. 追加重定向:追加新产生的内容至目标文件尾部;

shell的一个功能开关:

set -C:禁止覆盖输出从定向至已存在的文件

注意:此时仍然可以使用“>|”至目标文件

set +C:关闭上述特性

2.错误重定向:重定向错误的执行结果

  1. COMMAND 2> /PATH/TO/SOMEFILE
  2. 错误输出覆盖重定向;
  3. COMMAND 2>> /PATH/TO/SOMEFILE
  4. 错误输出追加重定向;

3.合并标准输出与错误输出流

1.&>,&>>

2.command > /path/to/somefile 2>&1

3.command >> /path/to/somefile 2>&1

4.特殊设备

1.特殊输出目标:/dev/null,垃圾桶

2.特殊的输出文件:/dev/zero

5.输入重定向

  1. COMMAND < /PATH/FROM/SOMEFILE

7.bash特性之管道

  1. COMMAND1 | COMMAND2 | COMMAND3 | ...

练习:

1.把/etc/passwd文件最后三行信息中所有小写字符改为大写后输出

  1. cat /etc/passwd | tr 'a-z' 'A-Z'

2.取出/etc/fstab的第六行

  1. head -n 6 /etc/fstab | tail 1

3.取出/etc目录下所有以p开头的文件或目录,只显示前5个

  1. ls -a /etc/p* | head 5

特殊命令:

1.tee命令:

tee [OPTION]... [FILE]...

-a:使用追加输出,而非覆盖

  1. COMMAND | tee /PATH/TO/SOMEFILE

例:

  1. ls -al /tmp | tee -a /tmp/bashrc
  2. 列出/tmp下的文件,并把结果追加导入到/tmp/bashrc文件中

2.tr命令:

tr [option] set1 [set2]

把输出的数据当中的字符,实现对位转换,即把数据中的存在于字符集中的字符,统统转换为字符几种对未的字符;

  1. 1.tr set1 set2 < /path/from/somefile #字符转换
  2. 2.tr -d set1 < /path/to/somefile #删除

bash脚本基础的更多相关文章

  1. -Shell 教程 Bash 脚本 基础语法 MD

    目录 目录 Shell 简介 Shell 脚本 Shell 环境 第一个shell脚本 Shell 变量 定义变量 使用变量 只读变量 删除变量 Shell 字符串 单引号 双引号 字符串基本操作 S ...

  2. bash&nbsp;shell笔记1&nbsp;脚本基础知识

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...

  3. Bash脚本编程之脚本基础和bash配置文件

    脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...

  4. Bash脚本编程基础

    为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程. 按照应用的Shell环境不同,可以将Shell脚本分为多种类型.其中最常见的是应用于Bash和Tcsh的脚本 ...

  5. bash脚本编写基础

    bash脚本编程     命令的堆砌     脚本程序:解释器解析执行     shell:交互式接口,编程环境         shell:能够提供一些内部命令,并且能通过PATH环境变量找到外部命 ...

  6. linux学习18 shell脚本基础-bash变量和逻辑运行

    一.回顾 1.用户管理,权限管理,install,mktemp 2.用户管理: 3.权限管理: mode,ownership mode: user group other r w x 4.命令:ins ...

  7. Bash脚本实现批量作业并行化

    http://jerkwin.github.io/2013/12/14/Bash%E8%84%9A%E6%9C%AC%E5%AE%9E%E7%8E%B0%E6%89%B9%E9%87%8F%E4%BD ...

  8. 【转】Bash脚本实现批量作业并行化

    首先附上自己常用的代码 ---------------------------------------------------------------------------------------- ...

  9. Bash脚本编写初体验

    上周例会的时候,冷不丁的接到了维护原有的安装脚本和编写升级.卸载脚本的任务,PM和几个同事一本正经的说,一天甚至30分钟就可以精通shell脚本编写,哪怕没有语言基础也可以. 当然,作为有着C++.P ...

随机推荐

  1. Javascript事件模型(三):JavaScript事件绑定方法总结(及Jquery)

    JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 JQuery中绑定事件的几种方法 主要有on().bind( ...

  2. OC对象之旅 weak弱引用实现分析

    Runtime学习 -- weak应用源码学习   Runtime源码分析,带你了解OC实现过程.其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流. 两种常见使用场景 /// ...

  3. Vulkan Tutorial 12 Fixed functions

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 早起的图形API在图形渲染管线的许多阶段提供了默认的状态.在Vulkan中,从vie ...

  4. iHover – 30+ 纯 CSS3 实现的超炫的图片悬停特效

    iHover 是一个令人印象深刻的图片悬停效果集合,完全基于 CSS3 实现,无依赖,能够搭配 Bootstrap 3 很好地工作.基于 SCSS 技术构建(包括文件),便于修改变量.有模块化的代码, ...

  5. eclipse在线安装s

    1. 打开eclipse软件,点击菜单栏的help-->Install New Software 2. 在弹出来的安装窗口中,点击add按钮,然后输入svn安装地址:http://subclip ...

  6. PO/VO/POJO/BO/VO图解

  7. Python原理 -- 内存管理

    语言的内存管理是语言设计的一个重要方面. 它是决定语言性能的重要因素. 无论是 c语言 的手工管理, 还是 Java 的垃圾回收, 都成为语言最重要的特种. 以下以 python 为例, 说明一门动态 ...

  8. 【踩坑记录】记一次MySQL主从复制延迟的坑

    最近开发中遇到的一个MySQL主从延迟的坑,记录并总结,避免再次犯同样的错误. 情景 一个活动信息需要审批,审批之后才能生效.因为之后活动要编辑,编辑后也可能触发审批,审批中展示的是编辑前的活动内容, ...

  9. Vue 项目实战系列 (三)

    我们继续前两节的开发.本节教程实现的效果如下: 效果很简单,但是实现起来却要用到Vue的很多知识,下面我们将一步一步的实现这个效果. 首先这些城市的信息都是从后台的server里面获取的,所以我们需要 ...

  10. github用法小结

      共享仓库     bare 裸仓库   生成裸仓库时必须以.git结尾.   仓库就相当于一个服务器     ### 创建远程仓库  1. 创建以.git结尾的目录mkdir repo.git 2 ...