Soy de los que usa gran parte del tiempo la terminal (consola, bash, shell, como quieran llamarle), por X o Y motivos tengo que estar constantemente cambiando de directorio, trabajando en ella
En la gran mayoría de los casos, cambio de directorio (Por ejemplo: cd /opt/) y además deseo saber qué se encuentra en ese directorio, para saber esto segundo hago uso de ls.
O sea, sería así:
kzkggaara@geass:~$ cd /opt/
kzkggaara@geass:/opt/$
kzkggaara@geass:/opt/$ ls
nessus
Muchas veces lo he dicho… soy bastante vago, me gusta hacer la menor cantidad de pasos en terminal, por eso es que luego de bastante experimentar, he logrado justo lo que quería.
Vean lo siguiente, que no es más que yo entrando a /opt/ con el simple comando cd /opt/:
Como pueden ver, en un solo paso (cd /opt/) entro al directorio y ADEMÁS me lista el contenido de ese directorio, y… por si fuera poco, me lo muestra con colores
Aquí el ejemplo de yo accediendo a /etc/ con cd /etc/ :
Los colores son simples de entender:
Sin color = Archivos
Color azul = Carpetas
Color verde = Archivos con permisos de ejecución
Pero, pasemos a lo principal… ¿cómo demonios usando solamente cd puedo además automáticamente listar el directorio al que accedo?
Nuestro archivo .bashrc (ubicado en nuestro home o carpeta personal) nos ayudará a hacer esto, primero debemos declarar una función, a la que llamaremos cdls:
function cdls { cd «$1»; ls –color;}
Esta línea la ponemos en cualquier lado de nuestro .bashrc … aquí les dejo el comando para hacerlo:
echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc
NO necesariamente tienen que hacerlo con este comando, el objetivo es que el archivo .bashrc contenga esta línea, así que simplemente editen este archivo con su editor de texto preferido (mousepad, kate, gedit, nano, vi, etc) y la agregan.
Guardan el cambio, cierran la terminal que tengan abierta y abren una nueva.
En ella escribiremos lo siguiente y presionamos [Enter]:
cdls $HOME
Esto deberá bastar para acceder a nuestra carpeta personal en esa terminal, y además nos listará el contenido de ella (con colores y todo).
O sea, que cdls ya hace lo que queremos… ahora solo nos queda lograr lo mismo pero con cd
Para esto, agregamos en el archivo .bashrc la siguiente línea:
alias cd='cdls'
Esto hará que cuando escribamos cd … en realidad se ejecutará la acción que definimos para cdls
Les dejo el comando que pondrá automáticamente esta línea anterior:
echo "" >> $HOME/.bashrc && echo "alias cd='cdls'" >> $HOME/.bashrc
Pero igual como les dije antes, el objetivo es agregar esta otra línea el mismo archivo, pueden usar el editor de texto de su preferencia para ello.
Una vez hecho esto, cierren la terminal y abran una nueva… en ella escriban lo siguiente y presionen [Enter]:
cd /etc/
Y bingo, entrarán a /etc/ y además se les listará el contenido de esta carpeta, y con colores (justo como en una foto anterior)
¿A que es útil?
Para los curiosos que se preguntan ¿qué significa esa función? … les dejo la simple explicación:
function cdls = Aquí definimos que estamos creando una nueva función, y se llamará cdls
cd «$1» = Y esta función lo que hará (hará cada vez que la llamemos, usemos o ejecutemos) será hacer un cd (entrar) hacia el 1er parámetro, o sea… -» «cd /home/», el «$1» significa «lo que escribamos luego de cd», en este ejemplo el 1er parámetro es «/home/».
; = Esto significa que ahí termina esa orden, o acción a ejecutar… pero una función puede tener más acciones a hacer, y le definiremos una segunda ahora.
ls –color; = Significa que además de cualquier acción declarada antes, también hará un «ls» en donde estemos ubicados, y el «ls» lo hará con color (–color).
Ultima cosa… los más listos, se darán cuenta que esta lógica (tomar una función y configurarla para que ejecute varias acciones) tiene mucho pero mucho potencial, por ejemplo… si quiero entrar a una carpeta, y además borrar otra, o sea, quiero entrar a /home/ y además borrar /opt/temp/ la función para ello sería:
function asdasd { cd "$1"; rm -Rv "$2"; }
Y escribiendo en una terminal asdasd /home/ /opt/test/ lo haría, porque entrará al 1er parámetro (/home/) y borrará el segundo (/opt/temp/).
En fin, de veras esto tiene MUCHO potencial jeje, queda por parte de ustedes aprovecharlo lo más que puedan.
Si tienen alguna duda o pregunta, queja o sugerencia con mucho gusto les echo una mano, no soy ni de lejos un experto pero al menos me gusta ayudar
Saludos