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.
93 lines
2.5 KiB
Bash
93 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/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
|
|
# ============================================================================ #
|
|
|
|
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 $@"
|
|
#}
|