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键。
date: 当前的时间和日期
cal: 查看当月的日历
pwd: 检查当前工作目录的位置
ls: 检索当前目录下的所有文件和目录的列表
What is Scripting
用vi创建一个名为task.sh的文件,按i键进入vi的输入模式,将以上的命令写入文件中,每个命令位于单独的一行。文件准备好后,按ESC键,退出vi的输入模式,再输入:wq后,保存文件并退出vi。task.sh文件准备好后,使用chmod +x filename命令使你的新文件可执行。最后,用./task.sh 执行脚本。
What is Bash
bash是许多GNU/Linux系统上的默认解释器,因此我们一直在使用它,甚至没有意识到。要查看你的默认解释器,执行命令echo $SHELL:
echo $SHELL
/bin/bash
要将脚本解释器定义为Bash,首先使用which命令找到其可执行二进制文件的完整路径,并在其前面加上shebang #!并将其作为脚本的第一行插入。
@admin:~/z_bash_shell$ cat task.sh
date
cal
pwd
ls
注意:第一列的#!虽然以#号开头,但并不是注释,其它行中,如果以#号开头,则是表示注释掉改行,不执行。
File Names and Permissions
您可能已经注意到,为了执行shell脚本,需要使用chmod +x filename命令使文件可执行。默认情况下,任何新创建的文件都不能执行,无论其扩展名后缀是什么。
事实上,GNU / Linux系统上的文件扩展名是没有任何意义的,除了事实,在执行ls命令列出所有文件和目录清楚,文件扩展名. sh似乎是一个shell脚本和jpg文件可能是有损压缩。
在GNU/Linux系统上,可以使用file命令(file filename)来标识文件的类型。
Script Execution
脚本执行有几种方式:
直接执行:
bash task.sh
sh 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的新文件,包含以下代码:
echo "Hello World"
一旦准备好,用chmod命令让你的脚本可执行,并使用相对路径执行它。
chmod +x hello-world.sh
admin:~$ ./hello-world.sh
Hello World
Simple Backup Bash Shell Script
事实上,通过终端直接执行命令和在shell脚本中执行命令没有什么区别,除了shell脚本提供了作为单个进程执行多个命令的非交互式功能。
Note:不管脚本有多复杂,都不要尝试一次性编写整个脚本。通过首先在终端命令行上执行它来测试每个核心行,慢慢地开发您的脚本。成功后,将其转移到shell脚本中。
此外,大多数命令接受所谓的选项和参数。命令选项用于修改命令的行为,以产生可选的输出结果,并以-作为前缀。参数可以指定命令的执行目标,如文件、目录、文本等。
每个命令都有一个手册页面,可以用来了解它的功能,以及每个特定命令接受的选项和参数。
使用man命令显示任意命令的手动页面。例如显示ls命令的手动页面execute man ls。按q键退出手动页面。
下一个示例提供了更实际的应用程序,因为它可以用来备份我们的用户主目录。为了创建备份脚本,在第3行,我们将使用带有各种选项的tar命令-czf,以创建一个压缩的tar球,包含整个用户的主目录./tmp。将以下代码插入到名为backup.sh的新文件中,使脚本可执行并运行它:
tar -czf ./tmp_directory.tar.gz ./tmp/
水平有限,不当之处,欢迎批评指正
-
内容均为原创,转载引用请注明出处