shell的作用是
shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入,解释给操作系统,然后处理操作系统输出结果,输出到屏幕给与用户看到结果
[root@xuexi3 /]# echo "biangbiangbiang" biangbiangbiang
从我们登录linux,输入账号密码进入到linux交互界面,所有的操作,都是交给shell解释并执行
我们想要获取计算机的数据,不能每次都编写程序,编译后在运行,在得到我们想要的,例如你想找到一个文件,可以先写一段c语言的代码,然后调用系统函数,通过gcc编译后,运行程序才能找到文件。。。
因此有大牛开发出了shell解释器,能够让我们方便的使用linux,例如只要敲下ls -lh这样的字符串,shell解释器就会针对这句话繁育,解释成ls -l -h 然后执行,通过终端输出结果,无论是图形化或者是命令化界面。
解释我们用的图形化,点点点的动作,区别也只是
当命令或者程序语句卸载文件中,我们执行文件,读取其中的代码,这个程序文件就称之为shell脚本
在shell脚本里定义多条linux命令以及循环控制语句,然后将这些linux命令一次性执行完毕,执行脚本文件的方式称之为非交互方式
显示 [root@xuexi3 data]# vim mytestshell.sh [root@xuexi3 data]# cat /opt/data/testshell/ cat: /opt/data/testshell/: 是一个目录 [root@xuexi3 data]# cat mytestshell.sh touch /opt/data/testshell/myshell2.xtx [root@xuexi3 data]# vim mytestshell.sh #编辑 touch /opt/data/testshell/myshell2 [root@xuexi3 data]# /usr/bin/bash ./mytestshell.sh [root@xuexi3 data]# ls /opt/data/testshell/ myshell2.txt myshell.txt
shell脚本规则
在linux系统中,shell脚本或者称之为(bash shell程序)通常都是vim编辑,由linux命令,bash shell指令、逻辑控制语句和注释信息组成
在计算机程序中,shebang指的是出现在文本文件的第一行前两个字符 #!
在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如
注意事项:
[root@xuexi3 data]# chmod u+x myshell.sh #赋予可执行权限(变绿成可执行文件) [root@xuexi3 data]# ls myshell.sh [root@xuexi3 data]# chmod u-x myshell.sh #取消可执行权限(变白成文件) [root@xuexi3 data]# ls myshell.sh
shell脚本语言很适合处理纯文本类型数据,且linux的哲学思想就是一切皆文件,如日志、配置文件、文本、网页文件,大多数都是纯文本类型,因此shell可以方便的进行文本梳理,好比强大的linux三剑客(gerp、sed、awk)
shell脚本语言属于一种弱类型语言 无需声明变量类型,直接定义使用
强类型语言,必须先定义变量类型,确定是数字,字符串等,之后在赋予同类型的值
centos7系统中支持的shell情况,有如下种类
[root@xuexi3 /]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh
默认的sh解释器
[root@xuexi3 /]# ll /usr/bin/sh lrwxrwxrwx. 1 root root 4 8月 16 14:33 /usr/bin/sh -> bash
虽然有诸多脚本编程语言,但是对于linux操作系统内部应用而言,shell是最好的工具,linux底层命令都支持shell语句,以及结合三剑客(gerp、sed、awk)进行高级用法
每个语言都有自己擅长的地方,扬长避短,达到高效运维的目的是最合适的。
# linux默认shell [root@xuexi3 ~]# echo $SHELL /bin/bash
bash有诸多方便的功能,有助于提升工作效率
histroy #命令、查看历史命令记录,注意【包含文件中和内存中的历史记录】 [root@xuexi3 ~]# echo $HISTSIZE #shell进程可保留的命令历史的条数 1000 [root@xuexi3 ~]# echo $HISTFILE #存放历史命令的文件,用户退出登录后,持久化命令个数 /root/.bash_history [root@xuexi3 ~]# ls -a ~/.bash_history #存放历史命令的文件 /root/.bash_history
alias
history #命令 以及参数 -c:清空内存中命令历史 -r:从文件中回复历史命令 数字 :显示最近n条命令 history 10
!n #执行历史记录中的某n条命令 !! #执行上一次的命令 !string #执行名字以string开头的最近一次命令
ctrl+a 移动到行首 ctrl+e 移动到行尾 ctrl+u 删除光标之前的字符 ctrl+k 删除双标之后的字符 crel+l 清空屏幕终端内容,同与clear
tab键 补全 $PATH中存在的命令 文件路径补全
ESC加. #快捷键 调用上一次命令 !$
变量名:HISTCONTROL ignoredups:忽略重复的命令; ignorespace:忽略以空白字符开头的命令; ignoreboth;以上两者同时生效;