shell脚本命令记录

shell脚本命令记录

  • set 命令
    • set -x介绍
    • set -e
  • Linux 文件基本属性
    • 文件属性表示
    • 修改属性方法
  • 获取当前脚本文件的目录
  • rsync同步

set 命令

set -x介绍

用于脚本调试,在liunx脚本中可用set -x就可有详细的日志输出.可免去echo输出
如下例子:

#!/bin/bash
set -x
yourname="hello world"

输出结果

+ yourname='hello world'

set -e

执行每条指令错误时,可直接退出,无需继续下条,防止错误放大。
如下例子:

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

Linux 文件基本属性

文件属性表示

可采用以下命令查看本目录下所有文件属性

ls -l

shell脚本命令记录_第1张图片

修改属性方法

两种方法:
方法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

rsync同步

rysnc是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能。
常用法:

  1. 本地同步
   rsync [OPTION]... SRC [SRC]... DEST
  1. 远程同步
  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 对备份的文件在传输时进行压缩处理

你可能感兴趣的:(linux,linux)