41
submitted 1 year ago* (last edited 1 year ago) by db0@lemmy.dbzer0.com to c/linux@lemmy.ml

I have a nice bash alias for tmux which opens a new window and directly ssh to whatever I specify

function s() {
    tmux neww -n "$1" -- ssh "$1"
}

I want to also have something similar directly as an alias in tmux, so I can do C-b :s myhost when I'm already in a ssh to another server, instead of having to change windows, and then run s myhost in bash.

I tried using tmux's confiug to do various variations of

set -s command-alias[100] s='run s'

Also using directly ssh, or without using run etc. But I can't figure it out.

top 3 comments
sorted by: hot top controversial new old
[-] Penguincoder@beehaw.org 12 points 1 year ago

This is what I have in my . tmux.conf for SSH you can adapt

bind-key S command-prompt -p "ssh to:","port:" "new-window -n %1 'ssh %1 -p %2'"

That means when I press C-b, SHIFT S it asks what IP to connect to (type it in when it asks on the status bar of TMUX), press enter, the it asks the port to use.

[-] db0@lemmy.dbzer0.com 10 points 1 year ago* (last edited 1 year ago)

bind-key S command-prompt -p "ssh to:","port:" "new-window -n %1 'ssh %1 -p %2'"

Brilliant. I removed the port since I usually use my ssh config or I can just type with with : and it's what I needed. Cheers

[-] gammarays@lemm.ee 8 points 1 year ago

In tmux, you usually set configuration options with set -g in tmux.conf. "-g" sets a global option which will apply to all new windows and sessions, otherwise the option applies only for the current window, which is usually not what you want.

Since command-alias is an array, you can use the -a flag to append a new value at the end.

With that said, try this:

set -ga command-alias s="new-window ssh foo"

Keep in mind that run in tmux runs a shell command in the background, so you most likely want to use something like new-window or new-session instead.

this post was submitted on 09 Sep 2023
41 points (97.7% liked)

Linux

48236 readers
519 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS