Estoy usando el script
comando para guardar toda la salida del terminal en un archivo llamado typescript
. O script foo
para guardar en el archivo foo
.
Ahora, digamos que sigo escribiendo comando tras comando y olvido si estoy en un mecanografiado o no.
¿Cómo puedo saber si estoy dentro de un mecanografiado o no?
typescript
Rob Avery IV
fuente
fuente
script
y tenga el tty abierto también causaría un falso positivo.script
comenzó).script
, sino también otras situaciones, comosu -l
,ssh
, consola de Linux y quizás otros, y brindan (a través de otros argumentos deps
) mucha más información.Interesante problema Encontré que un pequeño script bash podría hacer el trabajo de manera bastante confiable:
Creo que esto es ligeramente diferente de lo propuesto por Stephane Chazelas, ya que mi secuencia de comandos se abre paso en la relación padre: hijo que tienen los procesos Linux / Unix hasta que encuentra PID 1, o encuentra "secuencia de comandos" como el proceso.
fuente
xterm
sesión de secuencia de comandos, esa secuencia de comandos incluirá el shell en que xterm se ejecuta bajo secuencia de comandos. Bueno, de alguna manera, pero el resultado no va al mecanografiado. Mi enfoque verifica el terminal asociado con la sesión actual, por lo que no tendría ese problema.Si tiene un directorio bin / personal en su ruta (por ejemplo, / home / user / bin, coloque allí un script de shell con el nombre 'script' (el mismo nombre que el binario), con el siguiente contenido:
Ahora, dentro de la ejecución del script, puede probar la variable de entorno SCRIPT_RUNNING y hacer lo que quiera en función de ella.
EDITAR:
En realidad, hay una manera mucho más fácil. Lo siguiente lo dice todo: cree tres archivos, ~ / bin / script, ~ / bin / script-shell y ~ / .scriptrc:
Si su shell actual es bash, no olvide ejecutar
hash -r
después de crear estos archivos, para asegurarse de que ~ / bin / script se ejecute cuando se ingrese 'script' como un comando (consulte conwhich script
).Como antes, tenga en cuenta que debe tener ~ / bin en su RUTA, precediendo la ruta estándar para que esto funcione.
fuente