La necesidad de borrar la terminal pero guardar la línea actual con el comando. ¡En el guión! (El comando llama al script. Es necesario borrar todo el terminal ANTES de este comando, que llama al script). Restaurar un comando del historial no es adecuado
Ejemplo de uso esperado:
- Se está creando un script "test.sh"
- Escribimos algún comando "borrar" modificado en él:
#!/usr/bin/env bash clear echo some text
- Aplicar
Estado terminal actual:
Resultado actual después de ejecutar 'test.sh':
¿Cuál es el problema? El hecho de que la línea con el comando haya desaparecido + vscode no muestra la marca de verificación izquierda con el código de error del script.
Resultado Esperado:
¿Cómo hacerlo?
PD:
El problema no solo está en vscode, en otras terminales el comando también se borra por completo
Respuesta1
De una sola mano
Si necesita un mensaje real, puede utilizar alguna manipulación del cursor como esta:
#!/bin/bash
# Save cursor position
printf '\033[s'
# Move the cursor up 1 line
printf '\033[1A'
# Clear the screen
printf '\033[1J'
# Restore cursor position
printf '\033[u'
echo "new thing"
Si el ejemplo anterior necesita más ajustes, consulte, por ejemploSecuencias de escape ANSI: movimiento del cursory tambiénSecuencias de escape ANSIpara más de esos.
De otra manera
Aún puedes usarlo clear
si lo deseas y luego volver a dibujar el mensaje de esta manera:
#!/bin/bash
# Clear the screen
clear
# Build the prompt as it was before "clear"
line="$(printf '%s' "$USER@$HOSTNAME:$PWD$ $0")"
# For "root" prompt i.e. "#", comment out the above line and uncomment the below line
# line="$(printf '%s' "$USER@$HOSTNAME:$PWD# $0")"
# Print the prompt
echo "${line/\/home\/$USER/\~}"
echo "new thing"
O incluso así:
#!/bin/bash
clear
line="$USER@$HOSTNAME:$PWD$ "
read -t 0.01 -ei "$(echo "$0")" -p "${line/\/home\/$USER/\~}"
echo
echo "new thing"
Las apariencias engañan, pero las apariencias pueden ser lo que quieres... Sin embargo, no es un mensaje real.
Respuesta2
Tu pregunta no es muyclear
(que irónicamente es el comando que quieres usar), pero intentaré responderla de todos modos.
Tengo entendido que se llama a un script con un comando (digamos que se llama./myscript
) y desea borrar la pantalla antes de ejecutar el script.
Puedes hacer esto de 2 maneras.
Borre la pantalla y luego ejecute el script:
$ clear; ./myscript
Tenga el
clear
comando como primera línea en su script:#!/bin/bash # Beginning of ./myscript clear # The rest of the script goes here
Y luego simplemente ejecute el script, que borrará la pantalla, y luego procederá a hacer otras cosas:
$ ./myscript
Finalmente, si desea crear un alias que borre la pantalla y luego vuelva a ejecutar el último comando, puede definir:
alias clrun='clear; $(fc -ln -1)'
Luego corriendoclrun
hará exactamente esto: borrar la pantalla y luego volver a ejecutar el comando anterior.
Si esto no responde a tu pregunta, debes ser mucho más preciso en lo que quieres.