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.
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í:
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:


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

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.
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.
mkdir directorio
rmdir directorioPrueba
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.
pwd
Este comando hace una copia de file1 con el nombre file2, tiene la siguiente forma:
cp file1 file2
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
clear
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
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 siguienterm -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*
rm *
Nota: Puede utilizar también la opción –f para no pedir confirmación al borrar un fichero o archivo.
file archivo
Luego de su ejecución este comando muestra el tipo del archivo e información al respecto del mismo.
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
cat file1 file2...
cat file1 file2 >file3
cat file1 file2 >>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.
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
nano /ruta/archivo
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
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
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
Comprime o descomprime un directorio o un archivo en formato .zip
#Comprimir zip -r archivo.zip archivoacomprimir #descomprimir unzip archivo.zip
Funciona de una forma similar, aunque con otros atributos:
#Comprimir rar a -r0 archivo.rar archivoacomprimir #descomprimir unrar e -r archivo.rar
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]
sudo apt-get update
sudo apt-get check
sudo apt-get install paquete
sudo apt-get remove paquete
sudo apt-get remove –purge paquete
sudo apt-get -f install
sudo apt-get clean
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.
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.

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.
ls –l /tmp estado=$? echo “Estadisticas de salida del comando ls - $estado”
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
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:
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:
