Insertar una línea vacía entre las indicaciones de la línea de comando

8

Cuando se usa la línea de comando, a menudo se vuelve muy abarrotada. Haciendo inconveniente examinar los comandos pasados ​​y sus salidas, por ejemplo.

Me gustaría agregar una nueva línea cada vez antes de que se muestre el símbolo del sistema. Al igual que:

<clutter>
<blank line>
name@machine:~$

Yo uso el bash shell. ¿Cómo se puede lograr esto?

Slothworks
fuente
1
Prefiero esto: lifehacker.com/5840450/…
Maerlyn

Respuestas:

21

Una forma de lograr esto es modificando el .bashrcarchivo. Simplemente coloque lo siguiente al final del .bashrcarchivo.

PS1="\n$PS1"

Para explicar cómo funciona esto, PS1es la variable que contiene lo que se debe mostrar como solicitud. Todo lo que dice es "establecer PS1el contenido anterior de PS1, con un carácter de nueva línea antepuesto". Ponerlo en la .bashrcmayoría de las distribuciones solo hace que bash lo ejecute cada vez que abre un shell interactivo (pero no un shell de inicio de sesión; consulte ¿ Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión? ).

Slothworks
fuente
2
Para explicar cómo funciona esto, PS1 es la variable que contiene lo que se debe mostrar como solicitud. Todo lo que dice es "configurar PS1 a los contenidos anteriores de PS1, con un carácter de nueva línea antepuesto".
Muzer
@Muzer Tal vez tu comentario podría ser una edición
rpax
@rpax buena idea, presentada. También se agregó un poco sobre .bashrc.
Muzer
Satisfactoriamente, ejecutar PS1="\n$PS1"en una terminal tiene efecto instantáneo :)
mwfearnley
Funciona totalmente bien, aparte de después de ingresar clear(o presionar Ctrl+l) la primera línea que se muestra es una línea vacía. Para algunos podría ser un pequeño detalle, pero preferiría que la primera línea sea el aviso.
Robert Kusznier
6

Puedes usar PROMPT_COMMAND :

PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"

o:

PROMPT_COMMAND="echo;$PROMPT_COMMAND"
Cuonglm
fuente
2
¿Debería ser el primero PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"? En su forma actual, parece que no hace nada cuando lo coloco en el .bashrcarchivo.
Slothworks
@Slothworks: Sí, por supuesto, mi error al escribir, lo arregló.
Cuonglm
Más de una manera de hacerlo :) Gracias por su respuesta.
Slothworks
2
La alternativa de Slothworks es mejor, porque la suya ejecuta un comando adicional después de cada comando que se ejecuta en la línea de comando. printfy echoson muy livianos, por supuesto, pero aún no tiene sentido usar PROMPT_COMMANDcuándo PS1hará el trabajo.
Mikkel
Tenga en cuenta que si desea poner algo en el comando que cambia cada vez que ejecuta el indicador, quiere PROMPT_COMMAND y no PS1. Esto se usa comúnmente con git para mostrar qué rama del repositorio está activa. Google para sugerencias de PROMPT_COMMAND para ver qué se puede hacer.
Walter
4

Alternativa: deje una línea en el PS1=indicador de su .bashrc. Aquí está literalmente cómo configuro .bashrcen cada máquina Linux que tengo:

PS1=' 
serg@ubuntu [$(pwd)]
================================
$ '

Como puede ver en mi ejemplo anterior, el nombre de usuario está codificado en la solicitud. Por supuesto, puede usar secuencias de escape que bash u otro shell (por ejemplo, ksh ) proporciona, pero una opción un poco más neutral sería usar la sustitución de parámetros con comandos como whoami(informar su nombre de usuario) y hostname(obviamente, informa el nombre de host). Por ejemplo:

PS1='
$(whoami)@$(hostname):$(pwd)
$ '

Para obtener más cosas divertidas con el indicador, .bashrcy las expansiones de parámetros, consulte mis respuestas aquí:

¿Cómo verificar el estado de la batería usando la terminal?

¿Cómo puedo hacer que mis terminales / proyectiles tengan diseños personalizados? y

¿Cómo mostrar un reloj en ejecución en la terminal antes del símbolo del sistema?

Sergiy Kolodyazhnyy
fuente
¿Por qué el nombre de usuario y el nombre de la máquina están codificados? Sería bueno si estuvieran parametrizados
rpax
@rpax mi nombre de usuario real es diferente. Ese es mi nombre que ves en el aviso. El nombre de la máquina también es diferente.
Sergiy Kolodyazhnyy
Me refería a algún tipo de en $(whoami)lugar deusernamehardcoded
rpax
@rpax oh, eso también se puede hacer. Lo incluiré en mi respuesta
Sergiy Kolodyazhnyy
44
Tenga en cuenta que puede usar \uy \hpara su nombre de usuario y nombre de host, respectivamente. Puede ver más caracteres especiales (por ejemplo, la hora actual en varios formatos) aquí
Yossarian