Bash基础——1.2 在终端显示输出 1.3 使用变量与环境变量 1.4 使用函数添加环境变量

第1章 小试牛刀

1.1 简介

当贝尔实验室为全新的Unix操作系统创建了交互式用户界面之后,计算机便拥有了一项独有的特性。它可以从文本文件(称为shell脚本)中读取并执行命令,好像这些命令是在终端中输入的一样。
程序员再也不用输入一堆命令来执行一系列操作,只需要把这些命令保存在文件中,然后运行这个文件就可以了。

1.2 在终端中显示输出

用户是通过终端会话同shell环境打交道的。如果你使用的是基于图形用户界面的系统,这指的就是终端窗口。如果没有图形用户界面(生产服务器或SSH会话),那么登录后你看到的就是shell提示符。

1.2.1 预备知识

打开终端时会出现一个提示符。其形式通常如下:
username@hostname$
或者也可以配置成root@hostname #,或者简单的显示为$#
$表示普通用户,#表示管理员用户root。root是Linux系统中权限最高的用户。

以root用户(管理员)的身份直接使用shell来执行任务是不好的。因为如果shell具备较高的权限,命令中出现的输入错误有可能造成更严重的破坏,所以推荐使用普通用户(shell会在提示符中以$来表明这种身份)登录系统,然后借助sudo这类工具来运行特权命令。使用sudo 执行命令的效果和root一样。

shell脚本通常以shebang起始:
#!/bin/bash
shebang是一个文本行,其中#!位于解释器路径之前。/bin/bash是Bash的解释器命令路径。bash将以#符号开头的行视为注释。脚本中只有第一行可以使用shebang来定义解释该脚本所使用的解释器。

脚本的执行方式有两种。
(1) 将脚本名作为命令行参数:
bash mySript.sh
(2) 授予脚本执行权限,将其变为可执行文件:
chmod 755 mySript.sh
./myScirpt.sh
如果将脚本作为bash的命令行参数来运行,那么就用不着使用shebang了。可以利用shebang来实现脚本的独立运行。可执行脚本使用shebang之后的解释器路径来解释脚本。

使用chmod命令赋予脚本可执行权限:
$ chmod a+x sample.sh
该命令使得所有用户可以按照下列方式执行该脚本:
$ ./sample.sh # ./表示当前目录
或者
$ /home/path/sample.sh #使用脚本的完整路径
内核会读取脚本的首行并注意到shebang为#!/bin/bash。它会识别出/bin/bash并执行该脚本:
$ /bin/bash sample.sh

当启动一个交互式shell时,它(内核)会执行一组命令来初始化提示文本、颜色等设置。这组命令来自用户主目录中的脚本文件~/.bashrc(对于登录shell则是~/.bash_profile,这里的.表示的是隐藏文件,可使用ls -a查看)。Bash shell还维护了一个历史记录文件~/.bash_history,用于保存用户运行过的命令。

~表示主目录,它通常是/home/usr,其中user是用户名,如果是root用户,则为/root

~表示主目录,它通常是/home/user,其中user是用户名,如果是root用户,则为/root。但登录图形化环境(比如GNOME、KDE等)后所创建的终端会话并不是登录shell。使用GNOME或KDE这类显示管理器登录后并不会读取.profile.bash_profile(绝大部分情况下不会),而使用ssh登录远程系统时则会读取.profile

shell使用分号或换行符来分隔单个命令或命令序列。
$ cmd1 ; cmd2
这等同于:
$ cmd1
$ cmd2

注释部分以#为起始,一直延续到行尾。注释行通常用于描述代码或是在调试期间禁止直行行代码:
# sample.sh - echoes "hello world"
echo "hello world"

1.2.2 实战演练

echo是用于终端打印的最基本命令。
默认情况下,echo在每次调用后会添加一个换行符:
$ echo "Welcome to Bash"
只需要将文本放入双引号中,echo命令就可以将其中的文本在终端中打印出来。类似地,不适用双引号也可以得到同样的输出结果:
$ echo Welcome to Bash
实现相同效果的另一种方式是使用单引号:
$ echo 'text in quotes'

双引号允许shell解释字符串中出现的特殊字符。单引号不会对其做任何解释

思考下面的命令:
echo "cannot include exclamation - ! within double quotes"
理论上命令应

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值