Shell入门学习

1.Shell是什么?

Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件(命令解释器)。
Shell作为命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。
Shell作为脚本编程语言,可以通过命令、变量、流程控制语句等形式完成一条或一组脚本语言,提供给解释器进行解释运行。
Shell脚本命令的工作方式有两种:交互式和批处理。
交互式(Interactive):用户每输入一条命令就立即执行。
批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

2.几种常见的Shell

常见的 Shell 有 sh、csh、tcsh、ash、bash 等。
sh(Bourne shell),由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
csh ,是sh 之后另一个广为流传的 shell ,它是由加州大学伯克利分校的 Bill Joy 设计的,因其语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
tcsh ,是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
ash ,一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与 bash shell 完全兼容。
bash(bash shell) ,由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。

查看系统中的Shell
[root@hollowman ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看系统默认的Shell
[root@hollowman ~]# echo $SHELL
/bin/bash

3.Shell脚本规范

1) 建立一个专门存放脚本的目录
mkdir  /usr/hollowman_scripts
2) 脚本文件以.sh为扩展名(扩展名为.sh不是必须,但养成良好的习惯会让编程更轻松)
3) 脚本开头都要指定脚本解释器

如以#! /bin/bash指定脚本解释器为bash,(#!)又称为范数,用来告诉系统使用哪种Shell解释器来执行该脚本。

4) 养成注释的好习惯 ,注释都以#开头
5) 可以通过.vimrc文件来快速生成开头的注释信息

第一步:创建一个.vimrc文件,并写入格式化内容

[root@hollowman ~]# cat  >> ~/.vimrc << EOF
> autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"
> 
> func SetTitle()
>     if expand("%:e") == 'sh'
>         call setline(1,"#!/bin/bash")
>         call setline(2, "##############################################################")
>         call setline(3, "# File Name: ".expand("%"))
>         call setline(4, "# Version: V1.0")
>         call setline(5, "# Author: hollowman")
>         call setline(6, "# Organization: https://www.hollowman.cn")
>         call setline(7, "# Created Time : ".strftime("%F %T"))
>         call setline(8, "# Description:")
>         call setline(9, "##############################################################")
>         call setline(10, "")
>     endif
> endfunc
> EOF

第二步:查看该文件是否创建并输入了格式化内容

[root@hollowman ~]# cat .vimrc
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"

func SetTitle()
    if expand("%:e") == 'sh'
        call setline(1,"#!/bin/bash")
        call setline(2, "##############################################################")
        call setline(3, "# File Name: ".expand("%"))
        call setline(4, "# Version: V1.0")
        call setline(5, "# Author: hollowman")
        call setline(6, "# Organization: https://www.hollowman.cn")
        call setline(7, "# Created Time : ".strftime("%F %T"))
        call setline(8, "# Description:")
        call setline(9, "##############################################################")
        call setline(10, "")
    endif
endfunc

第三步:用vim创建.sh文件,查看是否有相应信息

[root@hollowman ~]# vim /usr/hollowman_scripts/newscript.sh
#!/bin/bash
##############################################################
# File Name: newscripts.sh
# Version: V1.0
# Author: hollowman
# Organization: https://hollowman.cn
# Created Time : 2020-12-21 23:31:24
# Description:
##############################################################

4.编写一个简单的脚本

[root@hollowman ~]# vim /usr/hollowman_scripts/newscript.sh
#!/bin/bash
##############################################################
# File Name: newscripts.sh
# Version: V1.0
# Author: hollowman
# Organization: https://hollowman.cn
# Created Time : 2020-12-21 23:31:24
# Description:
##############################################################
echo "the script file name is $0"
echo "here are $# parameters"

5.运行脚本

第一种方法:使用bash命令
[root@hollowman ~]# bash /usr/hollowman_scripts/newscript.sh  a b c d
the script file name is /usr/hollowman_scripts/newscript.sh
here are 4 parameters

这里,输入了a b c d等4个参数。

第二种方法:直接用文件路径/执行文件名 来执行

这里需要注意两点:1.如果用相对路径,则必须用(./)开头;2.用户必须有可执行权限,否则无法运行。

[root@hollowman ~]# ls -l /usr/hollowman_scripts/
total 4
-rw-r--r--. 1 root root 371 Dec 21 23:44 newscript.sh
[root@hollowman ~]# /usr/hollowman_scripts/newscript.sh a b c d
bash: /usr/hollowman_scripts/newscript.sh: Permission denied

可以看出,因为没有执行权限,所以执行失败。

[root@hollowman ~]# cd /usr/hollowman_scripts/
[root@hollowman ~]# chmod  777 newscript.sh
[root@hollowman ~]# ls -l
total 4
-rwxrwxrwx. 1  root root 371 Dec 21 23:44 newscript.sh
[root@hollowman hollowman_scripts]# ./newscript.sh 
the script file name is ./newscript.sh
here are 4 parameters

修改权限后,执行成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值