Java教程

shell基础

本文主要是介绍shell基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.什么是shell?

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。

Shell既是一种命令语言,又是一种程序设计语言。

作为命令语言,它交互式地解释和执行用户输入的命令;

作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

 

2.shell的作用是什么?

shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

 

3.linux中包含哪些shell?如何查看?

/bin/bash /sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

可以通过cat /etc/shells查看

 

 

4.shell编程规范

  • 解释器:在写body之前要对shell脚本进行声明,告诉操作系统,这是一个shell文件,不声明的话系统默认为用bash来执行脚本。

         格式如下

    #!/bin/bash

  • 脚本注释:注释格式和一般的编程语言类似,为:#+内容
  • 脚本执行:source  [文件名]

                                 .  [文件名]

                                ./  [文件名]  (注意这种方式文件需要有执行权限)

                      bash/dash/sh    [文件名]

 

 

例子:

 

 

5.重定向

交互式硬件设备

类型                   设备文件          文件描述编号        默认设备
标准输入            /dev/stdin                0                        键盘
标准输出            /dev/stdout              1                     显示器
标准错误输出     /dev/stderr              2                    显示器

重定向操作

类型                               操作符                                     用途
重定向输入                        <                             从指定文件读取数据
重定向输出                        >                             将标准输出结果保存到指定的文件,并且覆盖原有文件
                                         >>                            将标准输出追加到指定的文件的尾部,不覆盖原有内容
标准错误输出                   2>                             将错误信息保存到指定文件,并且覆盖原有文件
                                        2>>                           将错误信息追加到指定文件的尾部,不覆盖原有内容
混合输出                     &>和2>&1                     将标准输出,标准错误保存到同—文件中

 

 

6.变量类型

  • 自定义变量:由用户自己定义、修改和使用,变量名以字母或下划线开头、区分大小写

 

 

符号作用:

"":可以识别引用变量

'':无法引用变量

``:引用命令执行完的结果

 

  •  位置变量:当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量

 

  • 环境变量:

          环境变量由系统提前创建,用来设置用户的工作环境

          使用env命令可以查看到当前工作环境下的环境变量

          变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录

          变量PATH表示可执行程序的默认搜索路径

 

  • 预定义变量: Bash中内置的一类变量,不能直接修改

预定义变量                    表示的意思
$*                             把所有参数看成以空格分隔的一个字符串整体(单字符串)返回
$@                          把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回
$0                            表示当前执行的脚本或命令的名称
$#                            表示命令或者脚本要处理的参数的个数
$?                          表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常

 

7.变量作用范围

默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。

可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

临时设置变量:局部变量在改变环境后变量会失效。

 如果使用export将变量导出为全局变量,那么在环境改变后,变量依然生效。

 

 

 永久设置变量:vim  /etc/profile

export PATH+=:/mnt

 

这篇关于shell基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!