From e776ea47dda0e91bda57035dc480f6cfadb8eec0 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 4 Oct 2025 12:05:36 +0200 Subject: [PATCH] Add a tmux script for running A single command once --- tmux-oneshot.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tmux-oneshot.sh diff --git a/tmux-oneshot.sh b/tmux-oneshot.sh new file mode 100644 index 0000000..28e424b --- /dev/null +++ b/tmux-oneshot.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# tmux-oneshot.sh +# Run a single command in a tmux session + +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)) + +if [ $# -eq 0 ]; then + echo "Error: Command is required" >&2 + echo "Usage: $0 [-t ] [-a] " >&2 + exit 1 +fi + +COMMAND="$*" + +# Use first word of command as session name if -t 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