零散命令
特殊变量
$0 当前脚本的文件名。
$n 传递给脚本或函数的参数。第一个参数是$1。
$? 上一个命令的退出状态或函数的返回值。成功为0,失败为1。
$*与$@的区别
相同点:都是引用所有参数
不同点:假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
运算符
[[ $? -ne 0 ]] && echo "test" //如果上一个命令退出状态不等于0,回显test。-ne,不等于
if [ -n "$a" ]; then //字符串长度不为0。
fi
if [ -z "$os" ]; then //字符串长度为0。
fi
[ -f /run/keepalived.pid ] && return 0 || return 1 //文件是普通文件。
[ ! -s test.sh ] || sh test.sh //文件不为空。
if [ -e file ]; then //文件/目录是否存在。
fi
cd `dirname $0`
echo `pwd` //进入到当前脚本执行目录,显示当前目录路径。
ln -s test.sh testlink //为文件创建软连接。
重定向
who > users //将who命令的输出重定向到users文件。覆盖方式。
echo "append string" >> users //追加输出
wc -l file //统计文件行数
wc -l < file //文件作为命令输入
wc -l >> users << EOF //将EOF中的片段作为命令输入,并将输出追加到users文件
the first line
the second line
EOF //顶格写,前后不能有任何字符
command > /dev/null 2>&1 //屏蔽输出结果,即将stdout重定向到null设备,再将stderr重定向到stdout。
0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符。
普通用户提权
ssh root@localhost
vi /etc/sudoers.d/sudoers.pass
添加xxx ALL=(ALL) NOPASSWD: /usr/bin/su
exit
sudo su
BASE64
echo -n test | base64
echo -n dGVzdA== | base64 --decode