B

Bash 快速技巧 Bash Git Kubernetes

2025-06-09

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`
Enter fullscreen mode Exit fullscreen mode

用法:ip

图片来源:Linux 培训学院

创建目录并转到那里

非常简单,这会创建一个新目录并执行 cd 进入其中,从而保存命令并节省重新输入的时间。

mkc () {
  mkdir -p "$@" && cd "$@"
}
Enter fullscreen mode Exit fullscreen mode

用法:mkc [Directory Name]

Git

Git Checkout 搜索

此功能会fzf为您的 git 分支打开一个模糊搜索提示,让您能够通过模糊搜索找到所需的分支。由于zsh的别名git checkoutgco,因此添加sfor “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:.* ::")
}
Enter fullscreen mode Exit fullscreen mode

用法:输入gcos,按回车键,然后开始输入您的分支名称

图片来源:Christoffer Skeppstedt 在Coderwall上的帖子

Branch 已完成

在大量使用拉取请求/合并请求的项目中,我发现自己在完成后会不断清理旧分支。这个 git 别名会检出master并删除你刚刚使用的分支,但前提是它已经被合并到某个地方。所以,如果它被推送到远程分支或合并到另一个本地分支,它就会被删除。

# in .gitconfig
[alias]
  done = "!f() { git checkout master && git branch -d @{-1}; }; f"
Enter fullscreen mode Exit fullscreen mode

使用方法:输入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)'
Enter fullscreen mode Exit fullscreen mode

用法:gpu

漂亮的 Git 日志树

以树状格式显示 git log。

alias gl='git log --all --graph --decorate --oneline --simplify-by-decoration'
Enter fullscreen mode Exit fullscreen mode

用法:gl

来源:几年前 Twitter 上的某人。

Kubernetes

在 Pod 中执行命令

在我的一些工作中,我会创建一个 Kubernetes 集群,其中包含一些调试 Pod,供开发人员连接。当我知道某些部分会保持一致(例如,可能存在“debug”这个词)时,我却不得不使用kubectl get podsPod 名称来查找当前的 Pod 名称,这让我很恼火。

该函数的使用方式如下:

kube_exec [STRING IN POD NAME] [CONTAINER IN POD] [COMMAND]
Enter fullscreen mode Exit fullscreen mode

例如,如果我们有一个名为 的 Kubernetes pod,app-debug-pod-12345其中有一个名为 的容器rails,则该命令kube_exec debug rails bash将在第一个包含字符串 的 pod中运行的容器bash中启动一个会话railsdebug

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
}
Enter fullscreen mode Exit fullscreen mode

用法:kube_exec [POD NAME] [CONTAINER] [COMMAND]

鏂囩珷鏉ユ簮锛�https://dev.to/jwkicklighter/bash-quick-tips-1o1k
PREV
如何修复 React 内存泄漏警告
NEXT
为什么我总是推荐 Arch Linux Mac mini 6.2