tutorial para mac commands comandos shell production-environment tmux

shell - mac - tmux para ubuntu



¿Cómo configurar tmux para que se inicie con las ventanas especificadas abiertas? (17)

Acabo de intentar usar todas las ideas en esta página y no me gustó ninguna de ellas. Solo quería una solución que iniciara tmux con un conjunto específico de ventanas cuando se abrió mi terminal. También quería que fuera idempotente, es decir, abrir una nueva ventana de terminal se hace cargo de la sesión tmux de la anterior.

Las soluciones anteriores a menudo tienden a abrir varias sesiones de tmux y solo quiero una. Primero, agregué esto a mi ~/.bash_profile :

tmux start-server if [[ -z "$TMUX" ]] then exec tmux attach -d -t default fi

Luego agregué lo siguiente a mi ~/.tmux.conf :

new -s default -n emacs /usr/local/bin/emacs neww -n shell /usr/local/bin/bash neww -n shell /usr/local/bin/bash selectw -t 1

Ahora, cada vez que inicio una terminal o inicio tmux o lo que sea, vuelvo a unir la configuración deseada existente (la sesión se denomina por default ), o creo una nueva sesión con esa configuración.

¿Cómo configurar tmux para que se inicie con las ventanas especificadas abiertas?


Debería especificarlo en su archivo de configuración tmux ( ~/.tmux.conf ), por ejemplo:

new mocp neww mutt new -d neww neww

(abre una sesión con 2 ventanas con mocp iniciada en primer lugar y mutt en segundo, y otra sesión separada con 3 ventanas vacías).


Desde mi script "get.all", que invoco cada mañana para ejecutar una serie de trabajos "get.XXX" subsiguientes para actualizar el software del que estoy realizando un seguimiento. Algunos de ellos son automáticos. Otros requieren una mayor interacción una vez que finaliza el proceso de obtención (como pedir compilar emacs)

#!/bin/sh tmux att -t get || tmux / new -s get -n capp /; / send-keys ''get.capp'' C-m /; / neww -n emacs /; / send-keys ''get.emacs'' C-m /; / neww -n git /; / send-keys ''get.git'' C-m /; / neww -n mini /; / send-keys ''get.mini'' C-m /; / neww -n port /; / send-keys ''get.port'' C-m /; / neww -n rakudo /; / send-keys ''get.rakudo'' C-m /; / neww -n neil /; / send-keys ''get.neil && get.neil2 && exit'' C-m /; / neww -n red /; / send-keys ''get.red && exit'' C-m /; / neww -n cpan /; / send-keys ''get.cpan && exit'' C-m /; / selectw -t emacs


El complemento tmux-continuum guardará automáticamente su sesión de tmux y la cargará la próxima vez que se inicie tmux, debería ser más fácil de configurar que algunas de las soluciones de script personalizadas aquí.

caracteristicas:

  • ahorro continuo del entorno tmux
  • inicio tmux automático cuando la computadora / servidor está encendido
  • Restauración automática cuando se inicia tmux

Para guardar su sesión a pedido, puede usar el complemento tmux-resurrect . tmux-resurrect también se requiere para ejecutar tmux-continuum

tmux-resurrect guarda todos los pequeños detalles de su entorno tmux para que pueda restaurarse completamente después de reiniciar el sistema (o cuando lo desee). No se requiere ninguna configuración. Deberías sentir que nunca abandonaste tmux.


Estaba tratando de crear una cuadrícula compleja de paneles y tuve que lidiar con cambiar y dividir los paneles una y otra vez. Aquí están mis aprendizajes:

tmux new-session /;

Te hace comenzar con una nueva sesión. Para dividirlo horizontal o vertical, use split-window -h o -v posteriormente, así:

tmux new-session /; split-window -v /; split-window -h /;

Crea 3 paneles, así:

------------ | | |----------| | | | ------------

Para ejecutar comandos en esos paneles, simplemente agréguelos con el send-keys ''my-command'' y Cm que lo ejecuta:

tmux new-session /; / send-keys ''tail -f /var/log/monitor.log'' C-m /; / split-window -v /; / split-window -h /; / send-keys ''top'' C-m /;

Y la sesión resultante debería verse así.

------------ | tail | |----------| | | top | ------------

Ahora intenté subdividir de nuevo el panel inferior izquierdo, así que cambiar de nuevo usando el last-pane , o en ventanas más complejas, con el select-pane -t 1 donde 1 es el número del panel en el orden creado comenzando con 0 .

tmux new-session /; / send-keys ''tail -f /var/log/monitor.log'' C-m /; / split-window -v /; / split-window -h /; / send-keys ''top'' C-m /; / select-pane -t 1 /; / split-window -v /; / send-keys ''weechat'' C-m /;

Hace eso. Básicamente, saber todo lo que necesita con split-window y select-pane es todo lo que necesita. También es útil pasar con -p 75 un porcentaje del tamaño del panel creado por split-window para tener más control sobre el tamaño de los paneles.

tmux new-session /; / send-keys ''tail -f /var/log/monitor.log'' C-m /; / split-window -v -p 75 /; / split-window -h -p 30 /; / send-keys ''top'' C-m /; / select-pane -t 1 /; / split-window -v /; / send-keys ''weechat'' C-m /;

Lo que resulta en una sesión parecida a eso

------------------ | tail | |----------------| | | top | |----------| | | weechat | | ------------------

Espero que ayude a los entusiastas de tmux en el futuro.


Esto funciona para mi Creación de 5 ventanas con los nombres dados y selección automática a la ventana de home .

new -n home neww -n emacs neww -n puppet neww -n haskell neww -n ruby selectw -t 1


Hay un plugin tmux para esto.

Echa un vistazo a tmux-resurrect

Restaurar el entorno tmux después de reiniciar el sistema.

Tmux es genial, excepto cuando tienes que reiniciar la computadora. Pierde todos los programas en ejecución, directorios de trabajo, diseños de paneles, etc. Existen herramientas de administración útiles, pero requieren una configuración inicial y actualizaciones continuas a medida que su flujo de trabajo evoluciona o comienza nuevos proyectos.

tmux-resurrect guarda todos los pequeños detalles de su entorno tmux para que pueda restaurarse completamente después de reiniciar el sistema (o cuando lo desee). No se requiere ninguna configuración. Deberías sentir que nunca abandonaste tmux.

O tmux-continuum

caracteristicas:

  • ahorro continuo del entorno tmux
  • inicio tmux automático cuando la computadora / servidor está encendido
  • Restauración automática cuando se inicia tmux

He creado este script . No necesita tmuxinator, ruby ​​u otros. Es solo un script bash, configurable:

Un archivo llamado config debería contener algo como esto:

combo=() combo+=(''logs'' ''cd /var/log; clear; pwd'') combo+=(''home'' ''cd ~; clear; pwd'')

y el código bash debe ser:

#!/bin/bash if [ -r config ]; then echo "" echo "Loading custom file" . config else . config.dist fi tmux start-server window=0 windownumber=-1 for i in "${combo[@]}"; do if [ $((window%2)) == 0 ]; then name=${i} ((windownumber++)) else command=${i} fi if [ ${combo[0]} == "${i}" ]; then tmux new-session -d -s StarTmux -n "${name}" else if [ $((window%2)) == 0 ]; then tmux new-window -tStarTmux:$windownumber -n "${name}" fi fi if [ $((window%2)) == 1 ]; then tmux send-keys -tStarTmux:$windownumber "${command}" C-m fi ((window++)) done tmux select-window -tStarTmux:0 tmux attach-session -d -tStarTmux


Primero tuve el enfoque de @jasonwryan pero si tiene más de 2 configuraciones, puede ser confuso.

Así que creé una función de alias:

tmx () { tmux "$2" source-file "$HOME/.tmux/$1.conf"; }

En ~/.tmux/ tengo múltiples sesiones para muchos usos. Por ejemplo, trabajo para diferentes empresas que tienen entornos de desarrollo. Así que con la función de alias anterior puedo simplemente llamar: tmx company1 y cargar la configuración que necesito.

Actualización: el propósito de "$ 2" después del comando tmux es que pueda pasar argumentos tmux adicionales.


Puede escribir un script de shell pequeño que inicie tmux con los programas necesarios. Tengo lo siguiente en un script de shell que llamo dev-tmux. Un entorno de desarrollo:

#!/bin/sh tmux new-session -d ''vim'' tmux split-window -v ''ipython'' tmux split-window -h tmux new-window ''mutt'' tmux -2 attach-session -d

Así que cada vez que quiero lanzar mi entorno de desarrollo favorito solo puedo hacer

$ dev-tmux


Puede obtener diferentes sesiones de su .tmux.conf así:

# initialize sessions bind S source-file ~/.tmux/session1 bind s source-file ~/.tmux/session2

Y luego formatee las sesiones como lo requiera:

#session1 new -s SessionName -n WindowName Command neww -n foo/bar foo splitw -v -p 50 -t 0 bar selectw -t 1 selectp -t 0

Esto abriría 2 ventanas, la segunda de las cuales se llamaría foo / bar y se dividiría verticalmente por la mitad (50%) con foo corriendo por encima de la barra. El foco estaría en la ventana 2 (foo / bar), panel superior (foo).

Luego puede iniciar su sesión tmux preferida (en este caso, sesión1) con Prefix Shift s


Si solo desea dividir la pantalla en 2 paneles (digamos horizontalmente), puede ejecutar este comando (no se requieren tmux o shell scripts):

tmux new-session /; split-window -h /;

Tu pantalla se verá así:

[ks@localhost ~]$ │[ks@localhost ~]$ │ │ │ │ │ │ │ │ │ │ │ [10] 0:ks@localhost:~* "localhost.localdomain" 19:51 31-янв-16


Use tmuxinator : le permite tener varias sesiones configuradas y puede elegir cuál iniciar en cualquier momento. Puede iniciar comandos en ventanas o paneles particulares y asignar títulos a las ventanas. Aquí hay un ejemplo de uso con el desarrollo de aplicaciones Django .

Archivo de configuración de muestra:

# ~/.tmuxinator/project_name.yml # you can make as many tabs as you wish... project_name: Tmuxinator project_root: ~/code/rails_project socket_name: foo # Not needed. Remove to use default socket rvm: 1.9.2@rails_project pre: sudo /etc/rc.d/mysqld start tabs: - editor: layout: main-vertical panes: - vim - #empty, will just run plain bash - top - shell: git pull - database: rails db - server: rails s - logs: tail -f logs/development.log - console: rails c - capistrano: - server: ssh me@myhost

Consulte el archivo README en el enlace anterior para obtener una explicación completa.


Y así es como lo hago:

#!/bin/bash function has-session { tmux has-session -t name_of_my_session 2>/dev/null } if has-session ; then echo "Session already exists" else cd /path/to/my/project tmux new-session -d -s name_of_my_session ''vim'' tmux split-window -h -p 40 start_web_server tmux split-window -v tmux attach-session -d -t name_of_my_session fi

Tengo un archivo para cada uno de mis proyectos. También puedes agruparlos para tener algunos para trabajar algunos para proyectos de hobby.

También puede moverlo a la carpeta ~/bin , agregarlo a PATH y darle el nombre tmux_my_awesome_project . Entonces podrás correrlo desde cada lugar.


echar un vistazo @ https://github.com/remiprev/teamocil

puedes especificar tu estructura usando YAML

windows: - name: sample-window splits: - cmd: vim - cmd: - ipython width: 50 - cmd: height: 25


tmuxp admite la configuración de sesión JSON o YAML y una API de python. Un simple archivo de configuración tmuxp para crear una nueva sesión en la sintaxis YAML es:

session_name: 2-pane-vertical windows: - window_name: my test window panes: - pwd - pwd


:~$ tmux new-session "tmux source-file ~/session1"

Sesión 1

neww split-window -v ''ipython'' split-window -h new-window ''mutt''

crear un alias en .bashrc

:~$ echo `alias tmux_s1=''tmux new-session "tmux source-file ~/session1"''` >>~/.bashrc :~$ . ~/.bashrc :~$ tmux_s1