Bash 第一讲 简介 脚本 文件系统及权限 入门
Bash简介
Bash 是 Bourne Shell 程序“sh”的升级版本,这是一个开源 GUN 项目。它提供了比 Bourne Shell 更好的功能,适用于编程和交互使用。 我们可以这么理解,Bash 是一个命令处理器,通常运行于文本窗口中,可以将用户输入的命令解释并执行相应的操作,这样式的文件被称作脚本。 Bash 是绝大多数 Linux 、MAC 及 OS 默认的 shell 程序,并且 Shell Script 都大致相同。当您学会一种 Shell 后,其它的 Shell 都能够很快上手,而且一种 Shell Script 通常可以在很多 Shell 上使用,因此您不必在学习哪种 Shell 的选择上耗费太多的时间。
Bash 的特点
- Bash 与 sh 兼容,并具有 Korn Shell 和 C Shell 的最佳功能特性。
- Bash 中的每个文件都有其特定用途,这些文件的集合用于创建环境。
- Bash 可以通过键位绑定设置自定义的编辑键序列。
- Bash 包含了一维数组,它们可以帮助您轻松的引用和操作数据列表。
- Bash 中的目录堆栈指定了列表中最近访问的目录历史记录。操作示例:pushed用于将目录添加至堆栈中;popd用于将目录从堆栈中删除;dirs用于显示堆栈中的内容。
- Bash 包含用于环境安全的受限模式。
Linux操作系统中不同类型的 Shell 程序:
- Bourne Shell
- Korn Shell
- GNU Bourne Shell
若想知道您的操作系统支持哪些 Shell 类型,可在终端中输入命令:
$ cat /etc/shells
若想知道 Bash 的绝对路径,可在终端中输入命令:
$ which bash
Bash 脚本
在编程中,脚本是用于控制软件应用程序的一组命令,这些命令在被调用时自动执行任务。
Bash脚本
Bash Shell脚本是用Bash编写的计算机程序,它是一个包含了自定义数量命令的纯文本文件,用于在Linux系统上自动循环执行重复性任务。
Bash脚本的创建
使用cd命令进入将要保存脚本的目录。使用文本编辑器(如gedit/vi/vim命令),并键入shell命令
使用touch命令创建脚本
touch file_name
在文本编辑器中打开脚本,键入以下命令(编辑器命令可根据个人更改)
gedit file_name.sh
脚本的第一行一般如下:
#!/bin/bash
echo "Hello World!"
注:
#!(SheBang)是一个约定的标记(解释器指令),它告诉系统这个脚本使用哪一种Shell
echo是Bash中的内置命令,用于通过传递参数来显示标准输出,将文本或字符串打印到屏幕上。
Bash脚本的运行
作为可执行程序
chmod +x ./file_name.sh
./file_name.sh
注:
第一行给予脚本执行权限
第二行执行脚本
作为解释器参数
/bin/sh file_name.sh
注:
该方式不需要在第一行指定解释器信息
Bash 文件系统及权限
在正式进入 Bash 教程之前,我们需要来了解一下 Linux 的文件系统及文件权限。
文件系统
Linux 文件系统中的所有文件都可以被称为目录,这些文件的类别可划分为以下三种:
- 普通文件(数据、文本、图像、程序指令)
- 特殊文件(用于访问硬件设备)
- 目录(包含普通文件和特殊文件的文件夹)
我们可以使用ls -l命令来罗列出所有文件和目录
上图共有七列,其意如下:
代表文件类型及权限,每个文件均以类型开头,接着指定访问权限。以特定字符表示:
- 常规文件(-)
- 特殊档案(c)
- 命名管道(p)
- 块设备(b)
- 套接字(s)
- 目录(d)
- 链接(l)
代表存储块的数量。
代表文件的所有者或具有管理权限的超级用户。
代表所有者、超级用户组
代表文件大小
代表文件的最后修改日期(具体到分钟)
代表文件或目录的名称
文件权限
Linux 通过以下两个授权属性来保护其文件系统:
权限
- 阅读权限(r),该权限允许查看文件内容。
- 写入权限(w),该权限允许修改文件内容。
- 执行权限(x),该权限允许运行编程文件或脚本。
- 在调用权限的情况下会提供(-)
所有权 - 所有者是创建文件的超级用户,具有访问与文件关联的任何权限。
- 用户组是超级用户创建的一或多用户,与超级用户一样具有访问与文件关联的任何权限。
- 其他用户是排除在超级用户和用户组之外的用户,只具有前两者创建或拥有的任何文件或目录关联的权限。
举个例子
在上图红色框体内的第一列共有十个字符,我们先排除第一个字符(文件类型),往后的九个字符均表示权限。 第2-4个字符(rw-)指定了超级用户的读取和写入权限。 第5-7个字符(r–)指定了用户组的读取权限。 第8-10个字符(r–)指定了其他用户的读取权限,但在这里,读写均被拒绝。
更改权限
使用chmod命令可以更改用不同用户类型的文件权限。添加或删除任何用户类型的任何权限的基本形式:
chmod [class][operator][permission] file_name
chmod [ugoa][+or-][rwx] file_name
- class由u(超级用户),g(用户组),o(其他用户),a(所有类型)表示。
- operator(+或-)表示添加或删除权限。
- permission由指示符r(读取),w(修改),x(运行)表示。
为所有类型添加运行权限
入门
打开终端,使用cd命令移动至目标目录。
使用touch命令创建一个空文件命名为bash_script.sh作为shell脚本的容器。
查看bash_script.sh文件的所有权限属性,在下图中可以看到该文件没有运行权限。
使用任意编辑器打开bash_script.sh,此处以gedit作为例子:
$ gedit bash_script.sh
编写脚本代码,打印Hello World!。
#!/bin/bash
# This is the basic bash script
echo " Hello World!"
- 第一行是#!(SheBang)指定Ball Shell的路径
- 第二行是注释行
- 第三行是echo命令执行打印输出内容
将运行权限添加到文件。
$ chmod +x bash_script.sh
使用./执行脚本,打印输出。
$ ./bash_script.sh
Hello World!
Bash注释
注释对于任何编程语言都是不可忽视的重要组成部分,编写者通过注释来为其他人提供解释或提示,能有效提高代码的可读性。 Bash 同其他编程语言一样提供了两种类型注释的支持。
- 单行注释
- 多行注释
Bash 单行注释
在注释段落的开头使用#,如下:
#!/bin/bash
#This is the basic bash script
echo "Hello World!"
将上面的代码执行后,在执行命令的过程中会自动忽略注释部分,不会被解释输出
$ ./bath_script.sh
Hello World!
Bash 多行注释
插入多行注释有两种方法:
在**<< BLOCK和BLOCK**之间的内容会被当成注释。
#!/bin/bash
<< BLOCK
This is the basic bash script
This is the basic bash script
BLOCK
echo "Hello World!"
在**:’** 和**’**之间的内容会被当成注释
#!/bin/bash
:'
This is the basic bash script
This is the basic bash script
'
echo "Hello World!"
下一篇: Mysql表的七种类型详细介绍