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

Linux下的shell:bash及其特性

[复制链接]

尚未签到

发表于 2018-8-29 13:58:37 | 显示全部楼层 |阅读模式
  1、什么是shell
  用户工作环境:shell;所谓shell,就是提供用户交互的一个接口,它是一个特殊的应用程序。
  2、shell的种类
  GUI:
  Gnone
  KDE
  XFce
  CLI:
  sh,csh,ksh,bash,tcsh,ksh,zsh
  shell应该什么时候被启动?
  如果一个系统同时登录两个用户,他们的shell是同一个吗?进程两个,程序一个。
  允许一个用户同时登录多次。
  进程:在每个进程看来,当前主机上只存在内核和当前进程。
  进程是程序的副本,进程还是程序执行的实例
  3、为什么要学习bash
  因为bash遵循开源协定,自由免费,是大多数Linux系统的默认shell,况且学会了bash,就可以从很大程度上学会了其他shell;
  4、bash支持的功能类型有:
  1、命令历史
  2、管道、重定向
  3、命令别名
  4、命令行编辑
  5、命令行展开
  6、文件名通配
  7、使用变量
  8、编程(shell脚本)
  5、详解bash支持的各个功能:
  5.1命令历史
  什么是命令历史:
  常用Linux的人都知道,通过向上和向下箭头我们可以实现对从前使用过的命令进行再次使用。由于遵循局部性原理,操作系统会将我们过去使用过的命令保存在内存的缓冲区中,方便再一次的调用。同时,也保存在用户家目录下的一个叫.bash_history的隐藏文件中;
  内存缓冲区默认存放1000条历史命令,可以手动指定,使用echo $HISTSIZE查看
  环境变量:
  PATH:命令搜索路径
  HISTSIZE:命令历史缓冲区大小,如何查看变量HISTSIZE:echo $HISTSIZE
  查看命令历史:history
  history -c              删除整个命令历史
  history -d OFFSET [n]      指定删除偏移
  history -d 500      删除第500个命令历史
  history -d 500 10     删除第500个命令及其以后的10个命令历史
  history -w      保存缓冲区的命令历史至历史文件bash_history中
  命令历史使用技巧:
  !n:执行命令历史的第n条命令
  !-n:执行命令历史的倒数第n条命令
  !!:执行上一条命令
  !string:执行命令历史中,最近一次以该字符串开始的命令
  !$:快速引用上一个命令的最后一个参数
  Esc .:快速引用上一个命令的最后一个参数
  Alt+.:快速引用上一个命令的最后一个参数,远程终端不支持
  5.2  命令行编辑
  支持命令行上的光标快速跳转
  如:ccat /etc/fstab /etc/rc.d发现命令首部多了一个c
  ctrl + a:光标快速跳转到行首
  ctrl + e:光标快速跳转到行尾
  ctrl + u: 删除光标至命令行首的内容
  ctrl + k: 删除光标至命令行尾的内容
  ctrl + l:清屏
  5.3  命令补全:
  搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,一次tab补全;如果多于一个,两次tab,可以给出列表,否则将直接补全
  PATH:在PATH下查找
  路径补全:
  在打头路径或当前路径下查找
  5.4  命令别名:
  alias 'CMDALIAS=COMMAND [option] [argument]'
  在shell中定义的别名,仅在当前shell生命周期中有效,别名的有效范围为当前的shell进程
  当命令有别名时,要使用命令本身时使用/COMMAND
  unalias CMDALIAS:撤销别名
  5.5  命令替换:
  $(COMMAND),反引号 `COMMAND`(反引号就是在波浪线下面的符号,而不是单引号)
  把命令中某个子命令其执行结果的过程
  例如:创建以当前时间为文件名的文件:
  touch file-$(date +%F-%H-%M-%S).txt
  5.6  bash支持的引号:
  ``:命令替换
  "":弱引用,可以实现变量替换
  '':强引用,不完成变量替换
  5.7  文件名通配:globbing        man 7 glob
  *:任意长度的任意字符
  ?:任意单个字符
  []:匹配指定范围内的任意单个字符
  [a-zA-Z][0-9]
  [[:space:]]:空白字符
  [[:punct:]]:标点符号
  [[:lower:]]:小写字母
  [[:upper:]]:大写字母
  [[:alpha:]]:大小写字母
  [[:digit:]]:数字
  [[:alnum]] :数字和字母
  [^]:匹配指定范围之外
  6、练习:
  1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;
  2、显示所有以a或m开头的文件;
  ls [am]*
  3、显示所有文件名中包含了数字的文件;
  ls *[0-9]*
  ls *[[:digit:]]*
  4、显示所有以数字结尾且文件名中不包含空白的文件;
  ls *[^[:space:]]*[0-9]   ?????????
  5、显示文件名中包含了非字母或数字的特殊符号的文件;
  ls *[^[:alnum:]]*


运维网声明 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-558250-1-1.html 上篇帖子: linux shell脚本批量修改密码,无需交互输入 下篇帖子: 监控网卡流量的SHELL脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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