usar programacion para listar lenguaje hacker ejecutar como comandos comando basicos archivos gnu gnu-screen

gnu - para - lenguaje de programacion octave



¿Cómo hacer que la pantalla GNU inicie una nueva ventana en el directorio de trabajo ACTUAL? (8)

De forma predeterminada, cuando crea una nueva ventana en la pantalla de GNU, se iniciará en el directorio donde se invoca la pantalla. Quiero iniciar una nueva ventana en la pantalla de GNU en el directorio de trabajo actual de la ventana en la que estoy actualmente. ¿Cómo hacerlo? ¡Gracias!


En su .screenrc ponga una línea que use el comando chdir si quiere el mismo cada vez.

Si tiene una sesión de pantalla en ejecución dentro de esa sesión, puede escribir:

screen -X chdir [arg]

Sin un argumento, será su directorio de inicio, el mismo resultado que escribir cd .

Si tiene una secuencia de comandos (esto es una programación de preguntas y respuestas y un sitio) o está fuera de la pantalla y la pantalla se está ejecutando, puede emitir:

`which screen` -x -X chdir [arg]

Lo cual es probable que siga con la ejecución de un nuevo proceso en pantalla con:

`which screen` -x -X screen [command to run in that dir] [args for the command]

Todavía no he encontrado una manera de averiguar qué era y volver a cambiarlo (en un script), por lo que si alguien quisiera actualizar esta respuesta con eso, por favor, hágalo.



No encontré ninguna solución que funcionara cuando ya tiene un proceso ejecutándose en una ventana, así que se me ocurrió una idea. Agregué las siguientes líneas a mi .bash_profile:

scr_cd() { cd $1 screen -X chdir $PWD } if [ "$TERM" == ''screen'' ]; then alias cd=scr_cd fi

El directorio de trabajo de la pantalla se actualiza cada vez que cambia un directorio. A alguien puede que no le guste este enfoque, pero funciona como un encanto.


Para hacer que la pantalla abra una nueva pestaña / ventana en el directorio actual, puede agregar el siguiente código a su archivo .screenrc :

bind c stuff "screen bash^M"

Esto hará que el comando Ctrl + a c abra nuevas pestañas / ventanas en el directorio de la ventana / pestaña actual.

Nota: debe asegurarse de que la screen no inicie un shell de inicio de sesión de manera predeterminada porque eso hará que el shell comience en el directorio predeterminado para un shell de inicio de sesión en lugar del directorio actual. Esto significa que en su archivo .screenrc , su comando de shell no puede incluir un carácter de guión (''-'').

Por ejemplo, esto es incorrecto (es decir, iniciará un shell de inicio de sesión):

shell -$SHELL

Pero esto es correcto (es decir, no iniciará un shell de inicio de sesión):

shell $SHELL

Nota 2: Desafortunadamente, este método no se comporta exactamente como el comando predeterminado de nueva ventana / pestaña en la screen . En su lugar, escribe el comando en la ventana actual y lo ejecuta para crear la nueva ventana / pestaña, por lo que no funcionará durante un proceso de shell de larga ejecución. En otras palabras, este método abreviado de teclado solo se puede ejecutar siempre que se puedan ejecutar los comandos de shell normales.

Nota 3: Si desea que la screen abra nuevas ventanas / pestañas en el directorio actual y abra un shell de inicio de sesión , puede agregar el siguiente código a su archivo .screenrc :

bind c stuff "screen bash -l^M"


Quizás esto sea específico de Byobu, pero simplemente escribiendo la screen abre una nueva ventana en el directorio actual.


También podrías correr:

screen -X eval "chdir $(pwd)"

O si desea iniciar una nueva ventana tan pronto como configure chdir, use:

screen -X eval "chdir $(pwd)" screen


Tengo una solución casi perfecta para bash. :)

  1. Si nunca usa una password para establecer la contraseña de bloqueo de pantalla, solo agregue esto a $HOME/.bash_profile :

    export PROMPT_COMMAND=''screen -p $WINDOW -X chdir "$PWD"''

  2. ¿Necesitas contraseña? con este:

    # the digest of password "abc" is ID1wIq4l2t7s6 export PROMPT_COMMAND=''screen -p $WINDOW -X eval "password none" "chdir /"$PWD/"" "idle 0 password ID1wIq4l2t7s6"''

Solo espero que los desarrolladores de pantalla agreguen la variable de entorno PWD tan pronto como sea posible.


Ver el comando gnu screen chdir . Todas las ventanas nuevas creadas en pantalla usan esto como su directorio inicial. Usando esto puedes hacer algo como

chdir /home/dan/newscreendir screen

Y su nueva ventana (junto con cualquier otra ventana creada en el futuro) estará en el directorio establecido. Si siempre va a ser el directorio de trabajo actual, es posible que pueda configurar algo en su screenrc para hacer esto en un solo comando.

Ver la página del manual de gnu screen, es bastante completa.

Comando chdir pantalla

La pantalla no puede acceder a su variable de shell ni ejecutar comandos backticked. Lo más cerca que puedo llegar a hacerlo con un solo clic es con un pequeño script de bash como este

screen -X setenv currentdir `pwd` screen -X eval ''chdir $currentdir'' screen

o mas compacto

screen -X eval "chdir $PWD"

screen -X envía el comando a la sesión de pantalla actualmente en ejecución. La primera línea crea una variable llamada currentdir . La segunda línea envía el currentdir al comando chdir y luego crea una nueva ventana de pantalla.