trucos teclado para mac directorio desde consola comandos comando codigo cambiar basicos abrir terminal

teclado - terminal para mac



¿Cómo encuentro el ancho y alto de una ventana de terminal? (8)

Como mencioné en la respuesta de lyceus, su código fallará en la configuración regional no inglesa de Windows porque la salida del mode puede no contener las subcadenas "columnas" o "líneas":

Puedes encontrar la subcadena correcta sin buscar texto:

preg_match(''/---+(/n[^|]+?){2}(?<cols>/d+)/'', `mode`, $matches); $cols = $matches[''cols''];

Tenga en cuenta que ni siquiera me molesto con las líneas porque no es confiable (y en realidad no me importan).

Edit: De acuerdo con los comentarios sobre Windows 8 (oh tú ...), creo que esto puede ser más confiable:

preg_match(''/CON.*:(/n[^|]+?){3}(?<cols>/d+)/'', `mode`, $matches); $cols = $matches[''cols''];

Sin embargo, haz una prueba, porque no la probé.

Como ejemplo simple, quiero escribir un script de CLI que pueda imprimir ''='' en todo el ancho de la ventana del terminal.

#!/usr/bin/env php <?php echo str_repeat(''='', ???);

o

#!/usr/bin/env python print ''='' * ???

o

#!/usr/bin/env bash x=0 while [ $x -lt ??? ]; do echo -n ''=''; let x=$x+1 done; echo


En POSIX, finalmente desea invocar la ioctl() TIOCGWINSZ (Get WINdow SiZe). La mayoría de los idiomas deberían tener algún tipo de envoltorio para eso. Por ejemplo, en Perl puedes usar Term::Size :

use Term::Size qw( chars ); my ( $columns, $rows ) = chars /*STDOUT;


En bash, las variables ambientales $LINES y $COLUMNS deberían ser capaces de hacer el truco. Se establecerá automáticamente tras cualquier cambio en el tamaño del terminal. (es decir, la señal SIGWINCH )


Inspirado por la respuesta de @ pixelbeat, aquí hay una barra horizontal tput por tput , ligero mal uso del relleno / relleno printf y tr

printf "%0$(tput cols)d" 0|tr ''0'' ''=''


Para hacer esto en el entorno CLI de Windows, la mejor manera que puedo encontrar es usar el comando de modo y analizar la salida.

function getTerminalSizeOnWindows() { $output = array(); $size = array(''width''=>0,''height''=>0); exec(''mode'',$output); foreach($output as $line) { $matches = array(); $w = preg_match(''/^/s*columns/:?/s*(/d+)/s*$/i'',$line,$matches); if($w) { $size[''width''] = intval($matches[1]); } else { $h = preg_match(''/^/s*lines/:?/s*(/d+)/s*$/i'',$line,$matches); if($h) { $size[''height''] = intval($matches[1]); } } if($size[''width''] AND $size[''height'']) { break; } } return $size; }

Espero que sea útil!

NOTA : La altura devuelta es el número de líneas en el búfer, no es el número de líneas que están visibles dentro de la ventana. ¿Alguna mejor opción por ahí?


Y hay stty , desde coreutils

$ stty size 60 120 # <= sample output

Imprimirá el número de filas y columnas, o altura y anchura, respectivamente.

Luego puede usar cut o awk para extraer la parte que desea.


yes = | head -n$(($(tput lines) * $COLUMNS)) | tr -d ''/n''


  • tput cols te dice el número de columnas.
  • tput lines te dice el número de filas.