Sei sulla pagina 1di 55

1. ¡Bienvenido!

¡Hola y bienvenido al Módulo Elemental de NDG Linux! Estamos muy entusiasmados


de ofrecerte esta breve introducción al mundo de Linux. Antes de comenzar, nos
gustaría aprovechar la oportunidad para explicar la intención y el alcance de este
módulo.

No te preocupe si tienes poca o ninguna experiencia en Linux. Este módulo está


diseñado como una introducción para los estudiantes principiantes sin formación previa
en Linux. Si te parece útil este material, puedes pensar en continuar con nuestros cursos
de NDG Linux Essentials o Introducción al Linux de NDG para adquirir conocimientos
más avanzados. La información adicional sobre estos cursos está al final de este
módulo.

Como probablemente ya sabes, el kernel de Linux ha encontrado su camino hacia un


increíble número de diversos sistemas. Hoy en día lo puedes encontrar en todo, desde
automóviles a cohetes, desde relojes a televisores y desde netbooks a los
superordenadores más rápidos. Linux sólo representa un porcentaje relativamente
pequeño de los sistemas operativos encontrados en computadoras de escritorio, pero ha
ganado un uso extenso en los servidores, dispositivos de IoT (Internet de las Cosas o
«Internet of Things» en inglés), equipos de red, teléfonos inteligentes y muchos otros
dispositivos de los que imaginas que pueden ser computadoras. Desde un enrutador
(«router» en inglés) casero que te conecta a Internet hasta el servidor en el está alojado
este curso, es probable que múltiples dispositivos alimentados por Linux te permiten
leer esta página en este momento.

Esperamos que encuentres útil el Módulo Elemental de NDG Linux. ¡Te felicitamos por
dar tus primeros pasos hacia el mundo de Linux!

¡ Linux está en Todas Partes !


2. Sintaxis Básica de Comando

Este módulo aborda exclusivamente la CLI o Command Line Interface (o «Interfaz de


la Línea de Comandos»), en lugar de la GUI o Graphical User Interface (o «Interfaz
Gráfica de Usuario) con la que probablemente estás familiarizado. 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. Puesto que Linux
se ha convertido en un sistema que está en todas partes, incluso aquellos que trabajan
principalmente con sistemas que no utilizan el kernel de Linux, pueden beneficiarse de
tener un conocimiento básico de la terminal.

¿Qué es un comando? Un comando es un programa de software que al ejecutarlo en la


CLI («interfaz de línea de comandos» en español) realiza una acción en la computadora.
Cuando se escribe un comando, el sistema operativo ejecuta un proceso que puede leer
una entrada, manipular datos y producir la salida. Un comando ejecuta un proceso en el
sistema operativo, y entonces causa que la computadora realice un trabajo.

Para ejecutar un comando, el primer paso es introducir el nombre del comando. Haz clic
en la terminal de la derecha. Introduce ls y presiona Entrar. El resultado debe
parecerse al siguiente ejemplo:

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

El nombre del comando se basa frecuentemente en lo que hace o en lo que el


desarrollador que creó el comando piensa que va a describir mejor la función del
comando. Por ejemplo, el comando ls muestra una lista de información acerca de los
archivos. Asociando el nombre del comando con algo mnemotécnico para lo que hace
puede ayudar a recordar más fácilmente los comandos.

Para considerar

Cada parte del comando es normalmente sensible a mayúsculas y minúsculas, así que
LS es incorrecto y se producirá un error, pero ls es correcto y se ejecutará.

sysadmin@localhost:~$ LS
-bash: LS: command not found

La mayoría de los comandos sigue un patrón simple de sintaxis:

comando [opciones…] [argumentos…]


Típicamente, las opciones alteran el comportamiento del comando y los argumentos son
elementos o valores para el comando a actuar. Aunque haya algunos comandos en
Linux que no son completamente consistentes con esta sintaxis, la mayoría de los
comandos usa esta sintaxis o algo similar.

En el ejemplo anterior, el comando ls fue ejecutado sin opciones ni argumentos,


cuando este es el caso, su comportamiento por defecto es devolver una lista de archivos
contenidos dentro del directorio actual.

sysadmin@localhost:~$ ls
Desktop Documents Downloads Music Pictures Public Template

2.1. Los Argumentos

comando [opciones…] [argumentos…]

Un argumento se puede utilizar para especificarle al comando sobre qué actuar. Al


comando ls puede dársele el nombre de un directorio como argumento, y mostrará el
contenido de ese directorio. En el siguiente ejemplo, el directorio Documents (o
«documentos» en espaňol) se utilizará como argumento:

sysadmin@localhost:~$ ls Documents
School alpha-second.txt food.txt linux.txt os.csv
Work alpha-third.txt hello.sh longfile.txt
people.csv
adjectives.txt alpha.txt hidden.txt newhome.txt
profile.txt
alpha-first.txt animals.txt letters.txt numbers.txt red.txt

La salida resultante es una lista de archivos que están en el directorio Documents.

Ya que Linux es un sistema de código abierto (o «open source» en inglés), hay algunos
secretos interesantes que los desarrolladores le han añadido. Por ejemplo, el comando
aptitude es una herramienta de gestión de paquetes disponible en algunas
distribuciones de Linux. Este comando acepta moo como argumento:

sysadmin@localhost:~$ aptitude moo


There are no Easter Eggs in this program.

o en espaňol:

sysadmin@localhost:~$ aptitude moo


No hay sorpresas en este programa.

Hay más trucos de los que se ven a simple vista. ¡Sigue leyendo!
Linux es de código abierto! Linux es desarrollado por una comunidad, usted ve y
contribuye al código fuente!

2.2. Las Opciones

comando [opciones…] [argumentos…]

Las opciones se pueden utilizar para modificar el comportamiento de un comando. En la


página anterior, se utilizó el comando ls para listar el contenido de un directorio. En el
ejemplo siguiente, vamos a utilizar la opción -l para el comando ls, que resulta en una
salida «Visualización larga», lo que significa que la salida da más información sobre
cada uno de los archivos listados

sysadmin@localhost:~$ ls -l
total 32
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Desktop
drwxr-xr-x 4 sysadmin sysadmin 4096 Aug 4 20:58 Documents
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Downloads
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Music
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Pictures
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Public
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Templates
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Videos

A menudo se elige un carácter mnemotécnico (tecla de acceso) para su propósito, tal


como eligiendo la letra l para largo o r para el reverso. Por defecto el comando ls
imprime los resultados en orden alfabético, así que añadiendo la opción -r imprimirá
los resultados en el orden alfabético inverso.

sysadmin@localhost:~$ ls -r
Videos Templates Public Pictures Music Downloads Documents
Desktop
Las opciones múltiples pueden utilizarse a la vez, o bien como opciones separadas como
la -l - r o combinadas -lr. La salida de todos estos ejemplos sería la misma:

ls -l -r
ls -rl
ls -lr

Como se explicó anteriormente, la opción -l da salida a un formato de listado largo


mientras que la -r invierte la lista. El resultado del uso de ambas opciones es un listado
largo dado en orden inverso:

sysadmin@localhost:~$ ls -l -r
total 32
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Videos
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Templates
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Public
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Pictures
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Music
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Downloads
drwxr-xr-x 4 sysadmin sysadmin 4096 Aug 4 20:58 Documents
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Desktop
sysadmin@localhost:~$ ls -rl
total 32
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Videos
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Templates
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Public
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Pictures
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Music
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Downloads
drwxr-xr-x 4 sysadmin sysadmin 4096 Aug 4 20:58 Documents
drwxr-xr-x 2 sysadmin sysadmin 4096 Aug 4 20:58 Desktop

En definitiva, los comandos pueden utilizar muchas combinaciones de opciones y


argumentos, así pues las posibilidades para cada comando serán únicas. ¿Recuerdas la
sorpresa de la de la opción aptitude?

sysadmin@localhost:~$ aptitude moo


There are no Easter Eggs in this program.

Es posible alterar el comportamiento de este comando utilizando las opciones. Observa


lo que sucede cuando se agrega la opción -v (verbose o «salida detallada» en español):

sysadmin@localhost:~$ aptitude -v moo


There really are no Easter Eggs in this program.
sysadmin@localhost:~$ aptitude -v moo
Realmente no hay sorpresas en este programa.

Combinando las múltiples opciones -v, podemos obtener una variedad de respuestas:

sysadmin@localhost:~$ aptitude -vv moo


Didn't I already tell you that there are no Easter Eggs in this
program?
sysadmin@localhost:~$ aptitude -vvv moo
Stop it!
sysadmin@localhost:~$ aptitude -vv moo
¿No te dije que no hay sorpresas en este programa?
sysadmin@localhost:~$ aptitude -vvv moo
¡Para!

Recuerda que las opciones múltiples pueden ser introducidas por separado o
combinadas:

aptitude -v -v moo
aptitude -vv moo

¡Sigue añadiendo las opciones -v para que veas cuántas respuestas únicas puedes
obtener!

3. Imprimiendo un Directorio de Trabajo

Para descubrir dónde estás ubicado actualmente en el sistema de archivos, puedes


utilizar el comando pwd. El comando pwd imprime el directorio de trabajo, tu ubicación
actual en el sistema de archivos:
pwd [OPCIONES]

Para considerar

¡Aún no enciendas tu impresora! En los inicios de la informática la salida de línea de


comandos sería enviada a las impresoras físicas. Este método fue reemplazado por
pantallas de video que pueden mostrar la información más rápidamente. Todavía
usamos la palabra imprimir (o «print» en inglés) a pesar de que la salida sólo se está
visualizando en la pantalla.

sysadmin@localhost:~$ pwd
/home/sysadmin

La salida del comando anterior indica que el usuario está actualmente en su carpeta de
inicio, que se muestra en el sistema de archivos a continuación.
Para considerar

Observa que nuestras máquinas virtuales emplean un prompt que muestra el directorio
actual de trabajo, acentuado con el color azul. En el primer prompt abajo, el ~ azul es
equivalente a /home/sysadmin, que representa el directorio de inicio del usuario.

sysadmin@localhost:~$

Después de cambiar de directorios, también puede confirmarse la nueva ubicación en el


nuevo prompt, que de nuevo aparece en azul.

sysadmin@localhost:/etc/calendar$

4. Cambiando Directorios

Los archivos se utilizan para almacenar datos tales como texto, gráficos y programas.
Los directorios se utilizan para guardar archivos y proporcionar una estructura de
organización jerárquica. La imagen de abajo muestra una versión abreviada de la
estructura del sistema de archivos en las máquinas virtuales.
Al iniciar una máquina virtual nueva, abriendo el curso o después usando el botón
reiniciar, estás registrado como usuario sysadmin en tu directorio de inicio:

Para navegar por la estructura del sistema de archivos, utiliza el comando de cd (change
directory o «cambiar directorio» en español) para cambiar directorios.

cd [opciones] [ruta]
Si nos fijamos en el gráfico anterior, el directorio Documents está ubicado en el directorio
home, donde se encuentra actualmente. Para moverte a un directorio desde tu ubicación
actual, utilizalo como argumento para el comando cd:
sysadmin@localhost:~$ cd Documents
sysadmin@localhost:~/Documents$

Los directorios equivalen a las carpetas en Windows y Mac OS. Al igual que estos
sistemas operativos más populares, una estructura de directorios de Linux tiene un nivel
superior. No se llama «Mi PC», sino más bien el directorio root (o «raíz» en español) y
está representado por el carácter /. Para moverse al directorio raíz, utiliza el carácter /
como argumento para el comando cd.

sysadmin@localhost:~$ cd /

El argumento para el comando cd es más que sólo el nombre de un directorio, en


realidad es una ruta de acceso (o «path» en inglés). Una ruta de acceso es una lista de
directorios separados por el carácter /. Por ejemplo, /home/sysadmin es la ruta de
acceso a tu directorio de inicio:

Si piensas en el sistema de archivos como un mapa, las rutas de acceso son las
indicaciones paso a paso; pueden ser utilizadas para indicar la ubicación de cualquier
archivo dentro del sistema de archivos. Hay dos tipos de rutas de acceso: absoluta y
relativa. Las rutas absolutas comienzan con el directorio raíz del sistema de archivos,
las rutas relativas se consideran a partir de tu ubicación actual en el sistema de archivos.
Las Rutas Absolutas

Una ruta absoluta te permite especificar la ubicación exacta de un directorio. Siempre


empieza en el directorio raíz, por lo tanto siempre comienza con el carácter /. La ruta al
directorio de inicio /home/sysadmin es una ruta absoluta. La ruta comienza en el
directorio raíz /, pasa al directorio home y luego al directorio sysadmin. Siguiendo este
camino en una interfaz gráfica de usuario (GUI) como tu computadora de casa, se vería
algo como esto:

Utiliza esta ruta como el argumento para el comando cd para retroceder al directorio de
inicio del usuario sysadmin.

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

Si no hay salida, esto significa que el comando tuvo éxito. Sigue adelante y confírmalo
mediante el comando pwd:

sysadmin@localhost:~$ pwd
/home/sysadmin
Las Rutas Relativas

Una ruta de acceso relativa da instrucciones a un archivo con respecto a tu ubicación


actual en el sistema de archivos. Las rutas relativas no empiezan con el carácter /,
empiezan con el nombre de un directorio. Observa de nuevo el primer ejemplo del
comando cd. El argumento es un ejemplo de la ruta de acceso relativa más simple: el
nombre de un directorio en tu ubicación actual.

sysadmin@localhost:~$ cd Documents
sysadmin@localhost:~/Documents$
La siguiente imagen muestra un mapa de los archivos contenidos en el directorio
sysadmin. Actualmente estás ubicado en el directorio Documents y quieres moverte al
directorio Art:

Una ruta de acceso relativa comienza con el directorio actual. Sin embargo, no lo
incluye en la ruta. Primero pasa al directorio School, y luego al directorio Art. Utiliza
el carácter / para separar los nombres de directorio. El resultado School/Art es una
ruta relativa desde el directorio Documents al directorio Art.
Utiliza la ruta relativa como un argumento para el comando cd para entrar al directorio
Art.

sysadmin@localhost:~/Documents/$ cd School/Art
sysadmin@localhost:~/Documents/School/Art$

Utiliza el comando pwd para confirmar el cambio:

sysadmin@localhost:~/Documents/School/Art$ pwd
/home/sysadmin/Documents/School/Art
Para considerar

La salida del comando pwd es la ruta absoluta al directorio School.

También indicado como:


Para considerar

En el ejemplo anterior el comando cd había seguidola ruta de acceso School/Art:

cd School/Art

Una ruta de acceso puede también dividirse en múltiples comandos cd. El siguiente
conjunto de comandos lograría los mismos resultados:

cd School
cd Art
Los Accesos Directos o Atajos

El Carácter ..

Sin importar en qué directorio estás, .. siempre representa un directorio superior


relativo al directorio actual. Para moverte desde el directorio Art de regreso al
directorio School:

sysadmin@localhost:~/Documents/School/Art$ cd ..
sysadmin@localhost:~/Documents/School$
El Carácter « . »

Sin importar en qué directorio estás, el carácter . siempre representa tu directorio


actual. Para el comando cd este acceso directo no es muy útil, pero será muy útil para
otros comandos.

El carácter ~

El directorio de inicio del usuario actual está representado por el carácter ~. Como se
mencionó anteriormente, siempre comienzas como un usuario sysadmin, y su inicio se
encuentra en /home/sysadmin. Para volver a tu directorio de inicio en cualquier
momento puedes ejecutar el siguiente comando:

sysadmin@localhost:~/Documents/School$ cd ~

5. Listado de Archivos

El comando ls se utiliza para listar el contenido de un directorio. Ya lo has visto usado


un par de veces antes en los ejemplos, pero esta página te ayudará a estar cómodo al
utilizarlo.

ls [OPCIONES] [ARCHIVO]

De forma predeterminada, cuando el comando ls se utiliza sin opciones o argumentos,


listará los archivos en el directorio actual:

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

Para conocer los detalles de un archivo, como el tipo de archivo, los permisos, la
propiedad o la fecha y hora, realiza un listado largo utilizando la opción -l para el
comando ls. A continuación, vamos a ver un listado del directorio /var/log como un
ejemplo, puesto que proporciona una salida variada:

sysadmin@localhost:~$ ls -l /var/log/
total 832
-rw-r--r-- 1 root root 17869 Mar 14 17:48 alternatives.log
drwxr-x--- 2 root adm 4096 Mar 14 17:48 apache2
drwxr-xr-x 2 root root 4096 Mar 14 17:45 apt
-rw-r----- 1 syslog adm 380 Jul 28 03:45 auth.log
-rw-r--r-- 5 root root 47816 Mar 2 23:10 bootstrap.log
-rw-rw---- 5 root utmp 0 Mar 2 23:10 btmp
-rw-r----- 1 syslog adm 324 Jul 28 03:45 cron.log
-rw-r----- 1 root adm 85083 Mar 14 17:48 dmesg
-rw-r--r-- 1 root root 315196 Mar 14 17:48 dpkg.log
-rw-r--r-- 1 root root 32064 Mar 14 17:48 faillog
drwxr-xr-x 2 root root 4096 Jun 30 06:53 fsck
-rw-r----- 1 syslog adm 106 Jul 28 03:45 kern.log
-rw-rw-r-- 1 root utmp 292584 Jul 28 03:45 lastlog
-rw-r----- 1 syslog adm 18703 Jul 28 03:46 syslog
drwxr-xr-x 2 root root 4096 Apr 11 2014 upstart
-rw-rw-r-- 1 root utmp 384 Jul 28 03:45 wtmp

Cada línea corresponde a un archivo dentro del directorio. La información puede


dividirse en campos separados por espacios. Los campos son los siguientes:

• Tipo de archivo
• -rw-r--r-- 1 root root 17869 Mar 14 17:48 alternatives.log
• drwxr-x--- 2 root adm 4096 Mar 14 17:48 apache2

El primer campo en realidad contiene diez caracteres, donde el primer carácter


indica el tipo de archivo y los siguiente nueve especifican los permisos. Los
tipos de archivo son:

Símbolo Tipo de Archivo Descripción

d para un directorio Archivo que se usa para guardar otros archivos.

para un archivo Incluye archivos leíbles, imágenes, archivos binarios y


-
regular archivos comprimidos

para un enlace
l Apunta a otro archivo
simbólico

s para la ranura Permite la comunicación entre procesos

para una barra


p Permite la comunicación entre procesos
vertical

para un archivo de
b Permite la comunicación con el Hardware
bloque

para un archivo de
c Permite la comunicación con el Hardware
carácter

El primer archivo alternatives.log es un archivo regular -, mientras que el


segundo archivo apache2 es un directorio d.

Los Permisos

drwxr-xr-x 1 root root 0 Apr 11 21:58 upstart


Los permisos indican de qué manera determinados usuarios pueden acceder a un
archivo. Sigue leyendo para aprender más acerca de los permisos.

• Cuenta de Vínculo Físico

-rw-r----- 1 syslog adm 23621 Aug 23 15:17 auth.log

Este número indica cuántos vínculos físicos apuntan a este archivo. Los vínculos
físicos están más allá del alcance de este módulo, pero se cubren en el curso de
NDG Linux Essentials.

• Usuario Propietario

-rw-r----- 1 syslog adm 416 Aug 22 15:43 kern.log

El usuario syslog es el propietario de este archivo. Cada vez que se crea un


archivo, la propiedad se asigna automáticamente al usuario que lo creó.

• Grupo Propietario

-rw-rw-r-- 1 root utmp 292584 Aug 20 18:44 lastlog

Indica el grupo propietario de este archivo

• Tamaño del Archivo

-rw-r----- 1 syslog adm 1087150 Aug 23 15:17 syslog.1

El tamaño del archivo en bytes. En el caso de un directorio, realmente podría ser


un múltiplo del tamaño de bloques utilizado para el sistema de archivos.

• Fecha y hora

drwxr-xr-x 1 root root 32 Jul 17 03:36 fsck

Esto indica el momento en el que el contenido del archivo se modificó por


última vez.

• Nombre de archivo

-rw-r--r-- 1 root root 47816 Jul 17 03:36 bootstrap.log

El último campo contiene el nombre del archivo o directorio.

Para considerar

En el caso de los vínculos simbólicos, se mostrará el nombre del vínculo junto


con una flecha y la ruta de acceso del archivo original.

lrwxrwxrwx. 1 root root 22 Nov 6 2012 /etc/grub.conf ->


../boot/grub/grub.conf
Los vínculos simbólicos están más allá del alcance de este módulo, pero están
cubiertos en el curso NDG Linux Essentials.

Ordenación

Por defecto la salida del comando ls está ordenada alfabéticamente por nombre de
archivo. Puede ordenarse por otros métodos.

Observa

Las opciones en los siguientes ejemplos se combinarán con la opción -l para que los
detalles pertinentes de los archivos se muestran. Observa los campos correspondientes a
la opción de la búsqueda.

La opción -t ordenará los archivos por fecha y hora:

sysadmin@localhost:~$ ls -lt /var/log


total 840
-rw-r----- 1 syslog adm 27014 Jul 28 00:10 syslog
-rw-r----- 1 syslog adm 380 Jul 27 23:10 auth.log
-rw-rw-r-- 1 root utmp 292584 Jul 27 23:10 lastlog
-rw-rw-r-- 1 root utmp 384 Jul 27 23:10 wtmp
-rw-r----- 1 syslog adm 324 Jul 27 23:10 cron.log
-rw-r----- 1 syslog adm 106 Jul 27 23:10 kern.log
drwxr-xr-x 2 root root 4096 Jun 30 06:56 fsck
-rw-r--r-- 1 root root 17869 Mar 14 17:48 alternatives.log
-rw-r----- 1 root adm 85083 Mar 14 17:48 dmesg
-rw-r--r-- 1 root root 32064 Mar 14 17:48 faillog
-rw-r--r-- 1 root root 315196 Mar 14 17:48 dpkg.log
drwxr-x--- 2 root adm 4096 Mar 14 17:48 apache2
drwxr-xr-x 2 root root 4096 Mar 14 17:45 apt
-rw-r--r-- 5 root root 47816 Mar 2 23:10 bootstrap.log
-rw-rw---- 5 root utmp 0 Mar 2 23:10 btmp
drwxr-xr-x 2 root root 4096 Apr 11 2014 upstart

La opción -S ordenará los archivos por tamaño del archivo:

sysadmin@localhost:~$ ls -l -S /var/log
total 840
-rw-r--r-- 1 root root 315196 Mar 14 17:48 dpkg.log
-rw-rw-r-- 1 root utmp 292584 Jul 27 23:10 lastlog
-rw-r----- 1 root adm 85083 Mar 14 17:48 dmesg
-rw-r--r-- 5 root root 47816 Mar 2 23:10 bootstrap.log
-rw-r--r-- 1 root root 32064 Mar 14 17:48 faillog
-rw-r----- 1 syslog adm 27014 Jul 28 00:10 syslog
-rw-r--r-- 1 root root 17869 Mar 14 17:48 alternatives.log
drwxr-x--- 2 root adm 4096 Mar 14 17:48 apache2
drwxr-xr-x 2 root root 4096 Mar 14 17:45 apt
drwxr-xr-x 2 root root 4096 Jun 30 06:56 fsck
drwxr-xr-x 2 root root 4096 Apr 11 2014 upstart
-rw-rw-r-- 1 root utmp 384 Jul 27 23:10 wtmp
-rw-r----- 1 syslog adm 380 Jul 27 23:10 auth.log
-rw-r----- 1 syslog adm 324 Jul 27 23:10 cron.log
-rw-r----- 1 syslog adm 106 Jul 27 23:10 kern.log
-rw-rw---- 5 root utmp 0 Mar 2 23:10 btmp
La opción -r invierte el orden de cualquier tipo de orden. Observa la diferencia cuando
se añade al ejemplo anterior:

sysadmin@localhost:~$ ls -lSr /var/log


total 840
-rw-rw---- 5 root utmp 0 Mar 2 23:10 btmp
-rw-r----- 1 syslog adm 106 Jul 27 23:10 kern.log
-rw-r----- 1 syslog adm 324 Jul 27 23:10 cron.log
-rw-r----- 1 syslog adm 380 Jul 27 23:10 auth.log
-rw-rw-r-- 1 root utmp 384 Jul 27 23:10 wtmp
drwxr-xr-x 2 root root 4096 Apr 11 2014 upstart
drwxr-xr-x 2 root root 4096 Jun 30 06:56 fsck
drwxr-xr-x 2 root root 4096 Mar 14 17:45 apt
drwxr-x--- 2 root adm 4096 Mar 14 17:48 apache2
-rw-r--r-- 1 root root 17869 Mar 14 17:48 alternatives.log
-rw-r----- 1 syslog adm 27014 Jul 28 00:10 syslog
-rw-r--r-- 1 root root 32064 Mar 14 17:48 faillog
-rw-r--r-- 5 root root 47816 Mar 2 23:10 bootstrap.log
-rw-r----- 1 root adm 85083 Mar 14 17:48 dmesg
-rw-rw-r-- 1 root utmp 292584 Jul 27 23:10 lastlog
-rw-r--r-- 1 root root 315196 Mar 14 17:48 dpkg.log

Los números en el campo de tamaño de archivo cambian de descendente a ascendente.

Si se utiliza sólo la opción -r, se listarán los archivos en orden alfabético inverso:

sysadmin@localhost:~$ ls -r /var/log
wtmp lastlog faillog cron.log auth.log alternatives.log
upstart kern.log dpkg.log btmp apt
syslog fsck dmesg bootstrap.log apache2

¿Sabías qué? Puedes encontrar Linux en:

6. Acceso Administrativo
Hay muchos comandos de Linux que lidian con la información sensible como
contraseñas, hardware del sistema, u operan bajo otras circunstancias excepcionales.
Previniendo que los usuarios habituales ejecuten estos comandos ayuda a proteger el
sistema. Iniciar la sesión como el usuario root proporciona acceso de administrador, lo
que permite la ejecución de algunos de los comandos privilegiados.

El Comando su
su OPCIONES USUARIO

El comando su te permite actuar temporalmente como un usuario diferente. Esto se


logra mediante la creación de un nuevo shell. Por defecto, si no se especifica una cuenta
de usuario, el comando su abre un nuevo shell como usuario root, que proporciona
privilegios administrativos.

Observa

Se recomienda utilizar la opción login shell, ya que el login shell configura un shell
completamente nuevo con la configuración del nuevo usuario. Esta opción puede ser
especificada de tres maneras:

su -
su -l
su --login

Después de ejecutar el comando su, se requiere una contraseña. En nuestras máquinas


virtuales, la contraseña para ambas cuentas, la de root y, sysadmin es netlab123. Si la
olvidas, ésta se muestra cada vez que se inicia una nueva máquina virtual. Como medida
de seguridad, la contraseña no será visible cuando la vas introduciendo.

sysadmin@localhost:~$ su -
Password:
root@localhost:~#

Observa que el prompt de comando ha cambiado para reflejar que has iniciado la sesión
como usuario root. Para cerrar la sesión y volver a la cuenta sysadmin, utiliza el
comando exit. Observa que el prompt cambia de nuevo:

root@localhost:~# exit
exit
sysadmin@localhost:~$

Para evitar que se ejecuten los comandos sensibles, hemos configurado el comando
Steam Locomotive (o «locomotora de vapor» en español), el comando de sl, que
requiere acceso de administrador. Si el comando se ejecuta como sysadmin, fallará:

sysadmin@localhost:~$ sl
sl: Permission denied

Utiliza el comando su para cambiar a la cuenta de root y ejecuta el comando de sl con


acceso administrativo:

sysadmin@localhost:~$ su -
Password:
root@localhost:~# sl
(@@) ( ) (@) ( ) @@ () @ O
@
( )
(@@@@)
( )

(@@@)
==== ________ ___________
_D _| |_______/ \__I_I_____===__|_________|
|(_)--- | H\________/ | | =|___ ___|
_________________
/ | | H | | | | ||_| |_|| _|
| | | H |__--------------------| [___] | =|
| ________|___H__/__|_____/[][]~\_______| | -|
|/ | |-----------I_____I [][] [] D
|=======|____|__________________
__/ =| o |=-~~\ /~~\ /~~\ /~~\
____Y___________|__|____________________
|/-=|___|= || || || |_____/~\___/
|_D__D__D_| |_D__
\_/ \_O=====O=====O=====O/ \_/ \_/
\_/ \_/

Utilice el comando exit otra vez para volver a la cuenta sysadmin.

root@localhost:~# exit
exit
sysadmin@localhost:~$
El Comando sudo
sudo [OPCIONES] COMANDO

El comando sudo permite que el usuario ejecute un comando como otro usuario sin
crear un nuevo shell. En cambio, para ejecutar un comando con privilegios de
administrador, utilizalo como argumento para el comando sudo. Igual que el comando
su, el comando sudo asume por defecto que la cuenta del usuario root debe utilizarse
para ejecutar comandos.

Para considerar

El comando sudo puede ser usado para utilizar temporalmente otras cuantas también.
Para especificar otro usuario de cuenta utiliza la opción -u.

Ejecuta el comando sl como el usuario root poniendo sudo delante de éste:

sysadmin@localhost:~$ sudo sl
Password:
Nota:

Recuerda que la contraseña es netlab123. El prompt de la contraseña no aparecerá de


nuevo mientras el usuario continúa ejecutando comandos sudo con diferencia de menos
de cinco minutos.

Una vez que el comando haya terminado y el prompt no haya cambiado, sigues
registrado como sysadmin. El comando sudo sólo proporciona acceso administrativo
para la ejecución del comando especificado. Esto es una ventaja, ya que reduce el riesgo
de que un usuario accidentalmente ejecute un comando como root. La intención de
ejecutar un comando es clara; el comando se ejecuta como root si tiene como prefijo el
comando sudo. De lo contrario, se ejecuta el comando como un usuario normal.

7. Los Permisos

Los permisos determinan en que manera los diferentes usuarios pueden interactuar con
un archivo o directorio. Cuando se lista un archivo con el comando ls -l, la salida
incluye información de permiso. Por ejemplo, vamos a usar un script llamado
hello.sh ubicado en el directorio Documents:

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents
sysadmin@localhost:~/Documents$ ls -l hello.sh
-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

A continuación vas a ver una revisión de los campos correspondientes a los permisos.

Campo del Tipo de Archivo


-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

El primer carácter de esta salida indica el tipo de un archivo. Recuerda que si el primer
carácter es un -, entonces es un archivo regular. Si el carácter era una d, entonces es un
directorio.

Campo de los Persmisos


-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

Después del carácter del tipo de archivo, se muestran los permisos. Los permisos se
dividen en tres grupos de tres caracteres:
• Propietario

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

El primer grupo para el usuario que posee el archivo. Si tu cuenta actual es el


usuario propietario del archivo, entonces se aplicará el primer grupo de los tres
permisos y los otros permisos no tienen ningún efecto.

El usuario que posee el archivo y a quién se aplican estos permisos, puede ser
determinado por el campo de user owner:

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

• Grupo

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

El segundo conjunto para el grupo propietario del archivo. Si tu cuenta actual no


es el usuario propietario del archivo y eres miembro de un grupo que posee el
archivo, entonces se aplicará el segundo grupo de los tres permisos y los otros
permisos no tendrán ningún efecto.

El grupo de este archivo puede ser determinado por el campo group owner:

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

• Otro

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

El último conjunto para todos los demás, cualquier usuario a quien no le aplican
los otros dos conjuntos de permisos. Si no eres el usuario propietario del archivo
o un miembro del grupo que posee el archivo, se te aplicaran el tercer conjunto
de permisos.

Los Tipos de Permisos

Hay tres permisos diferentes que pueden colocarse en un archivo o directorio: permiso
de lectura, escritura y ejecución. La manera en que estos permisos se aplican difiere en
el caso de los archivos y de los directorios, tal como se muestra en la siguiente tabla:

Permiso Efectos en el archivo Efectos en el directorio

Sin permiso de ejecución en el directorio,


permite un listado no detallado de los
read (o «leer» Permite que el contenido del
archivos. Con permiso de ejecutar, el
en español) (r) archivo se lea o copie.
comando ls -l puede proporcionar una
lista detallada.
Permiso Efectos en el archivo Efectos en el directorio

Permite modificar y sobrescribir


write (o Para que este permiso funcione, el
el contenido. Permite añadir o
«escribir» en directorio debe también tener el permiso de
quitar los archivos de un
español) ejecución.
directorio.

Permite que un archivo se


execute (o ejecute como un proceso, Permite a que un usuario se cambie al
«ejecutar» en aunque los archivos de script directorio si el directorio padre tiene
español) también requieren permiso de también permiso de escritura.
lectura.

Para considerar

Entender los permisos que se aplican es una habilidad importante en Linux. Por
ejemplo, considera el siguiente grupo de permisos:

-r--rw-rwx. 1 sysadmin staff 999 Apr 10 2013 /home/sysadmin/test

En este escenario, el usuario sysadmin acaba teniendo menos acceso a este archivo que
los miembros del grupo staff o cualquier otro. El usuario sysadmin sólo tiene
permisos de r--. No importa si el usuario sysadmin es un miembro del grupo staff;
una vez se ha establecido la propiedad del usuario, se aplicarán sólo los permisos del
usuario propietario.

8. Cambiar los Permisos de Archivo

El comando chmod se utiliza para cambiar los permisos de un archivo o directorio. Sólo
el usuario root o el usuario que posee el archivo puede cambiar los permisos de un
archivo.

Para considerar

¿Por qué el comando se llama chmod en vez de chperm? A los permisos se les solía
referir como modos de acceso, por lo que el comando chmod realmente significa
cambiar los modos de acceso. (o «change the modes of access» en inglés)

Hay dos métodos para cambiar los permisos con el comando chmod: simbólico y octal.
El método simbólico es bueno para cambiar un conjunto de permisos a la vez. El
método octal o numérico requiere el conocimiento del valor octal de cada uno de los
permisos y requiere que todos los tres conjuntos de permisos (usuario, grupo, otros) se
especifiquen cada vez. Para la simplicidad, se cubrirá sólo el método simbólico. Para
aprender más sobre el método octal puedes consultar el curso NDG Linux Essentials.

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents
El Método Simbólico
chmod [<COJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO

Para utilizar el método simbólico del chmod primero tienes que indicar que conjunto de
permisos vas a cambiar:

chmod [<CONJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO


Símbolo Significado

u Usuario: El usuario que posee el archivo.

g Grupo: El grupo que posee el archivo.

Otros: Cualquiera que no sea el usuario propietario o miembro del grupo


o
propietario.

a Todos: Se refiere al usuario, grupo y otros.

A continuación, especifica un símbolo de acción:

chmod [<CONJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO


Símbolo Significado

+ Agregar el permiso, si es necesario

= Especificar el permiso exacto

- Quitar el permiso, si es necesario

Después de un símbolo de acción, especifica uno o más permisos sobre el que quieres
actuar.

chmod [<CONJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO


Símbolo Significado

r lectura

w escritura
Símbolo Significado

x ejecución

Por último, un espacio y los nombres de los archivos para asignar los permisos.

chmod [<CONJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO

El archivo hello.sh utilizado en los ejemplos en la página anterior es una secuencia de


comandos. Un script es un archivo que puede ser ejecutado, similar a un comando:

sysadmin@localhost:~/Documents$ ls -l hello.sh
-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

Sin embargo en la actualidad, el permiso de ejecución no está configurado para ninguno


de los grupos de permisos:

-rw-rw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

Tratar de ejecutar este script con la siguiente sintaxis resultará en error:

sysadmin@localhost:~/Documents$ ./hello.sh
-bash: ./hello.sh: Permission denied

Puesto que el sistema inició la sesión como el usuario sysadmin, y el sysadmin es el


dueño de este archivo, proporcionar al usuario propietario el permiso de ejecución debe
permitirte ejecutar este script. Al usar el comando chmod con el carácter u para
representar el conjunto de permisos del propietario usuario, el carácter + para indicar
que se añade un permiso, y el carácter x para representar el permiso de ejecución, el
comando se debe ejecutar como sigue:

sysadmin@localhost:~/Documents$ chmod u+x hello.sh

Si no arroja una salida, esto significa que el comando se ha ejecutado correctamente.


Comprueba Confirme comprobando los permisos usando el comando ls -l:

sysadmin@localhost:~/Documents$ ls -l hello.sh
-rwxrw-r-- 1 root sysadmin 112 Aug 1 03:48 hello.sh

El usuario propietario ahora tiene el permiso de ejecución listado:

-rwxrw-r-- 1 sysadmin sysadmin 21 Aug 1 02:35 hello.sh

Por último, trata de ejecutar el script otra vez. Utiliza la sintaxis del comando que se
muestra a continuación:

./hello.sh
sysadmin@localhost:~/Documents$ ./hello.sh
______________
( Hello World! )
--------------
\
\
<(^)
( )

Para considerar

Observa que para ejecutar la secuencia de comandos en el ejemplo anterior, la


combinación de caracteres . / fue colocada delante del nombre del script.

./hello.sh

Esto indica que el «comando» debe ejecutarse desde el directorio actual.

9. Cambiar la Propiedad de Archivo

El propietario de un archivo es el usuario que lo crea. El comando chown se utiliza para


cambiar la propiedad de los archivos y directorios. Cambiar el usuario propietario
requiere acceso de administrador, un usuario normal no puede utilizar este comando
para cambiar el usuario propietario de un archivo, ni siquiera para pasar la propiedad de
uno de sus propios archivos a otro usuario. Sin embargo, el comando chown también
permite cambiar la propiedad del grupo, que se puede lograr a través del root o el
propietario del archivo.

Para cambiar el usuario propietario de un archivo, se puede utilizar la siguiente sintaxis.


El primer argumento [OWNER] especifica que el usuario debe ser el nuevo dueño. El
segundo argumento FILE especifica de qué archivo está cambiando de propiedad.

chown [OPCIONES] [DUEÑO] ARCHIVO

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Actualmente todos los archivos en el directorio Documents son propiedad del usuario
sysadmin. Esto se puede verificar mediante el uso del comando ls -l. Recuerda que la
tercera columna indica al usuario propietario.

sysadmin@localhost:~/Documents$ ls -l
total 148
drwxrwxr-x 2 sysadmin sysadmin 4096 Aug 1 03:40 School
drwxrwxr-x 2 sysadmin sysadmin 4096 Aug 1 03:40 Work
-rw-r--r-- 1 sysadmin sysadmin 39 Mar 14 17:48 adjectives.txt
-rw-r--r-- 1 sysadmin sysadmin 90 Mar 14 17:48 alpha-first.txt
-rw-r--r-- 1 sysadmin sysadmin 89 Mar 14 17:48 alpha-
first.txt.original
-rw-r--r-- 1 sysadmin sysadmin 106 Mar 14 17:48 alpha-second.txt
-rw-r--r-- 1 sysadmin sysadmin 195 Mar 14 17:48 alpha-third.txt
-rw-r--r-- 1 sysadmin sysadmin 390 Mar 14 17:48 alpha.txt
-rw-r--r-- 1 sysadmin sysadmin 42 Mar 14 17:48 animals.txt
-rw-r--r-- 1 sysadmin sysadmin 14 Mar 14 17:48 food.txt
-rwxrw-r-- 1 sysadmin sysadmin 112 Aug 1 03:48 hello.sh
-rw-r--r-- 1 sysadmin sysadmin 67 Mar 14 17:48 hidden.txt
-rw-r--r-- 1 sysadmin sysadmin 10 Mar 14 17:48 letters.txt
-rw-r--r-- 1 sysadmin sysadmin 83 Mar 14 17:48 linux.txt
-rw-r--r-- 1 sysadmin sysadmin 66540 Mar 14 17:48 longfile.txt
-rw-r--r-- 1 sysadmin sysadmin 235 Mar 14 17:48 newhome.txt
-rw-r--r-- 1 sysadmin sysadmin 10 Mar 14 17:48 numbers.txt
-rw-r--r-- 1 sysadmin sysadmin 77 Mar 14 17:48 os.csv
-rw-r--r-- 1 sysadmin sysadmin 59 Mar 14 17:48 people.csv
-rw-r--r-- 1 sysadmin sysadmin 110 Mar 14 17:48 profile.txt
-rw-r--r-- 1 sysadmin sysadmin 51 Mar 14 17:48 red.txt

Para cambiar al propietario del script hello.sh al usuario root, utiliza root como
primer argumento y hello.sh como segundo argumento. No olvides utilizar el
comando sudo para obtener los privilegios de administrador necesarios. Utiliza la
contraseña netlab123 cuando se solicite:

sysadmin@localhost:~/Documents$ sudo chown root hello.sh


[sudo] password for sysadmin:

Confirma que el usuario propietario ha cambiado introduciendo el comando ls -l.


Utiliza el nombre de archivo como argumento para limitar la salida:

sysadmin@localhost:~/Documents$ ls -l hello.sh
-rwxrw-r-- 1 root sysadmin 112 Aug 1 03:48 hello.sh

El campo de usuario propietario ahora es root lo que indica que el cambio fue exitoso.

Para considerar

Trata de ejecutar el script de hello.sh otra vez. ¡Se produce un error! ¿Por qué?

sysadmin@localhost:~/Documents$ ./hello.sh
-bash: ./hello.sh: Permission denied

Sólo el usuario propietario tiene el permiso de ejecución, y ahora el usuario root es el


usuario propietario. Ahora, este archivo requiere acceso de administrador para que se
ejecute. Utiliza el comando sudo para ejecutar el script como usuario root.

sysadmin@localhost:~/Documents$ sudo ./hello.sh


[sudo] password for sysadmin:
______________
( Hello World! )
--------------
\
\
<(^)
( )

10. Mover los Archivos

El comando mv sirve para mover un archivo desde una ubicación en el sistema de


archivos a otra.

mv ORIGEN DESTINO

El comando mv requiere al menos dos argumentos. El primer argumento es la fuente,


una ruta para el archivo que se va a mover. El segundo argumento es el destino, una ruta
hacia dónde se moverá el archivo. Los archivos que se quieren copiar a veces se
denominan fuente y la ubicación a dónde se van a colocar las copias se denominan
destinos.

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Para mover el archivo people.csv al directorio Work, utiliza el nombre de archivo


como la fuente y el nombre del directorio como destino:

sysadmin@localhost:~/Documents$ mv people.csv Work

Si se mueve un archivo de un directorio a otro sin especificar un nuevo nombre para el


archivo, se conservará su nombre original. El paso anterior puede confirmarse mediante
el comando ls en el directorio Work:

sysadmin@localhost:~/Documents$ ls Work
people.csv

El comando mv puede mover varios archivos, siempre que el argumento final


proporcione al comando el destino. Por ejemplo, para mover tres archivos en al
directorio School:

sysadmin@localhost:~/Documents$ mv numbers.txt food.txt alpha.txt


School
sysadmin@localhost:~/Documents$ ls School
Art Engineering Math alpha.txt food.txt numbers.txt
Mover un archivo dentro del mismo directorio es una manera eficaz de cambiar el
nombre. Por ejemplo, en el siguiente ejemplo el archivo animals.txt recibe un nombre
nuevo de zoo.txt:

mv animals.txt zoo.txt
sysadmin@localhost:~/Documents$ ls
School alpha-second.txt hidden.txt newhome.txt
Work alpha-third.txt letters.txt os.csv
adjectives.txt animals.txt linux.txt profile.txt
alpha-first.txt hello.sh longfile.txt red.txt
sysadmin@localhost:~/Documents$ mv animals.txt zoo.txt
sysadmin@localhost:~/Documents$ ls
School alpha-second.txt letters.txt os.csv
Work alpha-third.txt linux.txt profile.txt
adjectives.txt hello.sh longfile.txt red.txt
alpha-first.txt hidden.txt newhome.txt zoo.txt

Para Considerar

Los permisos pueden tener un impacto en los comandos de la administración de


archivos, como el comando mv. Mover un archivo requiere permisos de escritura y
ejecución en ambos directorios, el origen y el destino.

¡Pingüinos en el Espacio! NASA utiliza Linux. La Estación Espacial Internacional


funciona en Linux. Hemos migrado las funciones clave de Windows a Linux porque
necesitábamos un sistema operativo estable y fiable. El Mars Rover «Curiosity».

11. Copiar Archivos

Crear copias de los archivos puede ser útil por muchas razones:
• Si se crea una copia de un archivo antes de hacer cambios, es posible volver al archivo
original.
• Es útil para transferir un archivo a los dispositivos de medios extraíbles.
• Una copia de un documento existente puede utilizarse como una plantilla para un
nuevo documento.

cp [OPCIONES] ORIGEN DESTINO

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

El comando cp se utiliza para copiar los archivos. Igual que el comando mv, éste
también requiere al menos dos argumentos: un origen y un destino. Por ejemplo, para
copiar el archivo /etc/passwd al directorio actual, utiliza el siguiente comando:

sysadmin@localhost:~/Documents$ cp /etc/passwd .

Nota:

El segundo argumento es el carácter . Recuerda de la sección de Cambiar de


Directorios que es un acceso directo que representa el directorio actual.

El resultado de ejecutar el comando anterior crearía una copia del contenido del archivo
/etc/passwd en el directorio Documents, ya que es el directorio actual. Esto puede
confirmarse mediante el comando ls:

sysadmin@localhost:~/Documents$ ls
School alpha-second.txt letters.txt os.csv zoo.txt
Work alpha-third.txt linux.txt passwd
adjectives.txt hello.sh longfile.txt profile.txt
alpha-first.txt hidden.txt newhome.txt red.txt

Para Considerar

Los permisos pueden tener un impacto en los comandos de la administración del


archivo, como el comando cp. Para copiar un archivo, es necesario tener el permiso de
ejecución para acceder al directorio en el cuál se encuentra el archivo y el permiso de
lectura para el archivo que se está copiando.

También es necesario tener el permiso de escritura y de ejecución en el directorio al que


se está copiando el archivo. Por lo general, hay dos ubicaciones donde siempre debe
tener los permisos de escritura y ejecución en los directorios: el directorio home y el
directorio /tmp.

11.1. Copiar Archivos


El comando dd es una utilidad para copiar los archivos o las particiones enteras a nivel
de bit.

dd [OPCIONES] OPERANDO

Este comando tiene varias características útiles, incluyendo:

• Puede utilizarse para clonar o eliminar (limpiar) los discos completos o las particiones.
• Se puede utilizar para copiar los datos sin procesar (o «raw data» en inglés) a los
dispositivos extraíbles, tales como las unidades USB y CDROM.
• Puede hacer copia de seguridad y restaurar el MBR (Master Boot Record o «Registro
de Arranque Maestro» en español).
• Se puede utilizar para crear un archivo de un tamaño específico que se llena con ceros
binarios y se puede utilizar después como un archivo de intercambio (memoria
virtual).

Examinemos el siguiente ejemplo, el comando dd crea un un archivo llamado


/tmp/swapex con 50 bloques de ceros que tienen un megabyte de tamaño:

sysadmin@localhost:~$ dd if=/dev/zero of=/tmp/swapex bs=1M count=50


500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.825745 s, 635 MB/s

El comando dd utiliza argumentos especiales para especificar cómo va a funcionar. A


continuación se ilustran algunos de los argumentos más comúnmente utilizados:

Argumento Descripción

Archivo de entrada: El archivo de entrada del que se hace la lectura.

if dd if=/dev/zero of=/tmp/swapex bs=1M count=50

En el ejemplo se lee del archivo /dev/zero, un archivo especial que


contiene un número ilimitado de ceros.
Archivo de salida: El archivo de salida para ser escrito.
of
dd if=/dev/zero of=/tmp/swapex bs=1M count=50
Tamaño del bloque: El tamaño de bloque utilizado. De forma
predeterminada, el valor se da en bytes. Utiliza los siguientes sufijos para
bs especificar otras unidades: K, M, G y T para kilobytes, megabytes, gigabytes
y terabytes, respectivamente.

dd if=/dev/zero of=/tmp/swapex bs=1M count=50


Argumento Descripción

El ejemplo utiliza un tamaño de bloque de un megabyte.


Cantidad: El número de bloques a leer desde el archivo de entrada.
count dd if=/dev/zero of=/tmp/swapex bs=1M count=50

El comando de ejemplo lee 50 bloques.

Para considerar

Cuando se copia el dispositivo entero no hay que especificar tamaño de bloque o


cantidad. Por ejemplo, para clonar un disco duro (/dev/sda) a otro (/dev/sdb) ejecuta
el siguiente comando:

dd if=/dev/sda of=/dev/sdb

12. Eliminar los Archivos

El comando rm se utiliza para borrar los archivos y directorios. Es importante tener en


cuenta que los archivos y directorios borrados no entran a la "papelera de reciclaje"
como en el caso de lo sistemas operativos de escritorio. Cuando se elimina un archivo
con el comando rm, casi siempre se elimina de manera permanente.

rm [OPCIONES] ARCHIVO

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Sin opciones, el comando rm se utiliza típicamente para borrar los archivos regulares:

sysadmin@localhost:~/Documents$ rm linux.txt
sysadmin@localhost:~/Documents$ ls linux.txt
ls: cannot access linux.txt: No such file or directory

El comando rm ignorará los directorios que debía eliminar; para eliminar un directorio
utiliza la opción recursiva del parámetro, ya sea la opción -r o -R. Sólo ten cuidado
puesto que esto eliminará todos los archivos y todos los subdirectorios:

sysadmin@localhost:~/Documents$ rm Work
rm: cannot remove 'Work': Is a directory
sysadmin@localhost:~/Documents$ rm -r Work

Advertencia:

El comando rm elimina los archivos de manera permanente. Para repetir los ejemplos
anteriores, restablece la terminal utilizando el botón reset.

Para considerar

Los permisos pueden tener un impacto en los comandos de la administración de


archivo, como el comando rm.

Para eliminar un archivo en un directorio, el usuario debe tener permiso de escritura y


permiso de ejecución en un directorio. Los usuarios normales normalmente sólo tienen
este tipo de permiso en su directorio home y sus subdirectorios.

13. Filtrado de Entrada

El comando grep es un filtro de texto que buscará las entradas y devolverá las líneas
que coinciden con el patrón determinado.

grep [OPCIONES] PATRÓN [ARCHIVO]

Observa

Utiliza el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Si el siguiente ejemplo falla, repita el ejemplo de la Sección 11:

sysadmin@localhost:~/Documents$ cp /etc/passwd .

Por ejemplo, el archivo passwd que acabamos de copiar en el directorio Documents,


contiene los detalles sobre las cuentas de sistema especiales y cuentas de usuario en el
sistema. Este archivo puede ser muy grande, sin embargo el comando grep se pude
utilizar para filtrar la información sobre un usuario específico, como el usuario
sysadmin. Utiliza sysadmin como el argumento del patrón y passwd como el
argumento del archivo:

sysadmin@localhost:~/Documents$ grep sysadmin passwd


sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin
El comando anterior devuelve la línea del passwd que contiene el patrón sysadmin.

Nota:

Esta línea es la entrada /etc/passwd que pertenece al usuario sysadmin y proporciona


información que está fuera del alcance de este curso. Para más información sobre este
archivo, puedes consultar el curso NDG Linux Essentials.

El ejemplo anterior utiliza un término de búsqueda simple como el patrón, sin embargo
grep puede interpretar patrones de búsqueda mucho más complejos.

13.1. Las Expresiones Regulares

Las expresiones regulares tienen dos formas comunes: la básica y la extendida. La


mayoría de los comandos que usan las expresiones regulares pueden interpretar las
expresiones regulares básicas. Sin embargo, las expresiones regulares extendidas no
están disponibles para todos los comandos y normalmente se requiere una opción de
comando para que funcionen correctamente.

La siguiente tabla resume los caracteres de las expresiones regulares básicas:

Los Caracteres
Significado
Regex Básicos

. Cualquier carácter individual

[ ] Cualquier carácter especificado

[^ ] No el carácter especificado

* Cero o más de los carácter previos

Si ^ es el primer carácter en el patrón, entonces el patrón debe estar al


^
principio de la línea que debe coincidir, de lo contrario solo un literal ^.

Si $ es el último carácter en el patrón, entonces el patrón debe estar al


$
final de la línea que debe coincidir, de lo contrario solo un literal $.

La siguiente tabla resume las expresiones regulares extendidas, que se deben utilizar
con el comando egrep o la opción -E con el comando grep:
Los Carácteres Regex
Significado
Extendidos

+ Uno o más de los patrones previos

? El patrón anterior es opcional

Especificar las coincidencias mínimas, máximas o exactas del


{ }
patrón anterior

| Alternancia - una «o» lógica

( ) Permite crear grupos

Este curso sólo incluye las expresiones regulares básicas. Para obtener más información sobre
las expresiones regulares extendidas, puedes ver los cursos NDG Linux Essentials y NDG
Introduction to Linux

13.2. Patrones Básicos

Las expresiones regulares son patrones que sólo determinados comandos pueden
interpretar. Las expresiones regulares pueden ampliarse para que coincidan con ciertas
secuencias de caracteres en el texto. Los ejemplos que aparecen en esta página harán
uso de las expresiones regulares para demostrar su poder cuando se utilizan con el
comando grep. Además, estos ejemplos proporcionan una demostración muy visual de
cómo funcionan las expresiones regulares, el texto que coincide con los patrones de
búsqueda se mostrará en rojo.

Observa

Utiliza el siguiente comando cd para cambiar al directorio Documents.

sysadmin@localhost:~$ cd ~/Documents

La más simple de todas las expresiones regulares utiliza solamente los caracteres
literales, como en el ejemplo de la página anterior:

sysadmin@localhost:~/Documents$ grep sysadmin passwd


sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin
Los Caracteres de Anclaje

Los caracteres de anclaje son una de las maneras de utilizar las expresiones regulares
para reducir los resultados de búsqueda. Por ejemplo, el patrón root aparece muchas
veces en el archivo /etc/passwd:

sysadmin@localhost:~/Documents$ grep 'root' passwd


root:x:0:0:root:/root:bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Para evitar que el shell los malinterprete como caracteres especiales, estos patrones
deben protegerse por comillas fuertes, lo que significa simplemente ponerla entre
comillas simples.

El primer carácter de anclaje ^ se utiliza para asegurar que un patrón aparezca al


principio de la línea. Por ejemplo, para encontrar todas las líneas en /etc/passwd que
comienzan con root, utiliza el patrón ^root. Ten en cuenta que ^ debe ser el primer
carácter en el patrón para que sea eficaz.

sysadmin@localhost:~/Documents$ grep '^root' /etc/passwd


root:x:0:0:root:/root:bin/bash

Para el ejemplo siguiente, primero examina el archivo alfa-first.txt. El comando


cat se puede utilizar para imprimir el contenido de un archivo:

sysadmin@localhost:~/Documents$ cat alpha-first.txt


A is for Animal
B is for Bear
C is for Cat
D is for Dog
E is for Elephant
F is for Flower

El segundo carácter de anclaje $ se puede utilizar para un patrón que aparece al final de
la línea para reducir resultados de búsqueda de manera eficiente. Para encontrar las
líneas que terminan con una r en el archivo alfa-first.txt, utiliza el patrón r$:

sysadmin@localhost:~/Documents$ grep 'r$' alpha-first.txt


B is for Bear
F is for Flower

Una vez más, la posición de este carácter es importante, el $ debe ser el último carácter
en el patrón para que sea eficaz como un ancla.

Coincidir un solo carácter con «.»

En los ejemplos siguientes se utiliza el archivo red.txt:

sysadmin@localhost:~/Documents$ cat red.txt


red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read

Una de las expresiones más útiles es el . Coincidirá con cualquier carácter excepto el
carácter que define un salto de línea. El patrón r..f encuentra cualquier línea que
contiene la letra r seguida por exactamente dos caracteres (que pueden ser cualquier
carácter menos un salto de línea) y luego la letra f:

sysadmin@localhost:~/Documents$ grep 'r..f' red.txt


reef
roof

El mismo concepto puede ser repetido utilizando otras combinaciones. El siguiente


ejemplo encontrará palabras de cuatro letras que inician con r y terminan con d:

sysadmin@localhost:~/Documents$ grep 'r..d' red.txt


reed
read

Este carácter puede ser utilizado cualquier número de veces. Para encontrar todas las
palabras que tengan al menos cuatro caracteres puedes usar el siguiente patrón:

sysadmin@localhost:~/Documents$ grep '....' red.txt


reef
reeed
roof
reed
root
reel
read

La línea no tiene que ser una coincidencia exacta, simplemente tiene que contener el
patrón, como se ve aquí cuando se busca r..t en el archivo /etc/passwd:

sysadmin@localhost:~/Documents$ grep 'r..t' /etc/passwd


root:x:0:0:root:/root:/bin/bash
operator:x:1000:37::/root:
Coincidir con un solo carácter utilizando [ ]

Los corchetes [ ] buscan coincidencias con un sólo carácter de una lista o rango de
posibles caracteres contenidos dentro de los corchetes.

Por ejemplo, del contenido del archivo profile.txt:

sysadmin@localhost:~/Documents$ cat profile.txt


Hello my name is Joe.
I am 37 years old.
3121991
My favorite food is avocados.
I have 2 dogs.
123456789101112

Para encontrar todas las líneas en el archivo profile.txt que incluyen un número,
utiliza el patrón [0123456789] o [0-9]:

sysadmin@localhost:~/Documents$ grep '[0-9]' profile.txt


I am 37 years old.
3121991
I have 2 dogs.
123456789101112

Por otro lado, para encontrar todas las líneas que contienen caracteres no numéricos,
introduce un ^ como el primer carácter dentro de los corchetes. Este carácter niega los
caracteres incluidos en los corchetes:

sysadmin@localhost:~/Documents$ grep '[^0-9]' profile.txt


Hello my name is Joe.
I am 37 years old.
My favorite food is avocados.
I have 2 dogs.

Nota

No confundas [^0-9] para buscar líneas que no contienen números. En realidad la


búsqueda coincidirá con las líneas que contienen caracteres no numéricos. Observa el
archivo original para ver la diferencia. La tercera y sexta líneas contienen sólo números,
no contienen caracteres no numéricos, por lo que esas dos líneas no coinciden con el
patrón de búsqueda.

Cuando otros caracteres de expresiones regulares se colocan dentro de los corchetes, se


consideran caracteres literales. Por ejemplo, el carácter . normalmente coincide con
cualquier carácter, pero si se coloca dentro de los corchetes, entonces sólo coincidirá
con sí mismo. En el siguiente ejemplo, sólo las líneas que contienen el carácter .
coincidirán.

sysadmin@localhost:~/Documents$ grep '[.]' profile.txt


Hello my name is Joe.
I am 37 years old.
My favorite food is avocados.
I have 2 dogs.
Coincidir con un carácter repetido o con patrones usando *

El carácter de expresión regular * se utiliza para que coincida con cero o más
apariciones del carácter o patrón que le precede. Por ejemplo e* coincidirá con cero o
más apariciones de la letra e:

sysadmin@localhost:~/Documents$ cat red.txt


red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 're*d' red.txt
red
reeed
rd
reed

También es posible que coincida con cero o más ocurrencias de una lista de caracteres
utilizando los corchetes. El patrón [oe]* utilizado en el siguiente ejemplo coincidirá
con cero o más ocurrencias del carácter o o bien el carácter e:

sysadmin@localhost:~/Documents$ grep 'r[oe]*d' red.txt


red
reeed
rd
rod
reed

Cuando se usa solo con un carácter, * no es muy útil. Cualquiera de los siguientes
patrones coincidirá con cualquier cadena o línea en el archivo: .* e* b* z*.

sysadmin@localhost:~/Documents$ grep 'z*' red.txt


red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 'e*' red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read

Esto es porque * puede coincidir con cero ocurrencias de un patrón. Para que el * sea
útil, es necesario crear un patrón que incluya más de un carácter antes de *. Por
ejemplo, los resultados anteriores se pueden refinar añadiendo otra letra e para que el
patrón ee* coincida de manera efectiva con cada línea que contenga al menos una e.

sysadmin@localhost:~/Documents$ grep 'ee*' red.txt


red
reef
reeed
reed
reel
read
Entrada estándar

Si no se proporciona un nombre de archivo, el comando grep leerá desde la entrada


estándar, que normalmente es la información proporcionada mediante el teclado por el
usuario que ejecuta el comando. Esta acción proporciona una experiencia interactiva
con el comando grep ya que el usuario teclea la entrada y el comando grep la va
filtrando. Siéntete libre de probarlo, solo presiona Ctrl-D cuando estés listo para
regresar al prompt.

Observa

Usa el siguiente commando cd para regresar al directorio de inicio:

sysadmin@localhost:~/Documents$ cd ~

Linux es Código Abierto ¡Lo que lo hace extremadamente versátil!


Internet de las Cosas // Cómputo en la Nube // Big Data // DevOps

Redes // Seguridad Cibernética // Diseño y Plan de Arquitectura // Administración de


datos

14. Apagar

El comando shutdown (o «apagar» en español) se encarga de que el sistema se apague


de una manera segura. Cinco minutos antes de que se apague el sistema se les notifica a
todos los usuarios conectados que el sistema se apagará y los nuevos registros se
bloquearán.

shutdown [OPCIONES] HORA [MENSAJE]

Observa

El comando shutdown requiere acceso de administrador. Cambiate a la cuenta root


para esta sección usando el siguiente comando. Utiliza la contraseña netlab123.

sysadmin@localhost:~$ su -
Password:
root@localhost:~#
¡Nuestras máquinas virtuales no se apagarán! Siéntete en libertad de utilizar el
comando, pero ten en cuenta que después de la cuenta regresiva haya terminado,
solamente regresarás a el prompt en lugar de apagar el sistema. Puede que tengas que
pulsar Entrar para invocar de regreso el prompt del comando.
root@localhost:~# shutdown now

Broadcast message from sysadmin@localhost


(/dev/console) at 2:05 ...

The system is going down for maintenance NOW!

A diferencia de otros comandos utilizados para apagar el sistema, el comando shutdown


requiere un argumento de tiempo especificando cuando debe comenzar el apagado. Los
formatos de este argumento de tiempo puede ser la palabra now (o «ahora» en español),
una hora del día en el formato hh:mm o el número de minutos de retraso en el formato
+minutes.

Para considerar

El reloj de nuestro sistema puede estar configurado para una zona horaria diferente a la
tuya. Para verificar la hora en la terminal, utiliza el comando date. En nuestras
máquinas, el formato predeterminado de la salida del comando date (o «fecha» en
español) es como sigue:

weekday month day hour:minute:second UTC year

Las letras UTC presentes en la salida indican que el tiempo se muestra como Hora
Universal Coordinada.

root@localhost:~# date
Fri Jan 22 01:50:07 UTC 2016
root@localhost:~# shutdown 01:51

Broadcast message from sysadmin@localhost


(/dev/console) at 1:50 ...

The system is going down for maintenance in 1 minute!

Broadcast message from sysadmin@localhost


(/dev/console) at 1:51 ...

The system is going down for maintenance NOW!

El comando shutdown también tiene un argumento opcional de mensaje indicando que


aparecerá un mensaje en las terminales de todos los usuarios. Por ejemplo:

root@localhost:~# shutdown +1 "Goodbye World!"

Broadcast message from sysadmin@localhost


(/dev/console) at 3:07 ...

The system is going down for maintenance in 1 minute!


Goodbye World!
shutdown: Unable to shutdown system
root@localhost:~#
Broadcast message from sysadmin@localhost
(/dev/console) at 3:08 ...

The system is going down for maintenance NOW!


Goodbye World!

Observa

Sal de la cuenta root utilizando el comando exit:

root@localhost:~# exit
logout

15. Configuración de la Red


El comando ifconfig significa «interface configuration» (o «configuración de la
interfaz» en español) y se utiliza para mostrar la información de configuración de red.
ifconfig [OPCIONES]

Nota:

El comando iwconfig es similar al comando ifconfig, pero está enfocado a las


interfaces de red inalámbrica.

No todas las configuraciones de red son importantes para este módulo, pero es
importante observar en la salida de abajo la dirección IPv4 del dispositivo de red
principal eth0 es 192.168.1.2 y que el dispositivo está activo (UP):

sysadmin@localhost:~$ ifconfig
eth0 Link encap:Ethernet HWaddr b6:84:ab:e9:8f:0a
inet addr:192.168.1.2 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::b484:abff:fee9:8f0a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:95 errors:0 dropped:4 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25306 (25.3 KB) TX bytes:690 (690.0 B)

lo Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:460 (460.0 B) TX bytes:460 (460.0 B)

Para considerar

El dispositivo lo se conoce como el dispositivo de loopback (o «ciclo invertido» en


español). Es un dispositivo de red especial utilizado por el sistema cuando éste envía los
datos basados en red a sí mismo.

El comando ifconfig también puede ser utilizado para modificar temporalmente la


configuración de red. Normalmente estos cambios deben ser permanentes, por lo que
utilizando el comando ifconfig para hacer tales cambios es algo bastante raro.

16. Visualización de los Procesos


La ejecución de un comando resulta en algo que se llama un proceso. En el sistema
operativo Linux, los procesos se ejecutan con los privilegios del usuario que ejecuta el
comando. Esto permite que procesos se limiten a ciertas capacidades basadas en la
identidad del usuario.

Aunque haya excepciones, generalmente el sistema operativo diferenciará los usuarios


en el criterio de que si son administradores. Típicamente los usuarios regulares, como el
usuario sysadmin, no pueden controlar los procesos de otro usuario. Los usuarios que
tienen privilegios administrativos, como la cuenta root, pueden controlar los procesos
de cualquier usuario, incluyendo detener cualquier proceso de usuario.

Puedes utilizar el comando ps para listar procesos.

ps [OPCIONES]
sysadmin@localhost:~$ ps
PID TTY TIME CMD
80 ? 00:00:00 bash
94 ? 00:00:00 ps

El comando ps muestra los procesos que se están ejecutando en la terminal actual por
defecto. En el ejemplo, la línea final es el proceso creado por ejecutar el comando ps.
La salida incluye las siguientes columnas de información:

• PID: El identificador del proceso, que es único para el proceso. Esta información es útil
para controlar el proceso por su número de ID.
• TTY: El nombre del terminal en el que se ejecuta el proceso. Esta información es útil
para distinguir entre los diferentes procesos que tienen el mismo nombre.
• TIME: La cantidad total de tiempo del procesador utilizado por el proceso.
Típicamente, los usuarios regulares no utilizan esta información.
• CMD: El comando que inició el proceso.

En lugar de ver sólo los procesos que se ejecutan en el terminal actual, los usuarios
pueden querer ver cada proceso ejecutado en el sistema. La opción -e muestra todos los
procesos:

sysadmin@localhost:~$ ps -e
PID TTY TIME CMD
1 ? 00:00:00 init
33 ? 00:00:00 rsyslogd
37 ? 00:00:00 cron
39 ? 00:00:00 sshd
56 ? 00:00:00 named
69 ? 00:00:00 login
79 ? 00:00:00 bash
94 ? 00:00:00 ps
Normalmente, también se utiliza la opción -f ya que proporciona más detalles en la
salida del comando, incluyendo las opciones y los argumentos. Busca el comando ps en
la última línea, la columna CMD ahora incluye las opciones utilizadas:

sysadmin@localhost:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:16 ? 00:00:00 /sbin??? /init
syslog 33 1 0 19:16 ? 00:00:00 /usr/sbin/rsyslogd
root 37 1 0 19:16 ? 00:00:00 /usr/sbin/cron
root 39 1 0 19:16 ? 00:00:00 /usr/sbin/sshd
bind 56 1 0 19:16 ? 00:00:00 /usr/sbin/named -u
bind
root 69 1 0 19:16 ? 00:00:00 /bin/login -f
sysadmin 79 69 0 19:16 ? 00:00:00 -bash
sysadmin 95 79 0 19:43 ? 00:00:00 ps -ef

Habilidades de Linux están en demanda! El 97% de los gerentes de contratación están


buscando reclutar profesionales de Linux en los próximos seis meses. El 88% afirma
que es difícil encontrar a estos candidatos

17. Administración de Paquetes

Administración de Paquetes es un sistema que instala, actualiza, consulta o quita el


software dentro de un sistema de archivos. En Linux hay muchos sistemas de
administración de paquetes de software diferentes, pero los dos más populares son
Debian y Red Hat. Las máquinas virtuales para este curso utilizan Ubuntu, un derivado
de Debian.

En el nivel más bajo del sistema de administración de paquetes de Debian está el


comando dpkg. Este comando puede ser complicado para los usuarios principiantes de
Linux, por lo que una herramienta de paquetes avanzada, apt-get, un programa front-
end para la herramienta dpkg, facilita más la administración de los paquetes.
Observa

Muchos de los comandos de la administración de paquetes requieren acceso de


administrador, por lo que vienen precedidos por el comando sudo. Utiliza la contraseña
netlab123 cuando el sistema te lo pida.

Instalación de los Paquetes

Los archivos del paquete se instalan comúnmente descargándolos directamente desde


los repositorios ubicados en los servidores de Internet. Los repositorios de Debian
contienen más de 65,000 diferentes paquetes de software. Antes de instalar un paquete,
es una buena práctica utilizar la actualización de la lista de paquetes con el comando
apt-get.

sudo apt-get update


sysadmin@localhost:~$ sudo apt-get update
[sudo] password for sysadmin:
Ign file: amd64/ InRelease
Ign file: amd64/ Release.gpg
Ign file: amd64/ Release
Reading package lists... Done

Para buscar las palabras clave dentro de estos paquetes, puede utilizar el comando apt-
cache search.

apt-cache search [palabra clave]

La palabra clave que se utiliza debe coincidir con parte del nombre o la descripción del
paquete que hay que localizar. Se pueden utilizar varias palabras clave para aclarar aún
más la búsqueda; por ejemplo, el término para la búsqueda web server (o «servidor
web» en español) proporcionaría mejores resultados que las palabras web o server por
sí solas.

Para encontrar los paquetes asociados con la palabra clave cow:

sysadmin@localhost:~$ apt-cache search cow


cowsay - configurable talking cow

Cuando hayas encontrado el paquete que quieres instalar, puedes instalarlo con el
comando apt-get install:

sudo apt-get install [paquete]


sysadmin@localhost:~$ sudo apt-get install cowsay
[sudo] password for sysadmin:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
filters
The following NEW packages will be installed:
cowsay
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/18.5 kB of archives.
After this operation, 90.1 kB of additional disk space will be used.
Selecting previously unselected package cowsay.
(Reading database ... 24313 files and directories currently
installed.)
Preparing to unpack .../cowsay_3.03+dfsg1-6_all.deb ...
Unpacking cowsay (3.03+dfsg1-6) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up cowsay (3.03+dfsg1-6) ...

Para considerar

¡El comando cowsay es una vaca que habla configurable! Usa una palabra o frase como
argumento:

sysadmin@localhost:~$ cowsay 'NDG Linux Unhatched'


_____________________
< NDG Linux Unhatched >
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

Recomendamos poner el argumento entre comillas simples para evitar que el shell
interprete los caracteres especiales.

Actualización de Paquetes

El comando apt-get install también puede actualizar un paquete, si el paquete está


instalado y un paquete con una versión más reciente está disponible. Si el paquete no
está en el sistema, se instala; Si está en el sistema, se actualiza.

La actualización de todos los paquetes del sistema debe hacerse en dos pasos. Primero,
actualiza el caché de todos los paquetes disponibles con apt-get update. Después,
ejecuta el comando apt-get upgrade con el que se actualizarán todos los paquetes y
sus dependencias.

apt-get update
apt-get upgrade
sysadmin@localhost:~$ sudo apt-get update
[sudo] password for sysadmin:
Ign file: amd64/ InRelease
Ign file: amd64/ Release.gpg
Ign file: amd64/ Release
Reading package lists... Done
sysadmin@localhost:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Eliminación de los Paquetes

El comando apt-get puede eliminar o depurar un paquete. La diferencia entre los dos
es que depurar elimina todos los archivos del paquete, mientras que eliminar elimina
todo, menos los archivos de configuración para el paquete.

Un administrador puede ejecutar el comando apt-get remove para eliminar un paquete


o el comando apt-get purge para depurar un paquete completo del sistema.

apt-get remove [paquete]


apt-get purge [paquete]

Por ejemplo, para depurar completamente el cowsay, ejecuta el siguiente comando.


Escriba Y cuando se le solicite:

sysadmin@localhost:~$ sudo apt-get purge cowsay


Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
cowsay*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 90.1 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 24377 files and directories currently
installed.)
Removing cowsay (3.03+dfsg1-6) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...

18. Actualización de las Contraseñas de Usuario

El comando passwd se utiliza para actualizar la contraseña de un usuario. Los usuarios


sólo pueden cambiar sus propias contraseñas, mientras que el usuario root puede
actualizar la contraseña de cualquier usuario.

passwd [OPCIONES] [USUARIO]

Por ejemplo, ya que estamos registrados como el usuario sysadmin, podemos cambiar
la contraseña de esa cuenta. Ejecuta el comando passwd. Se te pedirá que ingreses la
contraseña actual una vez y la nueva contraseña dos veces. Por razones de seguridad,
ninguna salida se visualizará mientras estás introduciendo la contraseña. La salida se
muestra como sigue:

sysadmin@localhost:~$ passwd
Changing password for sysadmin.
(current) UNIX password: netlab123
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Si el usuario quiere ver la información del estado acerca de su contraseña, puede utilizar
la opción -S:

sysadmin@localhost:~$ passwd -S sysadmin


sysadmin P 03/01/2015 0 99999 7 -1

Los campos de salida se explican a continuación:

Campo Ejemplo Significado

User Name sysadmin El nombre del usuario.

P indica una contraseña utilizable.


Password
P
Status L indica una contraseña bloqueada.

NP indica que no hay contraseña.


Change Date 03/01/2015 La fecha del último cambio de la contraseña.

El número mínimo de días que deben pasar antes de que la


Minimum 0
contraseña actual pueda ser cambiada por el usuario.

El número máximo de días que quedan para que la contraseña


Maximum 99999
expire.

El número de días antes de la expiración de la contraseña para


Warn 7
advertir al usuario.

El número de días después de la expiración de la contraseña


Inactive -1
durante los que la cuenta del usuario permanece activa.

Observa

Cambia de la cuenta root utilizando el siguiente comando:

sysadmin@localhost:~$ su root
Password:
root@localhost:~#

Utiliza la contraseña netlab123.

El usuario root puede cambiar la contraseña de cualquier usuario. Si el usuario root


quiere cambiar la contraseña para el sysadmin, ejecutaría el siguiente comando:

root@localhost:~# passwd sysadmin


Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Observa

Sal de la cuenta root utilizando el comando exit:

root@localhost:~# exit
logout

19. Editor de Texto

El editor de texto principal para Linux y UNIX es un programa llamado vi. Si bien
existen numerosos editores disponibles para Linux que van desde el pequeño nano hasta
el masivo editor emacs, el editor vi posee varias ventajas:

• El editor vi está disponible en cada distribución de Linux en el mundo. Esto no


es cierto en el caso de otros editores.
• El editor vi se puede ejecutar en una CLI (interfaz de línea de comandos) y en
una GUI (interfaz gráfica de usuario).
• Aunque se hayan añadido nuevas características al editor vi, las funciones
básicas han existido durante décadas. Esto significa que si alguien aprendió el
editor vi en la década de los 1970, podría utilizar una versión moderna sin
ningún problema. Aunque ahora parezca trivial, puede no parecer tan trivial
dentro de veinte años.

Para considerar

La forma correcta de pronunciar vi editor es editor vee-eye (o «vi-ay» en español). Las


letras vi se refieren a visual pero los desarrolladores nunca lo habían pronunciado de
esta manera, más bien como la letra v seguida por la letra i pronunciándose «vi-ay».

En realidad, la mayoría de los sistemas Linux no incluyen el original vi, sino su versión
mejorada conocida como vim que se refiere a vi improved (o «vi mejorado» en español).
La mayoría de las distribuciones de Linux probablemente oculten este hecho. En su
mayor parte, el vim funciona igual que el vi, pero tiene características adicionales. Para
los temas que se tratarán en este curso, trabajaremos con vi o vim.

Para empezar a usar el vi, simplemente introduce el comando seguido de la ruta de


acceso al archivo que quieres editar o crear:

sysadmin@localhost:~$ vi newfile.txt
Hay tres modos que utiliza el vi: modo de comando, modo de inserción y el modo ex.

Movimiento del Modo de Comando

El programa comienza en modo de comando. El modo de comando se utiliza para


introducir los comandos, tales como los utilizados para desplazarse por un documento,
manipular el texto y acceder a los otros dos modos. Para volver al modo de comandos
en cualquier momento, presiona la tecla Esc.

Después de añadir algo de texto a un documento, para realizar las acciones como mover
el cursor, primero hay que presionar la tecla Esc para volver al modo comando. Parece
que es mucho trabajo, pero recuerdo que el vi funciona en un entorno de terminal en el
que un ratón es inútil.

Los comandos de movimiento en el vi tienen dos aspectos, un movimiento y un número


opcional como prefijo, que indica cuántas veces hay que repetir ese movimiento. El
formato general es como sigue:

[número] movimento

La siguiente tabla resume las teclas de movimiento disponibles:

Movimiento Resultado

h Un carácter a la izquierda

j Bajar una línea

k Subir una línea

l Un carácter a la derecha

w Una palabra hacia adelante

b Una palabra hacia atrás

^ Principio de la línea

$ Final de la línea

Nota:

Desde la actualización al vim, es también posible utilizar las teclas de flecha ←↓↑→ en
vez de hjkl.

Estos movimientos pueden tener un número prefijo para indicar cuántas veces hay que
realizar el movimiento. Por ejemplo, 5h movería el cursor cinco caracteres a la
izquierda, 3w movería el cursor tres palabras a la derecha.
Para mover el cursor a un número de línea específica, introduce ese número de línea
seguido por el carácter G. Por ejemplo, para llegar a la quinta línea del archivo,
introduce 5G. 1G o gg se puede utilizar para ir a la primera línea del archivo, mientras
que una sola G te llevará a la última línea. Para averiguar en qué línea está el cursor,
utiliza CTRL-G.

Acciones del Modo de Comando

La convención estándar para la edición de contenido con procesadores de texto es


utilizar las acciones de copiar, cortar y pegar. El programa vi no tiene ninguno de estos,
en cambio vi utiliza los siguientes tres comandos:

Estándar Vi Significado

cut (cortar) d delete (eliminar)

copy (copiar) y yank (jalar)

paste (pegar) P | p put (poner)

Los movimientos que conociste en la página anterior se utilizan para especificar dónde
la acción va a ocurrir, siempre a partir de la posición actual del cursor. Cualquiera de los
siguientes formatos generales para los comandos de acción es aceptable:

acción [número] movimento


[número] acción movimento
Eliminar

La acción de eliminar borra el texto indicado de la página y lo guarda en el búfer. El


búfer es el equivalente de «portapapeles» en Windows o Mac OSX. La siguiente tabla
proporciona algunos ejemplos:

Acción Resultado

dd Eliminar la línea actual

3dd Eliminar las siguientes tres líneas

dw Eliminar la palabra actual

d3w Eliminar las siguientes tres palabras

d4h Eliminar los cuatro caracteres a la izquierda

Cambiar

La acción de cambiar es muy similar a eliminar, el texto se elimina y se guarda en el


búfer, sin embargo el programa se conecta para introducir el modo que permite hacer
los cambios de texto de inmediato. La siguiente tabla proporciona algunos ejemplos:
Acción Resultado

cc Cambiar la línea actual

cw Cambiar la palabra actual

c3w Cambiar las siguientes tres palabras

c5h Cambiar los cuatro caracteres a la izquierda

Jalar

La acción de jalar guarda el contenido en el buffer sin eliminarlo. La siguiente tabla


proporciona algunos ejemplos:

Acción Resultado

yy Jalar la línea actual

3yy Jalar las siguientes tres líneas

yw Jalar la palabra actual

y$ Jalar al final de la línea

Poner

La acción de poner, pone el texto guardado antes o después de la posición del cursor.
Observa que estas son las dos únicas opciones, la acción poner no utiliza los
movimientos como los anteriores comandos de acción.

Acción Resultado

p Poner (pegar) después del cursor

P Poner antes del cursor

Buscar en el vi

Otra función estándar que ofrecen los procesadores de texto es «find» («buscar» en
español). A menudo, las personas utilizan CTRL+F o buscan en el menú edición. El
programa vi utiliza «search» (o «explorar» en español). «Search» (explorar) es más
poderoso que «find» (buscar), ya que soporta patrones de texto literal y las expresiones
regulares.

Para explorar el texto hacia delante desde la posición actual del cursor, utiliza el / para
comenzar a explorar el texto, introduce el término de búsqueda y luego presiona la tecla
Entrar para iniciar la exploración del texto. El cursor se moverá a la primera
coincidencia que se encuentra.
Para pasar a la próxima coincidencia con el mismo patrón, presiona la tecla n. Para
volver a la coincidencia anterior, pulsa la tecla N. Si llegas al final o al comienzo del
documento, automáticamente ira el otro lado del documento.

Para empezar a buscar hacia atrás desde la posición del cursor, empieza introduciendo
?, después introduce el patrón buscar las coincidencias y pulse la tecla Entrar.

Modo de Inserción

El modo de inserción se utiliza para añadir texto al documento. Hay varias maneras de
entrar al modo de inserción desde el modo comando, cada una se distingue según dónde
se iniciará la inserción del texto. La siguiente tabla incluye las más comunes:

Entrada Propósito

a Entrar al modo de inserción justo después del cursor

A Entrar al modo de inserción al final de la línea

i Entrar al modo de inserción justo antes del cursor

I Entrar al modo de inserción al principio de la línea

o Entrar al modo de inserción en una línea en blanco después del cursor

O Entrar al modo de inserción en una línea en blanco antes del cursor

Modo Ex

Originalmente, el editor vi fue llamado el editor ex. El nombre vi fue la abreviatura del
comando visual en el editor ex que cambió al editor al modo «visual».

En el modo normal original, el editor ex sólo permitía a los usuarios ver y modificar una
línea a la vez. En el modo visual, los usuarios podían ver la parte del documento que
cabía en la pantalla. Puesto que la mayoría de los usuarios prefiere el modo visual a
edición en modo línea, el archivo de programa ex fue vinculado a un archivo de vi, para
que los usuarios pudieran arrancar el ex directamente en modo visual al correr el enlace
de vi.

Finalmente, el archivo de programa fue renombrado al vi y el editor ex se convirtió en


un enlace al editor vi.

Cuando se utiliza el modo ex en el editor vi, es posible ver o cambiar la configuración,


así como llevar a cabo los comandos relacionados con los archivos tales como abrir,
guardar o anular los cambios en un archivo. Para pasar al modo ex, introduce el carácter
: en el modo comando. La tabla siguiente lista algunas acciones comunes llevadas a
cabo en el modo ex:
Entrada Propósito

:w Escribir el archivo actual en el sistema de archivos

:w nombre del archivo Guardar una copia del archivo actual como nombre de archivo

:w! Forzar la escritura en el archivo actual

:1 Ir a la línea número 1 o cualquier número especificado

:e nombre del archivo Abrir el nombre de archivo

:q Salir si no hay cambios realizados en los archivos

:q! Salir sin guardar los cambios en el archivo

Un análisis rápido de la tabla anterior revela que si un signo de exclamación ! se agrega


a un comando, éste intenta forzar la operación. Por ejemplo, imagina que estás
realizando cambios en un archivo en el vi editor y luego intenta a salir con :q, sólo para
ver que el comando falla. El editor vi no se quiere cerrar sin guardar los cambios
realizados en un archivo, pero puedes forzar el cierre con el comando ex :q!.

Para considerar

Aunque el modo ex ofrece varias maneras de guardar y salir, también existe ZZ


disponible en el modo comando; éste es el equivalente de :wq. Hay muchas más
funciones superpuestas entre el modo ex y el modo comando. Por ejemplo, el modo ex
se puede utilizar para acceder a cualquier línea del documento introduciendo : seguido
por el número de línea, mientras que G se puede utilizar en el modo comando tal como
viste más arriba.

Observa

Si tienes un texto de archivo abierto, ciérralo ejecutando el comando :q!. Esto hará salir
sin guardar los cambios en el archivo.

Potrebbero piacerti anche