Si es un usuario de la línea de comandos de Linux, estará de acuerdo en que hay ocasiones en las que no desea que ciertos comandos que ejecuta se registren en el historial de la línea de comandos. Podría haber muchas razones para esto. Por ejemplo, está en un puesto determinado en su empresa y tiene algunos privilegios de los que no quiere que otros abusen. O bien, hay algunos comandos críticos que no desea ejecutar accidentalmente mientras navega por la lista del historial.
Pero, ¿hay alguna manera de controlar lo que entra en la lista de historial y lo que no? O, en otras palabras, ¿podemos activar un modo de incógnito similar a un navegador web en la línea de comandos de Linux? La respuesta es sí, y hay muchas formas de lograrlo, dependiendo de lo que quieras exactamente. En este artículo discutiremos algunas de las soluciones populares disponibles.
Nota: todos los comandos presentados en este artículo han sido probados en Ubuntu.
Diferentes formas disponibles
Las dos primeras formas que describiremos aquí ya se trataron en uno de nuestros artículos anteriores. Si ya los conoce, puede omitirlos. Sin embargo, si no lo sabe, le recomendamos que los revise con cuidado.
1. Insertar espacio antes del comando
Si, lo lees correctamente. Inserte un espacio al comienzo de un comando y el shell lo ignorará, lo que significa que el comando no se registrará en el historial. Sin embargo, existe una dependencia: dicha solución solo funcionará si la variable de entorno HISTCONTROL está configurada en «ignorar espacio» o «ignorar ambos», que es la opción predeterminada en la mayoría de los casos.
Entonces, un comando como el siguiente:
[space]echo "this is a top secret"
No aparecerá en el historial si ya ha realizado este comando:
export HISTCONTROL = ignorespace
La siguiente captura de pantalla es un ejemplo de este comportamiento.
El cuarto comando «eco» no se registró en el historial ya que se ejecutó con un espacio al principio.
2. Deshabilitar todo el historial de la sesión actual
Si desea deshabilitar todo el historial de una sesión, puede hacerlo fácilmente deshabilitando la variable de entorno HISTSIZE antes de comenzar con su trabajo de línea de comandos. Para desarmar la variable, ejecute el siguiente comando:
HISTFILE es el número de líneas (o comandos) que se pueden almacenar en la lista de historial para una sesión de bash en curso. Por defecto, esta variable tiene un valor establecido, por ejemplo, 1000 en mi caso.
Por lo tanto, el comando mencionado anteriormente establecerá el valor de la variable de entorno en cero y, en consecuencia, no se almacenará nada en la lista del historial hasta que cierre la terminal. Tenga en cuenta que tampoco podrá ver los comandos ejecutados anteriormente presionando la tecla de flecha hacia arriba o ejecutando el history
dominio.
3. Borra todo el historial una vez que hayas terminado
Esto puede verse como una alternativa a la solución mencionada en la sección anterior. La única diferencia es que en este caso ejecuta un comando DESPUÉS de que haya terminado con todo su trabajo. El siguiente es el comando en cuestión:
Como ya se mencionó, esto tendrá el mismo efecto que la solución HISTFILE mencionada anteriormente.
4. Desactiva el historial solo para el trabajo que haces
Si bien las soluciones (2 y 3) descritas anteriormente funcionan, borran todo el historial, algo que podría no ser deseable en muchas situaciones. Puede haber casos en los que desee conservar la lista de historial hasta el momento en que comience a trabajar con la línea de comandos. Para situaciones como estas, debe ejecutar el siguiente comando antes de comenzar con su trabajo:
Nota: [space] representa un espacio en blanco.
El comando anterior deshabilitará el historial temporalmente, lo que significa que cualquier cosa que haga después de ejecutar este comando no se registrará en el historial, aunque todo lo ejecutado antes del comando anterior estará allí tal como está en la lista del historial.
Para volver a habilitar el historial, ejecute el siguiente comando:
Esto hace que las cosas vuelvan a la normalidad, lo que significa que cualquier trabajo de línea de comando realizado después del comando anterior aparecerá en el historial.
5. Eliminar comandos específicos del historial
Ahora suponga que la lista de historial ya contiene algunos comandos que no desea que se registren. ¿Qué se puede hacer en este caso? Es simple. Puede continuar y eliminarlos. Lo siguiente es cómo lograr esto:
[space]history | grep "part of command you want to remove"
El comando anterior generará una lista de comandos coincidentes (que están en la lista del historial) con un número [num] precede a cada uno de ellos.
Una vez que haya identificado el comando que desea eliminar, simplemente ejecute el siguiente comando para eliminar esa entrada en particular de la lista del historial:
La siguiente captura de pantalla es un ejemplo de esto.
El segundo comando ‘eco’ se eliminó con éxito.
Alternativamente, puede simplemente presionar la tecla de flecha hacia arriba para regresar a la lista de historial, y una vez que el comando de su interés aparece en la terminal, simplemente presione «Ctrl + U» para borrar totalmente la línea, eliminándola efectivamente de la lista. lista.
Conclusión
Hay varias formas en las que puede manipular el historial de la línea de comandos de Linux para satisfacer sus necesidades. Tenga en cuenta, sin embargo, que normalmente no es una buena práctica ocultar o eliminar un comando del historial, aunque tampoco está mal en sí mismo, pero debe ser consciente de lo que está haciendo y de los efectos que podría tener.