shell-scripts: Use [[ instead of [ where possible
Replace all occurrences of [ with [[ in bash and zsh scripts and configs. Performance wise it makes sense to use the builtin instead of calling an external command also when from a functionality stand point `test` would suffice.
This commit is contained in:
@@ -24,7 +24,7 @@ if ! pgrep -ax polybar >/dev/null 2>&1; then
|
||||
primary="$(xrandr -q | grep primary | cut -d' ' -f1)"
|
||||
for m in $(polybar --list-monitors | cut -d':' -f1); do
|
||||
export TRAY_POS=none
|
||||
[ "$m" != "$primary" ] || export TRAY_POS=right
|
||||
[[ "$m" != "$primary" ]] || export TRAY_POS=right
|
||||
export MONITOR="$m"
|
||||
polybar --reload -c "$BASE_DIR/config" main &
|
||||
done
|
||||
|
||||
@@ -17,13 +17,13 @@ declare -a ramp
|
||||
ramp=( )
|
||||
|
||||
# display in red when under $low and no charger is connected
|
||||
[ "$bat" -gt "$low" ] || [ "$ac" -eq 1 ] || color="$red"
|
||||
[[ "$bat" -gt "$low" || "$ac" -eq 1 ]] || color="$red"
|
||||
# display in green when over $full and a charger is connected
|
||||
[ "$bat" -lt "$full" ] || [ "$ac" -eq 0 ] || color="$green"
|
||||
[[ "$bat" -lt "$full" || "$ac" -eq 0 ]] || color="$green"
|
||||
|
||||
let "icon_index = $bat / (${#ramp[@]} - 1)"
|
||||
[ $icon_index -lt ${#ramp[@]} ] || icond_index=10
|
||||
[[ $icon_index -lt ${#ramp[@]} ]] || icond_index=10
|
||||
icon="${ramp[$icon_index]}"
|
||||
[ "$ac" -eq 0 ] || charge=""
|
||||
[[ "$ac" -eq 0 ]] || charge=""
|
||||
|
||||
echo "${color}${icon}${charge} ${bat}%"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
bluetooth_print() {
|
||||
bluetoothctl | while read -r; do
|
||||
if [ "$(systemctl is-active "bluetooth.service")" = "active" ]; then
|
||||
if [[ "$(systemctl is-active "bluetooth.service")" = "active" ]]; then
|
||||
|
||||
devices_paired=$(echo paired-devices | bluetoothctl | sed -n '/paired-devices/,$p' | grep Device | cut -d ' ' -f 2)
|
||||
counter=0
|
||||
@@ -14,7 +14,7 @@ bluetooth_print() {
|
||||
if echo "$device_info" | grep -q "Connected: yes"; then
|
||||
device_alias=$(echo "$device_info" | grep "Alias" | cut -d ' ' -f 2-)
|
||||
|
||||
if [ $counter -gt 0 ]; then
|
||||
if [[ $counter -gt 0 ]]; then
|
||||
printf ", %s" "$device_alias"
|
||||
else
|
||||
printf ": %s" "$device_alias"
|
||||
|
||||
@@ -27,7 +27,7 @@ function scheduled_suspend {
|
||||
|
||||
# make sure the input was a valid number
|
||||
# side effect: 0 minutes is not possible
|
||||
[ "$min" -ne 0 ] || exit 1
|
||||
[[ "$min" -ne 0 ]] || exit 1
|
||||
|
||||
notify-send "suspend in" "$min minutes"
|
||||
sleep $((min*60)) && systemctl suspend
|
||||
@@ -37,15 +37,15 @@ function scheduled_suspend {
|
||||
# Note: bash does not keep the order of the keys thus they get sorted
|
||||
chosen="$(printf '%s\n' "${!entries[@]}" | sort | rofi "${rofi_args[@]}" "power: ")"
|
||||
# exit if nothing was selected
|
||||
[ -n "$chosen" ] || exit 1
|
||||
[[ -n "$chosen" ]] || exit 1
|
||||
# handle scheduled suspend different
|
||||
[ "$chosen" != "suspend (scheduled)" ] || { ${entries[$chosen]}; exit $?; }
|
||||
[[ "$chosen" != "suspend (scheduled)" ]] || { ${entries[$chosen]}; exit $?; }
|
||||
|
||||
# Confirm choice
|
||||
yesNo="$(echo -e "yes\nno" | rofi "${rofi_args[@]}" "Are you sure you want to ${chosen}? ")"
|
||||
|
||||
# Exit if "No"
|
||||
[ "$yesNo" == "yes" ] || exit 1
|
||||
[[ "$yesNo" == "yes" ]] || exit 1
|
||||
|
||||
# Execute
|
||||
${entries[$chosen]}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
## Created: 2018-11-23
|
||||
|
||||
# Set terminals title if this is a scratchpad-terminal
|
||||
[ -z "$SCRATCHPAD_TERMINAL" ] || printf "\x1b\x5d\x30\x3bscratchpad-terminal\x07"
|
||||
[[ -z "$SCRATCHPAD_TERMINAL" ]] || printf "\x1b\x5d\x30\x3bscratchpad-terminal\x07"
|
||||
|
||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc.
|
||||
# Initialization code that may require console input (password prompts, [y/n]
|
||||
@@ -16,7 +16,7 @@ ZSH_CONF="$ZDOTDIR/plugins"
|
||||
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L35
|
||||
comp-conf() {
|
||||
emulate -L zsh
|
||||
[ ! "$1.zwc" -nt "$1" ] && [ -w "${1:h}" ] || return 0
|
||||
[[ ! "$1.zwc" -nt "$1" && -w "${1:h}" ]] || return 0
|
||||
zmodload -F zsh/files b:zf_mv b:zf_rm
|
||||
local tmp="$1.tmp.$$.zwc"
|
||||
{
|
||||
@@ -29,7 +29,7 @@ comp-conf() {
|
||||
# https://github.com/romkatv/dotfiles-public/blob/7e49fc4fb71d/.zshrc#L47
|
||||
comp-source() {
|
||||
emulate -L zsh
|
||||
[ -e "$1" ] && comp-conf "$1" && source -- "$1"
|
||||
[[ -e "$1" ]] && comp-conf "$1" && source -- "$1"
|
||||
}
|
||||
|
||||
## set zshoptions
|
||||
@@ -70,21 +70,21 @@ autoload -U select-word-style && select-word-style bash
|
||||
## Setup the prompt
|
||||
# use bright version of colors when printing bold
|
||||
if command -v dircolors >/dev/null 2>&1; then
|
||||
if [ -e "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]; then
|
||||
if [[ -e "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors" ]]; then
|
||||
eval "$(dircolors -b "${XDG_CONFIG_HOME:-$HOME/.config}/dircolors/dircolors")"
|
||||
else
|
||||
eval "$(dircolors -b)"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]; then
|
||||
if [[ -e "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme" ]]; then
|
||||
comp-source "$ZSH_CONF/powerlevel10k/powerlevel10k.zsh-theme"
|
||||
# To customize prompt, run `p10k configure` or edit $ZSH_CONF/p10k.zsh-theme.
|
||||
comp-source "$ZSH_CONF/p10k.zsh-theme"
|
||||
fi
|
||||
|
||||
## Setup zsh completion system
|
||||
[ ! -d "$ZSH_CONF/completion" ] || fpath=("$ZSH_CONF/completion" $fpath)
|
||||
[[ ! -d "$ZSH_CONF/completion" ]] || fpath=("$ZSH_CONF/completion" $fpath)
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit -d "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompdump-$ZSH_VERSION"
|
||||
@@ -123,13 +123,13 @@ comp-source "$ZSH_CONF/fzf-tab/fzf-tab.plugin.zsh"
|
||||
autoload edit-command-line; zle -N edit-command-line
|
||||
! alias run-help >/dev/null 2>&1 || unalias run-help
|
||||
autoload run-help run-help-git zmv
|
||||
if [ -d "$ZDOTDIR/autoload" ]; then
|
||||
if [[ -d "$ZDOTDIR/autoload" ]]; then
|
||||
fpath=("$ZDOTDIR/autoload" $fpath)
|
||||
autoload -Uz -- "" "${fpath[1]}"/[^_.]*(.xN:t)
|
||||
fi
|
||||
! command -v direnv >/dev/null 2>&1 || eval "$(direnv hook zsh)"
|
||||
# stderred
|
||||
if [ -e "$ZSH_CONF/stderred/build/libstderred.so" ]; then
|
||||
if [[ -e "$ZSH_CONF/stderred/build/libstderred.so" ]]; then
|
||||
export LD_PRELOAD="$ZSH_CONF/stderred/build/libstderred.so${LD_PRELOAD:+:$LD_PRELOAD}"
|
||||
export STDERRED_ESC_CODE="$(tput bold && tput setaf 1)"
|
||||
export STDERRED_BLACKLIST="^(git|curl|wget|swipl)$"
|
||||
@@ -143,7 +143,7 @@ comp-source "$ZSH_CONF/completion.zsh"
|
||||
# async_init
|
||||
### syntax-highlight > keys
|
||||
# syntax highlighting
|
||||
if [ -e "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]; then
|
||||
if [[ -e "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" ]]; then
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
|
||||
comp-source "$ZSH_CONF/zsh-syntax-highlighting.zsh-theme"
|
||||
fi
|
||||
@@ -164,7 +164,7 @@ elif command -v nano >/dev/null 2>&1; then
|
||||
fi
|
||||
|
||||
# `sudo nano` won't work without this (?)
|
||||
if [ "$TERM" = "xterm-kitty" ]; then
|
||||
if [[ "$TERM" = "xterm-kitty" ]]; then
|
||||
export TERM=xterm-256color
|
||||
fi
|
||||
|
||||
@@ -198,5 +198,5 @@ zle_highlight=('paste:none')
|
||||
## History
|
||||
HISTSIZE=1000000
|
||||
SAVEHIST=1000000
|
||||
[ -d "${XDG_DATA_HOME:-$HOME/.local/share}/zsh" ] || mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/zsh"
|
||||
[[ -d "${XDG_DATA_HOME:-$HOME/.local/share}/zsh" ]] || mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/zsh"
|
||||
HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/.zsh_history"
|
||||
|
||||
@@ -12,7 +12,7 @@ if (( ! idx )); then
|
||||
fi
|
||||
|
||||
local style="${@[$idx]#-style}" prefix=""
|
||||
if [ -n "$style" ]; then
|
||||
if [[ -n "$style" ]]; then
|
||||
# Flag was given in form -style=<style>
|
||||
style="${style#=}"
|
||||
prefix="-style="
|
||||
@@ -21,7 +21,7 @@ else
|
||||
(( idx++ ))
|
||||
style="${@[$idx]}"
|
||||
fi
|
||||
if [ ! -e "$style" ]; then
|
||||
if [[ ! -e "$style" ]]; then
|
||||
# Argument is not a file and thus probably a valid style string that can
|
||||
# be passes to clang-format
|
||||
command clang-format "$@"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
local toplevel="$(git rev-parse --show-toplevel)" || return
|
||||
|
||||
# Exit if no arguements were given
|
||||
[ $# -gt 0 ] || return
|
||||
[[ $# -gt 0 ]] || return
|
||||
|
||||
local separator=""
|
||||
for arg in "$@"; do
|
||||
@@ -16,11 +16,11 @@ for arg in "$@"; do
|
||||
# argument relative from git toplevel
|
||||
local arg_from_git="${${arg:A}##$toplevel/}"
|
||||
# argument has to exist
|
||||
[ -e "$arg" ] || continue
|
||||
[[ -e "$arg" ]] || continue
|
||||
# argument has to exist in repo
|
||||
[ -e "$toplevel/$arg_from_git" ] || continue
|
||||
[[ -e "$toplevel/$arg_from_git" ]] || continue
|
||||
# has to be a submodule
|
||||
[ -e "$toplevel/.git/modules/$arg_from_git" ] || continue
|
||||
[[ -e "$toplevel/.git/modules/$arg_from_git" ]] || continue
|
||||
|
||||
git submodule deinit -f "$arg"
|
||||
echo "command rm -rf \"$toplevel/.git/modules/$arg_from_git\""
|
||||
|
||||
@@ -52,7 +52,7 @@ local -a fzf_args=(
|
||||
# Execute git show on the commit as preview.
|
||||
"--preview" "
|
||||
out=\"\$(echo {} | sed -Ee \"$del_ansi\" -e \"$commit_hash\")\"
|
||||
if [ \"\$out\" ]; then
|
||||
if [[ \"\$out\" ]]; then
|
||||
git show \"${(j:%n:)format}\" \"$date\" $colors \"\$out\" \
|
||||
| diff-so-fancy
|
||||
fi
|
||||
|
||||
@@ -20,9 +20,9 @@ builtin local -a dirs files
|
||||
# All other arguments are kept.
|
||||
for arg in "$@"; do
|
||||
shift
|
||||
if [ -d "$arg" ]; then
|
||||
if [[ -d "$arg" ]]; then
|
||||
dirs+="$arg"
|
||||
elif [ -e "$arg" ]; then
|
||||
elif [[ -e "$arg" ]]; then
|
||||
files+="$arg"
|
||||
else
|
||||
set -- "$@" "$arg"
|
||||
@@ -36,7 +36,7 @@ fi
|
||||
|
||||
# Do not separate files and directories if -d flag was specified.
|
||||
while getopts d flag 2>/dev/null; do
|
||||
if [ "$flag" = "d" ]; then
|
||||
if [[ "$flag" = "d" ]]; then
|
||||
command ls "$@" -- "${files[@]}" "${dirs[@]}"
|
||||
return
|
||||
fi
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
&& sudo apt upgrade -y \
|
||||
&& sudo apt autoremove -y
|
||||
|
||||
[ ! -e /var/run/reboot-required ] \
|
||||
[[ ! -e /var/run/reboot-required ]] \
|
||||
|| printf "\n\nSystem restart required.\n"
|
||||
'
|
||||
alias pdf2t{e,}xt='pdftotext'
|
||||
|
||||
@@ -25,10 +25,10 @@ function mkcd () {
|
||||
# Create directory
|
||||
mkdir "$@"
|
||||
# shift arguments if mkdir options were used
|
||||
while [ $# -gt 1 ]; do
|
||||
while [[ $# -gt 1 ]]; do
|
||||
shift
|
||||
done
|
||||
if [ -d "$1" ]; then
|
||||
if [[ -d "$1" ]]; then
|
||||
cd "$1"
|
||||
pwd
|
||||
fi
|
||||
@@ -36,7 +36,7 @@ function mkcd () {
|
||||
|
||||
## Send a message over telegram by using the -e flag
|
||||
function msg() {
|
||||
if [ $# -ge 2 ]; then
|
||||
if [[ $# -ge 2 ]]; then
|
||||
telegram-cli -W -e "msg $*" | grep -E "${${*/ /.*}//_/ }"
|
||||
# | grep -E "$(echo "$*" | sed 's/ /.*/; s/_/ /g')"
|
||||
else
|
||||
@@ -47,7 +47,7 @@ function msg() {
|
||||
## Execute tg -e command but cuts of the uninteresting parts
|
||||
function tg() {
|
||||
tg="telegram-cli"
|
||||
if [ "$1" = "-e" ]; then
|
||||
if [[ "$1" = "-e" ]]; then
|
||||
shift
|
||||
$tg -N -W -e "$@" | tail -n +9 | head -n -2
|
||||
else
|
||||
@@ -67,7 +67,7 @@ function qr() {
|
||||
## Edit config file
|
||||
function conf() {
|
||||
local CONF_EDITOR
|
||||
if [ -n "$EDITOR" ]; then
|
||||
if [[ -n "$EDITOR" ]]; then
|
||||
CONF_EDITOR="$EDITOR"
|
||||
elif command -v vim &>/dev/null; then
|
||||
CONF_EDITOR=vim
|
||||
@@ -88,7 +88,7 @@ function conf() {
|
||||
shift $(( $OPTIND - 1 ))
|
||||
|
||||
# conf needs an argument
|
||||
if [ $# -eq 0 ]; then
|
||||
if [[ $# -eq 0 ]]; then
|
||||
printf "\033[1;31mPlease specify a config.\n\033[0m" >&2
|
||||
return 1
|
||||
fi
|
||||
@@ -100,7 +100,7 @@ function conf() {
|
||||
fi
|
||||
|
||||
# If specific name is given, open file.
|
||||
if [ $# -gt 1 ]; then
|
||||
if [[ $# -gt 1 ]]; then
|
||||
"$CONF_EDITOR" "$CONF_DIR/$2"
|
||||
return
|
||||
fi
|
||||
@@ -121,10 +121,10 @@ function conf() {
|
||||
|
||||
# check if config file exists
|
||||
for config in $CONF_PATTERNS; do
|
||||
if [ -e "$CONF_DIR/$config" ]; then
|
||||
if [[ -e "$CONF_DIR/$config" ]]; then
|
||||
$CONF_EDITOR "$CONF_DIR/$config"
|
||||
return 0
|
||||
elif [ -e "$CONF_DIR/.$config" ]; then
|
||||
elif [[ -e "$CONF_DIR/.$config" ]]; then
|
||||
$CONF_EDITOR "$CONF_DIR/.$config"
|
||||
return 0
|
||||
fi
|
||||
@@ -132,10 +132,10 @@ function conf() {
|
||||
|
||||
# if no config was found in a location other than HOME, look again in HOME.
|
||||
# (For cases like default vim with ~/.vim/ and ~/.vimrc)
|
||||
if [ "$CONF_DIR" != "$HOME" ];then
|
||||
if [[ "$CONF_DIR" != "$HOME" ]];then
|
||||
for config in $CONF_PATTERNS; do
|
||||
# Only look for hidden files
|
||||
if [ -e "$HOME/.$config" ]; then
|
||||
if [[ -e "$HOME/.$config" ]]; then
|
||||
$CONF_EDITOR "$HOME/.$config"
|
||||
return 0
|
||||
fi
|
||||
@@ -149,7 +149,7 @@ function conf() {
|
||||
## Change into config dir
|
||||
function c() {
|
||||
CONF_DIR="$(_get_config_dir $*)"
|
||||
if [ $? -eq 0 ]; then
|
||||
if [[ $? -eq 0 ]]; then
|
||||
cd "$CONF_DIR"
|
||||
else
|
||||
printf "$CONF_DIR" >&2
|
||||
@@ -158,14 +158,14 @@ function c() {
|
||||
}
|
||||
## Get config directory
|
||||
function _get_config_dir() {
|
||||
if [ $# -gt 1 ]; then
|
||||
if [[ $# -gt 1 ]]; then
|
||||
printf "\033[1;31mPlease specify one config.\n\033[0m" >&2
|
||||
return 1
|
||||
elif [ $# -eq 0 ]; then
|
||||
elif [[ $# -eq 0 ]]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||
elif [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/$1" ]; then
|
||||
elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/$1" ]]; then
|
||||
echo "${XDG_CONFIG_HOME:-$HOME/.config}/$1"
|
||||
elif [ -d "$HOME/.$1" ]; then
|
||||
elif [[ -d "$HOME/.$1" ]]; then
|
||||
echo "$HOME/.$1"
|
||||
else
|
||||
printf "\033[1;31mCould not find config home.\n\033[0m" >&2
|
||||
@@ -235,20 +235,20 @@ function resolve() {
|
||||
echo "$THIS_COMMAND$THIS_ARGUMENTS"
|
||||
fi
|
||||
THIS_COMMAND="$(which $THIS_COMMAND)"
|
||||
if [ $? -ne 0 ]; then
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "${THIS_COMMAND%% *} not found." >&2
|
||||
return 1
|
||||
fi
|
||||
if (( $VERBOSE_MODE )); then
|
||||
echo -n "$THIS_COMMAND"
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
if [[ "${NEXT_STEP:0:1}" != '/' ]]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
while [[ "$(file -bh $THIS_COMMAND)" =~ "^symbolic link to" && "$NEXT_STEP" != "$THIS_COMMAND" ]]; do
|
||||
THIS_COMMAND=$NEXT_STEP
|
||||
NEXT_STEP="$(file -bh $THIS_COMMAND | cut -d' ' -f4-)"
|
||||
if [ "${NEXT_STEP:0:1}" != '/' ]; then
|
||||
if [[ "${NEXT_STEP:0:1}" != '/' ]]; then
|
||||
NEXT_STEP="${THIS_COMMAND%/*}/$NEXT_STEP"
|
||||
fi
|
||||
|
||||
@@ -268,7 +268,7 @@ function resolve() {
|
||||
|
||||
## Grep a keyword at the beginning of a line (ignoring whitespace) in a man page
|
||||
function mangrep() {
|
||||
if [ $# -lt 2 ]; then
|
||||
if [[ $# -lt 2 ]]; then
|
||||
printf "usage: mangrep <man page> <pattern> [<man flags>]\n" >&2
|
||||
printf "example: mangrep bash \"(declare|typeset)\"\n" >&2
|
||||
return 1
|
||||
@@ -279,8 +279,8 @@ function mangrep() {
|
||||
}
|
||||
|
||||
safe-remove() {
|
||||
[ $# -gt 0 ] || return 1
|
||||
[ -e "$1" ] || return 1
|
||||
[[ $# -gt 0 ]] || return 1
|
||||
[[ -e "$1" ]] || return 1
|
||||
|
||||
sync
|
||||
if ! udisksctl unmount -b "$1"; then
|
||||
|
||||
@@ -69,7 +69,7 @@ zle -N _expandDots
|
||||
bindkey . _expandDots
|
||||
|
||||
function ls-on-enter {
|
||||
if [ -z "$BUFFER" ]; then
|
||||
if [[ -z "$BUFFER" ]]; then
|
||||
BUFFER=ls
|
||||
zle accept-line
|
||||
else
|
||||
@@ -85,7 +85,7 @@ ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(ls-on-enter)
|
||||
# "Scroll" through history if buffer was empty but use it as query for fzf over
|
||||
# command line history if not (similar to substring-search but with fzf)
|
||||
function fzf-hist-up {
|
||||
if [ -z "$BUFFER" ] || [ "$FZF_HIST_WENT_UP" -eq 1 ]; then
|
||||
if [[ -z "$BUFFER" || "$FZF_HIST_WENT_UP" -eq 1 ]]; then
|
||||
zle up-line-or-history
|
||||
FZF_HIST_WENT_UP=1
|
||||
else
|
||||
@@ -95,7 +95,7 @@ function fzf-hist-up {
|
||||
}
|
||||
function fzf-hist-down {
|
||||
zle down-line-or-history
|
||||
[ -n "$BUFFER" ] || FZF_HIST_WENT_UP=
|
||||
[[ -n "$BUFFER" ]] || FZF_HIST_WENT_UP=
|
||||
}
|
||||
zle -N fzf-hist-up
|
||||
zle -N fzf-hist-down
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
## format of zshs extended history.
|
||||
## An automatic backup is created before deleting that can be used for recovery.
|
||||
|
||||
[ $# -eq 1 ] || { echo "Specify history file" >&2; exit 1; }
|
||||
[ -e "$1" ] || { echo "File does not exist" >&2; exit 1; }
|
||||
[ "$(stat -c '%a' "$1")" = "600" ] || { echo "File does not look like a history file" >&2; exit 1; }
|
||||
[[ $# -eq 1 ]] || { echo "Specify history file" >&2; exit 1; }
|
||||
[[ -e "$1" ]] || { echo "File does not exist" >&2; exit 1; }
|
||||
[[ "$(stat -c '%a' "$1")" = "600" ]] || { echo "File does not look like a history file" >&2; exit 1; }
|
||||
|
||||
# Sort the commands per number of occurrences
|
||||
most_used="$(\
|
||||
@@ -42,11 +42,11 @@ else
|
||||
echo
|
||||
fi
|
||||
|
||||
[ "${#commands}" -gt 0 ] || exit 0
|
||||
[[ "${#commands}" -gt 0 ]] || exit 0
|
||||
printf '%s\n' "${commands[@]}" | column -x
|
||||
echo "Please confirm the deletion of these commands in $1 ('yes')"
|
||||
read yn
|
||||
[ "$yn" = "yes" ] || exit 1
|
||||
[[ "$yn" = "yes" ]] || exit 1
|
||||
|
||||
tempd="$(mktemp -d)"
|
||||
cp "$1" "$tempd/$(basename "$1")"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
[ $# -eq 1 ] || { echo "Specify what to do" >&2; exit 1; }
|
||||
[[ $# -eq 1 ]] || { echo "Specify what to do" >&2; exit 1; }
|
||||
|
||||
case "$1" in
|
||||
"--init") INIT=1;;
|
||||
|
||||
Reference in New Issue
Block a user