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

[经验分享] Linux之bash特性

[复制链接]

尚未签到

发表于 2019-2-17 08:39:19 | 显示全部楼层 |阅读模式
  什么是shell?
字面意思:壳,充当人机交互的翻译官,当用户输入一条命令,shell就会解析。shell位于操作系统外层,负责与用户交互。

shell类型:可以查看/etc/shells文件,bash shell作为系统的默认shell,比较流行,bash有众多特性。
查看系统当前shell:#echo $SHELL


  • 命令历史记录
  • 命令/目录补全功能
  • 命令行展开
  • 命令的执行结果
  • 快捷键
  • glob通配符
  • 多命令执行


  •   命令历史记录
    shell进程会将保存此前用户提交执行过的命令,保存在用户家目录:~/.bash_history
    查看:#history
    可以通过修改环境变量实现history的配置:
    HISTSIZE:shell进程保存的历史条数,默认1000
    HISTFILE:保存数据的文件

    • 用法:
      history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
      -c:清空历史
      -d offset:删除指定命令历史
      -r:从文件读取命令历史至历史列表中;
      -w:把历史列表中的命令追加至历史文件中
      n:显示历史的第几条命令
    • 调用命令历史列表中的命令:
      !#:再一次执行历史列表中的第#条命令;
      !!:再一次执行上一条命令;
      !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;
    • 调用上一条命令的最后一个参数
      快捷键:esc,. #先按ESC键再按.号键
      特殊字符: !$


  •   命令/目录补全功能
    在mini系统安装,参数不能补齐,需要安装一个包:bash-completion

    •   命令补齐:Tab键补齐
      命令查找机制: 查找内部命令-->   根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

    • 路径补齐:
      在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件:
      tab:如果是唯一标识,则直接补全,否则,再按一次tab会给出列表供选择


  • 命令行展开
    ~:自动展开为用户的家目录,或指定的用户的家目录;           
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

  • 命令的执行结果
    判断命令的结果是否执行成功,通过返回状态码判断,命令执行完后,状态码保存在bash的特殊变量中:$?
    0:表示成功
    1~255:表示失败

  • 快捷键
    Ctrl+a:跳转至命令行行首  ==home键
    Ctrl+e:跳转至命令行行尾 ==end键
    Ctrl+u:删除行首至光标所在处之间的所有字符;
    Ctrl+k:删除光标所在处至行尾的所有字符;
    Ctrl+l:清屏,相当于clear
    Ctrl+w:在光标处起往前删除一个单词
    Ctrl+:Ctrl加左右键快速往前完后移动光标
  • glob通配符

匹配模式:元字符
*:匹配任意长度的任意字符
pa*, *pa*, *pa, *p*a*
pa, paa, passwd
?:匹配任意单个字符
pa?, ??pa, p?a, p?a?
pa, paa, passwd
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
例如:匹配pa##的文件,2开头的三位数
pa[0-9][0-9], 2[0-9][0-9]
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]
[^0-9]
[^[:alnum:]]


  • 多命令执行
    COMMAND1; COMMAND2; COMMAND3; ...
    逻辑关系:
    与: &&
    或: ||
    非: !

COMMAND1 && COMMAND2
COMMAND1为“假”,则COMMAND2不会再执行;
否则,COMMAND1为“真”,则COMMAND2必须执行;
COMMAND1 || COMMAND2
COMMAND1为“真”,则COMMAND2不会再执行;
否则,COMMAND1为“假”,则COMMAND2必须执行;
! COMMAND:COMMAND为真则为假,反之亦然。






运维网声明 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-673402-1-1.html 上篇帖子: linux内核 下篇帖子: linux运维笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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