GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo obtener el Tty en el que se está ejecutando Bash?

En el segundo método propuesto por esta página, se obtiene el tty en el que se ejecuta bash con el comando:

ps ax | grep $$ | awk '{ print $2 }'

Pensé para mis adentros que seguramente esto es un poco vago, enumerar todos los procesos en ejecución solo para extraer uno de ellos. ¿No sería más eficiente (también pregunto si esto introduciría efectos no deseados) hacer:

ps -p $$ | tail -n 1 | awk '{ print $2 }'

FYI, me encontré con este problema porque a veces el primer comando en realidad producía dos (o más) líneas. Esto sucedería al azar, cuando habría otro proceso ejecutándose con un PID que contiene $$ como una subcadena. En el segundo enfoque, estoy evitando tales casos solicitando el PID que sé que quiero.

Respuesta aceptada:

Simplemente escribiendo tty :

$ tty 
/dev/pts/20

Demasiado simple y obvio para ser verdad 🙂

Editar: El primero te devuelve también el pty del proceso que ejecuta grep como puedes notar:

$ ps ax | grep $$
28295 pts/20   Ss     0:00 /bin/bash
29786 pts/20   S+     0:00 grep --color=auto 28295

por lo tanto, necesitaría filtrar el grep para obtener solo un resultado, que se está poniendo feo:

ps ax | grep $$ | grep -v grep | awk '{ print $2 }'

o usando

ps ax | grep "^$$" | awk '{ print $2 }'

(una variante más cuerda)


Linux
  1. Cómo usar el comando grep de Linux

  2. Linux:¿cómo identificar qué distribución de Linux se está ejecutando?

  3. Linux:¿cómo obtener la hora del reloj de pared de un proceso en ejecución?

  4. ¿Cómo obtengo el directorio absoluto de un archivo en bash?

  5. ¿Cómo puedo *solo* obtener la cantidad de bytes disponibles en un disco en bash?

Cómo usar el comando de lectura Bash

Cómo obtener el tamaño de un directorio en Linux

Cómo usar el comando which en Linux

Cómo grep una sección de un archivo en bash Shell

¿Cómo obtener máscara de red de bash?

¿Cómo puedo obtener la hora del reloj de pared de un proceso en ejecución?