shell 常用命令备忘
2021-03-10 本文已影响0人
后知不觉1
文本处理
#两行合成一行
cat Downloads/asd.txt | sed 'N;s/\n/ /'
#三行合并一行
cat asd.txt | sed 'N;N;s/\n/ /g'
#四行合并一行
cat asd.txt | sed 'N;N;N;s/\n/ /g'
#添加字符串行
cat asd.txt | sed '1i[sf-cluster]'
sed '/asd/casd/' asd.txt #将asd.txt文件中包含asd的行替换为asd
sed '/asd/sasd/' asd.txt #将asd.txt文件中asd字符替换为asd
linux 自动补全
#安装自动补全组件
yum install -y bash-completion
#配置补全命令,这个在ssh 时将hosts 、history 中主机补全
complete -W "$(echo $(cat /etc/hosts | awk '{print $2}'| sed 's/^ssh //')) $(history | sed 's/^[ ]*[0-9]\+[ ]*//' | grep ^ssh | awk '{print $2}')" ssh
linux 管道符中的占位符传递
xargs -i{} bash -c "ps -ef | grep {}"
ansible
# 建立定时任务 每小时重置一下免密
ansible asd-m cron -a "name=\"reset sshd\" job=\"sed -i '/PermitRootLogin/cPermitRootLogin yes' /etc/ssh/sshd_config && systemctl restart sshd\" hour=*/1"
# 删除定时任务
ansible asd-m cron -a 'name="reset sshd" state=absent'
# 修改hostname
ansible $temp_group -m shell -a "cp /etc/hostname /etc/hostnamebak"
ansible $temp_group -m shell -a "echo {{ inventory_hostname }}> /etc/hostname"
ansible $temp_group -m shell -a "hostnamectl set-hostname {{ inventory_hostname }}"
# 通过密码打通免密
ansible $temp_group -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub')}}' path='/root/.ssh/authorized_keys'"
dgraph图库安装
nohup /app/dgraph/dgraph-ratel -port 8050 > ratel.log 2>&1 &
nohup /app/dgraph/dgraph zero --port_offset 100 --my sfmap-vl23325:5180 --replicas 3 > zero.log 2>&1 &
nohup /app/dgraph/dgraph alpha --lru_mb 2048 --port_offset 100 --my sfmap-vl23325:7180 --zero sfmap-vl23325:5180 --whitelist 0.0.0.0/0 > alpha.log 2>&1 &
nohup /app/dgraph/dgraph alpha --lru_mb 2048 --port_offset 100 --my sfmap-vl23326:7180 --zero sfmap-vl23325:5180 --whitelist 0.0.0.0/0 > alpha.log 2>&1 &
nohup /app/dgraph/dgraph alpha --lru_mb 2048 --port_offset 100 --my sfmap-vl23327:7180 --zero sfmap-vl23325:5180 --whitelist 0.0.0.0/0 > alpha.log 2>&1 &
解析配置文件
循环读取文件内容
while read line
do
echo $line
done < mysql.conf
字符串拼接
-
由单引号' '包围的字符串:
任何字符都会原样输出,在其中使用变量是无效的。
字符串中不能出现单引号,即使对单引号进行转义也不行。 -
由双引号" "包围的字符串:
如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
字符串中可以出现双引号,只要它被转义了就行。