学习BASH

阅读 1.9k
标签: Linux

在上一篇《连接Linux内核的桥梁:Shell》中,我们知道,Linux默认使用bash本篇将对bash的核心概念进行简要的介绍。

其实,只要你接触到Linux系统,你就已经和bash打上交道了,在控制台上,你输入各种命令,执行各种操作,都是在使用bash。在bash中,有一个重要的概念,那就是环境变量。

环境变量

当我们登陆到Linux后,每个用户会进入到当前用户的Home目录下。比如,用户foo会进入到/home/foo目录中,而用户bar会进入到/home/bar目录中,这正是因为系统设置了默认的环境变量。

那当前shell环境中,到底有哪些默认的环境变量呢?

可以使用env来进行查看

env

会显示一些如下的信息:

SHELL=/bin/bash
USER=foo
...
MAIL=/var/spool/mail/foo
LANG=en_US.utf8
...
HOME=/home/foo

这里省略了一些信息,我们发现,每个变量都是用键值对的方式显示的(通过=连接),等号左边是变量名,等号右边是变量的值。因为这些变量是系统内定的变量,所以都是用大写字母命名的,如果是自定义的变量,一般使用小写字母

查看

直接echo可以查看相关变量的值:

echo $HOME

HOME变量的值就会显示出来,当然,如果换成$PATH,那么显示的就是PATH变量的值。

设置

上面我们看见的都是大写字母的系统内定的变量,如果我们自己要定义一个变量,要怎么做呢?其实,要设置一个变量很简单:

name=foo

等号左边是变量名,右边是值,请注意,等号两边不能有空格。

而取消设置,使用unset即可:

unset name

则name这个变量就取消了。

export

export能够导出自定义的变量,比如共享自己的变量给后来调用的文件或者进程。格式如下

export custom_name

上面就产生了一个新变量custom_name,其他文件或者进程只要调用这个变量,就可以直接使用了。

declare

主要作用为声明变量的类型我们来看一个例子:

sum=1+2+3

定义了一个sum变量,将1+2+3赋值给sum,那现在sum等于多少呢?

通过echo $sum,发现结果为1+2+3。奇怪了,怎么没有帮我们求和呢?

这是因为bash默认变量类型为字符串,那为了得到求和的整数,需要使用declare来定义:

declare -i sum=1+2+3

-i参数表示后面sum变量的类型为integer,这样sum的值就是整型6了。

bash的主要功能

bash是比较复杂的,功能也很强大,那么bash的主要功能有哪些呢?

主要功能有如下几点:

  • 历史命令
  • 命令和文件的补全功能
  • 命令别名的设置
  • 前后台的控制
  • 通配符(wildcard)
可以通过history命令来查看历史命令;bash中的命令支持【tab】键来补全;可以通过alias来设置相关的命令别名;bash中是包含前后台的概念的,即子进程父进程;另外,其还支持通配符,比如,使用*可以代表【0到无穷多个】任意字符。

我是内置命令吗?

bash内置了很多命令,比如上面提到的echo、history、alias等,那如何判断某个命令是否为内置命令呢?

可以使用type这个命令来进行判断。

type echo

将提示echo is a shell builtin,则说明是一个内置命令。如果不是内置命令,比如man,则提示man is bashed(/usr/bin/man),这说明man不是shell内置的命令。

小结

bash的内容其实比较多,难以短时间内快速掌握,但只要掌握了bash的核心概念,随着使用Linux的次数越来越多,你就会慢慢熟悉它,这是一个自然的过程。

最后编辑于: 2022-06-29

评论(0条)

(必填)
复制成功