3 votos

¿Cómo puedo hacer que el terminal sea más fácil de leer y procesar mentalmente?

Estoy empezando a aprender a usar el shell a través del Terminal de MacOS ejecutando Zsh, y me está resultando difícil procesar toda la información tan apretada de los comandos y resultados.

¿Cuáles son las formas más comunes de maximizar la inteligibilidad en la cáscara/Terminal?

Dos personalizaciones específicas que sé que me gustaría probar:

  1. ¿Cómo puedo configurar el intérprete de comandos para que incluya siempre una línea adicional o una regla horizontal tras la finalización de cada comando, para separar visualmente cada comando del anterior?

  2. ¿Existe una forma de personalizar la forma en que se muestran las rutas? Por ejemplo, en lugar de path/name/example , tal vez path > name > example ? En el caso de rutas muy largas con espacios en los nombres de los directorios, aumentaría la legibilidad si se incluyera un espacio entre cada nivel.

2voto

staffan Puntos 3299

Tenga en cuenta que zsh es diferente de bash. Sus lenguajes de scripting son similares (pero tienen algunas diferencias importantes), pero la forma en que se configuran la mayoría de las características de interacción (archivos de inicialización, prompt, historial de comandos, enlaces de teclas, etc.) es muy diferente. En general, si estás usando zsh, ignora los consejos de configuración sobre bash (y viceversa).

El archivo de configuración principal para zsh es .zshrc en su directorio principal. Zsh lo lee cuando se inicia (sólo cuando se ejecuta interactivamente en una terminal, no cuando se ejecuta un script). Este es el lugar para configurar los avisos, la finalización, los alias, los enlaces de teclas, etc.

Corrí vi .bash_profile

vi es un editor de texto que no es en absoluto amigable para los novatos. Siempre que vea instrucciones para usar vi , tómelo como "edite este archivo de texto", y siéntase libre de utilizar cualquier editor de texto que desee.


¿Cómo puedo configurar el intérprete de comandos para que incluya siempre una línea adicional o una regla horizontal tras la finalización de cada comando, para separar visualmente cada comando del anterior?

El texto que el shell muestra antes del comando que se escribe se llama prompt . La forma básica de configurar el indicador es a través de la variable PS1 . El contenido puede ser muy complejo, aprovechando secuencias de escape de la solicitud y más. Hay marcos enteros que facilitan la personalización del aviso, incluyendo un instalación de temas de interés así como muchos marcos de trabajo de terceros.

Para algo sencillo como mostrar una línea en blanco antes de cada pregunta, es fácil hacerlo manualmente. Ponga esta línea en su .zshrc :

PS1=$'\n'$PS1

Lo que esto significa:

  • PS1=… es un asignación . Cambia el valor de la variable PS1 a lo que está a la derecha del signo de igualdad.
  • $'…' es una de las varias formas de citando . Dentro de $'…' el carácter de barra invertida le permite especificar caracteres no imprimibles, como con echo . \n significa un carácter de nueva línea.
  • $PS1 toma el valor actual de la variable PS1 .

Tenga en cuenta que esto añade una línea en blanco cada vez que ejecuta el comando, por lo que si lo ejecuta dos veces, obtendrá dos líneas en blanco.

¿Hay alguna forma de personalizar la forma en que se muestran las rutas?

Si te refieres a cambiar la forma en que el directorio actual se escribe en el prompt, entonces sí, porque puedes ejecutar un código arbitrario para elegir lo que entra en el prompt. Sin embargo, yo no lo recomendaría, porque no puedes personalizar la forma en que se presentan las rutas en otros lugares, y no puedes escribir las rutas de otra manera. Tenga en cuenta también que cualquier cosa que haga allí es probable que interfiera con otras personalizaciones del prompt.

Voy a suponer que usted ha personalizado su aviso manualmente, configurando PS1 y que utilice el %~ secuencia de escape del prompt para tener el directorio actual en el prompt con ~ para su directorio principal.

Habilitar el prompt_subst opción. Esto le permite utilizar variables dentro de la especificación del indicador. Por ejemplo, el siguiente fragmento en .zshrc hace que el prompt muestre el directorio actual y % (o # para el usuario Root), similar a PS1='%~ %# ' :

setopt prompt_subst
PS1='${(D)PWD//\%/%%} %# '
  • Asignamos a la solicitud con PS1='…' . Todo lo que está dentro de las comillas simples se interpreta literalmente: no se produce ninguna expansión, por lo que el valor de PS1 es la cadena de 13 caracteres ${PWD//\%/%%} . Lo hacemos para que ${PWD//\%/%%} se evalúa cada vez que se muestra el aviso (por el contrario, PS1=${PWD//\%/%%} se fijaría PS1 de una vez por todas en función del directorio actual en el momento de la asignación).
  • El PWD contiene la ruta completa del directorio actual. Zsh la actualiza automáticamente cada vez que el directorio actual cambia. $PWD o ${PWD} es el valor del PWD variable.
  • ${(D)PWD} aplica el indicador de expansión de parámetros D al valor de PWD . El efecto de esta bandera es que si la ruta comienza con su directorio personal, se sustituye por ~ . Esto es similar a lo que %~ lo hace.
  • ${VARIABLE//…/…} es una forma de expansión de parámetros que sustituye una cadena por otra en el valor. En concreto, utilizamos ${(D)PWD//\%/%%} que sustituye a cada % por %% . La barra invertida antes del % es necesario porque un % en esta posición tendría un significado especial. Lo hacemos porque con prompt_subst habilitado, los valores de las variables utilizadas en el prompt son a su vez objeto de expansión del prompt, es decir, si contienen un % se inicia una secuencia de escape del prompt. Así que PS1='$PWD' haría cosas extrañas si la ruta del directorio actual contiene % .

Ahora podemos basarnos en esto para cambiar cómo se muestra la ruta. El siguiente fragmento utiliza la función %B y %b banderas de expansión de la demanda para que las barras inclinadas de la ruta aparezcan en negrita. Usamos otro ${…//…/…} sustitución, esta vez para reemplazar / por %B/%b (empezar en negrita, / , deje de poner negrita).

setopt prompt_subst
PS1='${${(D)PWD//\%/%%}//\//%B/%b} %# '

1voto

awy Puntos 500

En primer lugar, prefiere nano o su editor de texto GUI favorito en lugar de vi . nano ~/.zprofile o open ~/.zprofile -a TextEdit . Texto sublime y VSCode tiene herramientas de línea de comandos que puede añadir a su PATH y subl ~/.zshrc se vuelve menos temible.

https://stackoverflow.com/questions/11828270/how-do-i-exit-the-vim-editor

A partir de esta respuesta, ejecuté PS0=" \n ", que no hizo nada.

Con ohmyzsh, seguí cambiando de tema (en ~/.zshrc ) hasta que encontré el adecuado: ZSH_THEME="garyblessington" . Entonces se obtiene la corriente PROMPT : echo ${PROMPT} . Y lo he modificado a mi gusto y lo he añadido a ~/.zshrc :

export PROMPT='%{$fg[cyan]%}%c%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%} $'

También hay algunos editores de PROMPT en línea que pueden ayudarte a visualizarlo o indicarte qué patrón utilizar para obtener, por ejemplo, la hora actual.

Para facilitar la lectura, pruebe a cambiar los colores, el tamaño de la letra y el contraste en las Preferencias del Terminal.

1voto

yoliho Puntos 340

Como se ha señalado, son muchas las cosas que hay que seguir.

Para el shell por defecto de los MacOS recientes, zsh, los autores proporcionan una buena documentación.

Ver https://zsh.sourceforge.io/ por todo ello.

Comience con la Guía del usuario https://zsh.sourceforge.io/Guide/zshguide.html

Sin embargo, tenga en cuenta que Apple no ha leído los documentos y ha hecho un cambio para que tenga que editar $PATH en .zshrc y no en .zshenv como se indica en el manual de zsh y en la guía del usuario (path_helper se llama en /etc/zshrc después de llamar a .zshenv)

1voto

geocoin Puntos 121

Esto es realmente un complemento a las otras respuestas, que tienen gran información, y no una respuesta perfecta en sí misma.

Prueba la nave estelar - https://starship.rs/

Es una nueva herramienta de consulta que el shell llama, y tiene algunas grandes opciones, incluyendo buenos valores predeterminados.

Uno de los primeros ejemplos de configuración que dan es la adición de nuevas líneas - FYI. Los siguientes entroies son el archivo de configuración para starship - por lo general ~/.config/starship.toml Primero tendrá que editar sus archivos de inicio zsh como se indica en las instrucciones de instalación.

# Inserts a blank line between shell prompts
add_newline = true

Además, la opción de dirección permite el truncamiento automático: https://starship.rs/config/#directory

[directory]
truncation_length = 8
truncation_symbol = "…/"

También querrá seguir otros consejos y hacer cosas como conseguir algunas fuentes de línea de energía agradable, obtener un esquema de color agradable (personalmente me gusta Solarizado ), y tal vez intente iTerm también.

1voto

Hay algunas respuestas generales muy buenas, pero aquí hay una sugerencia específica: utilizar el vídeo inverso para la indicación .

Para zsh, añada algo como esto en su archivo .zlogin:

export PS1="%S%~>%s "

PS1 es la variable del shell utilizada para generar el prompt. %S y %s establecer y borrar el vídeo inverso. (Deberían funcionar para todos los tipos de terminales.) La parte intermedia muestra el directorio actual, seguido de > Si quieres el nombre del host, el nombre del shell, y/o cualquier otra cosa, puedes ver algunas de las otras respuestas y sus enlaces. (El formato es específico de zsh; hay equivalentes para otros shells).

Esto hace que las líneas de aviso se destaquen muy claramente para mí, sin ocupar más espacio en la pantalla ni añadir demasiado "ruido" visual. (Y es fácil de ajustar: por ejemplo, puedes cambiar el color como recordatorio visual cuando estás en Root o en un servidor de producción).

Llevo décadas utilizando este tipo de indicaciones en muchas máquinas diferentes, no veo por qué no es estándar :-)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X