Trabajamos en la consola de forma rápida y eficiente.

En la red, puede encontrar muchos consejos para trabajar eficazmente en la consola. En la mayoría de estos artículos, los autores hablan de tópicos como "aprender teclas de acceso rápido" o " sudo !! ejecutará el último comando bajo sudo". ¡Te diré qué hacer cuando ya hayas aprendido las teclas de acceso rápido y conozcas sudo !! .


El terminal debe comenzar instantáneamente.


¿Cuánto tiempo necesita para iniciar la terminal? Y uno mas? Durante mucho tiempo, Ctrl + Alt + T lanzó mi terminal y pensé que era rápido. Pero cuando me mudé de Openbox a i3, comencé a ejecutar el terminal a través de Win + Enter, esta combinación estaba en la configuración predeterminada. ¿Y sabes que? Ya no creo que Ctrl + Alt + T sea rápido.


Por supuesto, el chiste no está en la ganancia de milisegundos, sino en el hecho de que abres el terminal al nivel de los reflejos, sin darte cuenta por completo.


Si a menudo trabaja en el terminal, pero alcanza el mouse para iniciarlo, intente configurar una tecla de acceso rápido conveniente. Estoy seguro de que te gustará.


Zsh en lugar de bash


Este es un tema de Hollywood, lo sé. Zsh debe instalarse al menos para tres funciones: autocompletado avanzado, corrección de errores tipográficos y compleción de múltiples rutas: cuando una pestaña convierte /u/s/d en /usr/share/doc . Arch Linux ha cambiado durante mucho tiempo a zsh en su disco de instalación. Espero que algún día zsh se convierta en el shell predeterminado en Ubuntu. Este será un momento histórico.


Comenzar con zsh no es nada difícil. Instálelo a través del administrador de paquetes y tome alguna configuración preparada. Recomiendo la configuración utilizada por Arch Linux:


 wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc 

Solo queda cambiar el "shell predeterminado" a zsh e iniciar sesión.


 chsh -s $(which zsh) 

Todo, continúa trabajando como si nada hubiera pasado.


Lo que debería ser un indicador de shell


El indicador de shell es el pequeño texto que aparece en la terminal antes de su comando. Necesita ser personalizado a su carácter de trabajo. Piense en ello como el tablero de un automóvil. Pon información útil allí, deja que te ayude a navegar. ¡Hazlo conveniente, especialmente si lo ves todos los días!


El indicador del shell debe mostrar el directorio actual del shell. Si el directorio actual no se muestra en el indicador de comandos de shell, deberá mantenerlo en su cabeza y verificar periódicamente con el pwd . No hagas eso. Tenga en cuenta las cosas más importantes y no pierda el tiempo con el pwd .


Si cambia periódicamente de su usuario a root, necesita una indicación del usuario actual. A menudo es importante no el nombre de usuario específico, sino su estado (regular o raíz). La forma más fácil de hacerlo es el color: indicador de concha roja en la raíz, verde para el usuario. Por lo tanto, nunca confundirá el shell raíz con el habitual.


Si se conecta a los servidores a través de ssh, debe distinguir de alguna manera su shell local del servidor. Para hacer esto, el indicador de shell debe contener el nombre de host, o mejor aún, un indicador de la conexión ssh.


El indicador de shell puede mostrar el código de retorno del último comando. Permítame recordarle que un código de retorno nulo significa que el comando se completó con éxito, distinto de cero: el comando falló. El código de retorno para el último comando se puede encontrar con echo $? , pero escribirlo todo en el teclado es demasiado largo. Mejor, el indicador de shell le informará si el comando falló.


Si trabaja con repositorios git, será útil mostrar el estado del repositorio en el indicador del shell: la rama actual y el estado del directorio de trabajo. De esta manera, ahorrará tiempo en el git status git branch y en los comandos de git branch y no se equivocará en la rama cuando se comprometa.


Alguien agrega un reloj o un nombre de terminal virtual (tty), o algunos garabatos arbitrarios a su indicador de shell. Todo esto es superfluo. Es mejor dejar más espacio para los equipos.


Mi indicador de shell en diferentes condiciones se ve así:



La captura de pantalla muestra que el título de la ventana del terminal realiza una tarea similar. Esto también es una parte del tablero y también se puede personalizar.


¿Cómo implementar todo esto en tu .zshrc ? La variable PROMPT es responsable de la solicitud de la izquierda y RPROMPT para la RPROMPT la derecha. La variable EUID ayudará a determinar el estado del usuario (regular o EUID y la presencia de una conexión ssh: SSH_CLIENT o SSH2_CLIENT . Obtenemos la siguiente pieza de trabajo:


 if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi fi 

No indico específicamente el código listo para copiar y pegar, porque una implementación específica es cuestión de gustos. Si no quieres molestarte y mi captura de pantalla no te disgusta, puedes tomar la configuración del github .


Resumen:


  • El mínimo requerido es el directorio actual.
  • La cubierta de la boca debe ser claramente visible.
  • Un nombre de usuario no lleva una carga útil si siempre está sentado bajo el mismo usuario.
  • El nombre de host es útil si se conecta a los servidores a través de SSH. No es necesario si siempre trabaja en la misma máquina.
  • La finalización sin éxito del último comando es útil para ver de inmediato.
  • El estado del repositorio de git ahorra tiempo en el git status git branch y los comandos de git branch y es una protección adicional contra el tonto.

Uso activo del historial de comandos


La mayoría de los comandos en tu vida los ingresas más de una vez, lo que significa que sería conveniente sacarlos de la historia en lugar de volver a escribirlos. Todos los proyectiles modernos pueden recordar la historia de los equipos y proporcionan varias formas de buscar esta historia.


Quizás ya sabes cómo profundizar en la historia con Ctrl + R. Tiene dos inconvenientes importantes:


  1. Para comenzar la búsqueda, el campo de entrada debe estar vacío. Es decir en el caso "Empecé a escribir un comando, me acordé de la búsqueda", debe borrar lo que se inició, presionar Ctrl + R y repetir la entrada. Esto es mucho tiempo
  2. La búsqueda hacia adelante no funciona de manera predeterminada, porque Ctrl + S detiene el terminal.

Cómo funciona la búsqueda más rápida y conveniente:


  1. comienzas a escribir un equipo
  2. ¿Recuerdas la búsqueda?
  3. presiona una tecla de acceso rápido y el shell ofrece equipos de la historia que comenzaron exactamente igual.

Por ejemplo, desea sincronizar un directorio local con un directorio remoto utilizando rsync . Ya lo hiciste hace un par de horas y quieres sacar al equipo de la historia. Escriba rsync , presione una determinada combinación una o dos veces, y el preciado comando estará listo para ejecutarse. No es necesario activar primero el modo de búsqueda del historial, el indicador de shell no cambia a (reverse-i-search)': nada salta a ninguna parte. Simplemente repite los comandos de la historia. Al igual que las flechas ↑ ↓, itera sobre los comandos ingresados ​​previamente, solo con un filtro al comienzo del comando. Es muy conveniente y ahorra mucho tiempo.


En peces y conchas de ipython, dicha búsqueda ya está asignada a las flechas. Creo que muchos cambiaron a pescar solo por el comportamiento de esa flecha.


En bash y zsh, por defecto, esta búsqueda no funciona, debe habilitarla a mano. Configuré PgUp para buscar hacia atrás y PgDown para buscar hacia adelante. Está lejos de alcanzarlos, pero ya estoy acostumbrado. Quizás en el futuro reasigne algo más cercano, por ejemplo, Ctrl + P y Ctrl + N.


Para bash, debe agregar un par de líneas a /etc/inputrc o ~/.inputrc :


 "\e[5~": history-search-backward "\e[6~": history-search-forward 

Si preparó zshrc , entonces la búsqueda probablemente ya esté asignada a PgUp y PgDown. Si no, agregue a ~/.zshrc


 bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down 

Es curioso que con el tiempo comencé a escribir equipos basados ​​en el supuesto de que más tarde los recogería de la historia. Aquí hay algunos trucos:


Combinando equipos que siempre se ejecutan uno tras otro


 ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t 

Las rutas absolutas en lugar de las relativas le permiten ejecutar un comando desde cualquier directorio:
vim ~/.ssh/config lugar de vim .ssh/config , systemd-nspawn /home/chroot/stretch lugar de systemd-nspawn stretch , etc.


El enmascaramiento de comodines hace que los equipos sean más versátiles. Usualmente se usa con chmod y chown .


 chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq 

Teclas de acceso rápido


Voy a enumerar el mínimo necesario.


Alt +. - sustituye el último argumento del comando anterior. ¡También puedes escribir la secuencia !$ .
Ctrl + A, Ctrl + E: ir al principio y al final del comando editado, respectivamente.
Ctrl + U, Ctrl + Y: corta todo al portapapeles, pégalo desde el portapapeles. Ayuda cuando imprime un comando complejo, y luego comprende que necesita ejecutar otro delante de él. Hmm, ¿dónde ocultar la entrada actual? Aquí y escóndete.
Ctrl + W: borra una palabra a la izquierda del cursor. Si lo sujeta y lo sujeta, borra rápidamente la línea de comando. Por defecto, el texto no se elimina, sino que se coloca en el búfer (que es para Ctrl + Y).
Ctrl + K: elimina del cursor al final de la línea. Ctrl + A, Ctrl + K borra rápidamente la línea de comando.
PgUp, PgDown, Ctrl + R: busca por historial.
Ctrl + L: borra el terminal.


Capacidad de respuesta del teclado


Le contaré acerca de una configuración pequeña, que le permite desplazarse más rápido, moverse por el texto o borrar. ¿Qué hacemos cuando queremos borrar algo largo? Mantenga presionada la tecla Retroceso y observe cómo retrocede el cursor, recogiendo letras adicionales. ¿Qué pasa con esto? Cuando se presiona Retroceso, se borra un carácter, luego se produce un ligero retraso y luego se activa la repetición automática: Retroceso elimina los caracteres uno por uno, como si constantemente lo golpearan.


Recomiendo ajustar el retraso y la velocidad de repetición automática a la velocidad de su dedo. El retraso antes de que se necesite el reintento automático es cuando desea eliminar solo un carácter: le da tiempo para soltar la tecla. Un retraso demasiado prolongado hace que la espera del reintento automático. No lo suficiente como para molestar, pero sí lo suficiente como para ralentizar la transferencia de pensamientos de la cabeza a la computadora. Cuanto mayor sea la frecuencia de repetición, más rápido se borrará el texto y más difícil será detener este proceso a tiempo. La esencia del entorno es encontrar un punto medio.


Entonces el comando mágico:


 xset r rate 190 20 

190 - la duración del retraso en milisegundos,
20 - frecuencia en el número de repeticiones por segundo.


Recomiendo comenzar con estos valores y reducir gradualmente la demora hasta que aparezcan falsos positivos, luego retroceder un poco. Si establece un retraso muy corto, entonces el teclado será imposible de usar. Debe reiniciar el servidor X o toda la computadora. Así que ten cuidado.


Para guardar los parámetros, agregue este comando en algún lugar al inicio automático de X.


Barra de progreso


A menudo tengo que iniciar procesos largos: algún tipo de copia de seguridad en negrita, copiar a través de la red, desempaquetar / empacar archivos, construir paquetes, etc. Por lo general, comienzo un proceso así, cambio a otra tarea y miro periódicamente para ver si mi largo proceso ha finalizado. Sucede que me sumerjo en el trabajo y me olvido de eso. La solución es agregar una notificación de la finalización del proceso, lo que me sacará del trance.


Puede usar diferentes herramientas para esto: notificar-enviar, dzen2, pitido, aplay. Todos ellos son buenos a su manera, pero no funcionan en ssh. Por lo tanto, uso pitido terminal:


 long-running-command; echo $'\a' 

En la codificación ASCII, hay un carácter 0x7 llamado campana . Está diseñado para emitir un pitido con un altavoz de PC. Un altavoz de PC no está actualizado, no está en todas partes y todavía no se escucha en los auriculares. Por lo tanto, algunas terminales usan la llamada campana visual. Uso urxvt y hace que la campana visual encienda la bandera de urgencia. Esto es cuando una ventana le dice que necesita atención.


Puede verificar ahora cómo reacciona su terminal al símbolo de la campana:


 sleep 3; echo $'\a' 

Se le dan tres segundos para que cambie a otra ventana; de lo contrario, es posible que no funcione.


Desafortunadamente, la campana visual por urgencia no está disponible en todas las terminales. Revisé el más popular.


terminalcampana visual por urgencia
konsoleincluido en la configuración
urxvtesta ahi
xfce4-terminalincluido en la configuración
xtermno
término retro genialno
terminal terminalno
terminal de gnomono

Me llevó demasiado tiempo escribir echo $'\a' , así que hice un alias de wake .


Alias


Los comandos cp , scp y rm siempre deberían funcionar de forma recursiva. ¡El argumento -r es solo un mal legado! Todavía hay una excusa para cp :


 cp * foodir 

solo copia archivos a foodir, y con el modificador -r , pensará que decidió copiar foodir a sí mismo. Pero, ¿con qué frecuencia necesita esta función?


rm y scp no tienen excusas, ¡son aburridos! El comando mkdir tiene una situación similar con el -p . Así que siéntase libre de agregar a ~/.zshrc


 alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p' 

Wow, ¿cómo viví sin esto antes? Puede ir aún más lejos y agregar -f a rm , pero bajo su propio riesgo y riesgo. Me contengo por ahora.


Lo más probable es que ya use diferentes variaciones de ls , porque estos son los alias más populares.


 alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h' 

Bueno, el color grep es mucho mejor que incoloro:


 alias grep='grep --colour=auto' 

¡No olvide que los alias no funcionan en los scripts! Todas las claves deben especificarse allí.


Método de impresión a ciegas


No importa cuán trivial pueda ser, pero el método de impresión ciega de diez dedos le permite imprimir más rápido. Al principio será difícil, pero con el tiempo acelerará a velocidades sin precedentes.


Dominar el método de impresión a ciegas es mejor en vacaciones o en vacaciones cuando nadie lo está apurando. En el proceso de aprendizaje, en ningún caso no puede apresurarse. Su tarea es recordar dónde se encuentra la letra. Y no tanto con el cerebro como con los músculos. Es mejor escribir lentamente pero sin errores que rápidamente con errores. Recuerde: los maestros alcanzan altas velocidades no a expensas de los dedos rápidos, sino porque no cometen errores.


No te dejes llevar al principio con los teclados. Es psicológicamente difícil mantener la calma durante la competencia. Aprende sobre simuladores. Es bueno cuando el simulador ofrece palabras que pueden pronunciarse mentalmente. Estudié en vse10 y typingstudy simuladores en línea. El famoso simulador "Solo en el teclado" me pareció estúpido.


Vale la pena comenzar con la fila central de Fyvaprolge. Solo después de recordar dónde se encuentra la llave, vale la pena seguir adelante. Solo después de eso.


Tómese un descanso. Descansa tu cerebro y tus dedos. Siente que los errores se han derramado: es hora de tomar un descanso.


Al principio, dominé el método de impresión a ciegas en ruso y comencé con la aceleración. Ahora estoy mejorando mi habilidad en el diseño en inglés.

Source: https://habr.com/ru/post/es425137/


All Articles