Mostrando las entradas con la etiqueta CLI. Mostrar todas las entradas
Mostrando las entradas con la etiqueta CLI. Mostrar todas las entradas

sábado, 27 de mayo de 2017

19. Búsqueda de archivos mediante el comando Find en Linux


Uno de los desafíos que enfrentan los usuarios al trabajar con el sistema de archivos, es tratar de recordar la ubicación donde se almacenan los archivos. Hay miles de archivos y cientos de directorios en un sistema de archivos Linux típico, por lo que recordar dónde se encuentran estos archivos puede plantear desafíos.

El comando find es una herramienta muy potente que puedes usar para buscar archivos en el sistema de archivos. Este comando puede buscar archivos por nombre, incluyendo el uso de caracteres comodín para cuando no esté seguro del nombre de archivo exacto. Además, puede buscar archivos basados en metadatos de archivo, como el tipo de archivo, el tamaño del archivo y la propiedad del archivo.

La sintaxis del comando find es:
find [starting directory] [search option] [search criteria] [result option]

Una descripción de todos estos componentes:

  • [Directorio inicial]: Aquí es donde el usuario especifica dónde comenzar la búsqueda. El comando find buscará este directorio y todos sus subdirectorios. Si no se proporciona ningún directorio de inicio, se utiliza el directorio actual para el punto de inicio.

  • [Opción de búsqueda]: Aquí es donde el usuario especifica una opción para determinar qué tipo de metadatos buscar; Hay opciones para el nombre de archivo, tamaño de archivo y muchos otros atributos de archivo.

  • [Criterio de búsqueda]: Este es un argumento que complementa la opción de búsqueda. Por ejemplo, si el usuario utiliza la opción para buscar un nombre de archivo, el criterio de búsqueda sería el nombre de archivo.

  • [Opción de resultado]: Esta opción se utiliza para especificar qué acción debe tomarse una vez que se encuentra el archivo. Si no se proporciona ninguna opción, el nombre del archivo se imprimirá en STDOUT.

Buscar por nombre de archivo

Para buscar un archivo por nombre, use la opción -name del comando find:

sysadmin@localhost:~$ find /etc -name hosts                           
find: `/etc/dhcp': Permission denied
find: `/etc/cups/ssl': Permission denied  
find: `/etc/pki/CA/private': Permission denied  
find: `/etc/pki/rsyslog': Permission denied
find: `/etc/audisp': Permission denied 
find: `/etc/named': Permission denied
find: `/etc/lvm/cache': Permission denied 
find: `/etc/lvm/backup': Permission denied
find: `/etc/lvm/archive': Permission denied                           
/etc/hosts
find: `/etc/ntp/crypto': Permission denied
find: `/etc/polkit-l/localauthority': Permission denied   
find: `/etc/sudoers.d': Permission denied  
find: `/etc/sssd': Permission denied 
/etc/avahi/hosts
find: `/etc/selinux/targeted/modules/active': Permission denied  
find: `/etc/audit': Permission denied                                
sysadmin@localhost:~$
Tenga en cuenta que se encontraron dos archivos: /etc/hosts y /etc/avahi/hosts. El resto de la salida eran mensajes STDERR porque el usuario que ejecutó el comando no tenía permiso para acceder a determinados subdirectorios.

Recuerde que puede redirigir STDERR a un archivo para que no necesite ver estos mensajes de error en la pantalla:

sysadmin@localhost:~$ find /etc -name hosts 2> errors.txt             
/etc/hosts 
/etc/avahi.hosts                                                      
sysadmin@localhost:~$
Mientras que la salida es más fácil de leer, realmente no hay ningún propósito para almacenar los mensajes de error en el archivo error.txt. Los desarrolladores de Linux se dieron cuenta de que sería bueno tener un "archivo basura" para enviar datos innecesarios; Cualquier archivo que envíe al archivo /dev/null se descarta:

sysadmin@localhost:~$ find /etc -name hosts 2> /dev/null              
/etc/hosts
/etc/avahi/hosts                                                      
sysadmin@localhost:~$

Visualización del detalle del archivo

Puede ser útil obtener detalles de archivo cuando se utiliza el comando find, porque sólo el nombre del archivo en sí puede no ser suficiente información para que pueda encontrar el archivo correcto.

Para ver estos detalles de archivo, utilice la opción -ls en el comando find:

sysadmin@localhost:~$ find /etc -name hosts -ls 2> /dev/null
    41   4 -rw-r--r--   1 root     root      158 Jan 12 2010 /etc/hosts
  6549   4 -rw-r--r--   1 root     root      1130 Jul 19 2011 /etc/avahi/hosts 
sysadmin@localhost:~$

Búsqueda de archivos por tamaño

Una de las muchas opciones de búsqueda útiles es la opción que le permite buscar archivos por tamaño. La opción -size le permite buscar archivos que sean más grandes o más pequeños que un tamaño especificado, así como buscar un tamaño de archivo exacto.

Cuando especifica un tamaño de archivo, puede dar el tamaño en bytes (c), kilobytes (k), megabytes (M) o gigabytes (G). Por ejemplo, lo siguiente buscará archivos en la estructura de directorios /etc que son exactamente 10 bytes de gran tamaño:

sysadmin@localhost:~$ find /etc -size 10c -ls 2>/dev/null    
   432    4 -rw-r--r--   1 root     root           10 Jan 28  2015 /etc/adjtime
 8814    0 drwxr-xr-x   1 root     root           10 Jan 29  2015 /etc/ppp/ip-d
own.d                                                           
8816    0 drwxr-xr-x   1 root     root           10 Jan 29  2015 /etc/ppp/ip-u
p.d                                                            
 8921    0 lrwxrwxrwx   1 root     root           10 Jan 29  2015 /etc/ssl/cert
s/349f2832.0 -> EC-ACC.pem                                    
  9234    0 lrwxrwxrwx   1 root     root           10 Jan 29  2015 /etc/ssl/cert
s/aeb67534.0 -> EC-ACC.pem                                     
 73468    4 -rw-r--r--   1 root     root           10 Nov 16 20:42 /etc/hostname
sysadmin@localhost:~$

Si desea buscar archivos que sean mayores que un tamaño especificado, coloque un carácter + antes del tamaño. Por ejemplo, lo siguiente buscará todos los archivos en la estructura de directorios /usr que tengan más de 100 megabytes de tamaño:

sysadmin@localhost:~$ find /usr -size +100M -ls 2> /dev/null
574683 104652 -rw-r--r--   1 root      root      107158256 Aug  7 11:06 /usr/share/icons/oxygen/icon-theme.cache                    
sysadmin@localhost:~$









viernes, 26 de mayo de 2017

17. Archivado en Linux (tar)


Si tuviera varios archivos para enviar a alguien, podría comprimir cada uno individualmente. Usted tendría una cantidad menor de datos en total que si envió archivos sin comprimir, pero todavía tendría que tratar con muchos archivos al mismo tiempo.

Archivar es la solución a este problema. La utilidad UNIX tradicional para archivar archivos se llama tar, que es una forma corta de TApe aRchive. Tar se utilizó para transmitir muchos archivos a una cinta para copias de seguridad o transferencia de archivos. Tar toma varios archivos y crea un archivo de salida único que se puede dividir de nuevo en los archivos originales en el otro extremo de la transmisión.

Tar tiene 3 modos:
  • Crear: crear un nuevo archivo de una serie de archivos
  • Extraer: extraer uno o más archivos de un archivo
  • Lista: muestra el contenido del archivo sin extraer

Aquí, mostramos un archivo tar, también llamado tarball, que se crea a partir de registros de acceso múltiples.

bob:tmp $ tar -cf access_logs.tar access_log*
bob:tmp $ ls -l access_logs.tar
-rw-rw-r-- 1 sean sean 542720 Oct 12 21:42 access_logs.tar

Crear un archivo requiere dos opciones con nombre. La primera, c, especifica el modo. El segundo, f, indica a tar que espera un nombre de archivo como el siguiente argumento. El primer argumento en el ejemplo anterior crea un archivo llamado access_logs.tar. Los demás argumentos se toman como nombres de archivo de entrada, ya sea como comodín, una lista de archivos o ambos.

El ejemplo anterior hace un listado de directorio largo del archivo creado. El tamaño final es 542.720 bytes que es ligeramente mayor que los archivos de entrada. Tarballs se puede comprimir para facilitar el transporte, ya sea por gzipping el archivo o por tener tar hacerlo con la bandera z de la siguiente manera:

bob:tmp $ tar -czf access_logs.tar.gz  access_log*
bob:tmp $ ls -l access_logs.tar.gz
-rw-rw-r-- 1 sean sean 46229 Oct 12 21:50 access_logs.tar.gz
bob:tmp $ gzip -l access_logs.tar.gz
         compressed        uncompressed  ratio uncompressed_name
              46229              542720  91.5% access_logs.tar

El ejemplo anterior muestra el mismo comando que el ejemplo anterior, pero con la adición del parámetro z. La salida es mucho más pequeña que el tarball en sí, y el archivo resultante es compatible con gzip

Aunque UNIX no trata extensiones de archivos especialmente, la convención es usar .tar para archivos tar, y .tar.gz o .tgz para archivos tar comprimidos
Puede utilizar bzip2 en lugar de gzip sustituyendo la letra j por z y utilizando .tar.bz2, .tbz o .tbz2 para una extensión de archivo (por ejemplo, tar -cjf file.tbz access_log *).

Dado un archivo tar, comprimido o no, puede ver lo que hay en él mediante el comando t:

bob:tmp $ tar -tjf access_logs.tbz
logs/
logs/access_log.3
logs/access_log.1
logs/access_log.4
logs/access_log
logs/access_log.2

Este ejemplo utiliza 3 opciones:

t: lista de archivos en el archivo
j: descomprimir con bzip2 antes de leer
f: opera sobre el nombre de archivo dado access_logs.tbz

A continuación, se muestra el contenido del archivo comprimido. Puede ver que un directorio estaba prefijado a los archivos. Tar se recurse en subdirectorios automáticamente al comprimir y almacenará la información de ruta dentro del archivo.

Finalmente puede extraer el archivo con el indicador -x:

bob:tmp $ tar -xjf access_logs.tbz
bob:tmp $ ls -l
total 36
-rw-rw-r-- 1 sean sean 30043 Oct 14 13:27 access_logs.tbz
drwxrwxr-x 2 sean sean  4096 Oct 14 13:26 logs
bob:tmp $ ls -l logs
total 536
-rw-r--r-- 1 sean sean 372063 Oct 11 21:24 access_log
-rw-r--r-- 1 sean sean    362 Oct 12 21:41 access_log.1
-rw-r--r-- 1 sean sean 153813 Oct 12 21:41 access_log.2
-rw-r--r-- 1 sean sean   1136 Oct 12 21:41 access_log.3
-rw-r--r-- 1 sean sean    784 Oct 12 21:41 access_log.4
Agregue el indicador -v y obtendrá una salida detallada de los archivos procesados. Esto es útil para que pueda ver lo que está sucediendo:

bob:tmp $ tar -xjvf access_logs.tbz
logs/
logs/access_log.3
logs/access_log.1
logs/access_log.4
logs/access_log
logs/access_log.2

Bibliografía

NDG Linux Essentials - Chapter 7 - Archiving and Compression

miércoles, 24 de mayo de 2017

15. Descripción de archivos y directorios


Los archivos se utilizan para almacenar datos como texto, gráficos y programas. Los directorios (AKA, "carpetas") se utilizan para proporcionar una estructura de organización jerárquica. Esta estructura es algo diferente de lo que podría estar acostumbrado a si ha trabajado previamente en sistemas Microsoft Windows.

En un sistema Windows, el nivel superior de la estructura de directorios se denomina Mi PC. Cada dispositivo físico (unidad de disco duro, unidad de DVD, unidad flash USB, unidad de red, etc.) aparece en Mi PC, cada uno asignado una letra de unidad, como C: o D :. Una representación visual de esta estructura:


Al igual que Windows, una estructura de directorios de Linux tiene un nivel superior, sin embargo, no se llama Mi PC, sino el directorio raíz y está simbolizado por el carácter /. También no hay unidades en Linux; Cada dispositivo físico es accesible bajo un directorio, no una letra de unidad. Una representación visual de una estructura típica de directorios de Linux:


Esta estructura de directorio es llamada el sistema de archivos por la mayoría de los usuarios de Linux.

Para ver el sistema de archivos raíz, escriba ls /:

sysadmin@localhost:~$ ls /                                            
bin   dev  home  lib    media  opt   root  sbin     selinux  sys  usr  
boot  etc  init  lib64  mnt    proc  run   sbin???  srv   tmp  var

Ruta de directorio

Usando el gráfico en la sección anterior como un punto de referencia, verá que hay un directorio llamado sound bajo un directorio llamado etc, que está en el directorio /. Una manera más fácil de decir esto, es referirse a la ruta.

Una ruta le permite especificar la ubicación exacta de un directorio. Para el directorio de sonido, la ruta sería /etc/sound. El primer carácter / representa el directorio raíz(root), mientras que cada carácter / se utiliza para separar los nombres de directorio.

Este tipo de ruta se denomina ruta absoluta. Con una ruta absoluta, siempre proporciona direcciones a un directorio (o un archivo) a partir de la parte superior de la estructura de directorios, el directorio raíz. Más adelante, se cubrirá un camino diferente llamado ruta relativa.

El siguiente gráfico muestra tres rutas absolutas adicionales:

Directorio Home

El directorio de inicio del término a menudo causa confusión a los usuarios principiantes de Linux. Para empezar, en la mayoría de las distribuciones de Linux hay un directorio llamado home bajo el directorio raíz: /home.

En este directorio /home habrá un directorio para cada usuario en el sistema. El nombre del directorio será el mismo que el nombre del usuario, por lo que un usuario llamado "bob" tendría un directorio home llamado /home/bob.

Su directorio home es un directorio muy importante. Para empezar, cuando abra un shell, debe colocarse automáticamente en su directorio de inicio, ya que aquí es donde va a hacer la mayor parte de su trabajo.

Además, su directorio de inicio es uno de los pocos directorios donde tiene el control total para crear y eliminar archivos y directorios adicionales. La mayoría de los otros directorios de un sistema de archivos Linux están protegidos con permisos de archivo, un tema que se tratará en detalle en un capítulo posterior.

En la mayoría de las distribuciones de Linux, los únicos usuarios que pueden acceder a los archivos de su directorio principal son usted y el administrador del sistema (el usuario root). Esto se puede cambiar utilizando permisos de archivo.

Su directorio home tiene incluso un símbolo especial que puede utilizar para representarlo: ~. Si su directorio home es /home/sysadmin, simplemente puede escribir ~ en la línea de comandos en lugar de /home/sysadmin. También puede referirse al directorio de inicio de otro usuario utilizando la notación ~user, donde user es el nombre de la cuenta de usuario cuyo directorio home al que desea hacer referencia. Por ejemplo, ~bob sería el mismo que /home/bob. Aquí, vamos a cambiar al directorio de inicio del usuario:

sysadmin@localhost:~$ cd ~                                             
sysadmin@localhost:~$ ls                                               
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  
Videos      
sysadmin@localhost:~$

Directorio actual

Su directorio actual es el directorio donde está trabajando actualmente en un terminal. Cuando abre un terminal por primera vez, el directorio actual debe ser su directorio personal, pero esto puede cambiar a medida que explora el sistema de archivos y cambia a otros directorios.

Mientras esté en un entorno de línea de comandos, puede determinar el directorio actual mediante el comando pwd:

sysadmin@localhost:~$ pwd                                             
/home/sysadmin                                                         
sysadmin@localhost:~$

Cambio de directorios

Si desea cambiar a un directorio diferente, utilice el comando cd (cambiar directorio). Por ejemplo, el siguiente comando cambiará el directorio actual a un directorio llamado /etc/sound/events:

sysadmin@localhost:~$ cd /etc/sound/events                                    
sysadmin@localhost:/etc/sound/events$
Tenga en cuenta que no hay salida si el comando cd tiene éxito.Si intenta cambiar a un directorio que no existe, recibirá un mensaje de error:

sysadmin@localhost:/etc/sound/events$ cd /etc/junk                           
-bash: cd: /etc/junk: No such file or directory                               
sysadmin@localhost:/etc/sound/events$
Si desea volver a su directorio de inicio, puede escribir el comando cd sin argumentos o utilizar el comando cd con el carácter ~ como argumento:

sysadmin@localhost:/etc/sound/events$ cd                                      
sysadmin@localhost:~$ pwd                                                     
/home/sysadmin                                                                
sysadmin@localhost:~$ cd /etc                                                 
sysadmin@localhost:/etc$ cd ~                                                 
sysadmin@localhost:~$ pwd                                                     
/home/sysadmin                                                                
sysadmin@localhost:~$

Nombres de ruta absolutos vs. relativos

Recuerde que una ruta de acceso es esencialmente una descripción de dónde se encuentra un archivo o directorio en el sistema de archivos. También puede considerar una ruta de acceso como direcciones que indican al sistema dónde encontrar un archivo o directorio. Por ejemplo, el comando cd /etc/perl/Net significa "cambiar al directorio Net, que encontrará en el directorio perl, que encontrará en el directorio etc, que encontrará en el directorio /".

sysadmin@localhost:~$ cd /etc/perl/Net                                 
sysadmin@localhost:/etc/perl/Net$ 
Sin embargo, ¿qué pasaría si estuviera en el directorio /etc/perl y quisiera ir al directorio /etc/perl/Net? Sería tedioso para escribir el camino completo para llegar a un directorio que es sólo un nivel por debajo de su ubicación actual. En una situación como esta, desea utilizar una ruta relativa:

sysadmin@localhost:/etc/perl$ cd Net                                    
sysadmin@localhost:/etc/perl/Net$ 
Una ruta relativa proporciona direcciones utilizando su ubicación actual como punto de referencia. Recuerde que esto es diferente de rutas absolutas, que siempre requieren que utilice el directorio raíz como un punto de referencia.

Hay una práctica técnica de ruta relativa que puede utilizar para subir un nivel en la estructura de directorios: el directorio .. Independientemente del directorio en el que se encuentre, .. siempre representa un directorio más alto que su directorio actual (con la excepción de cuando se encuentra en el directorio /):

sysadmin@localhost:/etc/perl/Net$ pwd                                 
/etc/perl/Net                                                          
sysadmin@localhost:/etc/perl/Net$ cd ..                                
sysadmin@localhost:/etc/perl$ pwd                                      
/etc/perl                                                              
sysadmin@localhost:/etc/perl$

Mientras que el doble punto (..) se utiliza para referirse al directorio por encima del directorio actual, el punto único (.) Se utiliza para referirse al directorio actual. Sería inútil que un administrador se mueva al directorio actual escribiendo cd . (Aunque en realidad funciona). Es más útil referirse a un elemento del directorio actual utilizando la anotación ./ Por ejemplo:

sysadmin@localhost:~$ pwd                                              
/home/sysadmin                                                         
sysadmin@localhost:~$ cd ./Downloads/                                  
sysadmin@localhost:~/Downloads$ pwd                                    
/home/sysadmin/Downloads                                               
sysadmin@localhost:~/Downloads$ cd ..                                  
sysadmin@localhost:~$ pwd                                              
/home/sysadmin                                                         
sysadmin@localhost:~$

Bibliografía

NDG Linux Essentials - Chapter 6 - Working with Files and Directories

lunes, 22 de mayo de 2017

14. Páginas MAN en terminal de Linux

UNIX fue el sistema operativo desde el que se creó la fundación Linux. Los desarrolladores de UNIX crearon documentos de ayuda llamados man pages (man significa manual).

Las páginas de manual se utilizan para describir las características de los comandos. Ellos le proporcionarán una descripción básica del propósito del comando y detalles sobre las opciones del comando.

Para ver el manual de ayuda de un comando se ejecuta en la terminal el comando: man comando, por ejemplo el comando man cal desplegará la página de ayuda para el comando cal:




viernes, 19 de mayo de 2017

13. Introducción de variables de la shell BASH

Una variable de shell de BASH es una característica que le permite al usuario o al shell almacenar datos. Estos datos se pueden utilizar para proporcionar información crítica del sistema o para cambiar el comportamiento de cómo funciona el shell BASH.

Las variables reciben un nombre y se almacenan temporalmente en la memoria. Al cerrar una ventana de terminal o shell, todas las variables se pierden. Sin embargo, el sistema recrea automáticamente muchas de estas variables cuando se abre un nuevo shell.

Para mostrar el valor de una variable, puede utilizar el comando echo. El comando echo se utiliza para mostrar la salida en la terminal; En el ejemplo siguiente, el comando mostrará el valor de la variable HISTSIZE:

sysadmin@localhost:~$ echo $HISTSIZE                     
1000                                                             
sysadmin@localhost:~$
La variable HISTSIZE define cuántos comandos anteriores se deben almacenar en la lista de historiales. Para mostrar el valor de la variable, use un signo de dólar $ antes del nombre de la variable. Para modificar el valor de la variable, no utilice el carácter $:

sysadmin@localhost:~$ HISTSIZE=500                                            
sysadmin@localhost:~$ echo $HISTSIZE                              
500                                                             
sysadmin@localhost:~$




12. Opciones en los comandos de linux

Las opciones se pueden utilizar con comandos para expandir o modificar la forma en que se comporta un comando. Las opciones suelen ser de una sola letra; Sin embargo, a veces serán "palabras" también. Normalmente, los comandos antiguos usan letras simples mientras que los comandos más recientes utilizan palabras completas para las opciones.

Las opciones de una sola letra están precedidas por un solo guión -.
Las opciones de palabra completa están precedidas por dos guiones --.

Por ejemplo, puede utilizar la opción -l con el comando ls para mostrar más información sobre los archivos que se enumeran. El comando ls -l listará los archivos contenidos en el directorio actual y proporcionará información adicional, como los permisos, el tamaño del archivo y otra información:

sysadmin@localhost:~$ ls -l                                       
total 0                                                           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Desktop             
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Documents           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Downloads           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Music               
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Pictures            
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Public               
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Templates           
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29  2015 Videos              
sysadmin@localhost:~$
En la mayoría de los casos, las opciones se pueden utilizar junto con otras opciones. Por ejemplo, el comando ls -l -h o ls -lh mostrará los archivos con detalles, pero mostrará los tamaños de archivo en formato legible en lugar del valor predeterminado (bytes).

El orden de las opciones combinadas no es importante. La opción -h también tiene una forma de palabra completa: --human-readable.

11. Formato de comandos

Muchos comandos pueden usarse por sí mismos sin más entrada. Algunos comandos requieren entradas adicionales para funcionar correctamente. Esta entrada adicional viene en dos formas: opciones y argumentos.

El formato típico para un comando es el siguiente:

comando [opciones] [argumentos]
Las opciones se utilizan para modificar el comportamiento básico de un comando, mientras que los argumentos se utilizan para proporcionar información adicional (como un nombre de archivo o un nombre de usuario). Cada opción y argumento normalmente está separado por un espacio, aunque las opciones pueden combinarse a menudo.

El comando ls proporcionará ejemplos útiles. Por sí mismo, el comando ls mostrará los archivos y directorios contenidos en su directorio de trabajo actual:

sysadmin@localhost:~$ ls                                           
Desktop  Documents  Downloads  Music  Pictures  Public  Templates   Videos    
sysadmin@localhost:~$
También se puede pasar un argumento al comando ls para especificar el contenido de qué directorio se listará. Por ejemplo, el comando ls /etc/ppp listará el contenido del directorio /etc/ppp en lugar del directorio actual:

sysadmin@localhost:~$ ls /etc/ppp                                 
ip-down.d  ip-up.d                                                
sysadmin@localhost:~$




viernes, 31 de marzo de 2017

1. Interfaz de la Línea de Comandos (CLI) de Linux


La terminal CLI es una poderosa herramienta que suele ser el método primario usado para administrar los pequeños dispositivos de baja potencia, servidores de cómputo extremadamente potentes, y todo lo demás. Un entendimiento básico del terminal es esencial para diagnosticar y corregir la mayoría de los sistemas basados en Linux.

Comando

Un comando es un programa de software que al ejecutarlo en la CLI ejecuta un proceso en el sistema operativo, y entonces causa que la computadora realice un trabajo. Cuando se escribe un comando, el sistema operativo ejecuta un proceso que puede leer una entrada, manipular datos y producir la salida. 
Para ejecutar un comando, se debe introducir el nombre del comando en la shell. Por ejemplo si se usa el comando ls, el resultado del proceso mostrará todos los archivos y carpetas del directorio actual:

La mayoría de los comandos sigue un patrón simple de sintaxis:
comando [opciones…] [argumentos…]
Las opciones alteran el comportamiento del comando y los argumentos son elementos o valores para el comando a actuar.