You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: circa 2006 - 2012 (forked from .bashrc)
#
# https://github.com/HariSekhon/DevOps-Bash-tools
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/HariSekhon
#
# ============================================================================ #
# S c r e e n
# ============================================================================ #
# quickly open new screen terminal in the same $PWD
alias scbash="screen bash"
sc(){
checkprog screen || return 1
isscreen && { echo "I am already in a screen, aborting"; return 1; }
screen -wipe
local session=main
local detached_screens
detached_screens="$(screen -ls | grep Detached)"
if [ -n "$detached_screens" ] &&
[ "$(wc -l <<< "$detached_screens" | awk '{print $1}')" = 1 ]; then
session="$(awk '{print $1;exit}' <<< "$detached_screens")"
fi
screen -aARRD -S "$session" "$@"
}
screencmd(){
screen -X "$@"
}
screensleep(){
screen "$@"
sleep 0.1
}
alias scnum="screen -X number"
#screen_get_pid(){
# # Mac ps doesn't have --noheaders
# ps -p "${PPID}" -o ppid | tail -n +2 | sed 's/[[:space:]]//g'
#}
#
#screen_get_session_name(){
# local ppid
# ppid="$(screen_get_pid)"
# screen -ls | awk "/^[[:blank:]]$ppid/{print \$1}" | cut -d. -f2
#}
# needs modern version of screen for -Q switch - on Mac you must brew install screen to get recent version, then start new screen
# when installing GNU screen you will lose Mac's screen since /usr/bin/screen uses a different /var/folders/...../.screen directory for screen sessions
screen_renumber_windows(){
local windowlist
windowlist="$(screen -Q windows | grep -Eo '(^|[[:blank:]])[[:digit:]]+')"
i=0
for windownum in $windowlist; do
screen -p "$windownum" -X number "$i"
((i+=1))
done
}
alias screnum=screen_renumber_windows
screenbuf(){
local tmp
tmp="$(mktemp /tmp/screen-exchange.XXXXXX)"
cat > "$tmp"
screen -X readbuf "$tmp"
rm -- "$tmp";
}
alias sb=screenbuf
sh_server_real(){
for x in "$@"; do
echo "sh server real $x | i $x|Weight|Total"
done |
tee /dev/stderr |
screenbuf
echo
}
alias fsr=sh_server_real
alias ssr=sh_server_real
# this idea's is a bust so far...
#function c(){
# screen -t "$@" bash -c ". ~/.bashrc && eval $@"
#}