Bash 的运行依赖一系列的环境变量,而这些环境变量的初始数据大部分来源于环境配置文件,Bash 在启动的时候通过加载环境配置文件来生成并初始化它所依赖的环境变量,如命令行提示符、命令搜索路径、历史命令存储上限等。影响所有用户的环境配置文件称为系统配置文件,每个用户独有的环境配置文件称为用户配置文件。在介绍 Bash 的环境配置文件之前,让我们先来了解下 login 跟 non-login 两种类型的 Shell 。
变量是 Shell 运行环境中不可或缺的一部分,一些跟 Shell 息息相关的配置或信息都以变量的形式保存在 Shell 运行环境中,比如我们通过 Shell 在不同目录之间来回切换,当前目录的绝对路径将被保存在一个 Shell 变量当中,执行 pwd 命令获取当前路径时,调用该变量的值将被调用。类似的变量还有很多,下面就让我们一起来详细了解一下。
前面我们对 Linux 下的 Shell 跟 Shell 中的 Bash 有了一个比较全面的了解,那么接下来就让我们一起来体验一下三个基本的 Shell 命令吧,它们分别是 date、cal 跟 bc 命令,希望借此可以让大家对 Shell 命令有个基本的认识。
一、date命令
顾名思义,date 命令是用来查看跟设置日期与时间用的,默认查看当前时间,此外我们还可以通过指定参数查看几天、几个月、几年之前或之后的时间与日期。如果想设置时间,需要先获得管理员权限。
日常应用中,Linux 下我们接触得最多的 Shell 恐怕非 Bash 莫属了,相信熟悉使用了 Bash 以后,要掌握其他 Shell 的使用,应该易如反掌。这一节我们着重介绍一下 Bash 的基本功能、特点以及它所包含的命令。
一、Bash 的功能概述
Bash 是绝大多数版本的 Linux 系统下默认的 Shell ,全名为 Bourne Again Shell 。它功能强大,那么接下来我们将围绕 Bash 的六大优点来对其进行深入了解。
Shell 是 Linux 系统为了处理来自用户的交互信息而提供给用户的一个命令行界面,它是用户与内核进行交互的接口,接受用户输入的命令,解析之后转交给内核去执行。Linux 系统下的 Shell 类似于 Windows 系统下的命令提示符(cmd.exe),执行基于字符的命令或功能。
一、何谓 Shell
我们可能会遇到这样的情况:有多个程序需要在同一个终端由一条命令来执行。最常用的方法便是编写 Shell 脚本来同时执行多个程序,另外一种便是这里将要介绍的多命令执行操作符。
一、多命令执行之 ;
要在同一终端运行多个程序,程序是否运行与其他程序的运行结果无关,只需要程序依次执行,前面的程序执行完之后方才执行后面的程序。对于这种情况,我们最好采用多命令执行操作符“;”。命令与命令之间用分号“;”隔开,这样,分号前面的程序执行完毕之后就会紧接着执行分号后面的程序,直到所有程序执行完毕。我们来看一下下面这个实例:
标准输出跟标准错误输出默认打印到屏幕上,前面介绍了可以通过数据流重定向命令将其写入文件或者设备中,那么有没有办法将这些数据既不打印到屏幕也不存储到文件中呢?这就要用到我们接下来要讲到的 /dev/null 文件了,这个 /dev/null 可以处理掉任何重定向到它的信息而不存储,就好像传入的数据被自动清除了一样。下面这个实例,将错误的信息交给 /dev/null 清除,只留下正确的数据显示在屏幕上。
前面介绍了与标准输出跟标准错误输出相对应的数据重定向符“>”跟“2>”,那么与标准输入相对应的数据重定向符“<”又有什么功能呢?简单地说,就是将原本需要由键盘输入的数据,改由文件内容或字符串来替代。接下来,我们就使用 cat 命令来体验一下什么叫做键盘输入吧。
直观的说,标准输出是命令或程序所传递的正确信息,与之对应,标准错误输出就是命令或程序运行失败后传递的错误信息。举例来说,Ubuntu 系统默认有 /etc/timezone 文件但却没有 /etc/time 文件,若设法使用 cat 命令显示这两个文件的内容,将出现以下结果:
trevor@trevor-PC:~/linux/linux100$ cat /etc/timezone Asia/Shanghai trevor@trevor-PC:~/linux/linux100$ cat /etc/time cat: /etc/time: 没有那个文件或目录 trevor@trevor-PC:~/linux/linux100$