用于脚本调试,在liunx脚本中可用set -x就可有详细的日志输出.可免去echo输出
如下例子:
#!/bin/bash
set -x
yourname="hello world"
输出结果
+ yourname='hello world'
执行每条指令错误时,可直接退出,无需继续下条,防止错误放大。
如下例子:
set -e
abc = "12122"
echo $yourname
exit 0
输出:
./test.sh: line 11: abc: command not found
若无set -e
则输出:
./test.sh: line 11: abc: command not found
hello world
可采用以下命令查看本目录下所有文件属性
ls -l
两种方法:
方法1:采用数字表示
chmod 777
方法2:采用字母表示, +'
表示增加一个属性,-
表示删除一个属性,=
设定一个属性
# 增加可执行权限
chmod +x
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
代码解释
BASH_SOURCE[0] - 等价于 BASH_SOURCE ,取得当前执行的 shell 文件所在的路径及文件名
dirname - 去除文件名中的非目录部分,仅显示与目录有关的部分
$() - 相当于 command
, 即获取command命令的结果
&& - 逻辑运算符号,只有当&&左边运行成功时才会运行&&右边的命令
总结
该命令获取脚本源文件的文件路径名,获取其目录部分,然后 cd 到该目录,使用 pwd 获取当前目录的完整路径,然后将这个路径的值赋给变量 DIR。
示例:
echo "${BASH_SOURCE[0]}"
echo "${BASH_SOURCE}"
echo "$(dirname $0)"
echo "$(dirname "${BASH_SOURCE[0]}")"
echo "$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
输出
outdoor@outdoor-ThinkPad-X390:~/sim$ ./shell_learn/test.sh
./shell_learn/test.sh
./shell_learn/test.sh
./shell_learn
./shell_learn
/home/outdoor/sim/shell_learn
rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。
常用法:
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
示例
rsync -a -P -z tmp/install [email protected]:/home/username/
其中常见的【OPTION】包括:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-p, --perms 保持文件权限
-P, --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
-z, --compress 对备份的文件在传输时进行压缩处理