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

Linux系统 shell基础(一)

[复制链接]

尚未签到

发表于 2018-8-18 11:16:52 | 显示全部楼层 |阅读模式
  shell是操作系统中重要的应用,尤其对linux这种命令行模式的操作系统,shell具有重要的意义。
一、什么是shell
  shell是一个命令解释器,提供用户和机器之间的交互。每次我们登录系统后,出现的界面就是shell,相当于我们在界面输入命令,shell把我们输入的内容转换成系统能够理解的内容传递给系统去执行。shell支持特定的语法,有点像c语言,支持逻辑判断,if while语句。
DSC0000.jpg

  这就是基本的shell。
  centos7默认的shell是bash,系统中还支持其他类型的shell,比如zsh、ksh。
二、历史变量(HISTSIZE)介绍及其参数
  centos7系统中当前用户输入的命令都储存在用户的家目录下,比如root用户命令就存在/root/.bash_history文件中。
DSC0001.jpg

  这个文件能储存的命令的数量由HISTSIZE变量决定。这个变量初始值为1000
DSC0002.jpg

  每次退出终端时,你敲过的命令就会保存在/root/.bash_history文件中。
  HISTSIZE变量值的设置在/etc/profile中,这个文件中能够更改很多系统的参数,包括记录命令的数量,记录命令的格式等等。
  1、修改系统记录的命令数量
  在/etc/profile文件中操作,用vi或者vim打开,定位到46行(顺便复习下vim命令,46j)
DSC0003.jpg

  更改框中数值为你想要的数值,比如说5000
DSC0004.jpg

  保存退出,用source命令重载下下 系统的profile使改动生效
DSC0005.jpg

  看下结果,搞定!
DSC0006.jpg

  2、修改记录内容,记录每条命令执行的时间
  分两种情况,一种是仅对当前终端生效,断开后失效。
  命令:HISTTIMEFORMAT="%Y%m%d %H:%M:%S"
DSC0007.jpg

  永久在/root/.bash_history增加这个内容需要更改/etc/profile文件,操作如下:
  跟前面一个例子一样,在/etc/profile文件中操作,用vi或者vim打开,定位到46行(顺便复习下vim命令,46j)

  在HISTSIZE行下加入“HISTTIMEFORMAT="%Y%m%d %H:%M:%S"”内容
DSC0008.jpg

  保存退出,用source命令重载下下 系统的profile使改动生效

  断开连接重登下系统,看结果,搞定!
DSC0009.jpg

  3、永久保存命令的历史纪录
  只要给当前用户的家目录中的/root/.bash_history文件加上+a权限即可,即使你设定了HISTSIZE的大小,他仍然会记录你输入的所有命令。
  命令:chattr +a ~/.bash_history
DSC00010.jpg

  4、执行history记录中最后一条命令
  命令:!!(两个感叹号)
DSC00011.jpg

  5、运行第XX条命令
  命令:!X(数字)
DSC00012.jpg

  6、执行历史纪录中最近的一条以条关键字开头的那条历史命令
  比如我要执行最近一条init开头的命令,输入!init 他就会执行history记录中最近的那条。可以看到是init 0.
DSC00013.jpg

DSC00014.jpg

三、命令补全与别名
  1、tab补全命令
  我们敲命令时可以按Tab键
  比如说我们按ls这时按两下Tab键他就会把所有ls开头的命令全部列出来
DSC00015.jpg

  2、tab补全命令参数
  需要安装“bash-completion”包才能支持
  yum安装
DSC00016.jpg

  重启电脑(不然不生效)
  检查下安装情况,生效了
DSC00017.jpg

  3、命令的别名(alias)
  别名功能也是系统shell的重要应用
  查看系统已定义的alias
DSC00018.jpg

  4、自定义自己的别名命令
  每个用户都有自己的别名配置文件,默认在~/.bashrc文件中,还有一些系统定义的别名,在/etc/peofile.d下。
  示例:
  1)将重启网络命令做别名
  命令:`alias restartnet='systemctl restart network.service'
  2)查看用户自定义的alias
  在文件~/.bashrc中看
  命令:vim ~/.bashrc
DSC00019.jpg

  3)查看系统定义的一些别名
  命令:ls  etc/profile.d
  我们查看其中一个,比如colorgrep.sh
DSC00020.jpg

  4)取消自定义的别名
DSC00021.jpg

四、通配符、输入输出重定向
  (一)通配符
  系统中包含了很多通配符,常见的有
  :表示通配,可以代表文字
  ?:表示一个任意的字符,但是不能代表数字
  [] :任选方括号里的任意一个字符
  {}:匹配大括号里的任意字符,只是选项间要加逗号
  示例:
  在一个文件夹下新建一些文件演示各个通配符的用法
  本身文件夹中文件
DSC00022.jpg

  1、ls .txt
DSC00023.jpg

  2、ls ?.txt(注意这里要用英文的问号,中文输入法的问号系统不认)
DSC00024.jpg

  3、ls [123a].txt
DSC00025.jpg

  4、ls {1,2,a}.txt
DSC00026.jpg

  (二)输入输出重定向
  重定向主要应用在编写shell脚本时,我们可以把shell执行的结果区分输出到不同的文件中
  ,输出重定向
  ,追加重定向(重定向表示不删除前面的内容)
  >,错误追加重定向
  +2>==&>,全部重定向,即把正确错误信息全部输出到1个文件中
  &>>全部追加重定向
  命令 > 1.txt 2.txt 还可以把正确和错误的信息分别输出到不同的文件
  示例
  1、把命令执行的结果输入到1.txt中
  命令 df -h > 1.txt
DSC00027.jpg

  2、把命令执行的正确结果和错误结果分别输出
  命令 tar -cjvf 1tar.bz2 2.txt 3.txt b.txt >1.txt 2>a.txt
DSC00028.jpg



运维网声明 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.iyunv.com/thread-553386-1-1.html 上篇帖子: shell-2:while循环和for循环 下篇帖子: 一次shell的过滤IP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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