====== Trabajo con comandos ====== ===== Consolas virtuales ===== Una consola virtual es una manera de conectarse a Linux sin entorno gráfico. De esta forma nos comunicaremos con el sistema operativo a través de comandos. Linux tiene diferentes terminales a través de los que podemos conectarnos con una consola (todo esto viene de la época en la que terminal, consola y monitor eran dispositivos diferentes, hoy pueden considerarse sinónimos). Los terminales son nombrados como **tty//n//**, siendo n el número de terminal. El número de terminales disponibles puede variar de una distribución a otra. Para abrir cada terminal pulsamos **ctrl + alt + F[1-7]**, según el número de terminal a utilizar. Para comenzar a usar el terminal, debemos identificarnos con nuestro usuario y contraseña. ===== Permisos en la ejecución de comandos ===== Los comandos son órdenes introducidas mediante texto al sistema. El superusuario root no tendrá ningún límite, pero los usuarios corrientes, sólo podrán realizar acciones en su directorio de usuario. Los comandos pueden tener opciones que agregan funcionalidad a su cometido principal. Estas opciones pueden definirse con el carácter - seguido de una letra, o -- seguido de una palabra. Para definir varias opciones con -, basta con indicar las letras a continuación del guión (sin espacios). En algunas distribuciones linux (como Ubuntu) el usuario root no está activado por seguridad, por lo que el usuario primario (el que se creó al instalar el sistema operativo), es el que asume la capacidad de root a través del comando **//sudo//**, antepuesto a cualquier otro que requiera permisos de superusuario. Es posible activar el usuario root con la instrucción: sudo passwd root El sistema nos pedirá su contraseña y el superusuario quedará activo. Para asumir el papel de root sin activarlo podemos acceder a las siguientes instrucciones: sudo -i sudo su Con el comando **//exit//** volveríamos a nuestro usuario. Para ejecutar abrimos un terminal en nuestro escritorio Linux, clicando en el icono "terminal", o pulsando **ctrl + T**. Para abrir un terminal de root, escribimos en un terminal común: gksu terminal La mayoría de los comandos que sólo se pueden ejecutar con permisos de superusuario se encuentran en /sbin y /usr/sbin. ===== Comandos de ayuda ===== ==== man: manual de comando ==== Proporciona información acerca del comando especificado. man ls ==== xman: manual de comandos gráfica ==== Accedemos en el entorno gráfico al manual de comandos. No hay que escribir nada más. ==== help: ayuda ==== Se especifica como opción de un comando precedido de dos guiones. Muestra la ayuda del comando y lista sus opciones. También puede ejecutarse como **-h**. wget --help ==== info: programa ayuda ==== Al especificar un comando, pasamos a una interfaz navegable con enlaces entre páginas. Muy útil cuando //man// no es suficiente, o no tiene entrada a otro comando. Los enlaces se indican con *, seguido por el título del enlace seguido de ::. Para seguir un enlace, se pone el cursor sobre él y se pulsa intro. Para navegar por este programa: * **b**: Retroceder a la última página visitada. * **u**: Nivel superior en el árbol de páginas. * **n**: Siguiente página. * **p**: Página previa. Se sale del programa pulsando la letra **q**. ==== apropos: buscar comando ==== Introduciendo una palabra clave, o parte de la palabra, la busca en las páginas del manual (//man//) y las descripciones. ==== whatis: descripciones de comandos ==== Muestra un resumen de las especificaciones del comando, extraídas de la descripción breve de las páginas del manual. ===== Comandos para trabajar con archivos y directorios ===== ==== ls: listado de directorio ==== El comando **ls** lista el contenido del directorio donde nos encontremos, o del directorio especificado. Pueden usarse comodines (carácter * que vale por cualquier cadena de caracteres), y la tecla TAB para autocompletar el nombre de archivos y directorios. Opciones: * **-l**: Muestra información de los archivos: permisos, propietario, grupo, tamaño, etc. * **-lh**: Además de la información mostrada anteriormente, especifica los tamaños de los elementos listados con K, M, G, etc. * **-i**: Muestra los inodos de los archivos y directorios listados. * **-a**: Además, muestra los archivos y directorios ocultos. * **-R**: Muestra los elementos de forma recursiva, es decir, todo el árbol de subdirectorios y su contenido. Un comando similar a éste es **dir**. ==== cd: acceder a directorios ==== El comando **cd** sirve para moverse por el árbol de directorios. para ello basta con especificar el directorio al que acceder a continuación de cd: cd Documentos/Aula\ Mentor En el ejemplo anterior, el carácter \ es el caracter de escape: al ponerlo se indica que el espacio es parte del nombre. Puede usarse . para indicar que se parte del directorio actual, y .. para indicar que se parte del directorio inmediatamente superior. Si escribimos cd .. accederíamos al directorio superior. El carácter / al comienzo, indica que partimos del directorio raíz. Si escribimos simplemente cd, accederíamos al directorio principal del usuario. No olvidar que con la tecla TAB autocompletamos el nombre del directorio que estamos escribiendo, siempre que no haya otra coincidencia. ==== mkdir: creación de directorios ==== Sirve para crear directorios. Un usuario normal sólo puede crearlos en su propio directorio. ==== rmdir: borrado de directorios ==== El directorio debe de estar vacío para poder borrarlo. Sólo podrán borrarse directorios que se encuentren bajo el directorio del usuario (salvo si es root). ==== cp: copiar ==== Comando para copiar archivos y directorios. Hay que tener cuidado, ya que por defecto, si asignamos un nombre que ya existe, este archivo se sobrescribirá (perderemos esa información irremediablemente). cp [archivo a copiar] [nuevo archivo copiado] Se puede indicar el directorio en el que nos encontramos con un punto. ==== mv: mover ==== Este comando sirve tanto para mover un archivo o directorio de una ubicación a otra, como para cambiar el nombre a un archivo o directorio. mv archivoOrigen archivoDestino Si en el archivo de destino indicamos otro nombre diferente del archivo de origen, cambiará el nombre. Si la ubicación de origen y destino es la misma, el archivo (o directorio) cambiará de nombre. ==== rm: borrar archivos y directorios ==== Lo borra bien borrado. Algunas opciones útiles: * **-r**: Borrado recursivo. Sirve para borrar un directorio que no está vacío. Todo lo que contiene es eliminado. * **-i**: El sistema pide confirmación cada vez que va a eliminar un archivo. ==== chmod: gestión de permisos ==== Cambia los permisos de los archivos y directorios de los que el usuario es propietario. Sólo el superusuario puede modificar los permisos de cualquier archivo. chmod [opciones] [modo de cambio] [archivo|directorio] Las opciones más comunes son: * **-R**: Usado sobre un directorio, realiza el cambio en cada elemento que contenga ese directorio y todos sus subdirectorios. * **-v**: Muestra todas las acciones que se han efectuado en cada archivo o directorio. Existen dos modos, o maneras, de cambiar los permisos: * **Modo octal**: en [modo cambio] se indican los nuevos permisos escribiendo tres números: ugo * //u//: Permisos del usuario. * //g//: Permisos del grupo. * //o//: Permisos del resto de usuarios del sistema operativo. * Cada número representa en decimal, un registro de 3 bits, que en función de su estado (1,0) indica respectivamente los permisos de: lectura (bit 2, valor 4), escritura (bit 1, valor 2) y ejecución (bit 0, valor 1). La suma de sus valores determina los permisos. Ejemplo: chmod 764 directorio1/archivoPrueba * **Modo simbólico**: se especifican, separados por comas, los cambios que se van a hacer en el archivo especificado. En cada cambio hay que indicar a los usuarios que afecta (u, g, o), si se dan o se quitan permisos (+, -) y cuáles son esos permisos (r, w, x). Ejemplo: chmod go+w, g-x directorio1/archivoPrueba ==== chown: cambio de propietario y grupo ==== Para poder cambiar el usuario propietario y el grupo propietario de un archivo o carpeta se utiliza el comando chown (change owner). Para ello hay que disponer de permisos de escritura sobre el archivo o carpeta. Sintaxis: **chown [nuevo_usuario] [nuevo_grupo] [nombre_archivo]** ==== umask: máscara de permisos ==== Con umask podemos definir la máscara de permisos, es decir, podemos elegir los permisos por defecto que tendrá un archivo o carpeta tras su creación. Cuando se crea un archivo, los permisos originales por defecto son 666 y cuando se crea una carpeta, los permisos por defecto son 777. El permiso por defecto será el resultado de restar del permiso original, el valor de la máscara. Si deseamos que los archivos se creen con permisos 644 (lo más habitual), pondremos máscara 022 ya que 666-022=644. Si analizamos el valor de la máscara en binario, cada bit a '1' desactiva un permiso y cada bit a '0' lo activa. Cada usuario tiene su máscara. Se puede fijar la máscara por defecto para todos los usuarios en el archivo /etc/profile o para cada usuario en el archivo /home/usuario/.bashrc La modificación con umask de la mascara por defecto no afecta a los archivos y carpetas existentes sino solo a los nuevos que cree ese usuario a partir de ese momento. ==== cat: muestra contenido ==== Muestra el contenido de uno o varios ficheros de texto por la pantalla. Si el contenido es muy largo, sólo se verá el final, por lo que puede usarse unido a otros dos comandos separados por el carácter '|' para solucionarlo: * **cat nombreFichero | more**: Puede ir pasándose el fichero de pantalla en pantalla de forma manual. * **cat nombreFichero | less**: Permite mover el fichero hacia arriba y hacia abajo. Si se especifican varios ficheros, se imprimirán en pantalla uno a continuación de otro sin ningún tipo de separación. ==== ln: crea enlace a fichero ==== Crea un enlace a un fichero que puede estar en otra ubicación. Hay de dos tipos: * **Duros**: Se crean de la forma **ln nombreFichero nombreEnlace** y se trata DEL MISMO fichero aunque tenga un nombre diferente (mismo inodo). Cuando se elimina, el contenido continúa existiendo mientras halla un archivo o enlace "duro" que lo referencie. * **Blandos o simbólicos**: Se crean con la opción **-s** y es un archivo diferente del que apunta. Similar al acceso directo de Windows. ===== Comandos para obtener información del sistema ===== ==== dmidecode: información del sistema (root) ==== Este comando requiere permisos de superusuario o //root//. Muestra una gran cantidad de información del sistema. Para poder ver la salida del terminal paginada, se utiliza la sintaxis **dmidecode | less**. Para salir del paginador, se pulsa la letra **q**. ==== df: información de particiones ==== Muestra información de las particiones del sistema: tamaño, espacio usado, espacio disponible y punto de montaje (esto es la ubicación donde se han montado). La opción **-h** muestra las unidades de los tamaños (Mb, Gb, etc.). ==== du: información de directorio ==== Muestra información relativa al directorio especificado: espacio que ocupa y subdirectorios que incluye. La opción **-h** muestra las unidades de los tamaños (Mb, Gb, etc.). ==== date: fecha ==== Muestra la fecha en formato local. Con la opción **-u** se obtiene la fecha universal. ==== lspci: dispositivos PCI ==== Muestra los dispositivos PCI conectados al ordenador. Con la opción **-vmm** se informa información más detallada acerca de cada dispositivo. ==== uname: información del sistema ==== Muestra información del sistema Linux al que estamos conectados. Con la opción **-sr** nos informa además del nombre y versión del //kernel// de Linux. ==== lsb_release: información de distribución Linux ==== Ofrece información de la distribución de Linux que estamos usando. Con las opciones **-icd ** indica distribución, versión y nombre. ===== Comandos de gestión de usuarios (permisos de root) ===== ==== adduser: crear usuario o grupo vacío ==== Crea un nuevo usuario. Su sintaxis es **adduser [nombreNuevoUsuario]**, y tras introducir el comando, el sistema pide su contraseña. El directorio del nuevo usuario se encuentra en /home, y sus archivos de configuración en /etc/skel. Por defecto, al crearse un nuevo usuario, se crea un grupo con su mismo nombre. Las opciones de este comando se encuentran en el archivo /etc/adduser.conf. Puede especificarse un grupo al que se añadirá al nuevo usuario que se va a crear, con la sintaxis **adduser [nombreNuevoUsuario] [nombreGrupo]**. También puede especificarse para crear un grupo vacío (sin ningún usuario) con la opción **--group** y especificando el nombre del nuevo grupo. ==== addgroup: crear grupo vacío ==== Crea un grupo que no contiene ningún usuario. Equivalente a //adduser --group [nombreNuevoGrupo]// ==== deluser: Borra usuario ==== Borra el usuario cuyo nombre se especifique a continuación, pero no su directorio /home/usuario. Para ello puede usarse la opción **--remove-home**. También se usa para eliminar a un usuario de un grupo, con la sintaxis: **deluser [nombreUsuario] [nombreGrupo]**. ==== addgroup: crear grupo ==== Se utiliza para crear un grupo nuevo vacío. La sintaxis es: **addgroup [nombreGrupo]**. ==== delgroup: borrar grupo vacío ==== Borra un grupo de usuarios que esté vacío. Sintaxis del comando: **delgroup [nombreGrupo]**. ===== Comandos de gestión de paquetes ===== ==== apt-get: instalación de paquetes desde internet ==== Comando que sirve para instalar paquetes desde internet, equivalente a la herramienta gráfica //Synaptic//. ==== dpkg: instalación de paquetes locales ==== Instala un paquete que se encuentre en el equipo local. Mas información en la sección de [[linux:gestionprogramas#dpkg|Gestión de programas]]. ===== Comandos de montaje de dispositivos ===== ==== mount: montar unidad ==== Incorpora un dispositivo. Si se ejecuta sin opciones, lo incorpora al directorio raíz. Lo habitual es usar la sintaxis: **mount [opciones] [dispositivo] [puntoMontaje]**, en el que puntoMontaje hace referencia a la ubicación del dispositivo en el árbol de directorios. Algunas opciones: * **-t**: indica el tipo de fichero a montar: ext3, ext4, ntfs, etc. * **-a**: monta todos los dispositivos que aparecen en el archivo /etc/fstab, salvo los que tienen la opción //noauto// o están seleccionados por el tipo -t. * **-w**: Monta los dispositivos como lectura/escritura. Un ejemplo: mount -t ext3 /dev/sda2 /mnt ==== umount: desmontar unidad ==== Este comando desmonta un dispositivo del árbol de directorios. Puede especificarse el dispositivo o el punto de montaje. ===== Comandos de red ===== ==== ifconfig: información conexiones ==== Muestra información de las conexiones de red. ==== iwconfig;; información conexiones inalámbricas ==== Muestra información de las conexiones inalámbricas. ===== Comandos de gestión de procesos ===== ==== /etc/init.d/[proceso] [acción] ==== Ejecutar una acción para un proceso concreto. Las acciones que se pueden ejecutar para cualquier proceso del sistema son: * **start**: Inicia el proceso. * **stop**: Detiene el proceso. * **restart**: Reinicia el proceso. ==== halt: detención de procesos y apagado ==== Este comando detiene todos los procesos abiertos del sistema y apaga el equipo. ==== reboot: reinicio del sistema ==== Este comando detiene todos los procesos abiertos del sistema y reinicia el equipo. ===== Otros comandos ===== ==== wget: gestor de descargas desde web ==== Este gestor de descargas puede usarse para descargar un archivo desde una página web o dirección ftp, con la sintaxis: **wget [rutaArchivo]**. El archivo se descargará en el directorio donde nos encontremos. Pueden descargarse varios archivos, separando con un espacio las diferentes rutas: **wget [rutaArchivo1] [rutaArchivo2] [rutaArchivo3]**. Pueden usarse las siguientes opciones: * **-i**: Si son muchos archivos a descargar, pueden especificarse todas las rutas en un archivo de texto, con una ruta por línea. con esta opción e indicando la ruta al archivo de texto, comenzarán a descargarse todos los archivos indicados. * **-c**: Para continuar con una descarga interrumpida **wget -c [rutaArchivo]**. También es posible usar wget para descargar páginas web completas, indicándo su ruta. En este caso pueden usarse estas opciones: * **-p**: Se descargan archivos de estilo (CSS) y otros complementos. * **-r**: Se descarga hasta el nivel 5 de la página web. * **-l**: Se descarga hasta el nivel que se indique a continuación de la opción, sin dejar ningún espacio: **wget -l4 [rutaWeb]**. * **-k**: Convierte los enlaces entre los archivos descargados, para poder navegar sin conexión. * **-P**: Para especificar un el directorio de descarga, en vez de descargar en el que nos encontremos.