设为首页 收藏本站
查看: 815|回复: 0

[经验分享] Linux中BASH的特性

[复制链接]

尚未签到

发表于 2018-5-17 07:20:20 | 显示全部楼层 |阅读模式
      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中的特殊符号
  <<,此处文档,结束标记
  <<< ,此处字符串,结束标记
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461112-1-1.html 上篇帖子: Linux基础02 下篇帖子: Linux 云计算 基础 开篇(Linux简介)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表