Regresar a saberes y documentación
Comandos básicos del shell
Contents
- Comandos básicos del shell
- El prompt
- Posicionamiento
- Crear ficheros
- Crear un directorio o carpeta
- Borrar un directorio o carpeta
- Listar contenido
- Copiar un fichero
- Copiar un directorio con su contenido
- Explorar un directorio
- Mover un fichero
- Renombrar un fichero
- Borrar un fichero
- Ver espacio en disco
- Ver tamaño del directorio
- Documentación de comandos
- Enlaces blandos
- Búsqueda básica y avanzada de archivos
- Iterar en archivos con nombres que tienen espacios
- Artículos relacionados
- Enlaces externos
El prompt
Es por lo que estará representada nuestra consola, terminal o shell para poder digitar los comandos que necesitemos, un ejemplo de simbolo del prompt es:
usuario@maquina:~$
En donde el símbolo $ nos indica que es un usuario común y corriente y por el contrario si es el administrador del sistema se representa por un el símbolo #.
root@maquina:~#
Posicionamiento
El comando pwd nos será util para hacer saber, en que lugar del sistema de ficheros estamos parados, para ello debemos hacer:
usuario@maquina:~$ pwd
Se imprimirá en la pantalla una línea como:
/home/usuario
Crear ficheros
Usaremos el comando touch para crear un fichero, el fichero quedará vacio.
usuario@maquina:~$ touch fichero.txt otro_fichero.txt
Lo que acabas de hacer es ejecutar un comando y pasar dos parámetros a él, en este caso el comando es touch y los parámetros son fichero.txt y otro_fichero.txt.
Observa que el el carácter de espacio sirve para separar los parámetros.
|
Crear un directorio o carpeta
Para crear un directorio usa el comando mkdir y pasas como parámetro el nombre del directorio que deseas crear.
usuario@maquina:~$ mkdir mi_directorio
Como muchos comandos mkdir acepta mas de un parámetro, en ese caso, creará varios directorios.
Borrar un directorio o carpeta
Borrar un directorio vacío: Para borrar un directorio vacío, usa el comando rmdir y pasas como parámetro el nombre del directorio vacío que deseas borrar:
usuario@maquina:~$ rmdir directorio_vacio
Borrar un directorio con todo su contenido: Para borrar un directorio con su contenido, usa el comando rm con la opción -R que indica recursivamente, y pasas como parámetro el nombre del directorio que deseas borrar:
usuario@maquina:~$ rm -R directorio
Listar contenido
El comando ls nos mostrará ficheros dentro del directorio actual.
usuario@maquina:~$ ls
Salida del comando.
fichero.txt otro_fichero.txt mi_directorio
Copiar un fichero
Para copiar ficheros de un directorio a otro escriba en la consola el comando cp seguido del nombre de fichero, un espacio, y luego la ruta donde deseas poner la copia:
usuario@maquina:~$ cp fichero.txt mi_directorio/
Copiar un directorio con su contenido
Para copiar un directorio con su contenido, utilice el comando cp con la opción -R para copia recursiva, seguido del parámetro ruta donde se desea hacer la copia:
usuario@maquina:~$ cp -R directorio otro_directorio/
Explorar un directorio
Utilizarás el comando cd para moverte de un lugar a otro dentro del sistema de ficheros.
usuario@maquina:~$ cd mi_directorio/ usuario@maquina:~mi_directorio/$ cd ../ usuario@maquina:~$
Mover un fichero
Para mover ficheros de un directorio a otro escriba en la consola el comando mv seguido del fichero a mover, y luego la ruta del directorio donde quiere que quede el fichero:
usuario@maquina:~$ mv otro_fichero.txt mi_directorio/
Renombrar un fichero
Para renombrar un fichero, hacemos uso del comando mv seguido del nombre original del fichero a renombrar (primer argumento), y luego el nombre que se quiere dar al fichero (segundo argumento):
usuario@maquina:~$ mv nom_fichero.txt nuevo_nom_fichero.txt
Borrar un fichero
Para borrar ficheros de un directorio escriba en la consola el comando rm, debe tenerse cuidado con este comando ya que si eres el administrador (aparece el el símbolo # en tu prompt), puede que si no tienes cuidado, borres un fichero importante del sistema:
|
usuario@maquina:~$ rm fichero.txt
Ver espacio en disco
Con el comando df podremos visualizar las particiones como dispositivos, su tamaño, el tamaño usado y el tamaño disponible en cada particion, tambien en donde ha sido montado el dispositivo y puede mostrar mas información necesaria.
$ df -h
Ver tamaño del directorio
El comando para esta información es du, el cual nos da un total de uso de espacio de archivos en determinado directorio:
$ du -hs directorio
Ordenado por tamaño
Tamaño de las carpetas ordenado de menor a mayor
$ du -hs $(du -s * | sort -g | awk '{print $2}')
Documentación de comandos
Para ver mas información de como funciona determinado comando en la shell, podemos usar el famosos comandos man e info así:
$ man man
$ info man
Enlaces blandos
Crear un enlace blando de la carpeta /carpeta con el nombre enlace
ln -s /carpeta enlace
Operaciones siguiendo enlaces blandos
ls -L muestra la información del archivo al que referencia el enlace cp -rL copia el archivo al que referencia el enlace du -hsL añade el tamaño del archivo al que referencia el enlace
Búsqueda básica y avanzada de archivos
- Sintaxis
find /ruta -name "comodinARCHIVOcomodin" -OPCIONES
El comando find podría ser considerado entre los comandos más útiles para un administrador de Sistema UNIX / Linux, veamos algunos ejemplos:
- Buscar Archivos con extensión .txt en el directorio raíz, con tamaño mayor a 30MB y fecha de acceso mayor a 8 días:
find / -name "*.txt" -size +30000 -atime +8
- Buscar archivos con extensión diferente a .log que se encuentran en el directorio /home/usuario/, y que han sido modificados en los últimos 30 días
find /home/usuario \! -name "*.log" \! -mtime +30
Ahora bien, y qué tal si el mismo comando que usamos para buscar, fuera capaz de realizar acciones por nosotros, a manera de iteraciones (ciclos), con cada uno de esos archivos?, veamos otros ejemplos:
- Buscar en el directorio home del usuario actual los archivos con fecha de acceso mayor a 5 días, con excepción de los archivos con extensión .log y listar sus características (usuario, permisos, fecha de acceso):
find $HOME -mtime +5 \! -name "*.log" -exec ls -lua {} \;Ufff... comando denso, verdad?... pero es de gran utilidad, y realmente no es muy complejo
- Buscar los archivos con extensión .txt dentro del directorio /home, con consecutivo diferente a 2006, con fecha de acceso mayor a 7 días, con tamaño mayor a 5MB, y comprimirlos con el comando compress, y otro con el comando gzip:
find /home -name "*.txt" \! -name "*2006*" -atime +7 -size +5000 -exec compress -v {} \; find /home -name "*.txt" \! -name "*2006*" -atime +7 -size +5000 -exec gzip -9 {} \;Qué gran ayuda, verdad?... cuanto tardas en buscar y comprimir más de 10 archivos?
Un ejemplo más... pero es de advertir que debe realizarse con mucho cuidado, con la conciencia de que no es reversible:
- Buscar los archivos con nombre core dentro del directorio home de los usuarios del sistema que se encuentra en la ruta /aplicativo/produccion, con fecha de modificación mayor a 5 días, y tamaño mayor a 3MB, y eliminarlos del sistema:
find /aplicativo/produccion -name core -mtime +5 -size +3000 -exec rm {} \;Ojo, el comando es muy sencillo, pero es un comando de mucho cuidado, donde el error humano, puede costar una fortuna para la compañía, la pérdidad de datos, corrupción de bases de datos, y procesos de recuperación de backups bastante extensos
Iterar en archivos con nombres que tienen espacios
Para cuando tenemos varios archivos con nombres como 1280 Almas/Hablame de horror/01 - Soledad criminal.flac y queremos ejecutar una operación con ellos.
SAVEIFS=$IFS IFS=$(echo -en "\n\b") for f in * do echo "$f" done IFS=$SAVEIFS
Ejemplos
Cambiar los permisos de todas las carpetas de una jerarquía
SAVEIFS=$IFS IFS=$(echo -en "\n\b") for f in $(find -type d); do chmod u=rwx,g=,o= "$f" done IFS=$SAVEIFS
Cambiar los permisos de todos los archivos de una jerarquía
SAVEIFS=$IFS IFS=$(echo -en "\n\b") for f in $(find -type f); do chmod u=rw,g=,o= "$f" done IFS=$SAVEIFS
Artículos relacionados
Enlaces externos
Curso de iniciación al sistema operativo Unix y Linux para novatos
Mas tutoriales en: TLDP-ES/LuCAS
