Comandos Basicos Linux

Comandos Básicos de Linux Todos los comandos que aparecen en este manual han sido implementados en “Ubuntu 12.04 Precise

Views 158 Downloads 6 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Comandos Básicos de Linux Todos los comandos que aparecen en este manual han sido implementados en “Ubuntu 12.04 Precise”. Aunque así sea, pueden usarse también en otras distribuciones de Linux. Lo primero y más importante es que, aunque yo aquí os pondré algunas opciones de cada comando, podréis encontrar todas las opciones de cada uno de ellos anteponiendo la palabra “man” (de manual) al comando del cual queramos saber más: man comando Un ejemplo de consulta sería el del comando “cp” (para copiar archivos):

El manual del comando “cp” proporcionado por linux sería el siguiente. Para salir del manual presionaremos la “q”:

Ahora, y sin más dilación, procederé a mostraros el uso de los comandos básicos de Linux. Nos serán realmente útiles cuando queramos elaborar un script que automatice tareas o nos facilite algunas ya existentes. • cat: nos permite concatenar ficheros e imprimirlos por la salida estándar, es decir, que podremos, entre otras cosas, mostrar el contenido de un fichero por consola: cat nombreArchivo A continuación consulto el contenido de un fichero cuyo nombre es “prueba.txt”. Nos muestra su contenido por consola:

También, como he comentado, se puede concatenar el contenido de dos archivos distintos y mostrar su contenido por pantalla. Para ello pondremos el nombre de un archivo tras otro, dejando espacios entre ellos:

Con todo esto, lo que podemos hacer es redireccionar la salida a un único archivo usando el operador “>” (dicho operador, si no existe el archivo indicado tras él, lo crea. Si existe, sobrescribe su contenido). A continuación, redirecciono la salida de la concatenación a un archivo cuyo nombre es “contenedor.txt” y, tras ello, consulto su contenido, para que podáis comprobar que, efectivamente, la salida de la concatenación ha sido escrita en el archivo mencionado:

Por otro lado, con el operador “>>” podremos añadir texto a archivos ya existentes sin sobrescribir su contenido. Eso sí, si el archivo no existiese, lo crea automáticamente, igual que el operador “>”. Ahora veremos que se añade una nueva frase de otro archivo de prueba (prueba3.txt) al archivo “contenedor.txt”.

Algunas opciones de “cat” son: ◦ -n: numera todas las líneas, incluyendo las que están en blanco. ◦ -b: numera únicamente las líneas que no están vacías. ◦ -E: muestra el símbolo “$” al final de línea. En el siguiente ejemplo, no veréis las diferencias entre las opciones “-n” y “-b”, pero se debe a que el archivo “prueba.txt” tiene únicamente una línea:

Estas tres opciones son muy útiles cuando se ha de crear un script y se quiere controlar las líneas. • cd: son las siglas de “Change Directory” y, como bien indica, nos va a permitir cambiar de directorio. Hay varias maneras de cambiar de directorio: ◦ cd /rutaAbsoluta → Indicamos la ruta completa a la que queremos acceder:

◦ cd ./rutaRelativa → Indicamos la ruta a la que queremos acceder, partiendo

de la ruta en la que nos encontramos actualmente:

◦ cd .. → accedemos a la carpeta padre (jerárquicamente, la que se encuentra

por encima de la actual):

◦ cd → sin ninguna opción, nos lleva directamente a nuestro directorio

personal:

• ls: es una abreviación de “list” y nos va a permitir listar el contenido de los directorios. Sin ninguna opción, nos mostrará el contenido del directorio actual. Los nombres que están en azul, son directorios, los que están en blanco, archivos:

Algunas de las principales opciones son las siguientes: ◦ -a: nos permitirá ver los archivos y directorios ocultos (llevan un “.” delante del nombre).

◦ -l: muestra más información sobre el contenido del directorio (fecha y hora de creación, permisos...).

◦ -t: ordena el contenido del directorio por la fecha de la última modificación. Los más recientes, primero.

◦ -s: indicará cuantos bloques ocupa cada archivo.

◦ -R: muestra recursivamente todos los subdirectorios.

◦ -h: con la opción “l”, muestra los tamaños en un formato legible para las personas (1K, 1M, 1G).

◦ -c: con las opciones “lt”, ordena la salida desde los últimos modificados hasta los más antiguos.

• cp: es una abreviación de “copy” y nos permite copiar archivos y directorios. Sin ninguna opción, podremos copiar un archivo en la ubicación indicada con el nombre indicado. En el siguiente ejemplo, “prueba2.txt” es el archivo a copiar, “./” es la ubicación y “backupPrueba2.txt” es el nombre que le daremos a la copia:

◦ -n: no sobrescribe los archivos existentes. No pongo ninguna imagen porque directamente no muestra ningún mensaje. Simplemente no sobrescribe los archivos ya existentes. ◦ -f: fuerza la sobrescritura de los archivos existentes, sin advertir al usuario. ◦ -i: a medida que vaya encontrando ficheros existentes, nos irá preguntando si los queremos sobrescribir.

◦ -l: crea un enlace duro de los archivos en lugar de copiarlos. Esto quiere decir que si modificamos uno, ambos quedarán modificados, pero si eliminamos uno, el otro no se eliminará:

Además, ambos comparten el mismo “i-nodo”, que es el que contiene las características de un archivo o directorio (permisos, ubicación...). Para poder ver el número de “i-nodo” usaremos la opción “-i” del comando “ls”:

◦ -r, -R: si es un directorio, copia el contenido de manera recursiva, es decir, si hay hay directorios dentro del directorio a copiar, también copiará su contenido. He creado un directorio cuyo nombre es “directorio”. Dentro tiene otra carpeta que he llamado “subdirectorio”. Dentro de esta última carpeta hay un archivo cuyo nombre es “archivo.txt”. Indicando únicamente el nombre de la carpeta “directorio”, el destino, su nombre y la opción “-r”, se copiará todo el contenido:

• mv: es una abreviatura de “move” y te permite tanto mover como renombrar los archivos. En el siguiente ejemplo desplazo el archivo “enlaceDuro.txt” al interior de la carpeta “directorio”:

Si queremos cambiar su nombre, simplemente indicamos, además de la ruta, el que deseemos. En este caso, como no vuelvo a desplazar el archivo, lo que hago es indicar únicamente el nuevo nombre:

Algunas opciones: ◦ -n: no sobrescribe un archivo existente. ◦ -i: nos pregunta antes de sobrescribir. ◦ -f: fuerza la sobrescritura.

Antes de hablaros del siguiente comando, chmod, os haré una breve explicación de qué tipo de información nos muestra cada una de las columnas que aparecen cuando usamos el comando “ls -lh”. De este modo entenderéis mejor el comando “chmod”:

1 → Según el símbolo que aparezca, te indica si es un directorio (d), un link (l) o un archivo (-). 2 → Indica si el dueño tiene los permisos de lectura (r – primera columna), escritura (w – segunda columna) y/o ejecución (x – tercera columna). Si aparece un guión, querrá decir que no tiene ese permiso sobre el fichero. 3 → Indica si el el grupo, al cual pertenece el fichero, tiene los permisos de lectura (r – primera columna), escritura (w – segunda columna) y/o ejecución (x – tercera columna). Si aparece un guión, querrá decir que no tiene ese permiso sobre el fichero. 4 → Indica si el resto de usuarios tienen los permisos de lectura (r – primera columna), escritura (w – segunda columna) y/o ejecución (x – tercera columna). Si aparece un guión, querrá decir que no tiene ese permiso sobre el fichero. 5 → Indica cuantos directorios o links hay. Por defecto, los archivos normales siempre tendrán “1” (.) y los directorios 2 (. y ..) 6 → Indica el nombre del dueño del fichero. 7 → Indica el nombre del grupo al cual pertenece el fichero. 8 → Indica el tamaño en disco. En este caso mostrará los valores en formato legible, dado que estoy usando la opción “-h”. 9 → Mes en el que se creó el fichero. 10 → Día en el que se creó el fichero. 11 → Hora en la que se creó el fichero. 12 → Nombre del fichero.

• chmod: proviene de “change file mode bits” y nos va a permitir cambiar los permisos de los archivos y carpetas de dos maneras: ▪ Modo Octal: primero hay que indicar que los valores nuevos que se le van a otorgar al archivo o carpeta van ser en octal. Para ello situaremos un “0” frente a todos los números que indicarán los permisos de cada una de las categorías: chmod 0777 nombreArchivo El valor del primer número (no contamos el 0) afectará a los permisos que tendrá el dueño del fichero sobre el mismo. El valor del segundo número afectará a los permisos del grupo asignado a dicho fichero en el momento de su creación. El valor del tercer número afectará a los permisos del resto de usuarios. Los valores, de 0-7, quedan explicados a continuación: • • • •

1 → ejecutable 2 → modificable (se puede escribir) 4 → legible 0 → ningún permiso

Tened en cuenta que dichos permisos se pueden otorgar a la vez, es decir, si queremos que un archivo sea modificable y legible únicamente por el dueño, entonces sumaremos 2+4 y le otorgaremos los permisos: chmod 0600 nombreArchivo Os dejo un ejemplo a continuación. Al principio, el archivo “backupPrueba” tiene permisos de lectura y escritura para el dueño y el grupo. Además tiene permisos de lectura para el resto de usuarios:

Tras aplicar el comando “chmod 0777 backupPrueba2.txt”, los permisos cambian a lectura, escritura y ejecución para todos. Además, como ahora el archivo es ejecutable, su color cambia a verde:

▪ Letras y símbolos: en este caso tenemos las letras u (usuario al que pertenece el archivo), g (grupo al que pertenece el archivo), o (otros usuarios) y a (hace referencia a todos). Además tenemos los permisos: r (lectura), w (escritura) y x (ejecución). Para poder añadir los permisos usaremos “+”, para revocarlos “-”, para especificarlos “=”. Ahora os pondré algunos ejemplos: ◦ Elimino todos los permisos y únicamente les añado el permiso de lectura. Vemos que al principio tienen los permisos de lectura, escritura y ejecución:

Vemos que las categorías van delante, el signo va en el centro y los permisos detrás. Además, como queremos eliminar unos permisos y luego asignar otros, usamos una coma entre ellos. En un principio, con eliminar los permisos de escritura y ejecución ya sería suficiente, pero quería que viéseis que se pueden poner varias asignaciones o revocaciones seguidas usando comas:

◦ Le asigno todos los permisos al dueño y elimino todos los permisos del resto. Lo tenemos así:

Y tras asignarle los permisos de escritura, lectura y ejecución al dueño y revocarselos a los demás, nos queda de la siguiente manera (tened en cuenta que usando el “=” y sin indicar nada después, le estamos diciendo que el grupo y el resto de usuarios no tendrán ningún permiso, ya que no les estamos asignando ninguno):

Algunas opciones que nos pueden ser útiles con este comando son: • -R: si es un directorio, aplicará todos los permisos de forma recursiva. • -f: fuerza la asignación de los permisos y no tiene en cuenta los errores. Por último, debemos saber que existen unos permisos adicionales que son: • set user ID (SUID): este permiso permitirá asignarle a un archivo un identificador de un usuario concreto. De esta manera, cuando ejecutemos dicho archivo, seamos quien seamos, para el sistema este archivo aparecerá como ejecutado por el usuario establecido con el setuid o SUID (set user ID). Un ejemplo es el archivo “/etc/passwd”, el cual no se debería modificar directamente. Para ello tenemos otro archivo, “/usr/bin/passwd”, que tiene el setuid del superusuario y, por lo tanto, cuando ejecutamos el comando “passwd” es como si realmente lo ejecutase el superusuario. chmod u+s archivo • set group ID (SGID): si este permiso le ha sido asignado a un directorio, todos los archivos y directorios nuevos que se creen dentro de él formarán parte de su grupo. chmod g+s directorio

chmod g-s directorio • sticky bit: si este permiso le ha sido asignado a un directorio, su contenido solo podrá, y repito, solo podrá ser renombrado o borrado por el propietario del elemento concreto, el propietario del directorio o el “root”. Para asignarlo o eliminarlo: chmod +t /nombreDirectorio chmod -t /nombreDirectorio • chown: es una abreviatura de “change owner” y te permite cambiar el dueño y grupo de un archivo. Para ello, indicas el nuevo dueño y grupo de la siguiente forma “nuevoDueño:nuevoGrupo” y el archivo. Comprobamos que el dueño y grupo del archivo es “josemaria”. Tras ello, aplicamos el comando y comprobamos como han cambiado ambos:

También podemos cambiar únicamente el dueño. Para ello no ponemos “:” ni ningún grupo:

Por último, si indicamos el nuevo dueño y “:” pero sin nada tras ellos, entonces el nuevo grupo del archivo será el grupo con el que el usuario se ha conectado a su sesión:

Algunas de las opciones que existen son “-f” (ignora la mayoría de mensajes de error) o “-R” (cambia los permisos de todos los archivos y directorios recursivamente).

• chgrp: es una abreviatura de “change group” y nos permite cambiar el grupo de un arhivo. En su formato más sencillo, indicas el nuevo grupo y el/los archivos a los cuales deseas cambiarles el grupo:

También podemos utilizar un archivo como referencia para el cambio de grupo, de manera que tomará el grupo del archivo referenciado:

Otras opciones son “-f” o “-R”, que realizan las mismas funciones que con el comando “chown”. • echo: nos permite mostrar mensajes por la salida estándar. También podemos consultar el contenido de variables. El uso más simple de este comando consiste en indicar una palabra o frase tras “echo” para que se muestre por la salida estándar:

También podemos mostrar el contenido de variables (muy útil para los scripts):

Además, con la opción “-e” podemos añadir cambios de línea (\n), espacios (\b), alertas (\a), tabulación horizontal (\t) ... Para que sean interpretados, deberán estar entre comillas:

• grep: es un comando que nos permitirá filtrar por aquellas líneas que coincidan con un determinado patrón. También nos permite buscar ficheros que contengan una determinada cadena de caracteres. Algunos ejemplos de funcionamiento serían: ▪ Si queremos buscar en un directorio recursivamente todos aquellos ficheros que coincidan con una cadena (no muestro la salida porque es enorme). Primero aparece el archivo en el que aparece la cadena coincidente (en lila) y luego el contexto:

▪ Si queremos saber cuántas líneas coinciden con el patrón indicado. En este caso, cuántas líneas contienen la palabra “otro”:

▪ Si queremos filtrar la salida de algún comando como el “ls”:

▪ Hay otras opciones como “-f”, para indicar un fichero de entrada como patrón; “-i”, para ignorar mayúsculas y minúsculas; entre otros. • less: es un comando que nos permite desplazarnos atrás y adelante en un documento mostrado por consola. El modo más básico es:

Entonces nos aparecerá el documento paginado. El tamaño de cada página dependerá del tamaño de la consola, ya que se mide por la cantidad de líneas que caben en ella. En mi caso, 23 líneas. La última línea, donde aparece el rectángulo blanco, podremos indicar algunas de las opciones que ofrece “less”:

Las opciones que ofrece “less”, entre otras, son (sin comillas): • “G”: nos lleva al final del documento. • “g”: nos lleva al inicio del documento. • Barra espaciadora: avanzamos de página en página. • “/palabraABuscar”: buscará, hacia delante, la palabra indicada. • “?palabraABuscar”: buscará, hacia atrás, la palabra indicada. • “v”: nos cargará el editor de texto “vi” en el lugar exacto en el que nos encontremos. • “q”: Saldremos del programa “less”. • kill: nos permitirá enviarle una señal a un proceso. La señal que se envía por defecto, es decir, si no indicamos ninguna opción, es “TERM”. Esta señal intentará terminar el proceso sin forzarlo, aunque generalmente usaremos la opción “-9”, que forzará la finalización de los procesos: Digamos que iniciamos un proceso como el siguiente y lo detenemos con “control+z”:

Ahora estará en segundo plano. Para poder ver qué procesos están en segundo plano y su PID, usaremos el comando “jobs” con la opción “-l” :

Comprobamos que su PID es 5157. Este número nos servirá para poder terminar con el proceso mediante el uso del comando “kill -9 númeroPID”:

Como vemos, “jobs” ya no muestra ningún proceso. Si queremos conocer todos los tipos de señales que existen, escribimos en consola “kill -l” y se nos mostrarán por orden, pudiendo usar tanto el nombre como el número que los precede:

Algunas señales importantes son: • SIGHUP: para y reinicia el proceso indicado. • SIGSTOP: suspende el proceso indicado. Lo podemos reanudar más adelante. • SIGCONT: reanuda el proceso indicado. • SIGINT: termina con la mayoría de programas pero te arriesgas a perder información. Vendría a ser como apretar “control+C”.

• ln: con este comando (link) podremos enlazar ficheros. Los enlaces pueden ser fuertes (o rígidos o duros) “ln nombreObjetivo rutaYNombreLink” y débiles (o simbólicos o blandos) “ln -s nombreObjetivo rutaYNombreLink”. Los enlaces fuertes apuntan al inodo directamente y solo se pueden realizar entre ficheros del mismo sistema de ficheros. Además, aunque eliminemos el fichero a partir del cual se han creado los enlaces fuertes, como dichos enlaces apuntan directamente al inodo, siguen funcionando. Por eso, para poder eliminar un archivo definitivamente, deberemos eliminar todos los enlaces fuertes. En cambio, los enlace débiles apuntan directamente al fichero, por lo tanto, si dicho fichero se elimina, el enlace queda roto. Vemos que el segundo enlace creado, el simbólico, con la opción “-s”, es distinto. Se puede apreciar dado que aparece “->”. Esto indica que el archivo que se encuentra en “/home/josemaria/Escritorio/linkAPrueba.txt” en realidad apunta a otro archivo que se encuentra en “/home/josemaria/prueba.txt”. El enlace duro apunta directamente al inodo del archivo que se encuentra en “/home/josemaria/prueba.txt”:

• more: viene a ser como el comando “less”. Se usa de la siguiente manera (si queremos consultar mas de un fichero a la vez, los indicamos todos seguidos, dejando un único espacio entre ellos): Entonces nos muestra su contenido paginado. Algunas de las opciones que podemos usar dentro de la aplicación son: • barra espaciadora: avanzamos de página en página. • Enter: avanza de línea en línea. • “q”: salimos del programa “more”. • “/texto”: buscamos un texto o indicamos una expresión regular • “ns”: avanza “n” líneas. • “nf”: retrocede “n” páginas.

• “h”: muestra ayuda. Externamente, si solo queremos mostrar el archivo de “n” líneas en “n” líneas, usaremos el comando “more” con la cantidad de líneas deseadas. Por ejemplo de “5” en “5”:

Ahora, cuando le demos a la barra espaciadora, irá de 5 en 5 líneas. • nano: es un editor de texto para la consola. Si usamos el comando sin ninguna opción, solamente indicando el archivo que deseamos editar, entonces se nos abrirá dicho archivo o se creará en el caso de que no exista:

Algunas de las opciones de las que disponemos cuando estamos dentro del editor son: • Control+O: salva el contenido. Nos preguntará el nombre que le queremos dar. Si lo queremos dejar igual, simplemente le damos al “Enter”. • Control+X: salimos del editor. Si no has guardado el documento, te preguntará si lo quieres haces, pudiendo indicar “S” (sí), “N” (no) o “Control+C” (cancelar la salida). • Control+D: elimina ek carácter que se encuentra bajo el cursor. • Control+K: elimina la línea entera en la que se encuentra el cursor. • Control+Alt Gr+ \: podemos indicarle que reemplace una palabra concreta por otra indicada. • Control+W: le indicamos la letra o letras a buscar en todo el texto • Control+C: devuelve la línea, columna y carácter en el que se encuentra el cursor • Control+A, Control+E, Control+Y, Control+V: el cursor se desplaza al principio de la línea; el cursor se desplaza al final de la línea; el cursor se desplaza una página hacia abajo; el cursor se desplaza una página hacia arriba; respectivamente.

• Mount y umount: Con el comando “Mount” podremos montar dispositivos en el punto de montaje y con el sistema de ficheros indicado. El comando es “mount -t sistemaDeFicheros dispositivo puntoDeMontaje”:

Es útil cuando, por ejemplo, tenemos varios discos duros conectados al PC. Uno de ellos es el principal, donde está instalado Ubuntu. Los demás simplemente están conectados. Para poder acceder a ellos, tendremos que montarlos en el PC (mount), darles el formato deseado (mkfs) y, finalmente, usarlos. Para que el montaje sea definitivo, lo indicaremos en el archivo “/etc/fstab”.

• pwd: muestra la ruta completa del directorio en el cual nos encontramos:

• ping: nos permite comprobar la conectividad entre sistemas que usen TCP/IP. Principalmente lo usaremos para ver si existe comunicación entre dos sistemas (comunmente PC/Router, PC/Proveedor de Servicios, PC/PC, PC/DNS...). Con la opción “-c” le indicamos cuántos intentos deseamos hacer:

• ps: sin ninguna opción, muestra los procesos del usuario con el que nos hemos conectado:

Algunas de las opciones de las que disponemos son: • -a: Muestra los procesos de todos los usuarios. • -u: Muestra información adicional. • -x: muestra los procesos de otras terminales y usuarios. • -aux: mostrará los procesos de todos los usuarios con información extra (USER, PID, %CPU, %MEM...) • -ejH: muestra un árbol de procesos. • rm: nos permite eliminar ficheros y directorios. Por defecto, sin opciones, solamente elimina ficheros y no directorios.

Algunas opciones son: • -f: fuerza la eliminación de los archivos, sin mostrar nada por consola. • -i: muestra un aviso por cada archivo a eliminar. • -I: muestra un aviso si se van a eliminar más de 3 archivos o de modo recursivo. • -r: elimina el/los directorios y su contenido (si tiene) recursivamente • mkdir: nos permite crear un directorio. Se usa de la siguiente manera:

Algunas opciones son: • -m 777: establecemos los permisos del directorio. • -v: muestra un mensaje por cada directorio creado.

• hostname: sin ninguna opción, muestra el nombre del host:

Algunas opciones son: • -s: muestra el nombre corto. • -f: muestra el nombre largo • -a: muestra el alias. • -i: muestra la IP configurada para el nombre del host. • -I: muestra todas las IP's del host. • V: muestra la versión del programa “hostname”. • stat: sin ninguna opción, muestra información de un archivo o archivos concretos (tamaño en disco, bloques que ocupa, el inodo...):

Algunas de las opciones son: • -t: muestra la información del archivo en un formato breve. • -f: muestra el estado del sistema de ficheros en lugar del estado del fichero. • -L: sigue los enlaces que haya.