#!/bin/bash # tmux-oneshot.sh # Run a single command in a tmux session # Hardcoded command and settings (uncomment and modify as needed) # SESSION="mytest" # COMMAND="ping google.com" # ATTACH_SESSION=1 SESSION="" ATTACH_SESSION=0 while getopts "t:a" opt; do case "$opt" in t) SESSION="$OPTARG" ;; a) ATTACH_SESSION=1 ;; \?) echo "Usage: $0 [-t ] [-a] " >&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 ] [-a] " >&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