Saltar al contenido principal
Página

Tema 2.4 - Comandos Shell

Antes de conocer algunos de los comandos disponibles en el Shell, se debe tener muy claro que tareas se van a realizar, es decir, se debe diferenciar entre tareas de administración y uso habitual del sistema.

Los comandos se invocan por su nombre y se le pasan opciones o parámetros por medio del signo menos "-" seguido de una o más letras. Por ejemplo, ls -la.

Además de estas opciones muchas veces fijándonos en las páginas del manual de un determinado comando nos encontramos con opciones de palabra completa. Dichas opciones se indican con doble signo "-" y generalmente existe su correspondencia con la forma de pasar parámetros a un comando, como vimos anteriormente.

Ejemplo: "cat --number" equivale a "cat -n".

También debes dejar un espacio entre el comando y el primer parámetro.


Comandos Básicos de Usuario

Normalmente, como usuario, se creará el hábito de crear, leer y borrar archivos en el directorio home/usuario, ya que fuera de este las posibilidades se ven reducidas. A continuación, se describen algunos comandos sencillos que pueden ser útiles para familiarizarse con los comandos del sistema.



Los comandos que ofrece el shell de Linux también pueden ser clasificados así:

  •       Comandos Internos
  •       Comandos Externos


Comandos Internos:

Los comandos internos corresponden a órdenes interpretadas por el propio shell (luego no existe ningún fichero ejecutable asociado al comando). Se distinguen dos tipos de comandos internos:

  • Especiales: un error producido al ejecutar este comando da lugar a que el shell termine. Por consiguiente, el script termina con un error y un valor de retorno mayor de cero.
  • Regulares: el shell no tiene que terminar cuando se produce un error en estos comandos. En la siguiente tabla se recogen los comandos especiales definidos en el estándar.



Como comandos internos regulares, el estándar define los siguientes:



Comandos externos

Los comandos externos corresponden a ficheros ejecutables externos al shell. Cualquier posible aplicación pertenecería a esta categoría de comandos (ps, firefox, emacs...). El estándar POSIX recoge una lista de comandos externos que aconsejablemente deberían estar en un sistema UNIX, clasificándolos en obligatorios u opcionales según se exija o no su implementación para satisfacer el estándar. Entre los comandos externos obligatorios, el estándar define los siguientes:


A continuación, se describe la forma de uso y funcionamiento de los comandos de usuario más importantes en el shell de Linux.


Listado del Contenido de Directorios: ls

Una de las acciones más habituales a la hora de trabajar es mostrar el contenido de un directorio, el shell incluye un programa con este fin: ls.


Las opciones anteriores pueden combinarse. Por ejemplo: ls -cr Muestra el directorio ordenando inversamente por fechas.

El comando ls admite los caracteres de sustitución o metacarácteres (*) y (?). El carácter * representa cualquier conjunto o secuencia de caracteres. El carácter ? representa cualquier carácter, pero sólo uno. Por ejemplo, si digitamos ls *.gif, el resultado mostrado serán todos los archivos cuya extensión sea .gif, por ejemplo dibujo.gif, cuadro.gif, etc.

De manera análoga si digitamos ls file?, el shell mostrará todos los archivos cuyos nombres empiecen por file y tengan un nombre de cinco caracteres, por ejemplo: file1, file2, filea, etc.


Creación de Subdirectorios: mkdir
El comando mkdir (make directory) permite a cada usuario crear un nuevo subdirectorio, la forma de utilizar este comando sería:

mkdir directorio
donde directorio sera el nombre del directorio que se va a crear.


Borrado de Subdirectorios: rmdir
Este comando borra uno o más directorios del sistema (remove directory), siempre que estos subdirectorios estén vacíos. Por ejemplo:

rmdir directorioPrueba
donde directorioPrueba es el nombre del directorio que se va a eliminar.


Cambio de directorio:  cd
Este comando permite cambiar de directorio a partir del directorio actual de trabajo. Por ejemplo:

cd /home/qvision

en este ejemplo pasamos del directorio actual de trabajo al nuevo directorio /home/qvision, que será desde ahora nuestro nuevo directorio.

Dicho subdirectorio (qvision en este caso) deberá existir como subdirectorio en el directorio actual donde estamos ubicados.

Otra forma de utilizar el comando cd es:

cd ..

Retrocedemos un nivel en la jerarquía de directorios. Por ejemplo, si estamos en /home/qvision y usamos este comando, pasaremos al escalafón inmediatamente superior de la jerarquía de directorios, en este caso a /home.


Situación actual: pwd
El comando pwd (print working directory) visualiza o imprime la ruta del directorio en el que nos encontramos en este momento. Este comando es uno de los pocos que no tiene opciones y se utiliza escribiendo simplemente

pwd


Copia de Archivos:  cp

Este comando hace una copia de file1 con el nombre file2, tiene la siguiente forma:

cp file1 file2
Si file2 no existe, lo crea con los mismos atributos de file1. Si file2 existía antes, su contenido queda destruido y es sustituido por el de file1. El archivo file2 estará en el mismo directorio que file1. Tanto file1 como file2 indican el nombre de un archivo, que puede incluir la ruta al mismo si alguno de ellos no se encuentra en el directorio actual.


Crear un Nuevo Archivo: touch

Este comando sirve para crear un nuevo archivo vacío si este no existe. Por ejemplo, si queremos crear un nuevo archivo de texto para dejar una nota, podemos teclear:

touch archivo.txt
# Si lo queremos crear en otra ruta seria así:
touch /ruta/archivo.txt


Limpiar la Terminal: clear
Limpia el texto de la terminal. Siempre está bien poder ver lo que estamos haciendo
clear


Traslado y cambio de nombre de Archivos: mv

El comando linux mv se utiliza para mover archivos y directorios de una ubicación a otra, también es utilizado para renombrar tanto archivos como directorios y la forma de usar este comando es muy parecida al uso del comando cp

Cambiar el nombre de un archivo:

mv nombre1 archivo1.txt

En el ejemplo anterior el nombre del archivo «nombre1.txt» es cambiado por el nombre «archivo1.txt», de la forma que se encuentra el archivo solo cambiará de nombre y no de ubicación.

Re nombrar un directorio:

mv directorio nueva_carpeta

En este ejemplo «directorio» es un folder o carpeta que cambia de nombre para llamarse «nueva_carpeta» al igual que el ejemplo anterior no se cambia de ubicación, sin embargo, para que esto ocurra no debe existir el directorio destino.

Mover archivos de ubicación 

mv archivo1.txt ./nueva-carpeta
Para mover un archivo a una ubicación diferente el DESTINO debes ser un directorio existente, si este es el caso el archivo mantendrá el mismo nombre, pero se trasladará a la nueva ruta


Borrado de Archivos: rm
Este comando tiene las siguiente forma
rm file1 file2

Este comando elimina uno o más archivos de un directorio en el cual tengamos permiso de escritura.  Con este comando resulta muy fácil borrar archivos inútiles, y desgraciadamente, también los útiles.

Es conveniente y casi imprescindible emplear lo opción -i, de la forma siguiente

rm -i file1 file2

Con esta opción, Linux pedirá confirmación para borrar cada archivo de la lista, de si realmente se desea su destrucción o no. Se recomienda usar siempre este comando con esta opción para evitar el borrado de archivos útiles.

En este comando se pueden utilizar los caracteres de sustitución (* y ?), como, por ejemplo:

rm arch*
que borraría todos los archivos del directorio actual que comiencen por arch. Así, el comando
rm *
borrará todos los archivos del directorio actual

Nota: Puede utilizar también la opción –f para no pedir confirmación al borrar un fichero o archivo.


Características de un archivo: file
Este comando realiza una serie de comprobaciones en un fichero para tratar de clasificarlo. Su formato es:

file archivo

Luego de su ejecución este comando muestra el tipo del archivo e información al respecto del mismo.


Visualización y concatenación de un archivo: cat

Este comando permite visualizar el contenido de uno o más archivos de forma no formateada.

También permite copiar uno o más ficheros como apéndice de otro ya existente, es decir, permite realizar la concatenación entre archivos. Algunas formas de utilizar este comando son las siguientes:

cat filename
El ejemplo anterior saca por pantalla el contenido del fichero filename
cat file1 file2...
El ejemplo anterior saca por pantalla, secuencialmente y según el orden especificado, el contenido de los ficheros indicados
cat file1 file2 >file3
En el ejemplo anterior el contenido de los ficheros file1 y file2 es almacenado en file3
cat file1 file2 >>file3
En el ejemplo anterior el contenido de file1 y file2 es añadido al final del archivo file3
cat >file1

El ejemplo anterior acepta lo que se introduce por el teclado y lo almacena en file1 (se crea file1). Para terminar, se emplea <ctrl>d.


Editar un Archivo: vi / nano

Vim y nano son dos editores de texto.

Vim suele venir por defecto en todos los sistemas, aunque nano posiblemente tengamos que instalarlo. esto varía de unas distribuciones a otras, aunque como curiosidad en Ubuntu podemos hacerlo con # apt-get install nano

Para ejecutar estos editores tendremos que usar los comandos

vi /ruta/archivo

O

nano /ruta/archivo


Cambiar al Modo Superusuario: su

El comando su cambia al modo de superusuario o “root”. Este modo es el que necesitarás si quieres cambiar algo importante o necesitas permiso para acceder a determinados archivos. Se trata del administrador del sistema.

Al cambiar a este modo nos pedirá na contraseña, al teclearla no verás nada, con lo que asegúrate de escribirla bien.

su


Ejecutar en Modo Superusuario: sudo

Sirve para ejecutar alguna orden en modo superusuario, también pide la contraseña antes de hacer nada. Si quieres disparar una orden con privilegios de administrador debes teclear este comando

sudo comando


Cambiar la Contraseña de Usuario: passwd

Cambia la contraseña del usuario actual. Una vez más a la hora de cambiarla fijate que la estés escribiendo bien (¿están las mayúsculas activadas?).

passwd


Comprimir / Descomprimir Archivos Zip: zip/unzip

Comprime o descomprime un directorio o un archivo en formato .zip

#Comprimir
zip -r archivo.zip archivoacomprimir

#descomprimir
unzip archivo.zip


Comprimir / Descomprimir Archivos Rar: rar/unrar

Funciona de una forma similar, aunque con otros atributos:

#Comprimir
rar a -r0 archivo.rar archivoacomprimir

#descomprimir
unrar e -r archivo.rar



Comando apt-get

apt-get es la herramienta que utiliza Debian y sus derivadas (Ubuntu incluida), para gestionar los paquetes instalables disponibles en los repositorios y aunque tenemos a nuestra disposición herramientas gráficas que nos facilitan las cosas, nunca está de más saber lo que podemos hacer con apt-get desde una terminal:

Nota: En Ubuntu, los comandos administrativos, como "apt-get", deben de ser ejecutados como superusuario, anteponiendo "sudo".

Uso:
Sudo apt-get [opciones] orden [paquetes]
[opciones] se puede utilizar o no.

Actualizar el listado de paquetes disponibles
sudo apt-get update

Comprobar que todo ha ido bien tras la utilización de apt-get update
sudo apt-get check

Instalar los programas deseados
sudo apt-get install paquete

Desinstalar un paquete
sudo apt-get remove paquete

Desinstalar un paquete y elimina los archivos de configuración
sudo apt-get remove –purge paquete

Resolver problemas con dependencias y paquetes rotos
sudo apt-get -f install

Para limpiar los paquetes descargados e instalados:
sudo apt-get clean

Para limpiar los paquetes viejos que ya no se usan:
sudo apt-get autoclean

Opciones en el comando apt-get:

                       -s         Simula una acción.
                       -d        Sólo descarga.
                       -y        No pregunta y asume que si a todo.
                        -u        Muestra paquetes actualizados.
                        -h        Muestra texto de ayuda.
                       -q        Salida registrable - sin indicador de progreso.
                       -qq      Sin salida, excepto si hay errores.
                       -f         Intenta continuar sí la comprobación de integridad falla (dependencias rotas).
                       -m       Intenta continuar si los archivos no son localizables.
                       -b        Construye el paquete fuente después de obtenerlo.
                       -V        Muesta números de versión detallados.
                       -c=?    Lee este archivo de configuración.
                        -o=?    Establece una opción de configuración arbitraria.



Estado de salida de un comando

Cada comando de Linux devuelve un estado cuando termina de manera normal o anormal. Puede usar el valor del estado de salida en el script de shell para mostrar un mensaje de error o realizar algún tipo de acción.

  • Cada comando de Linux ejecutado por el script de shell o por el usuario tiene un estado de salida.
  • El estado de salida es un número entero.
  • Las páginas del manual de Linux muestran los estados de salida de cada comando.
  • El estado de salida 0 significa que el comando fue exitoso sin ningún error.
  • Un estado de salida distinto de cero (valores 1-255) significa que el comando fue un error.
  • Puede usar una variable de shell especial llamada $? para obtener el estado de salida del comando ejecutado anteriormente. Para imprimir $? se utiliza el comando echo de la siguiente manera


Podemos observar con el ejemplo que luego de ejecutar el comando date y comprobar lo que devuelve el comando con $? Efectivamente es 0 lo cual nos indica que el comando se ejecutó exitosamente, luego si intentamos con un comando que no está definido en este caso con foobar123 y comprobamos luego este, nos devolverá un valor diferente de 0, un error especifico.

¿Cómo almaceno el estado de salida del comando en una variable de shell?
ls –l /tmp
estado=$?
echo “Estadisticas de salida del comando ls - $estado


Recuperar el historial de comandos ingresados

  • Bash mantiene un historial de comandos en el búfer o en un archivo predeterminado llamado ~ / .bash_history .
  • El búfer de historial puede contener muchos comandos.
  • Use el comando history para mostrar una lista de comandos que ingresó en un indicador de comandos de shell. También puede repetir comandos almacenados en el historial.
  • El comando history muestra la lista de historial con números de línea.
  • Por defecto, el historial está habilitado, pero puede deshabilitarse usando el comando set builtin.
  • Puede recuperar el comando básico con las teclas de flecha del teclado.

Ver lista de comandos ejecutados
history


Resultado del comando history:


Para repetir un comando que se encuentre en el historial puede realizarlo de la siguiente manera mediante el número de línea que lo contiene

history
!3

En este caso se ejecutaría de nuevo el comando contenido en la línea 3, el cual es ls



Programas Interactivos


BASH proporciona un nivel básico para programar “shellscripts” interactivos, soportando instrucciones para solicitar y mostrar información al usuario.

Las órdenes internas para dialogar con el usuario se describen en la siguiente tabla


 

El comando read lee una línea de la entrada estándar (teclado) y la guarda en variables. Solo funciona en shell interactivos (leyendo la entrada del teclado), de lo contrario no hace nada.

Sintaxis del comando read:
read -p "Mensaje" variable1 variable2 variable3
 

Donde:

  • -p "Mensaje”: muestra el mensaje al usuario
  • variable1: la primera entrada (palabra) se asigna a la variable1.
  • variable2: la segunda entrada (palabra) se asigna a la variable2.


Si la línea leída tiene más palabras que la cantidad de variables, el resto serán ignoradas. Si tiene menos palabras, las primeras variables (de izquierda a derecha) serán empleadas y el resto quedarán en blanco (con la cadena vacía ""). En caso de que no se den nombres de variables, la línea leída quedará en la variable REPLY.

Ejemplo
# Las siguientes instrucciones son equivalentes
# Muestran un mensaje y piden un valor

echo -n "Dime tu nombre: "
read NOMBRE

read -p "Dime tu apellido: " APELLIDO

# Mostrar nombre y apellido
printf "(%s) (%s)\n" $NOMBRE $APELLIDO

Ejemplo 2


Si ejecutamos el script, obtendremos la siguiente salida:




Última modificación: lunes, 11 de mayo de 2020, 22:13