GNU/Linux >> Tutoriales Linux >  >> Linux

Personalización del shell Bash

El shell Bash es un entorno de procesamiento de comandos que muchos administradores de sistemas y desarrolladores usan todos los días. Fue desarrollado por primera vez en 1989 y ha sido el shell predeterminado para muchas distribuciones desde que se creó Linux. En la mayoría de los casos, Bash o 'Bourne-again shell' es el marco en el que está trabajando cada vez que abre la línea de comando. También tiene su propio lenguaje de secuencias de comandos y cuenta con una gran cantidad de utilidades para aquellos con la disciplina mental para aprenderlas.

¿Por qué personalizarías tu caparazón?

El shell Bash ofrece mucha utilidad, pero no es un sistema perfecto. A lo largo de los años, los entusiastas de la línea de comandos han encontrado fallas y realizado mejoras en varios shells, y Bash no es una excepción. Hay toneladas de adiciones que puedes hacer a Bash. Todo, desde cambios de funcionalidad significativos hasta atajos y cambios estéticos realizados de acuerdo con sus gustos personales. Dicho esto, todos tienen su propio estilo preferido de estética, por lo que me centraré en los cambios en la funcionalidad.

Empezar poco a poco

La forma más fácil de comenzar a personalizar su shell es averiguar dónde se gasta la mayor parte del tiempo de la línea de comandos. ¿Te encuentras usando grep y netstat ¿a menudo? ¿Se mueve por el sistema de archivos innumerables veces por hora? Si es así, ¿cómo puede hacer que estas tareas sean más eficientes? En el primer artículo que escribí para este sitio, hablé sobre un script de automatización llamado AutoHotkey. Desafortunadamente, solo se ejecuta en Windows. Un lector me desafió a encontrar algo que pudiera usar para Linux para realizar las mismas tareas. Si bien no existe una solución bien empaquetada para ese desafío, puede crear un alias para comandos modificados dentro de su shell con el mismo efecto. Si bien esto puede llevar un poco de tiempo, si se toma el tiempo de aprender sobre los alias y crear algunos propios, será un administrador de sistemas más inteligente y eficiente.

Rick Greene, un miembro de la comunidad Enable Sysadmin, compartió uno de sus alias favoritos, donde se eleva al shell raíz usando sudo .

alias root="sudo su - root"

Efectivamente, trabaja como root usuario mientras realiza un seguimiento de sus acciones en el sistema utilizando su propia contraseña de cuenta de usuario. Mientras que el método preferido aquí sería usar sudo comando antes de cualquier acción, la belleza de este ejemplo es que Bash le permite a cada usuario crear una solución que funcione para ellos. Puede alias prácticamente todos los comandos en su caparazón. Le recomiendo que intente crear algunos de sus propios alias ahora.

[ Para obtener información sobre la creación de alias en Linux, consulte mi artículo anterior. ]

X> f(x)

Si tienes inclinaciones matemáticas, ya sabes de lo que estamos hablando aquí. ¡Las funciones han salido de las pesadillas de tu salón de clases y se han incorporado a tu vida laboral! La buena noticia aquí es que estos son bastante sencillos y pueden ser muy útiles. Nos permiten un puente entre la creación de alias y la secuencia de comandos en toda regla. La gran ventaja aquí es que puede encadenar varios comandos juntos. Veamos la sintaxis para crear estas funciones y un ejemplo práctico de uso. Para crear una función, utilice la siguiente sintaxis:

function_name () {command1; command2;}
#You MUST use a semicolon after each command, including the last. 

¿Cómo usaríamos esto? Uno de los mejores ejemplos que he visto flotando en la web es una función que le permite crear un nuevo directorio y luego moverse inmediatamente a ese directorio. Esa función se vería así:

mkd () {mkdir -p $1; cd $1;}

Ahora, si creamos un directorio llamado func_test usando el mkd función, podemos ver que automáticamente nos coloca en el nuevo directorio.

# mkd func_test
# pwd
# Home/user/func_test

¿La historia se repite? Solo si quieres...

Antes de escribir este artículo, me comuniqué con nuestra comunidad de colaboradores para obtener comentarios sobre sus mejoras favoritas de Bash. Había un tema común en todos los comentarios que recibí. La gente quiere cambiar la forma en que Bash history opera. Uno de los cambios más útiles que vi fue la capacidad de eliminar entradas duplicadas del history .

Seth Kenlon de Opensource.com envió lo siguiente desde su .bashrc expediente. Permite history para ignorar las entradas duplicadas y los comandos que comienzan con un espacio.

"export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups"

El sombrerero rojo Steve Newsted me señaló un gran hilo en StackExchange, donde un usuario buscaba modificar el history de Bash. recordar todo desde cada terminal en su máquina mientras tiene ese history ser accesible desde cada terminal en dicha máquina. Mira la creatividad de la respuesta de suntzuisafterU. Simplemente agregue lo siguiente a su ~/.bashrc archivo.

#Avoid duplicates
HISTCONTROL=ignoredups:erasedups  
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Próximos pasos

Ahora puede ver la gran cantidad de cambios, optimizaciones y personalizaciones que están disponibles en Bash. Este artículo solo toca la superficie de lo que puede hacer dentro del caparazón. ¡Sal ahí fuera y explóralo por ti mismo! Si tiene una adición favorita de Bash, no dude en enviarla al equipo a [email protected]. ¡Me encantaría ver algunas de las soluciones creativas que nuestros lectores están poniendo en práctica!

[ ¿Necesita más ayuda para comenzar con la administración del sistema Linux? Realice un curso de administración de sistemas de Red Hat. ]


Linux
  1. Navegando por el shell Bash con pushd y popd

  2. Poder (Shell) para la gente

  3. El Bash'?

  4. Personalización de Bash Shell:Negrita/color ¿El comando?

  5. ¿Entiendes el significado de `$_`?

.bashrc frente a .bash_profile

¿Qué es el Shell en Linux?

El bucle while en los scripts de Shell

Comando Bash fc:maneja fácilmente el Bash Shell como un profesional

Cómo BASH Shell carga sus archivos de configuración en Linux

¿Cuál es la diferencia entre &> y >&en bash?