一些零散笔记
alpine
修改镜像(阿里云)
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
telnet不是通过 apk add telnet 安装,而是需要安装busybox-extras
$ apk add busybox-extras
$ busybox-extras telnet xxx xx
kubectl自动补全与别名
$ echo "alias k='sudo kubectl'" >> ~/.bashrc
$ echo "source <(sudo kubectl completion bash | sed 's/kubectl/k/g')" >> ~/.bashrc
$ source ~/.bashrc
配置docker的镜像加速
$ vi /etc/docker/daemon.json
//添加以下内容
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
RUN指令内容失效
Dockerfile VOLUME的目录,RUN命令操作该目录无效
CentOS7 yum源
阿里云
cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo_bak && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epel源
yum -y install epel-release
最后 yum clean all && yum makecache
Git颜色设置
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
linux
sed多次替换
sed -i 's/aaa/AAA/g;s/bbb/BBB/;s/ccc/CCC/' file.txt
curl输出后换行
echo '-w "\n"' >> ~/.curlrc
后台运行命令
nohup command >file 2>&1 &
命令解释:
- 最后的&作用是将命令在后台运行,不占用控制台
- 但是当关闭终端时,命令会终止,nohup可以使之继续运行(no hang up)
>
表示重定向,>file
表示将标准输出(默认)重定向到文件file
中,也就是1>file
。2>&1
将标准错误重定向到标准输出(0:键盘输入,1:标准输出,2:错误输出),其中&1
中的&
表示1
是一个描述符,而不是普通文件。
何2>&1要写在后面?
- command > file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。 - command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。
du结果排序
du -h --max-depth=2|sort -hr
两个文件的交集与差集计算
# 交集
sort a.txt b.txt | uniq -d
# 并集
sort a.txt b.txt | uniq
# 差集
# a.txt - b.txt:
sort a.txt b.txt b.txt | uniq -u
# b.txt - a.txt:
sort b.txt a.txt a.txt | uniq -u
tar批量解压文件
ls *.tar.gz|xargs -n1 tar -xzf
批量ssh认证
sshpass -f ~/.ssh/passfile ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no xxx@yyy.com
kubectl多集群配置及命令补全
kubectl默认读取~/.kube/config
的内容连接kubernetes集群,别名及命令补全可见官网,这里给kubectl定义了别名k
。
source <(kubectl completion zsh)
echo 'alias k=kubectl' >>~/.zshrc
echo 'complete -F __start_kubectl k' >>~/.zshrc
假如需要连接另一个名为foo的集群时(对应config为~/.kube/fooconfig),可以使用k --kubeconfig ~/.kube/fooconfig
或者KUBECONFIG=~/.kube/fooconfig k
。
但是这样不太方便,就需要自己再定义一个别名kf
并配置命令补全。
执行kubectl completion zsh > ~/.kube/kubectl.complete
保存补全shell
vim ~/.kube/kubectl.complete
复制__start_kubectl
整个函数并命名为__start_kubectl_foo
然后在函数体的第一行添加export KUBECONFIG=~/.kube/fooconfig
即可。
上代码:
__start_kubectl()
{
#函数体
}
#复制自__start_kubectl
__start_kubectl_foo()
{
#只额外添加这一行就可以了
export KUBECONFIG=~/.kube/fooconfig
#函数体
}
下一步是要更改.zshrc。注意需要注释掉最开始添加的source <(kubectl completion zsh)
,最终代码如下
# 被注释
# source <(kubectl completion zsh)
# 加载修改后的补全脚本
source ~/.kube/kubectl.complete
# 默认集群的别名配置和自动补全
alias k='kubectl'
complete -F __start_kubectl k
# foo集群的别名配置和自动补全
function kf (){
KUBECONFIG=~/.kube/fooconfig kubectl "$@"
}
complete -F __start_kubectl_foo kb