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} %# '