update
This commit is contained in:
parent
848c24b7fd
commit
c6bef76729
@ -17,126 +17,126 @@ categories: ["shell"]
|
|||||||
- $1...$n #shell 位置参数
|
- $1...$n #shell 位置参数
|
||||||
|
|
||||||
## BASH 字符串处理
|
## BASH 字符串处理
|
||||||
```bash
|
```bash
|
||||||
# 字符串 str 长度
|
# 字符串 str 长度
|
||||||
${#str}
|
${#str}
|
||||||
expr length "$str"
|
expr length "$str"
|
||||||
|
|
||||||
# 子串 substr 出现位置,找不到返回 0
|
# 子串 substr 出现位置,找不到返回 0
|
||||||
expr index "$str" "$substr"
|
expr index "$str" "$substr"
|
||||||
|
|
||||||
# 子串 substr 开头匹配,找不到返回 0
|
# 子串 substr 开头匹配,找不到返回 0
|
||||||
expr match "$str" "$substr"
|
expr match "$str" "$substr"
|
||||||
|
|
||||||
# 字符串 str 抽取左起位置 pos 后 长度 len 的子串
|
# 字符串 str 抽取左起位置 pos 后 长度 len 的子串
|
||||||
${str:$pos}
|
${str:$pos}
|
||||||
${str:$pos:$len}
|
${str:$pos:$len}
|
||||||
expr substr "$str" $pos $len
|
expr substr "$str" $pos $len
|
||||||
|
|
||||||
# 字符串 str 抽取右起位置 pos 前的子串
|
# 字符串 str 抽取右起位置 pos 前的子串
|
||||||
${str: -pos}
|
${str: -pos}
|
||||||
${str:(pos)}
|
${str:(pos)}
|
||||||
|
|
||||||
# 正则 pat 抽取字符串 str 开头子串
|
# 正则 pat 抽取字符串 str 开头子串
|
||||||
expr match "$str" "\($pat\)"
|
expr match "$str" "\($pat\)"
|
||||||
expr "$str" : "\($pat\)"
|
expr "$str" : "\($pat\)"
|
||||||
|
|
||||||
# 正则 pat 抽取字符串 str 结尾子串
|
# 正则 pat 抽取字符串 str 结尾子串
|
||||||
expr match "$str" ".*\($pat\)"
|
expr match "$str" ".*\($pat\)"
|
||||||
expr "$str" : ".*\($pat\)"
|
expr "$str" : ".*\($pat\)"
|
||||||
|
|
||||||
# 删除字符串 str 开头的最短子串 sub
|
# 删除字符串 str 开头的最短子串 sub
|
||||||
${str#$sub}
|
${str#$sub}
|
||||||
|
|
||||||
# 删除字符串 str 开头的最长子串 sub
|
# 删除字符串 str 开头的最长子串 sub
|
||||||
${str##$sub}
|
${str##$sub}
|
||||||
|
|
||||||
# 删除字符串 str 结尾的最短子串 sub
|
# 删除字符串 str 结尾的最短子串 sub
|
||||||
${str%$sub}
|
${str%$sub}
|
||||||
|
|
||||||
# 删除字符串 str 结尾的最长子串 sub
|
# 删除字符串 str 结尾的最长子串 sub
|
||||||
${str%%$sub}
|
${str%%$sub}
|
||||||
|
|
||||||
# 替换字符串 str 第一个子串 sub 为字符串 rep
|
# 替换字符串 str 第一个子串 sub 为字符串 rep
|
||||||
${str/"$sub"/"$rep"}
|
${str/"$sub"/"$rep"}
|
||||||
|
|
||||||
# 替换字符串 str 所有子串 sub 为字符串 rep
|
# 替换字符串 str 所有子串 sub 为字符串 rep
|
||||||
${str//"$sub"/"$rep"}
|
${str//"$sub"/"$rep"}
|
||||||
|
|
||||||
# 替换字符串 str 开头的子串 sub 为字符串 rep
|
# 替换字符串 str 开头的子串 sub 为字符串 rep
|
||||||
${str/#"$sub"/"$rep"}
|
${str/#"$sub"/"$rep"}
|
||||||
|
|
||||||
# 替换字符串 str 结尾的子串 sub 为字符串 rep
|
# 替换字符串 str 结尾的子串 sub 为字符串 rep
|
||||||
${str/%"$sub"/"$rep"}
|
${str/%"$sub"/"$rep"}
|
||||||
|
|
||||||
# var为空或没有设置,代入word,否则代入var值
|
# var为空或没有设置,代入word,否则代入var值
|
||||||
${var:-word}
|
${var:-word}
|
||||||
|
|
||||||
# 如果var已经被设置且不为空,则代入它的值,否则代入word,并且在后面var始终为word的值。位置参量不能用这种方式赋值。
|
# 如果var已经被设置且不为空,则代入它的值,否则代入word,并且在后面var始终为word的值。位置参量不能用这种方式赋值。
|
||||||
${variable:=word}
|
${variable:=word}
|
||||||
|
|
||||||
# 如果变量var已被设置且值为非空,代入word值,否则什么也不代入
|
# 如果变量var已被设置且值为非空,代入word值,否则什么也不代入
|
||||||
${variable:+word}
|
${variable:+word}
|
||||||
|
|
||||||
# 如果变量var已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.
|
# 如果变量var已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.
|
||||||
${var:?word}
|
${var:?word}
|
||||||
```
|
```
|
||||||
|
|
||||||
## BASH 数组
|
## BASH 数组
|
||||||
```bash
|
```bash
|
||||||
# 定义数组,有三种方式
|
# 定义数组,有三种方式
|
||||||
declare -a array
|
declare -a array
|
||||||
array=()
|
array=()
|
||||||
array[0]='value0'
|
array[0]='value0'
|
||||||
|
|
||||||
# 打印数组第一个元素
|
# 打印数组第一个元素
|
||||||
echo ${array[0]}
|
echo ${array[0]}
|
||||||
|
|
||||||
# 打印数组所有元素,有两种方式
|
# 打印数组所有元素,有两种方式
|
||||||
echo ${array[@]}
|
echo ${array[@]}
|
||||||
echo ${array[*]}
|
echo ${array[*]}
|
||||||
|
|
||||||
# 打印数组所有索引,有两种方式
|
# 打印数组所有索引,有两种方式
|
||||||
echo ${!array[@]}
|
echo ${!array[@]}
|
||||||
echo ${!array[*]}
|
echo ${!array[*]}
|
||||||
|
|
||||||
# 打印数组的元素个数,有两种方式
|
# 打印数组的元素个数,有两种方式
|
||||||
echo ${#array[@]}
|
echo ${#array[@]}
|
||||||
echo ${#array[*]}
|
echo ${#array[*]}
|
||||||
|
|
||||||
# 移除数组中索引为2的元素
|
# 移除数组中索引为2的元素
|
||||||
unset array[2]
|
unset array[2]
|
||||||
|
|
||||||
# 添加id为3的元素
|
# 添加id为3的元素
|
||||||
array[3]=""
|
array[3]=""
|
||||||
```
|
```
|
||||||
|
|
||||||
## BASH 字典
|
## BASH 字典
|
||||||
```bash
|
```bash
|
||||||
# 定义字典
|
# 定义字典
|
||||||
declare -A dict
|
declare -A dict
|
||||||
|
|
||||||
# 新增或修改键 k1 的值
|
# 新增或修改键 k1 的值
|
||||||
dict['k1']='v1'
|
dict['k1']='v1'
|
||||||
|
|
||||||
# 打印对应键的值
|
# 打印对应键的值
|
||||||
echo $['k1']
|
echo $['k1']
|
||||||
|
|
||||||
# 打印字典所有元素,有两种方式
|
# 打印字典所有元素,有两种方式
|
||||||
echo ${dict[@]}
|
echo ${dict[@]}
|
||||||
echo ${dict[*]}
|
echo ${dict[*]}
|
||||||
|
|
||||||
# 打印字典所有键,有两种方式
|
# 打印字典所有键,有两种方式
|
||||||
echo ${!dict[@]}
|
echo ${!dict[@]}
|
||||||
echo ${!dict[*]}
|
echo ${!dict[*]}
|
||||||
|
|
||||||
# 打印字典的元素个数,有两种方式
|
# 打印字典的元素个数,有两种方式
|
||||||
echo ${#dict[@]}
|
echo ${#dict[@]}
|
||||||
echo ${#dict[*]}
|
echo ${#dict[*]}
|
||||||
|
|
||||||
# 移除键 k1
|
# 移除键 k1
|
||||||
unset dict['k1']
|
unset dict['k1']
|
||||||
```
|
```
|
||||||
|
|
||||||
## 终端环境变量 PS1 参数
|
## 终端环境变量 PS1 参数
|
||||||
- \d 日期,格式为weekday month date,例如:"Mon Aug 1"
|
- \d 日期,格式为weekday month date,例如:"Mon Aug 1"
|
||||||
@ -187,24 +187,24 @@ categories: ["shell"]
|
|||||||
- 去掉头部 AA 和尾部 ZZ
|
- 去掉头部 AA 和尾部 ZZ
|
||||||
|
|
||||||
## expect 自动输入密码
|
## expect 自动输入密码
|
||||||
```bash
|
```bash
|
||||||
expect<<END
|
expect<<END
|
||||||
spawn ssh $DEST_HOST "REMOTE_COMMAND"
|
spawn ssh $DEST_HOST "REMOTE_COMMAND"
|
||||||
expect {
|
expect {
|
||||||
"*yes/no*" { send "yes\r"; exp_continue }
|
"*yes/no*" { send "yes\r"; exp_continue }
|
||||||
"*assword*" { send "password\r" }
|
"*assword*" { send "password\r" }
|
||||||
}
|
}
|
||||||
expect eof
|
expect eof
|
||||||
END
|
END
|
||||||
```
|
```
|
||||||
|
|
||||||
## 普通用户(username)免密 sudo
|
## 普通用户(username)免密 sudo
|
||||||
```bash
|
```bash
|
||||||
echo "username ALL = (root) NOPASSWD:ALL" >> /etc/sudoers
|
echo "username ALL = (root) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
# 或
|
# 或
|
||||||
echo "cephdeploy ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/username
|
echo "cephdeploy ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/username
|
||||||
chmod 0400 /etc/sudoers.d/username
|
chmod 0400 /etc/sudoers.d/username
|
||||||
```
|
```
|
||||||
|
|
||||||
## 用户登陆操作记录
|
## 用户登陆操作记录
|
||||||
- 创建日志共存目录
|
- 创建日志共存目录
|
||||||
|
Loading…
x
Reference in New Issue
Block a user