Files
config/tmux-oneshot.sh

58 lines
1.3 KiB
Bash

#!/bin/bash
# tmux-oneshot.sh
# Run a single command in a tmux session
SESSION=""
ATTACH_SESSION=0
# Hardcoded command and settings (uncomment and modify as needed)
# SESSION="mytest"
# COMMAND="ping google.com"
# ATTACH_SESSION=1
while getopts "t:a" opt; do
case "$opt" in
t) SESSION="$OPTARG" ;;
a) ATTACH_SESSION=1 ;;
\?) echo "Usage: $0 [-t <session_name>] [-a] <command>" >&2
exit 1 ;;
esac
done
shift $((OPTIND-1))
# Use hardcoded command if no arguments provided
if [ $# -eq 0 ]; then
if [ -n "$COMMAND" ]; then
echo "Using hardcoded command: $COMMAND"
else
echo "Error: Command is required" >&2
echo "Usage: $0 [-t <session_name>] [-a] <command>" >&2
exit 1
fi
else
COMMAND="$*"
fi
# Use hardcoded session name, or first word of command if not provided
if [ -z "$SESSION" ]; then
SESSION=$(echo "$COMMAND" | awk '{print $1}')
fi
# Create session if missing
if ! tmux has-session -t $SESSION 2>/dev/null; then
echo "Creating tmux session: $SESSION"
tmux new-session -d -s $SESSION
else
echo "Session $SESSION exists, reusing..."
fi
# Send command to session
echo "Running command: $COMMAND"
tmux send-keys -t $SESSION "$COMMAND" C-m
if [ $ATTACH_SESSION -eq 1 ]; then
echo "Attaching to tmux session: $SESSION"
tmux attach -t $SESSION
fi