mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
187 lines
6.0 KiB
Bash
187 lines
6.0 KiB
Bash
################################################################################
|
|
## ~/.zshrc
|
|
##
|
|
## This file is sourced by all *interactive* zsh shells on startup, including
|
|
## some apparently interactive shells such as scp and rcp that can't tolerate
|
|
## any output.
|
|
## Make sure this doesn't display anything or bad things will happen!
|
|
##
|
|
## It is recommended to make language settings in ~/.zprofile rather than here,
|
|
## since multilingual X sessions would not work properly if LANG is overridden
|
|
## in every subshell.
|
|
################################################################################
|
|
|
|
# Enable this and the last line to debug performance.
|
|
# zmodload zsh/zprof
|
|
|
|
########################################
|
|
# Shell configuration.
|
|
# Sane defaults that could easily be overridden later.
|
|
########################################
|
|
|
|
# If a pattern for filename generation has no matches, print an error instead of
|
|
# leaving it unchanged in the argument list.
|
|
# This also applies to file expansion of an initial '~' or '='.
|
|
setopt no_match
|
|
|
|
# Treat '#' as a comment starter instead of matching patterns.
|
|
setopt interactive_comments
|
|
|
|
# Remind compinstall where it wrote zstyle statements last time.
|
|
# This lets one run compinstall again to update them.
|
|
zstyle ':compinstall' filename ~/.zshrc
|
|
|
|
# Automatically update completions after PATH changes.
|
|
zstyle ':completion:*' rehash true
|
|
|
|
# Enable cache for completions.
|
|
zstyle ':completion:*' use-cache true
|
|
|
|
# Load extensions.
|
|
autoload -Uz bashcompinit compinit promptinit
|
|
|
|
# Enable completions.
|
|
bashcompinit
|
|
compinit
|
|
|
|
# Enable prompt management.
|
|
promptinit
|
|
|
|
# Automatically logout after 60 minutes of inactivity.
|
|
export TMOUT="3600"
|
|
|
|
####################
|
|
# History management.
|
|
####################
|
|
|
|
# The file to save the history into when an interactive shell exits.
|
|
# If unset, the history is not saved.
|
|
: "${HISTFILE:=$HOME/.zsh_history}"
|
|
|
|
# Set the number of lines or commands allowed in the history file
|
|
SAVEHIST=50000
|
|
|
|
# Set the number of lines or commands stored in memory as history list during an
|
|
# ongoing session
|
|
HISTSIZE=100000
|
|
|
|
# Append the session's history list to the history file, rather than replace it.
|
|
# Multiple parallel sessions will all have the new entries from their history
|
|
# lists added to the history file, in the order that they exit. The file will
|
|
# still be periodically re-written to trim it when the number of lines grows 20%
|
|
# beyond the value specified by $SAVEHIST
|
|
setopt append_history
|
|
|
|
# When searching for history entries in the line editor, do not display
|
|
# duplicates of a line previously found
|
|
# setopt hist_find_no_dups
|
|
|
|
# If a new command line being added to the history list duplicates an older one,
|
|
# the older command is removed from the list
|
|
setopt hist_ignore_all_dups
|
|
|
|
# Remove command lines from the history list when the first character on the
|
|
# line is a space, or when one of the expanded aliases contains a leading space.
|
|
# Only normal aliases (not global or suffix aliases) have this behavior. Note
|
|
# that the command lingers in the internal history until the next command is
|
|
# entered before it vanishes, allowing you to briefly reuse or edit the line.
|
|
# If you want to make it vanish right away without entering another command,
|
|
# type a space and press return
|
|
setopt hist_ignore_space
|
|
|
|
# Remove superfluous blanks from each command line being added to the history
|
|
setopt hist_reduce_blanks
|
|
|
|
# Omit older commands duplicating newer ones when writing out the history file
|
|
# setopts hist_save_no_dups
|
|
|
|
# Whenever the user enters a line with history expansion, perform history
|
|
# expansion and reload the line into the editing buffer instead of executing it
|
|
setopt hist_verify
|
|
|
|
########################################
|
|
# Utility aliases and functions.
|
|
#
|
|
# Ordered and grouped by dependencies.
|
|
########################################
|
|
|
|
####################
|
|
# History management.
|
|
####################
|
|
|
|
alias redo='$(history -p !!)'
|
|
alias sedo='sudo $(history -p !!)'
|
|
|
|
########################################
|
|
# Applications settings and shortcuts.
|
|
########################################
|
|
|
|
# Set the default editor.
|
|
export EDITOR="/usr/bin/vim"
|
|
|
|
# Enable colors.
|
|
alias grep='grep --color=always'
|
|
alias ls='ls -G'
|
|
|
|
####################
|
|
# SSH.
|
|
####################
|
|
|
|
alias ssh-load-keys='eval `ssh-agent` && ssh-add'
|
|
|
|
####################
|
|
# Kubernetes.
|
|
####################
|
|
|
|
alias kubectl-current-context='kubectl config current-context'
|
|
|
|
kubectl-decode () { echo "$1" | base64 -d ; }
|
|
kubectl-encode () { echo -n "$1" | base64 ; }
|
|
|
|
kubectl-nodes-with-issues () {
|
|
kubectl get nodes -o jsonpath='{.items[]}' \
|
|
| jq '
|
|
{
|
|
"node": .metadata.name,
|
|
"issues": [
|
|
.status.conditions[] | select(
|
|
.status != "False" and
|
|
.type != "Ready"
|
|
)
|
|
]
|
|
} | select( .issues|length > 0 )
|
|
' -
|
|
}
|
|
alias kubectl-nodes-with-issues-in-yaml='kubectl-nodes-with-issues | yq -y "." -'
|
|
|
|
# Reassign the expected behaviour to the delete, end and home keys.
|
|
bindkey "^[[3~" delete-char
|
|
bindkey "^[[F" end-of-line
|
|
bindkey "^[[H" beginning-of-line
|
|
|
|
########################################
|
|
# Configuration freeze.
|
|
# Finalize customizations and try to set the current configuration immutable.
|
|
########################################
|
|
|
|
# Clean up PATHs.
|
|
# Remove non-existing directories, follow symlinks and clean up remaining paths.
|
|
if command which realpath >/dev/null 2>&1
|
|
then
|
|
[[ -n "${fpath[@]}" ]] && fpath=( $(realpath -q ${fpath[@]}) )
|
|
[[ -n "${infopath[@]}" ]] && infopath=( $(realpath -q ${infopath[@]}) )
|
|
[[ -n "${manpath[@]}" ]] && manpath=( $(realpath -q ${manpath[@]}) )
|
|
[[ -n "${path[@]}" ]] && path=( $(realpath -q ${path[@]}) )
|
|
fi
|
|
|
|
# Freeze (-f) or unfreeze (-u) the tty. When the tty is frozen, no changes made
|
|
# to the tty settings by external programs will be honored by the shell, except
|
|
# for changes in the size of the screen; the shell will simply reset the
|
|
# settings to their previous values as soon as each command exits or is
|
|
# suspended.
|
|
# Freezing the tty only causes future changes to the state to be blocked.
|
|
ttyctl -f
|
|
|
|
# Enable this and the module inclusion on the first line to debug performance.
|
|
# zprof
|