Linux 2
Linux 2
En este capítulo vamos a explorar la evolución del Linux® y los sistemas operativos
populares. También vamos a hablar sobre las consideraciones para elegir un
sistema operativo.
Linux es de Código Abierto. ¿Qué significa eso? El código que impulsa a Linux
no es propiedad de una empresa. En cambio, lo desarrolla la comunidad que lo usa.
¿Por qué es esto bueno? Libera a los usuarios de los costos de licencia y permite
modificar el código según las necesidades cambiantes.
Linux® es una marca registrada de Linus Torvalds en los Estados Unidos y otros
países.
El término que más complica las cosas es UNIX. UNIX era originalmente un sistema
operativo desarrollado en los laboratorios de Bell AT&T en la década de 1970. Éste
fue modificado y bifurcado (es decir, las personas lo modificaron y estas
modificaciones sirvieron de base para otros sistemas). En la actualidad hay muchas
variantes de UNIX. Sin embargo, UNIX es ahora una marca registrada y una
especificación, propiedad de un consorcio industrial llamado Open Group. Sólo el
software que ha sido certificado por el Open Group puede llamarse UNIX. A pesar
de la adopción de todos los requisitos de la especificación de UNIX, Linux no ha
sido certificado. ¡Eso significa que Linux realmente no es un UNIX! Es sólo... como
UNIX.
El código fuente no se entiende directamente por el equipo, por lo que debe ser
compilado en instrucciones de máquina por un compilador. El compilador reúne
todos los archivos fuente y genera algo que se puede ejecutar en el equipo, como el
kernel de Linux.
Históricamente, la mayor parte del software se ha publicado bajo una licencia de
código cerrado, lo que significa que obtienes el derecho a utilizar el código de
máquina, pero no puedes ver el código fuente. ¡A menudo la licencia dice
específicamente, que no se intente revertir el código máquina al código de fuente
para averiguar lo que hace!
El Código Abierto toma una vista centrada en la fuente del software. La filosofía de
código abierto es que tienes derecho a obtener el software y modificarlo para tu
propio uso. Linux adoptó esta filosofía con gran éxito. La gente tomó la fuente, hizo
cambios y lo compartió con el resto del grupo.
Junto a ésto, fue el proyecto GNU (GNU, no UNIX). Mientras que GNU estaba
construyendo su propio sistema operativo, eran mucho más eficaces en la creación
de las herramientas que están de acuerdo con el sistema operativo UNIX, como los
compiladores y las interfaces de usuario. La fuente era completamente gratuita, así
que Linux pudo enfocar sus herramientas y proporcionar un sistema completo.
Como tal, la mayoría de las herramientas que forman parte del sistema Linux
provienen de estas herramientas GNU.
Red Hat empezó como una simple distribución que introdujo el Administrador de
Paquetes Red Hat (RPM- Red Hat Package Manager). El desarrollador
eventualmente formó una compañía alrededor de éste, que intentó comercializar
una computadora de escritorio Linux para negocios. Con el tiempo, Red Hat
comenzó a centrarse más en las aplicaciones de servidor web y servicios de
archivos, y lanzó Red Hat Enterprise Linux, que era un servicio de pago en un ciclo
de liberación largo. El ciclo de liberación dicta con qué frecuencia se actualiza el
software. Una empresa puede valorar la estabilidad y quiere ciclos de liberación
largos, un aficionado o un principiante puede querer un software más reciente y
optar por un ciclo de liberación más corto. Para cumplir con este último grupo, Red
Hat patrocina el Proyecto Fedora que hace que el escritorio personal contenga el
software más reciente, pero aun construido sobre los mismos principios como la
versión para empresas.
Porque todo en Red Hat Enterprise Linux es de código abierto, un proyecto llamado
CentOS llegó a ser el que volvió a compilar todos los paquetes RHEL y los
proporcionó gratis. CentOS y otros proyectos similares (como Scientific Linux) son
en gran parte compatibles con RHEL e integran algún software más reciente, pero
no ofrecen el soporte pagado que Red Hat si ofrece.
Linux Mint se inició como una bifurcación de Ubuntu Linux mientras sigue
dependiendo sobre los repositorios de Ubuntu. Existen varias versiones, todas
libres de costo, pero algunas incluyen códigos propietarios que no pueden ser
distribuidos sin restricciones de la licencia en algunos países. Linux Mint está
suplantando rápidamente Ubuntu como solución de Linux escritorio más popular del
mundo.
Hemos tratado el tema de las distribuciones mencionadas específicamente en los objetivos de
Linux Essentials. Debes saber que hay cientos, y hasta miles más que están disponibles. Es
importante entender que si bien hay muchas diferentes distribuciones de Linux, muchos de los
programas y comandos siguen siendo los mismos o muy similares.
Sin embargo, un comando se puede ver desde una perspectiva diferente: desde su
origen. La fuente es desde donde el comando "proviene" y hay varios orígenes
diferentes de comandos dentro de shell de la CLI:
Funciones: Las funciones también pueden ser construidas usando los comandos
existentes o crear nuevos comandos, reemplazar los comandos integrados en el
shell o comandos almacenados en archivos. Los alias y las funciones normalmente
se cargan desde los archivos de inicialización cuando se inicia el shell por primera
vez, que veremos más adelante.
Para considerar
Aunque los alias serán tratados en detalle en una sección posterior, este ejemplo breve puede ser
útil para entender el concepto de comandos.
Un alias es esencialmente un apodo para otro comando o una serie de comandos. Por ejemplo, el
comando de cal 2014 muestra el calendario para el año 2014. Supongamos que acabes
ejecutando este comando a menudo. En lugar de ejecutar el comando completo cada vez, puedes
crear un alias llamado mycal y ejecutar el alias como se muestra en el siguiente gráfico:
También debes determinar la vida útil y la tolerancia de riesgo del servidor. Los
sistemas operativos y actualizaciones de software vienen sobre una base periódica,
llamada el ciclo de liberación. Los proveedores de software sólo darán soporte a las
versiones anteriores del software durante un tiempo antes de que ya no ofrezcan
las actualizaciones, lo que se llama ciclo de mantenimiento (o ciclo de vida). Por
ejemplo, las versiones principales de Fedora Linux salen aproximadamente cada 6
meses. El Fin de vida (EOL- End of Life) de las versiones se considera después de
2 versiones principales más un mes, por lo que tienes entre 7 y 13 meses después
de instalar Fedora antes que necesites actualizaciones. Compara esto con la
variante del servidor comercial, Red Hat Enterprise Linux, y puedes utilizarla hasta
13 años sin la necesidad de actualizar.
Los ciclos de mantenimiento y liberación son importantes porque en un entorno de
servidor empresarial las actualizaciones importantes del servidor requieren mucho
tiempo y por lo tanto se hacen raramente. En cambio, el propio servidor se
reemplaza cuando hay actualizaciones importantes o reemplazos de las
aplicaciones que requieren actualización del sistema operativo. Del mismo modo,
un ciclo de liberación lento es importante porque las aplicaciones a menudo se
enfocan en la versión actual del sistema operativo y querrás evitar la sobrecarga de
las constantes actualizaciones para mantenerse al día en los servidores y sistemas
operativos. Hay una gran cantidad de trabajo involucrada en la actualización de un
servidor, y la función del servidor tiene a menudo muchas personalizaciones que
dificultan el portar a un nuevo servidor. Esto requiere mucho más pruebas que si
sólo se haya actualizado una aplicación.
Por supuesto, el costo siempre es un factor. Linux en sí podría ser gratuito, pero
tendrías que pagar por soporte dependiendo de las opciones que elijas. Microsoft
tiene costo de licencia de servidor y podría aplicar los gastos adicionales de soporte
durante la vigencia del servidor. El sistema operativo que hayas elegido puede que
sólo se ejecute en un hardware en particular, lo que también afecta el costo.
1.3.2 Microsoft Windows
El mundo de Microsoft divide los sistemas operativos de acuerdo al propósito de la
máquina: ¿escritorio o servidor? La edición de escritorio de Windows ha
experimentado diversos esquemas de nomenclatura con la versión actual (al
momento de escribir esto) siendo ahora simplemente Windows 8. Nuevas versiones
del escritorio salen cada 3-5 años y tienden a recibir soporte por muchos años. La
compatibilidad con versiones anteriores es también una prioridad para Microsoft,
llegando incluso a agrupar la tecnología de la máquina virtual para que los usuarios
puedan ejecutar software antiguo.
1.3.3 Apple OS X
Apple produce el sistema operativo OS X que pasó por la certificación de UNIX. OS
X está parcialmente basado en software del proyecto FreeBSD.
1.3.4 BSD
Hay varios proyectos open source BSD (Berkeley Software Distribution) como
OpenBSD, FreeBSD y NetBSD. Estas son alternativas a Linux en muchos aspectos
ya que utilizan una gran cantidad de software común. BSD por lo general se
implementa en la función del servidor, aunque también hay variantes como GNOME
y KDE que fueron desarrolladas para las funciones del escritorio.
1.3.5 Otros UNIX Comerciales
Algunos de los UNIX comerciales más populares son:
Oracle Solaris
IBM AIX
HP-UX
1.3.6 Linux
Un aspecto donde Linux es muy diferente a las alternativas, es que después de que
un administrador haya elegido Linux todavía tiene que elegir una distribución Linux.
Acuérdate del tema 1, la distribución empaca el kernel, utilidades y herramientas
administrativas de Linux en un paquete instalable y proporciona una manera de
instalar y actualizar paquetes después de la instalación inicial.
Los gobiernos y las grandes empresas también pueden limitar sus opciones a las
distribuciones que ofrecen soporte comercial. Esto es común en las grandes
empresas donde pagar para otro nivel de soporte es mejor que correr el riesgo de
interrupciones extensas. También, las diferentes distribuciones ofrecen ciclos de
liberación a veces tan frecuentes como cada seis meses. Mientras que las
actualizaciones no son necesarias, cada versión puede obtener soporte sólo para
un periodo razonable. Por lo tanto, algunas versiones de Linux tienen un Periodo
Largo de Soporte (LTS- Long Term Support) hasta 5 años o más, mientras que
otros sólo recibirán soporte por dos años o menos.
1.3.7 Android
Android, patrocinado por Google, es la distribución Linux más popular del mundo.
Es fundamentalmente diferente de sus contrapartes. Linux es un kernel y muchos
de los comandos que se tratarán en este curso son en realidad parte del paquete
GNU (GNU no es Unix). Por esta razón algunas personas insisten en utilizar el
término GNU/Linux en lugar de Linux por sí solo.
Android utiliza la máquina virtual Dalvik con Linux, proporcionando una sólida
plataforma para dispositivos móviles como teléfonos y tabletas. Sin embargo,
carece de los paquetes tradicionales que se distribuyen a menudo con Linux (como
GNU y Xorg), por lo que Android es generalmente incompatible con distribuciones
Linux de escritorio.
2.1 Introducción
En este capítulo vamos a conocer varias herramientas y aplicaciones de código
abierto. También vamos a hablar del software y concesión de licencias de código
abierto.
Una ventaja de esto es que se pueden simular casi todos los aspectos de un
entorno de producción, desde el desarrollo a las pruebas y hasta la verificación en
un hardware reducido, lo cual ahorra costos y tiempo. Como estudiante de Linux
puedes ejecutar las mismas aplicaciones de servidor en tu escritorio o un servidor
virtual no muy costoso que funciona a través de un gran proveedor de servicios de
Internet. Por supuesto no vas a poder manejar el mismo volumen que un proveedor
de servicios grande, ya que éste posee un hardware mucho más caro. Sin
embargo, vas a poder simular casi cualquier configuración sin necesidad de un
hardware muy potente o un servidor de licencias para el servidor.
Herramientas – una categoría adicional de software que existe para que sea más
fácil gestionar el sistema. Puedes tener una herramienta que te ayude a configurar
la pantalla o algo que proporcione un shell de Linux o incluso herramientas más
sofisticadas que convierten el código fuente en algo que la computadora pueda
ejecutar.
Cualquier tarea que quieras hacer en Linux probablemente pueda ser acomodada
por cualquier número de aplicaciones. Hay muchos navegadores, muchos
servidores web y muchos editores de texto (los beneficios de cada uno son objeto
de muchas guerras santas de UNIX). Esto no es diferente que el mundo de código
cerrado. Sin embargo, una ventaja del código abierto es que si a alguien no le gusta
la manera en la que funciona su servidor web, puede empezar a construir su propio.
Una cosa que aprenderás mientras vayas progresando con Linux es cómo evaluar
el software. A veces querrás ir con el líder de la manada y otras querrás conocer la
última vanguardia de la tecnología.
Uno de los primeros usos de Linux era para servidores web. Un servidor web aloja
contenido para páginas web a las que ve el explorador web mediante el Protocolo
de transferencia de hipertexto (HTTP - Hypertext Transfer Protocol) o su forma
cifrada HTTPS. La propia página web puede ser estática, lo que significa que
cuando el navegador solicita una página, el servidor web envía sólo el archivo tal y
como aparece en el disco. El servidor también puede proporcionar un contenido
dinámico, esto es, el servidor web envía la solicitud a una aplicación que genera el
contenido. WordPress es un ejemplo popular. Los usuarios pueden desarrollar
contenidos a través de su navegador en la aplicación de WordPress y el software lo
convierte en un sitio web completamente funcional. Cada vez que realizas compras
en línea estás viendo un sitio dinámico.
El correo electrónico (e-mail) siempre ha sido un uso popular para servidores Linux.
Cuando se habla de servidores de correo electrónico siempre es útil considerar las
3 funciones diferentes para recibir correo electrónico entre personas:
El MTA más conocido es sendmail. Postfix es otro MDA popular y pretende ser más
simple y más seguro que sendmail.
Para compartir archivos, Samba es el ganador sin duda. Samba permite que una
máquina Linux se parezca a una máquina Windows para que pueda compartir
archivos y participar en un dominio de Windows. Samba implementa los
componentes del servidor, tales como archivos disponibles para compartir y ciertas
funciones de servidor de Windows, así como el cliente para que una máquina de
Linux puede consumir un recurso compartido de archivos de Windows.
Oracle ha tenido una historia pobre de soporte a los proyectos de código abierto
que va adquiriendo, así pues pronto después de la adquisición por parte de Oracle
el proyecto se bifurcó para convertirse en LibreOffice. En ese momento se crearon
dos grupos de personas desarrollando la misma pieza de software. La mayor parte
del impulso fue al proyecto LibreOffice, razón por la cual se incluye por defecto en
muchas distribuciones de Linux.
Para navegar por la web, los dos principales contendientes son Firefox y Google
Chrome. Ambos son navegadores rápidos de código abierto, ricos en funciones y
tienen un soporte excelente para desarrolladores web. Estos dos paquetes son un
buen ejemplo de cómo la diversidad es buena para el código abierto – mejoras de
uno dan estímulo al otro equipo para tratar de mejorar al otro. Como resultado,
Internet tiene dos navegadores excelentes que empujan los límites de lo que se
puede hacer en la web y el trabajo a través de una variedad de plataformas.
Otros clientes de correo electrónico notables son Evolution y KMail que son clientes
de correo electrónico de los proyectos GNOME y KDE. Los formatos de
estandarización a través de POP, IMAP y correo electrónico local significa que es
fácil cambiar entre clientes de correo electrónico sin perder datos. El correo
electrónico basado en web también es otra opción.
Para los tipos creativos existen Blender, GIMP y Audacity que controlan la creación
de películas 3D, manipulación de imágenes 2D y edición de audio respectivamente.
Han tenido diversos grados de éxito en los mercados profesionales. Blender se
utiliza para todo, desde películas independientes hasta películas de Hollywood, por
ejemplo.
El shell de Linux proporciona un rico lenguaje para iterar sobre los archivos y
personalizar el entorno, todo sin salir del shell. Por ejemplo, es posible escribir una
sola línea de comando que encuentra archivos con un contenido que corresponda a
un cierto patrón, extrae la información del archivo, y luego copia la nueva
información en un archivo nuevo.
Linux ofrece una variedad de shells para elegir, en su mayoría difieren en cómo y
qué se puede modificar para requisitos particulares y la sintaxis del lenguaje “script”
incorporado. Las dos familias principales son Bourne shell y C shell. Bourne shell
recibió su nombre de su creador y C shell porque la sintaxis viene prestada del
lenguaje C. Como ambos de estos shells fueron inventados en la década de 1970
existen versiones más modernas, el Bourne Again Shell (Bash) y tcsh (tee-cee-
shell). Bash es el shell por defecto en la mayoría de los sistemas, aunque casi
puedes estar seguro de que tcsh es disponible si lo prefieres.
Otras personas tomaron sus características favoritas de Bash y tcsh y han creado
otros shells, como el Korn shell (ksh) y zsh. La elección de los shells es sobre todo
personal. Si estás cómodo con Bash entonces puedes operar eficazmente en la
mayoría de los sistemas Linux. Después de eso puedes buscar otras vías y probar
nuevos shells para ver si ayudan a tu productividad.
Aún más dividida que la selección de los shells son las alternativas de los editores
de texto. Un editor de texto se utiliza en la consola para editar archivos de
configuración. Los dos campos principales son vi (o vim más moderno) y emacs.
Ambos son herramientas extraordinariamente poderosas para editar archivos de
texto, que se diferencian en el formato de los comandos y manera de escribir
plugins para ellos. Los plugins podrían ser cualquier cosa desde el resaltado de
sintaxis de proyectos de software hasta los calendarios integrados.
Ambos vim y emacs son complejos y tienen una curva de aprendizaje extensa.
Esto no es útil si lo que necesitas es editar un pequeño archivo de texto simple. Por
lo tanto pico y nano están disponibles en la mayoría de los sistemas (el último es
un derivado del anterior) y ofrecen edición de texto muy básica.
Incluso si decides no usar vi, debes esforzarte a ganar cierta familiaridad básica
porque el vi básico está en todos los sistemas Linux. Si vas a restaurar un sistema
Linux dañado ejecutando el modo de recuperación de la distribución, seguramente
tendrás un vi disponible.
El C se ha ampliado durante los años. Existe el C++ que añade soporte de objetos
al C (un estilo diferente de programación) y Objective C que tomó otro rumbo y se
usa mucho en productos de Apple.
La traducción adicional con Java podría hacer pensar que sería lento. Sin embargo,
la JVM es bastante simple, por lo que se puede implementar de manera rápida y
confiable en cualquier cosa, desde un equipo potente hasta un dispositivo de baja
potencia que se conecta a un televisor. ¡Un archivo compilado de Java también se
puede ejecutar en cualquier equipo implementando la JVM!
Por otra parte, los lenguajes interpretados se traducen a código máquina como se
van ejecutando. La potencia extra del equipo consumida para esta tarea a menudo
puede ser recuperada por el aumento de la productividad del programador, quien
gana por no tener que dejar de trabajar para compilar. Los lenguajes interpretados
también suelen ofrecer más funciones que los lenguajes compilados, lo que
significa que a menudo se necesita menos código. ¡El intérprete del lenguaje
generalmente está escrito en otro lenguaje tal como C y a veces incluso en Java!
Esto significa que un lenguaje interpretado se ejecuta en la JVM, que se traduce
durante el tiempo de ejecución al código máquina.
PHP es un lenguaje que fue construido originalmente para crear páginas web
dinámicas. Un archivo PHP es leído por un servidor web como Apache. Etiquetas
especiales en el archivo indican que partes del código deben ser interpretadas
como instrucciones. El servidor web reúne las diferentes partes del archivo y lo
envía al navegador web. Las ventajas principales del PHP son que es fácil de
aprender y está disponible en casi cualquier sistema. Debido a esto, muchos
proyectos populares se construyen en PHP. Los ejemplos notables incluyen
WordPress (blogging), cacti (para monitoreo) e incluso partes de Facebook.
Ruby es otro lenguaje que fue influenciado por Perl y Shell junto con muchos otros
lenguajes. Convierte tareas de programación complejas relativamente fáciles y con
la inclusión del marco de referencia (framework) Ruby on Rails, es una opción
popular para crear aplicaciones web complejas. Ruby es también el lenguaje que
potencia muchas de las principales herramientas de automatización como Chef y
Puppet, que hacen que la gestión de un gran número de sistemas Linux sea mucho
más fácil.
Python es otro lenguaje de desarrollo de uso común. Al igual que Ruby facilita las
tareas complejas y tiene un marco de referencia llamado Django que facilita la
construcción de las aplicaciones web. Python tiene capacidades de procesamiento
estadístico excelente y es una de las herramientas favoritas en el mundo
académico.
OpenSSL es una librería criptográfica que se utiliza en todo, desde servidores web
hasta la línea de comandos. Proporciona un interfaz estándar para que puedas
agregar criptografía en tu programa de Perl, por ejemplo.
En un nivel mucho más bajo está la librería de C. Esto proporciona un conjunto
básico de funciones para leer y escribir a los archivos y pantallas que son utilizadas
por las aplicaciones y otros lenguajes por igual.
Linux pertenece a Linus Torvalds. Él ha colocado el código bajo una licencia GNU
Public License versión 2 (GPLv2). Esta licencia, entre otras cosas, dice que el
código fuente debe hacerse disponible a quien lo pida y que puedes hacer cualquier
cambio que desees. Una salvedad a esto es que si haces cambios y los distribuyes,
debes poner tus cambios bajo la misma licencia para que otros puedan
beneficiarse. GPLv2 dice también que no puedes cobrar por distribuir el código
fuente a menos que sean tus costos reales de hacerlo (por ejemplo, copiar a
medios extraíbles).
La Free Software Foundation fue fundada en 1985 por Richard Stallman (RMS). El
objetivo de la FSF es promover el Software Libre. El software libre no se refiere al
precio, sino a la libertad de compartir, estudiar y modificar el código fuente
subyacente. La visión de la FSF es que el software propietario (software distribuido
bajo una licencia de código cerrado) es malo. FSF también defiende que las
licencias de software deben cumplir la apertura de las modificaciones. Es su punto
de vista, si modificas el software libre debes compartir tus cambios. Esta filosofía
específica se llama copyleft.
La FSF también lucha contra las patentes de software y actúa como un perro
guardián para las organizaciones de normativa, expresando cuando una norma
propuesta pudiera violar los principios del software libre mediante la inclusión de
elementos como la Administración de derechos digitales (DRM- Digital Rights
Management) que pudieran restringir lo que podrías hacer con el servicio.
La Open Source Initiative fue fundada en 1998 por Bruce Perens y Eric Raymond
(ESR). Creen que el software libre también fue políticamente acusado y que eran
necesarias licencias menos extremas, particularmente alrededor de los aspectos de
copyleft de las licencias de la FSF. OSI cree que no sólo la fuente debe ser
disponible libremente, pero también cero restricciones se deben aplicar sobre el uso
del software sin importar el uso previsto. A diferencia de la FSF, OSI no tiene su
propio conjunto de licencias. En cambio, la OSI tiene un conjunto de principios y
agrega otras licencias a esa lista si cumplen con tales principios, llamados licencias
de código abierto. El software que se ajusta bajo una licencia de Código Abierto es
por lo tanto un Software de Código Abierto.
Las licencias de la FSF, como la GPLv2, también son licencias de código abierto.
Sin embargo, muchas licencias de software libre como BSD y la MIT no contienen
las disposiciones de copyleft y por lo tanto no son aceptables para la FSF. Estas
licencias se llaman licencias de software libre permisiva porque son permisivas en
cómo puedes redistribuir el software. Puedes tomar un software bajo la licencia
BSD e incluirla en un producto de software cerrado siempre que le des atribución
adecuada.
Tales términos son convenientes, pero esconden las diferencias entre las dos
escuelas de pensamiento. Por lo menos, si utilizas software FOSS sabes que no
tienes que pagar por él y puedes redistribuirlo como quieres.
2.3.3 Otros Esquemas de Concesión de Licencias
Las licencias FOSS están relacionadas sobre todo con el software. Se han hecho
trabajos como dibujos y planos bajo las licencias FOSS pero esa no era la
intención.
Otras compañías obtienen valor tan inmenso del software de código abierto que se
consideran eficaz contratar a personas para trabajar en el software a tiempo
completo. El motor de búsqueda de Google contrató al creador del lenguaje Python,
e incluso Linus Torvalds fue contratado por la Linux Foundation para trabajar en
Linux. La compañía de teléfonos estadounidense AT&T obtiene tal valor de los
proyectos de Ruby y Rails para sus Páginas Amarillas, que tienen un empleado que
no hace nada sino trabajar en estos proyectos.
Administradores de Sistemas
Puedes ver el mensaje original para entrar en la parte superior con el texto más
reciente añadido a continuación. Durante el inicio de sesión podrías ver algunos
mensajes, llamados el mensaje del día (MOTD), que es una oportunidad para que
el administrador de sistemas para pasar información a los usuarios. El MOTD es el
símbolo del sistema. En el ejemplo anterior, el usuario introdujo el comando w que
muestra quién está conectado. De manera que son introducidos y procesados los
comandos nuevos, la ventana se desplaza hacia arriba y el texto más antiguo se
pierde en la parte superior. La terminal es responsable de mantener cualquier
historia, tal como para permitir al usuario desplazarse hacia arriba y ver los
comandos introducidos. En cuanto a Linux, lo que está en la pantalla es todo lo que
hay. No hay nada para navegar.
Cada escritorio de Linux es diferente, por lo que tienes que buscar en tu menú una
opción llamada terminal o x-term. Las dos son shells gráficos, diferenciadas sobre
todo en aspectos más que funcionalidad. Si tienes una herramienta de búsqueda
como Ubuntu Dash, puedes buscar un terminal como se muestra aquí.
La virtualización ofrece una manera para que una empresa reduzca su consumo de
energía y espacio de centro de datos frente a una flota equivalente de servidores
físicos. Los invitados ahora sólo son configuraciones de software, así que es fácil
proporcionar una nueva máquina para una prueba y destruirla cuando haya pasado
su utilidad.
Los servidores virtuales sólo son una faceta de Cloud Computing. También puedes
obtener almacenamiento de archivos, bases de datos o incluso software. La clave
en la mayoría de estos productos es que pagas por lo que usas, por ejemplo una
cierta cantidad por giga bytes de datos por mes, en lugar de comprar el hardware y
el software para darle hospedaje tu mismo. Algunas situaciones son más
adecuadas para la nube que otros. Preocupaciones de seguridad y el rendimiento
son generalmente los primeros elementos que surgen seguidos por el costo y la
funcionalidad.
Procesador de textos
Hoja de cálculo
Paquete de presentación
Navegador web
Lo más fácil es utilizar una buena y única contraseña donde quiera que vayas,
sobre todo en tu máquina local. Una buena contraseña tiene al menos 10
caracteres y contiene una mezcla de números y letras (tanto mayúsculas y
minúsculas) y símbolos especiales. Utiliza un paquete como KeePassX para
generar contraseñas, ya que luego sólo necesitas tener una contraseña de inicio de
sesión a tu equipo y una contraseña para abrir el archivo de KeePassX.
Por último, tienes que proteger tu equipo de aceptar conexiones entrantes. Firewall
es un dispositivo que filtra el tráfico de red y Linux tiene uno integrado. Si usas
Ubuntu, gufw es una interfaz gráfica para "Uncomplicated firewall" de Ubuntu.
Bajo el capó estás usando iptables que es el sistema firewall integrado. En lugar de
introducir comandos iptables complicados, usas un GUI. Mientras que este GUI te
permite construir una política efectiva de un escritorio, éste apenas araña la
superficie de lo que se puede hacer con iptables.
3.7 Protegerte a tí Mismo
Cuando navegas por Internet, dejas una huella digital. Mucha de esta información
viene ignorada, pero alguna viene reunida para recopilar estadísticas de publicidad
y otra puede ser utilizada para propósitos maliciosos.
Como regla general, no deberías confiar en los sitios con los que interactúas. Usa
contraseñas diferentes en cada sitio de Internet para que si tal sitio web estuviera
hackeado, la contraseña no podría utilizarse para obtener acceso a otros sitios.
Usando anteriormente mencionado KeePassX es la forma más fácil de hacerlo. De
la misma forma, limita la información que proporcionas a los sitios, sólo lo
imprescindible. Mientras que dar el nombre de tu madre y fecha de nacimiento
podría ayudarte a desbloquear tus credenciales para la red social en caso de que
pierdas tu contraseña, la misma información puede utilizarse para suplantar la
identidad de tu banco.
Las cookies son el mecanismo principal que los sitios web utilizan para darte
seguimiento. A veces este seguimiento es bueno, por ejemplo para dar seguimiento
de lo que está en tu cesta de compras o para mantenerte conectado cuando
regreses al sitio.
Cuando navegas por la web, un servidor web puede devolver la cookie que es un
pequeño trozo de texto junto con la página web. Tu navegador lo almacena y envía
con cada solicitud al mismo sitio. No envías cookies para ejemplo.com a sitios en
ejemplo.org.
Sin embargo, muchos sitios han incrustado scripts que provienen de terceros, como
un mensaje emergente de anuncio o un píxel de analítica. Si ejemplo.com y
ejemplo.org tienen un píxel de analítica, por ejemplo de un anunciante, entonces
esa misma cookie se enviará al navegar por ambos sitios. El anunciante se entera
entonces que has visitado ejemplo.com y ejemplo.org.
Existen diversas estrategias para tratar este asunto. Uno es ignorarlo. La otra es
limitar los píxeles de seguimiento que aceptas, ya sea por bloqueo completo o
vaciarlos periódicamente. A continuación abajo se muestra la configuración de
cookies para Firefox. En la parte superior, verás que el usuario ha optado que
Firefox no de permiso al sitio para el seguimiento. Esta es una etiqueta voluntaria
enviada en la petición que algunos sitios distinguirán. A continuación, el navegador
recibe una instrucción de no recordar nunca las cookies de terceros y eliminar
cookies regulares (por ejemplo, desde el sitio navegando) después de haber
cerrado el Firefox.
Si nunca has usado una CLI, al principio puede resultar difícil porque requiere de
memorizar comandos y sus opciones. Sin embargo, la CLI proporciona un control
más preciso, una mayor velocidad y capacidad para automatizar fácilmente las
tareas a través del scripting (ver barra lateral). Aunque Linux tiene muchos entornos
GUI, podrás controlar Linux mucho más eficazmente mediante la Interfaz de Línea
de Comandos.
¿Por qué conocer la línea de comando es importante? ¡Flexibilidad y
Movilidad! Mediante la comprensión de los fundamentos de Linux , tienes la
capacidad de trabajar en CUALQUIER distribución de Linux. Esto podría significar
una compañía con ambiente mixto o una nueva empresa con una distribución Linux
diferente.
Un buen ejemplo de un servidor que no requiere una GUI es un servidor web. Los
servidores web deben correr tan rápido como sea posible y una GUI sólo haría lento
el sistema.
En los sistemas que arrancan con una GUI, hay comúnmente dos formas de
acceder a una terminal, una terminal basado en GUI y un terminal virtual:
Una terminal de GUI es un programa dentro del entorno de una GUI que
emula la ventana de la terminal. Las terminales de la GUI pueden accederse a
través del sistema de menú. Por ejemplo, en una máquina CentOS, puedes
hacer clic en Applications (o «Aplicaciones» en español) en la barra de
menús, luego en System Tools > (o «Herramientas de Sistema») y,
finalmente, en Terminal:
Una terminal virtual puede ejecutarse al mismo tiempo que una GUI, pero
requiere que el usuario se conecte o inicie sesión a través de la terminal
virtual antes de que pueda ejecutar los comandos (como lo haría antes de
acceder a la interfaz GUI). La mayoría de los sistemas tienen múltiples
terminales virtuales que se pueden acceder pulsando una combinación de
teclas, por ejemplo: Ctrl-Alt-F1
Nota: En las máquinas virtuales puede que las terminales virtuales no estén
disponibles.
4.3.1 Prompt
Una ventana del terminal muestra un prompt (o «símbolo o aviso» en español); el
prompt aparece cuando no se ejecutan ningún comando y cuando la salida
completa del comando se ha desplegado en la pantalla. El prompt está diseñado
para decirle al usuario que introduzca un comando.
La estructura del prompt puede variar entre las distribuciones, pero por lo general
contiene información sobre el usuario y el sistema. A continuación te mostramos
una estructura común de un prompt:
4.3.2 El Shell
Un shell es el intérprete que traduce los comandos introducidos por un usuario en
acciones a realizar por el sistema operativo. El entorno Linux proporciona muchos
tipos diferentes de shells, algunos de los cuales han existido por muchos años.
Por ejemplo, puedes utilizar la opción -l con el comando ls para ver más
información sobre los archivos que se listan. El comando ls -l lista los archivos
contenidos dentro del directorio actual y proporciona información adicional, tal como
los permisos, el tamaño del archivo y otra información:
En la mayoría de los casos, las opciones pueden utilizarse conjuntamente con otras
opciones. Por ejemplo, los comandos ls -l -h o ls -lh listarán los archivos con sus
detalles, pero se mostrará el tamaño de los archivos en formato de legibilidad
humana en lugar del valor predeterminado (bytes):
Nota que el ejemplo anterior también demostró cómo se pueden combinar opciones
de una letra: -lh . El orden de las opciones combinadas no es importante.
Para ver la lista de historial de una terminal, utiliza el comando history (o «historial»
en español):
Cuando encuentres el comando que quieres ejecutar, puedes utilizar las teclas de
Flecha Hacia Izquierda ← y Flecha Hacia Derecha → para colocar el cursor para
edición. Otras teclas útiles para edición incluyen Inicio, Fin, Retroceso y Suprimir.
Si ves un comando que quieres ejecutar en la lista que haya generado el comando
history, puedes ejecutar este comando introduciendo el signo de exclamación y
luego el número al lado del comando, por ejemplo:
.
Algunos ejemplos adicionales del history:
Para mostrar el valor de una variable, puedes utilizar el comando echo (o «eco» en
español). 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:
La variable HISTSIZE define cuántos comandos anteriores se pueden almacenar
en la lista del historial. Para mostrar el valor de la variable debes utilizar un carácter
del signo de dólar $ antes del nombre de la variable. Para modificar el valor de la
variable, no se utiliza el carácter $:
Hay muchas variables del shell que están disponibles para el shell BASH, así como las variables que
afectarán a los diferentes comandos de Linux. No todas las variables del shell están cubiertas por este
capítulo, sin embargo, conforme vaya avanzando este curso hablaremos de más variables del shell.
El término path (o «ruta» en español) se refiere a una lista que define en qué
directorios el shell buscará los comandos. Si introduces un comando y recibes el
error "command not found" (o «comando no encontrado» en español), es porque el
shell BASH no pudo localizar un comando por ese nombre en cualquiera de los
directorios en la ruta. El comando siguiente muestra la ruta del shell actual:
Para ver el contenido de la variable, te puedes referir a ella iniciando con el signo
de $:
Para ver las variables de entorno, utiliza el comando env (la búsqueda a través de
la salida usando grep, tal como se muestra aquí, se tratará en los capítulos
posteriores). En este caso, la búsqueda para variable1 en las variables de
entorno resultará en una salida nula:
Sería tedioso tener que buscar manualmente en cada directorio que se muestra en
la variable PATH. En su lugar, puedes utilizar el comando which (o «cuál» en
español) para mostrar la ruta completa del comando en cuestión:
Esta salida sería similar a la salida del comando which (tal como se explica en el
apartado anterior, que muestra la ruta completa del comando):
Usando la opción -a, el comando type también puede revelar la ruta de otro
comando:
Por ejemplo, el comando ls -l comúnmente tiene un alias l o ll. Ya que estos comandos
más pequeñas son más fáciles de introducir, también es más rápido ejecutar la línea de
comandos ls -l.
Los alias que ves en los ejemplos anteriores fueron creados por los archivos de
inicialización. Estos archivos están diseñados para hacer automático el proceso de creación
de los alias. Hablaremos sobre ellos con más detalle en un capítulo posterior.
Por ejemplo, puedes crear un alias de tal manera que lh muestre una lista larga de archivos,
ordenados por tamaño con un tamaño "human friendly" (o «amigable para el usuario» en
español) con el comando alias lh='ls -Shl'. Introduciendo lh debe ahora dar lugar
a la misma salida que introduciendo el comando ls -Shl:
Los alias creados de esta manera sólo persistirán mientras el shell esté abierto. Una vez que
el shell es cerrado, los nuevos alias que hayas creado, se perderán. Además, cada shell
posee sus propios alias, así que si creas un alias en un shell y luego lo abres en otro shell, no
verás el alias en el nuevo shell.
4.11 Globbing
Los caracteres de globbing se denominan a menudo como "comodines". Estos son
símbolos que tienen un significado especial para el shell.
Los comodines son poderosos porque permiten especificar patrones que coinciden
con los nombres de archivo en un directorio, así que en lugar de manipular un solo
archivo a la vez, puedes fácilmente ejecutar comandos que afectarán a muchos
archivos. Por ejemplo, utilizando comodines es posible manipular todos los archivos
con una cierta extensión o con una longitud de nombre de archivo determinado.
Ten en cuenta que estos comodines pueden utilizarse con cualquier comando, ya
que es el shell, no el comando que se expande con los comodines a la coincidencia
de nombres de archivo. Los ejemplos proporcionados en este capítulo utilizan el
comando echo para demostración.
Puedes usar el asterisco en cualquier lugar dentro del patrón del nombre de archivo. El
siguiente ejemplo coincidirá con cualquier nombre de archivo en el directorio /etc que
termina con .d:
4.11.3 Corchetes [ ]
Los corchetes se utilizan para coincidir con un carácter único representando un intervalo de
caracteres que pueden coincidir con los caracteres. Por ejemplo, echo /etc/[gu]*
imprimirá cualquier archivo que comienza con el carácter g o u y contiene cero o más
caracteres adicionales:
sysadmin@localhost:~$ echo /etc/[gu]*
/etc/gai.conf /etc/groff /etc/group /etc/group-
/etc/gshadow /etc/gshadow- /etc/ucf.conf /etc/udev
/etc/ufw /etc/update-motd.d /etc/updatedb.conf
sysadmin@localhost:~$
Los corchetes también pueden ser utilizados para representar un intervalo de caracteres.
Por ejemplo, el comando echo /etc/[a-d]* mostrará todos los archivos que
comiencen con cualquier letra entre e incluyendo a y d:
El intervalo se basa en el cuadro de texto de ASCII. Esta tabla define una lista de caracteres
disponiéndolos en un orden estándar específico. Si proporcionas un orden inválido, no se
registrará ninguna coincidencia:
Esto es útil cuando quieres mostrar algo en la pantalla, lo que suele ser un carácter especial para el shell:
Las comillas dobles todavía permiten la sustitución de comando (se tratará más adelante en
este capítulo), sustitución de variable y permiten algunos metacaracteres de shell sobre los
que aún no hemos hablado. Por ejemplo, en la siguiente demostración, notarás que el valor
de la variable PATH es desplegada:
Si colocas una barra diagonal invertida \ antes del otro carácter, tratará al otro
carácter como un carácter de "comillas simples". El tercer comando más abajo
muestra cómo utilizar el carácter \, mientras que los otros dos muestran cómo las
variables serían tratadas si las pones entre las comillas dobles y simples:
sysadmin@localhost:~$ echo "The service costs $100 and the path is
$PATH"
The service costs 00 and the path is
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sb
in:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$ echo 'The service costs $100 and the path is
$PATH'
The service costs $100 and the path is $PATH
sysadmin@localhost:~$ echo The service costs \$100 and the path is
$PATH
The service costs $100 and the path is
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sb
in:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$
4.12.4 Comilla Invertida
Las comillas invertidas se utilizan para especificar un comando dentro de un comando, un
proceso de sustitución del comando. Esto permite un uso muy potente y sofisticado de los
comandos.
Aunque puede sonar confuso, un ejemplo debe hacer las cosas más claras. Para empezar,
fíjate en la salida del comando date:
Por ejemplo, si quieres imprimir los meses de enero, febrero y marzo de 2015, puedes ejecutar cal 1 2015;
cal 2 2015; cal 3 2015 en la línea de comandos:
Para entender mejor como funciona esto, consideremos primero el concepto de fracaso y
éxito para los comandos. Los comandos tienen éxito cuando algo funciona bien y fallan
cuando algo sale mal. Por ejemplo, considera la línea de comandos ls /etc/xml. El
comando tendrá éxito si el directorio /etc/xml es accesible y fallará cuando no es
accesible.
Por ejemplo, el primer comando tendrá éxito porque el directorio /etc/xml existe y es
accesible mientras que el segundo comando fallará porque no hay un directorio /junk:
La manera en que usarías el éxito o fracaso del comando ls junto con && sería ejecutando
una línea de comandos como la siguiente:
En el primer ejemplo arriba, el comando echo fue ejecutado, porque tuvo éxito el
comando ls. En el segundo ejemplo, el comando echo no fue ejecutado debido a que el
comando ls falló.
Con la línea vertical doble, si el primer comando se ejecuta con éxito, el segundo comando
es omitido. Si el primer comando falla, entonces se ejecutará el segundo comando. En otras
palabras, esencialmente estás diciendo al shell, "O bien ejecuta este primer comando o bien
el segundo".
Sin embargo, con este poder viene la complejidad. La complejidad, a su vez, puede crear confusión. Como
resultado, saber encontrar ayuda cuando trabajas en Linux es una habilidad esencial para cualquier usuario.
Referirte a la ayuda te permite recordar cómo funciona un comando, además de ser un recurso de
información al aprender nuevos comandos.
«93% de los directores de recursos humano planea contratar a un profesional de Linux en los próximos seis meses. Y
casi 90% mencionó que es difícil encontrar profesionales experimentados en Linux. Esto significa muchas
oportunidades de trabajo para aquellos con habilidades de Linux.»
Las páginas man se utilizan para describir las características de los comandos. Te proporcionarán una
descripción básica de la finalidad del comando, así como los detalles de las opciones del comando.
CAL(1) BSD General Commands Manual CAL(1)
NAME
cal, ncal -- displays a calendar and the date of Easter
SYNOPSIS
cal [-3hjy] [-A number] [-B number] [[month] year]
cal [-3hj] [-A number] [-B number] -m month [year]
ncal [-3bhjJpwySM] [-A number] [-B number] [-s country_code] [[month]
year]
ncal [-3bhJeoSM] [-A number] [-B number] [year]
ncal [-CN] [-H yyyy-mm-dd] [-d yyyy-mm]
DESCRIPTION
The cal utility displays a simple calendar in traditional format and ncal offers an
alternative layout, more options and the date of Easter. The new format is a little
cramped but it makes a year fit on a 25x80 terminal. If arguments are not specified, the
current month is displayed.
comando man cal mostrará la página man para el comando cal:
Si quieres ver los diferentes comandos de movimiento que están disponibles, puedes
introducir la letra h mientras visualizas una página man. Esto mostrará una página de ayuda:
Nota: Si estás trabajando en una distribución Linux que utiliza el comando more como un
localizador, su salida será diferente que el ejemplo que se muestra aquí.
Si tu distribución usa el comando less, podría estar un poco abrumado por la gran
cantidad de «comandos» que están disponibles. La tabla siguiente proporciona un resumen
de los comandos más útiles:
5.2.3 Las Secciones de la Página man
Las páginas man se dividen en secciones. Cada sección está diseñada para proporcionar
información específica acerca de un comando. Si bien hay secciones comunes que verás en
la mayoría de las páginas man, algunos desarrolladores también crean secciones que sólo
verás en una página man específica.
La siguiente tabla describe algunas de las secciones más comunes que encontrarás en las
páginas del comando man:
Otro componente de SYNOPSIS que puede causar cierta confusión puede verse en
SYNOPSIS del comando date:
En estaSYNOPSIS hay dos sintaxis para el comando date. El primero de ellos se utiliza
para mostrar la fecha en el sistema mientras que el segundo se utiliza para fijar la fecha.
Las elipses siguientes a [OPTION], ..., indican que uno o más ítems antes de la opción
pueden usarse.
Adicionalmente, existen varios tipos de comandos (comandos de usuario, comandos del sistema y comandos
de administración), así como otras funciones que requieren documentación, como las librerías y los
componentes del Kernel.
Como resultado, hay miles de páginas man en una distribución típica de Linux. Para organizar todas estas
páginas, las páginas se clasifican por secciones, al igual que cada página man se divide en secciones.
Para considerar:
Cuando utilizas el comando man, éste busca cada una de estas secciones por orden hasta que encuentra al
primer "match" (o «coincidencia» en español). Por ejemplo, si ejecutas el comando man cal, en la primera
sección (programas ejecutables o comandos del shell) se buscará la página man llamada cal. Si no lo
encuentra, entonces se busca en la segunda sección. Si no se encuentra ninguna página man tras buscar en
todas las secciones, recibirás un mensaje de error:
Por ejemplo, hay un comando llamado passwd que permite cambiar tu contraseña. También
hay un archivo llamado passwd que almacena la información de la cuenta. Ambos, el
comando y el archivo tienen una página man.
Para especificar una sección diferente, proporciona el número de la sección como el primer
argumento del comando man. Por ejemplo, el comando man 5 passwd buscará la
página man de passwd sólo en la sección 5:
5.2.6.3 Buscar las Secciones
A veces no es claro en qué sección se almacena una página man. En estos casos, puedes
buscar una página man por nombre.
Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando whatis hace
lo mismo que el comando man -f. En esas distribuciones, ambos comandos producen la
misma salida.
Por ejemplo, ¿qué pasa si quieres ver una página que muestra cómo cambiar la contraseña,
pero no recuerdas el nombre exacto? Puedes ejecutar el comando man -k password:
Al utilizar esta opción puedes recibir una gran cantidad de salidas. El comando anterior, por
ejemplo, dió salida a 60 resultados.
Recuerda que hay miles de páginas man, así que cuando buscas por una palabra clave, sé tan
específico como sea posible. Usando una palabra genérica, como "the" (o «el/la» en
español), podría resultar en cientos o incluso miles de resultados.
Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando apropos hace
lo mismo que el comando man -k. En esas distribuciones, ambas producen la misma salida.
Otra ventaja del comando info sobre las páginas man es que el estilo de escritura de los
documentos info es típicamente más propicio para aprender un tema. Considera que las
páginas man son un recurso de referencias y los documentos info sirven más como una guía
de aprendizaje.
Por lo general, se trata de una ubicación donde los administradores del sistema irán a
aprender cómo configurar servicios de software más complejos. Sin embargo, los usuarios
regulares a veces también encuentran esta documentación útil.
Estos archivos de documentación se suelen llamar archivos "readme" (o «leeme» en
español), ya que los archivos tienen nombres como README o readme.txt. La ubicación
de estos archivos puede variar según la distribución que estés utilizando. Ubicaciones típicas
incluyen /usr/share/doc y /usr/doc.
Según esta salida, hay dos comandos que listan el contenido del directorio. La respuesta
simple a la pregunta por qué hay dos comandos ls es que UNIX tuvo dos variantes
principales, lo que dio lugar a que algunos comandos fueran desarrollados «en paralelo». Por
lo tanto, algunos comandos se comportan diferentemente en diversas variantes de UNIX.
Muchas distribuciones modernas de Linux incluyen comandos de ambas variantes de UNIX.
Esto, sin embargo, conlleva un pequeño problema: Cuando corres el comando ls, ¿Cuál de
los comandos se ejecuta? Las próximas secciones se centrarán en responder esta pregunta,
así como proporcionarte las herramientas para encontrar donde residen estos archivos en el
sistema.
Las páginas man se suelen distinguir fácilmente entre los comandos ya que normalmente
están comprimidos con un comando llamado gzip, dando por resultado un nombre de
archivo que termina en .gz.
Lo interesante es que verás que hay dos paginas man, pero sólo un comando (/bin/ls).
Esto es porque el comando ls puede utilizarse con las opciones/funciones que se describen
por cualquiera de las páginas man. Así que, cuando estás aprendiendo lo que puedes hacer
con el comando ls, puedes explorar ambas páginas man. Afortunadamente, esto más bien es
una excepción ya que la mayoría de los comandos sólo tienen una página man.
Los archivos que creaste hoy normalmente no los vas a poder buscar con el comando
locate. Si tienes acceso al sistema como usuario root (con la cuenta del administrador de
sistema), puede actualizar manualmente la base de datos locate ejecutando el comando
updatedb. Los usuarios regulares no pueden actualizar el archivo de base de datos.
También ten en cuenta que cuando utilizas el comando locate como un usuario normal, tu
salida puede ser limitada debido a los permisos. En general, si no tienes acceso a un archivo
o directorio en el sistema de ficheros debido a los permisos, el comando locate no
devolverá esos nombres. Esta es una característica de seguridad diseñada para evitar que los
usuarios «exploren» el sistema de ficheros utilizando el comando locate. El usuario root
puede buscar cualquier archivo en la base de datos con el comando locate.
5.5.3 Contar el Número de Archivos
La salida del comando locate puede ser bastante grande. Cuando buscas un nombre de
archivo, como passwd, el comando locate producirá cada archivo que contiene la cadena
passwd, no sólo los archivos passwd.
En muchos casos, puede que quieras empezar listando cuántos archivos coincidirán. Lo
puedes hacer mediante la opción -c del comando locate:
Como puedes ver en la salida anterior, todavía habrá muchos resultados cuando utilices la
opción -b. Para limitar la salida aún más, coloca un carácter \ delante del término de
búsqueda. Este carácter limita la salida a los nombres de archivo que coincidan
exactamente con el término:
6.1 Introducción
Cuando trabajes en un sistema operativo Linux, necesitarás saber cómo manipular los
archivos y los directorios. Algunas distribuciones de Linux tienen aplicaciones basadas en
GUI que permiten gestionar los archivos, pero es importante saber cómo realizar estas
operaciones a través de la línea de comandos.
Los conceptos básicos enseñados en este capítulo se ampliarán en los capítulos posteriores al
ir cubriendo más comandos de manipulación de archivos, tales como los comandos para ver
archivos, comprimir archivos y establecer permisos de archivo.
Igual que Windows, la estructura de directorios de Linux tiene un nivel superior, sin
embargo no se llama Este Equipo, sino directorio raíz y su símbolo es el carácter / .
También, en Linux no hay unidades; cada dispositivo físico es accesible bajo un directorio,
no una letra de unidad. Una representación visual de una estructura de directorios típica de
Linux:
Observa que hay muchos directorios descriptivos incluyendo /boot, que contiene los
archivos para arrancar la computadora.
Para considerar:
Este tipo de ruta se llama la ruta absoluta (o «aboslute path» en inglés). Con una ruta
absoluta, siempre proporcionas direcciones a un directorio (o un archivo) a partir de la parte
superior de la estructura de directorios, el directorio root. Más adelante en este capítulo
cubriremos un tipo diferente de la ruta llamada la ruta relativa (o «relative path» en inglés).
Nota: Las estructuras de directorio que se muestran a continuación sirven solamente como
ejemplos. Estos directorios pueden no estar presentes dentro del entorno de la máquina
virtual de este curso.
Bajo de este directorio /home hay un directorio para cada usuario del 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.
Tu directorio home es un directorio muy importante. Para empezar, cuando abres un shell
automáticamente te ubicarás en tu directorio home, en donde harás la mayor parte de tu
trabajo.
Además, el directorio home es uno de los pocos directorios donde tienes el control total para
crear y eliminar los archivos adicionales. La mayor parte de otros directorios en un sistema
de archivos de Linux están protegidos con file permissions (o «permisos de archivos» en
español), un tema que se tratará a detalle en un capítulo posterior.
En la mayoría de las distribuciones de Linux, los únicos usuarios que pueden acceder a los
archivos en tu directorio home eres tú y el administrador del sistema (el usuario root). Esto
se puede cambiar utilizando los permisos de archivo.
Tu directorio tiene incluso un símbolo especial que puedes usar para representarlo: ~. Si tu
directorio home es /home/sysadmin, puedes simplemente introducir ~ en la línea de
comandos en lugar de /home/sysadmin. También puedes referirte al directorio home de
otro usuario usando la notación ~usuario, donde usuario es el nombre de la cuenta de
usuario cuyo directorio home quieres consultar. Por ejemplo, ~bob sería igual a
/home/bob. Aquí, vamos a cambiar al directorio home del usuario:
Ten en cuenta que una lista revela los subdirectorios contenidos en el directorio home.
Cambiar directorios requiere atención al detalle:
¿Por qué el anterior comando resultó en un error? Eso es porque los entornos de Linux son
sensibles a mayúsculas y minúsculas. Cambiarnos al directorio Downloads requiere que la
ortografía sea correcta - incluyendo la letra D mayúscula:
Normalmente el sistema sólo muestra el nombre del directorio actual, no la ruta completa del
directorio raíz hacia abajo. En otras palabras, si estuvieras en el directorio
/usr/share/doc , tu prompt probablemente te proporcionará solamente el nombre doc
el directorio actual. Si quieres la ruta completa, utiliza el comando pwd.