vlambda博客
学习文章列表

Bash脚本初学者教程(1)

Bash脚本初学者教程(1)

Bash脚本初学者教程(1)Bash脚本初学者教程(1)

Bash

Bash是一个命令语言解释器。它在各种操作系统上广泛可用,并且是大多数GNU/Linux系统上的默认命令解释器。这个名字是“Bourne-Again SHell”的缩写。


Shell

Shell是一个宏处理器,允许交互式或非交互式命令执行。


Scripting

Scripting允许自动执行命令,否则将以交互方式逐个执行。


Bash脚本是任何Linux系统管理工作的必备技能。


What is Shell

Shell允许您通过使用命令与您的计算机交互,因此检索或存储数据,处理信息和各种其他简单或甚至极其复杂的任务。

动手试一试,在Linux系统的交互界面,输入一些命令,如date,cal,pwd或ls,然后按ENTER键。

Bash脚本初学者教程(1)

date: 当前的时间和日期

cal: 查看当月的日历

pwd: 检查当前工作目录的位置

ls: 检索当前目录下的所有文件和目录的列表


What is Scripting

用vi创建一个名为task.sh的文件,按i键进入vi的输入模式,将以上的命令写入文件中,每个命令位于单独的一行。文件准备好后,按ESC键,退出vi的输入模式,再输入:wq后,保存文件并退出vi。task.sh文件准备好后,使用chmod +x filename命令使你的新文件可执行。最后,用./task.sh 执行脚本。

Bash脚本初学者教程(1)


What is Bash

bash是许多GNU/Linux系统上的默认解释器,因此我们一直在使用它,甚至没有意识到。要查看你的默认解释器,执行命令echo $SHELL:

$ echo $SHELL/bin/bash

要将脚本解释器定义为Bash,首先使用which命令找到其可执行二进制文件的完整路径,并在其前面加上shebang #!并将其作为脚本的第一行插入。

@admin:~/z_bash_shell$ cat task.sh#!/bin/bashdatecalpwdls

注意:第一列的#!虽然以#号开头,但并不是注释,其它行中,如果以#号开头,则是表示注释掉改行,不执行。


File Names and Permissions

您可能已经注意到,为了执行shell脚本,需要使用chmod +x filename命令使文件可执行。默认情况下,任何新创建的文件都不能执行,无论其扩展名后缀是什么。


事实上,GNU / Linux系统上的文件扩展名是没有任何意义的,除了事实,在执行ls命令列出所有文件和目录清楚,文件扩展名. sh似乎是一个shell脚本和jpg文件可能是有损压缩。


在GNU/Linux系统上,可以使用file命令(file filename)来标识文件的类型。


Script Execution

脚本执行有几种方式:

直接执行:bash task.shsh task.sh

修改权限后执行:chmod +x task.sh然后./task.sh


Relative vs Absolute Path

绝对路径:由/指示的根目录提供了整个文件系统的入口,因此允许访问所有目录和文件。

相对路径:相对路径可以理解成相对于当前所在目录的路径,

./ 指当前目录../ 当前目录的上一级目录../../ 当前目录的上两级目录cd - 返回到刚切换目录之前的目录cd ~ 返回到home目录

可以结合pwd (查看当前目录路径)进行实操理解。


Hello World Bash Shell Script

现在,是时候编写我们的第一个、最基本的bash shell脚本了。这个脚本的全部目的就是使用echo命令将“Hello World”打印到终端输出。使用任何文本编辑器创建一个名为hello-world.sh的新文件,包含以下代码:

#!/bin/bash
echo "Hello World"

一旦准备好,用chmod命令让你的脚本可执行,并使用相对路径执行它。

$ chmod +x hello-world.sh$ admin:~$ ./hello-world.shHello World$


Simple Backup Bash Shell Script

事实上,通过终端直接执行命令和在shell脚本中执行命令没有什么区别,除了shell脚本提供了作为单个进程执行多个命令的非交互式功能。


Note:不管脚本有多复杂,都不要尝试一次性编写整个脚本。通过首先在终端命令行上执行它来测试每个核心行,慢慢地开发您的脚本。成功后,将其转移到shell脚本中。


此外,大多数命令接受所谓的选项和参数。命令选项用于修改命令的行为,以产生可选的输出结果,并以-作为前缀。参数可以指定命令的执行目标,如文件、目录、文本等。


每个命令都有一个手册页面,可以用来了解它的功能,以及每个特定命令接受的选项和参数。


使用man命令显示任意命令的手动页面。例如显示ls命令的手动页面execute man ls。按q键退出手动页面。


下一个示例提供了更实际的应用程序,因为它可以用来备份我们的用户主目录。为了创建备份脚本,在第3行,我们将使用带有各种选项的tar命令-czf,以创建一个压缩的tar球,包含整个用户的主目录./tmp。将以下代码插入到名为backup.sh的新文件中,使脚本可执行并运行它:

#!/bin/bash
tar -czf ./tmp_directory.tar.gz ./tmp/


Bash脚本初学者教程(1)
END

Bash脚本初学者教程(1)

  • Bash脚本初学者教程(1)