• Shell本身是应用程序,是用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化的操作。
  • Bourne Again Shell,简称bash,是Linux系统中默认的shell程序。
  • Bash的特性:
  • 一、命令的别名(自定义命令)
  • alias(内嵌命令),定义或显示别名
  • 使用/COMMAND ,将使用原本的命令而不是自定义后的命令
  • 注意:如果alias命令不带任何选项和参数,则表示显示所有已经定义并生效的别名设置
  • # alias ALIAS='COMMAND [OPTION]...[ARGUMENT]...'
  • unalias,从别名定义列表中删除一个名字
  • -a,删除所有别名定义
  • 注意:无论使用alias还是unalias,其功能都会立即生效;但是这两个命令的生命周期等于当前shell的生命周期,一旦注销此次登录,相当于关闭了bash,则使用alias命令定义的别名或使用unalias命令删除的别名会立即失效。每个用户有一个私有bash文件在用户家目录中,文件名为.bashrc,修改后重新启动bash程序或者source命令或"."才会生效,
  • 二、bash的快捷键:
  • C:表示ctrl键
  • M:表示Alt键
  • E:表示ESC键
  • DEL:表示backspace键
  • 常用:
  • C-l:清屏
  • C-a:把光标跳转到行首
  • C-e:把光标跳转到行尾
  • C-k:删除光标所在位置至行尾的内容
  • C-u:删除光标所在位置至行首的内容
  • C-c:结束前台进程
  • M-.:引用上一个命令当中的最后一个参数(在Xshell中不能使用)
  • E,.:功能同M-.
  • 三、命令历史:
  • Bash进程会保存其绘画中的用户曾经执行过的命令,以方便用户重复执行某个操作;
  • 命令历史包括两个方面:
  • 1.用户曾经执行过的命令
  • 2.用户曾经执行过的命令的路径
  • 在Bash中有一个内置的变量--PATH,PATH变量的值为当前系统中所有的命令的文件所在的路径的集合
  • 命令如何被shell执行的?
  • Bash会将命令行的内容按照空白字符进行切片,判断第一个切片的内容是内部命令还是外部命令,如果是内部命令则直接运行,如果是外部命令,先找hash表中的路径缓存,如果有,则直接执行;否则需要通过查找PATH中包含路径中是否有包含对应名称的文件
  • 使用hash命令查看被记住的命令文件的路径
  • -r,清空哈希表
  • 使用history命令查看被记住的命令的命令行参数;
  • -c,清空历史缓冲区的命令历史记录
  • -d OFFSET,删除指定行命令
  • 重复使用历史缓冲区的命令
  • !OFFSET,直接调用history中对应行的命令
  • !STRING,以STRING开头的最后的一次命令
  • !?STRING,包含了STRING的最后一次命令
  • !-NUMBER,倒数第NUMBER次的命令
  • C-r,查找命令
  • !$,在历史缓冲区中调用最后一个命令的最后一个参数
  • !^,最后一个命令的第一个参数
  • !:NUMBER,在历史缓冲区中调用最后一个命令的第NUMBER位置的参数
  • !SEQUENCE:NUMBER,调用第SEQUENCE行的命令的第NUMBER位置的参数
  • 在bash中与命令历史相关的内置变量
  • HISTSIZE,历史缓冲区能保存的最大条目数量,默认是1000
  • HISTFILESIZE,~/.bash_history文件中能够保存的命令历史最大条目数,默认1000
  • HISTTIMEFORMAT,在命令历史缓冲区中记录命令时同时记录命令执行的时间戳,可以使用date命令的FORMAT来表示时间的记录格式,默认值为空
  • HISTCONTROL,控制命令历史的记录方式,当为以下值时
  • ignoredups,忽略连续且相同的命令,为默认值
  • ignorespace,忽略以空白字符开头的命令
  • ignoreboth,以上两种情况都不会被记录
  • 四、命令补全
  • 1.构成命令字符串的补全
  • 参考PATH变量中的路径,对命令进行补全(tab键)。如果给出的字符串在PATH变量对应的路径中是唯一的,则直接补全命令,如果给出的字符串在PATH变量对应的路径不唯一,则bash给出提示(两下Tab键)
  • 2.命令中参数所对应的字符串的补全
  • 根据给出的路径进行补全
  • 五、命令行展开
  • 1.~,bash会自动将其展开为当前登录用户的家目录
  • ~STRING,bash会自动将其展开为以STRING为用户名的家目录
  • ~+,调用bash的内置变量"PWD"的值
  • ~-,调用bash的内置变量"OLDPWD"的值
  • 2.{},
  • 在"{}"中,可以填充一个以","分隔的路径填充的列表,bash会将其展开为单独的命令
  • 1.txt{,.bak} == 1.txt 1.txt.bak
  • 六、命令的执行结果
  • 在bash中命令的执行结果有两种
  • 1.执行命令的输出结果
  • 命令引用或命令替换
  • ``或$(),引用命令的输出结果
  • 2.执行命令的状态返回值
  • 表示此前的一个命令是否成功执行
  • bash使用 $? 变量来保存其内容,其取值范围为0到255,其中0表示命令执行成功,1-255表示命令执行失败
  • 1,2,127是bash内置的命令执行失败的状态返回值
  • 1一般表示一些小问题
  • 2表示严重问题
  • 127表示命令本身出现问题
  • 其余数字用户可以自定义错误信息
  • 七、引用功能
  • 强引用'',bash在处理时,引用的内容全部视为普通字符,但单引号本身除外
  • 弱引用"",有些特殊字符仍然会保留特殊含义,如$、 /、 ""
  • 八、转义功能
  • /,bash所定义的转义字符,只能够将其后面一个字符转义
  • /COMMAND,取消定义过的命令别名,使用原本的功能
  • 九、Globbing——文件名通配符,简称为glob
  • *,匹配任意长度的任意字符或者字符串,某些特殊位置的. 字符不能匹配
  • ?,匹配任意单个字符,某些特殊位置的. 字符不能匹配
  • [],匹配指定范围内的任意单个字符,必须且只能匹配一个字符
  • 指定范围的方法:
  • 1.枚举法,列出所有有效字符
  • 2.范围指定,
  • [0-9],表示所有单个十进制数字
  • [a-z],a,A,b,B,...,y,Y,z
  • [A-Z],A,b,B,c,...,Y,z,Z
  • 3.bash内建字符集
  • [:lower:],所有小写字母
  • [:upper:],所有大写字母
  • [:alpha:],所有字母
  • [:digit:],所有一位数字
  • [:alnum:],所有字母数字
  • [:punct:],所有的符号
  • [:space:],表示空白字符,包括空格和制表符
  • 4.反向匹配^
  • 实例: #ls a[^[:dight:]]??
  • 十、管道
  • |,通常用来连接多个命令,将管道符号前面的命令输出结果作为后一个命令的参数
  • wc,统计文件或字符串的字节、行、字数
  • -c,仅显示文件中的字节数
  • -m,仅显示文件中有效字符的数量
  • -l,仅显示文件的行数
  • -w,仅显示文件中字的数量
  • 十一、输入输出重定向
  • 在使用计算机的时候,实现某个功能的主体是程序
  • 程序=指令+数据
  • 数据是至关重要的
  • 在Linux系统中,能够完成输入和输出功能的实体:文件
  • 可以用于输入的设备:文件
  • 键盘设备、文件系统中的常规文件、网卡设备、声卡设备、磁盘设备等;
  • 可以用于输出的设备:文件
  • 显示器、文件系统中的常规文件、网卡设备、声卡设备,磁盘设备
  • 在内存中使用文件的方式是定义文件描述符,一个文件描述符对应一个文件
  • 0,表示标准输入,键盘输入的数据流
  • 1,表示标准输出,到显示器的输出数据流
  • 2,表示标准错误,到显示器的错误数据流
  • 输入输出重定向(IO重定向):采用非标准设备文件实现的IO操作
  • 输入重定向
  • <,大多时候可省略
  • 输出重定向
  • >,覆盖输出重定向
  • ~]# set -C 开启防止以外覆盖源文件开关,可以使用">|"符号完成覆盖重定向输出的操作,而无需关心是否开启此开关
  • ~]# set +C 关闭防止以外覆盖源文件开关
  • >>,追加输出重定向
  • 错误重定向
  • 2>
  • 2>>
  • 合并标准输出和标准错误的重定向
  • 1.COMMAND {>|>>} /PATH/TO/SOMEFILE 2>&;1
  • 2.&;>、 &;>>
  • 特殊的设备文件
  • /dev/null 位桶
  • /dev/zero 泡泡机,吐零机
  • bash中的特殊符号
  • <<,此处文档,结束标记
  • <<< ,此处字符串,结束标记

linux的bash特性的更多相关文章

  1. linux基础之bash特性

    linux基础之bash特性 1.命令历史 命令历史包含的环境变量 $HISTSIZE:命令历史记录的条数 $HISTFILE:命令历史文件~/.bash_history $HISTFILESIZE: ...

  2. linux之bash shell

    GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理 ...

  3. Linux下Bash入门学习笔记

    学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...

  4. 关于LINUX权限-bash: ./startup.sh: Permission denied

    关于LINUX权限-bash: ./startup.sh: Permission denied <script type="text/javascript"></ ...

  5. [linux服务器][bash]让切换目录更方便

    本文转载:[linux服务器][bash]让切换目录更方便: 一,为何要使用这几个命令?   可能大家会有疑问,为何要使用这几个命令,   难道用cd不就可以切换目录了吗?   没错,使用cd就可以切 ...

  6. Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法

    Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法 经常在ubuntu 64位下运行 ./xxx 会跳出来说没有这个文件或者目录,但是ls看又有这个文件,很是奇怪. 其实原因很 ...

  7. bash參考手冊之六(Bash特性)

    6 Bash 特性 这部分描写叙述Bash独有的特性. *  调用Bash : Bash能够接受的命令行选项. *  Bash启动文件 : Bash何时及怎样运行脚本. *  交互Shell : 什么 ...

  8. Atitit.linux 内核 新特性 新功能

    Atitit.linux 内核 新特性 新功能 1.  Linux 3.2内核新特性 2012-02-12 22:41:471 1.1. EXT4:支持更大的块2 1.2. BTRFS:更快的数据清理 ...

  9. shell脚本编程及bash特性

    bash特性及bash脚本编程初步 终端,附着在终端的接口程序; GUI: KDE,GNome,Xfce CLI: /etc/shells bash的特性: 命令行展开: ~,{} 命令别名: ali ...

随机推荐

  1. Angle Beats Gym - 102361A(计算几何)

    Angle Beats \[ Time Limit: 4000 ms \quad Memory Limit: 1048576 kB \] 题意 给出 \(n\) 个初始点以及 \(q\) 次询问,每次 ...

  2. centos7 安装 mysql5.7.25

    一.检查是否安装了mysql和mariadb,若已经安装就需要卸载. [root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb [root ...

  3. [TJOI2009]猜数字(洛谷 3868)

    题目描述 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n,满足对于任意 ...

  4. pytest 打印调试信息

    pytest_lean2.py #coding=utf- import pytest import os import sys import time import json sys.path.app ...

  5. Azure容器监控部署(上)

    前两篇简单的介绍了一下prometheus的,本节原本是写node_exporter和cAdvisor的搭建,但网上教程很多,所以直接写整套环境的部署过程 一.架构 我们原来的系统架构是在AZURE上 ...

  6. JVM一些问题

    1. 类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序 答:先静态.先父后子. 先静态:父静态 > 子静态 优先级:父类 > 子类 静态代码块 ...

  7. Tp中使用Xunsearch

    可以将安装目录下的核心代码拷贝到Vendor中. 命名为xunsearch. 然后引入使用. vendor('xunsearch.lib.XS'); $xs = new \XS('demo'); // ...

  8. Functional-Light-JS 摘录笔记(1)

    function foo(...args) { console.log( args[3] ); } var arr = [ 1, 2, 3, 4, 5 ]; foo( ...arr ); Think ...

  9. [转帖]/var/log/wtmp文件的作用

    /var/log/wtmp文件的作用 https://blog.51cto.com/oldyunwei/1658778   /var/log/wtmp是一个二进制文件,记录每个用户的登录次数和持续时间 ...

  10. 第五节:管道中间件入门(Use、Run、Map)

    一. 简介 1.中间件是一种装配到应用管道以处理请求和响应的组件,每个组件可以选择是否把请求传递到管道中的下一个组件.可在管道中的下一个组件的前后执行工作.请求管道中的每一个组件负责调用管道中的下一个 ...