Bash 快速提示
猛击
Git
Kubernetes
这最初发布在我的博客上,其中包含一些照片示例。
这里收集了一些 Bash 别名/函数以及 Git 别名,它们让我的工作更加轻松,也让我少了不少键盘敲击。希望你能在这里找到一些有用的东西,也欢迎分享你的心得!
猛击
bash 的别名和函数(虽然严格来说我使用的是 zsh)。有些是我自己做的,有些是从网上收集的。如有注明来源,请注明出处。
为了便于组织,我将别名.zshrc
和大多数函数放在一个单独的文件 (callked) 中,.zsh_functions
该文件包含在我的 目录顶部附近.zshrc
。有些函数位于路径中可用的单独 bash 文件中,我正在将大多数函数移到那里,以减少 zsh 启动时需要加载到内存中的函数数量。
当前IP
获取您当前的外部 IP 地址。
alias ip=`dig +short myip.opendns.com @resolver1.opendns.com`
用法:ip
图片来源:Linux 培训学院
创建目录并转到那里
非常简单,这会创建一个新目录并执行 cd 进入其中,从而保存命令并节省重新输入的时间。
mkc () {
mkdir -p "$@" && cd "$@"
}
用法:mkc [Directory Name]
Git
Git Checkout 搜索
此功能会fzf
为您的 git 分支打开一个模糊搜索提示,让您能够通过模糊搜索找到所需的分支。由于zsh
的别名git checkout
是gco
,因此添加s
for “search” 对我来说很有意义。
注意:这需要fzf
安装并位于您的路径中。
gcos () {
git fetch
local branches branch
branches=$(git branch -a) &&
branch=$(echo "$branches" | fzf +s +m -e) &&
git checkout $(echo "$branch" | sed "s:.* remotes/origin/::" | sed "s:.* ::")
}
用法:输入gcos
,按回车键,然后开始输入您的分支名称
图片来源:Christoffer Skeppstedt 在Coderwall上的帖子
Branch 已完成
在大量使用拉取请求/合并请求的项目中,我发现自己在完成后会不断清理旧分支。这个 git 别名会检出master
并删除你刚刚使用的分支,但前提是它已经被合并到某个地方。所以,如果它被推送到远程分支或合并到另一个本地分支,它就会被删除。
# in .gitconfig
[alias]
done = "!f() { git checkout master && git branch -d @{-1}; }; f"
使用方法:输入git done
,按回车键,然后传输到 master,同时您的旧分支将被消灭(仅从您的机器)
推送新分支
在同样的项目中,最终会有许多本地创建的分支需要推送到远程。这个 bash 别名会将你当前的分支推送到origin
,从而创建一个与本地分支同名的分支。(我之所以使用gpu
,是因为gp
是 的 zsh 别名git push
。所以我脑子里想到的是“git push upload”。)
alias gpu='git push -u origin $(git rev-parse --abbrev-ref HEAD)'
用法:gpu
漂亮的 Git 日志树
以树状格式显示 git log。
alias gl='git log --all --graph --decorate --oneline --simplify-by-decoration'
用法:gl
来源:几年前 Twitter 上的某人。
Kubernetes
在 Pod 中执行命令
在我的一些工作中,我会创建一个 Kubernetes 集群,其中包含一些调试 Pod,供开发人员连接。当我知道某些部分会保持一致(例如,可能存在“debug”这个词)时,我却不得不使用kubectl get pods
Pod 名称来查找当前的 Pod 名称,这让我很恼火。
该函数的使用方式如下:
kube_exec [STRING IN POD NAME] [CONTAINER IN POD] [COMMAND]
例如,如果我们有一个名为 的 Kubernetes pod,app-debug-pod-12345
其中有一个名为 的容器rails
,则该命令kube_exec debug rails bash
将在第一个包含字符串 的 pod中运行的容器bash
中启动一个会话。rails
debug
kube_exec () {
exec_pod=`kubectl get pods --field-selector 'status.phase!=Failed' | grep ${1} | cut -d" " -f 1 | head -1`
echo "Executing ${2} in ${exec_pod} at `kubectl config view -o=jsonpath='{.current-context}'`"
echo ""
kubectl exec $exec_pod -c $2 -it $3
unset exec_pod
}
用法:kube_exec [POD NAME] [CONTAINER] [COMMAND]