Shell学习笔记(一)
1.Shell提示符 #,$
对于普通用户,base shell 默认的提示符是$,对于超级用户(root用户),base shell 默认提示符是#。该符号表示Shell等待输入命令。
[root@sijizhen ~]#
这种格式包含了以下三个方面的信息:
- 启动 Shell 的用户名,也即 root;
- 本地主机名称,也即 sijizhen;
- 当前目录,波浪号
~
是主目录的简写表示法。
2.Shell脚本编写示例
打开文本编辑器,新建一个文本文件,并命名为 backup.sh。
扩展名sh代表shell,扩展名并不影响脚本的执行。
在backup.sh中输入代码
1 #!/bin/bash 2 echo "Hello World !" #这是一条语句
第一行的#!是约定标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的/bin/bash
就是指明了解释器的具体位置。
第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指终端)输出文本。在.sh
文件中使用命令与在终端直接输入命令的效果是一样的。
3.执行Shell脚本
Shell 脚本也是一种解释执行的程序,可以在终端直接调用(需要使用 chmod 命令给 Shell 脚本加上执行权限),如下所示:
1 [root@sijizhen ~]# cd /mnt/demo #切换到 backup.sh 所在的目录 2 [root@sijizhen demo]# chmod +x ./backup.sh #使脚本具有执行权限 3 [root@sijizhen demo]# ./backup.sh #执行脚本 4 Hello world
第 2 行中,chmod +x
表示给 backup.sh 增加执行权限。
第 3 行中,./
表示当前目录,整条命令的意思是执行当前目录下的 backup.sh 脚本。如果不写./
,Linux 会到系统路径(由 PATH 环境变量指定)下查找 backup.sh,而系统路径下显然不存在这个脚本,所以会执行失败。
通过这种方式运行脚本,第一行一定要写对,好让系统查找到正确的解释器。
1) 使用点号“.”
点号用于执行某个脚本,甚至脚本没有可执行权限也可以运行。有时候在测试运行某个脚本时可能并不想为此修改脚本权限,这时候就可以使用.
来运行脚本,非常方便。
编写下面的代码并保存为 backup.sh:
1 #!/bin/bash 2 echo "http://c.biancheng.net/shell/"
如果没有运行权限的话,用./
执行就会有报错,但是若在其前面使用点号来执行就不会报错,如下所示:
1 $ ./backup.sh 2 bash: .test.sh: Permission denied
使用.增加 test.sh 的执行权限,就可以正常运行了:
1 $ . ./backup.sh 2 http://c.biancheng.net/shell/
2) 使用 source 命令
与点号类似,source 命令也可读取并在当前环境中执行脚本,同时还可返回脚本中最后一个命令的返回状态;如果没有返回值则返回 0,代表执行成功;如果未找到指定的脚本则返回 false。
1 [root@sijizhen demo]# source backup.sh 2 Hello world
作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
1 [root@sijizhen demo]# /bin/bash backup.sh 2 Hello world