Comandos bsicos de Bash man Las paginas de manual en linea de Linux pueden ser consultadas con el comando man. Por ejemplo, para consultar la pgina de manual del comando ls haramos: $ man ls Unos instantes despus estaremos viendo la pgina en nuestro monitor. La forma de visualizar las paginas depender del programa de filtrado que estemos utilizando: Si nuestro sistema usa el programa less para ver estas pginas, podremos desplazar el texto arriba y abajo utilizando los cursores. Adems estarn disponibles todas las funcionalidades de more. Si se trata de more, avanzaremos una pgina con la barra espaciadora y retrocederemos una pgina con la B. En la mayora de los sistemas tambin deberan funcionar AvPag y RePag si nuestro teclado esta correctamente configurado. Para salir hay que pulsar la Q. Las pginas se estructuran en secciones, que pueden ser consultadas utilizando el modificador -S. Las secciones estndar son las siguientes: 1.Programas ejecutables o comandos de shell 2.Llamadas del sistema (funciones suministradas por el kernel) 3.Llamadas de libreras (funciones dentro de las libreras del sistema) 4.archivos especiales (normalmente los que estn en /dev) 5.Formatos de archivo y convenciones. Por ejemplo /etc/passwd 6.Juegos 7.Macro paquetes y convenciones. Por ejemplo man(7), groff(7) 8.Comandos de administracin del sistema (normalmente solo para el root) 9.Rutinas del kernel [No estndar] Esto es til cuando el mismo comando esta disponible en varias secciones. Si nos interesa ver la descripcin de un comando en todas las secciones del manual, tenemos el modificador -a: $ man -a comando Adems de las pginas del manual completas, existen descripciones cortas de los comandos y dos modos de consultarlas: $ man -f comando Muestra todas las descripciones cortas del comando para todas las secciones del manual $ man -k palabra o $ apropos palabra Muestra todas las descripciones cortas de aquellos comandos que en su descripcin incluyan la palabra especificada. Esto ultimo puede ser de gran utilidad si no sabemos exactamente el nombre de un comando determinado y queremos "probar suerte". Estas descripciones estn almacenadas en una base de datos especial del sistema. Si hemos actualizado las paginas de manual recientemente (instalando nuevas pginas o borrando alguna existente), podemos actualizar la base de datos ejecutando: $mandb Si lo que queremos es obtener una copia impresa de la pagina de manual, podemos hacerlo as: $ man comando | col -b | lpr Esto se entiende como: El man muestra el manual del comando al programa col, que, a su vez, se lo enva a la impresora (lpr). Si en nuestro sistema se encuentran instaladas pginas de man en castellano, podremos leerlas especificando el lenguaje en una variable de entorno especial: $ export LANG=es Esto solo hay que hacerlo una vez por sesin. Por ultimo, decir a los curiosos que las paginas de manual se encuentran en el directorio /usr/man organizadas por secciones y normalmente comprimidas con gzip. Podemos leerlas directamente con zless, pero estn en formato groff y no sera una experiencia demasiado agradable. cd El comando chdir o cd (del ingls, change directory), es un comando utilizado para cambiar el directorio de trabajo. Se puede usar tanto en una lnea de comandos como en un script. Un directorio es un lugar de almacenamiento lgico que sirve para guardar y administrar tanto archivos como otros directorios. El comando cd puede subir al directorio de nivel superior que el actual, acceder a uno de nivel inferior, acceder al directorio raz ( / ) o llegar a cualquier ruta de directorios dada. Ejemplos: $ cd .. Sube al directorio padre del actual (si estbamos en /home/pepe/, despus estaremos en /home). $ cd ../.. Sube dos directorios (para el mismo caso, desde /home/pepe/, pasaramos a / ). $ cd / Sin importar dnde estemos, vamos al directorio root. $ cd ~ Sin importar dnde estemos, vamos al directorio home del usuario. $ cd /usr/local/share/man/man9/ Sin importar dnde estemos, vamos al directorio /usr/local/share/man/man9/ Aunque no es imprescindible, la forma correcta de escribir el nombre de un directorio es con el smbolo / al final. ls ls es una instruccin UNIX que muestra el listado de un directorio o archivo. Los resultados se muestran ordenados alfabticamente. El nombre ls proviene de la palabra list, listado en ingls. Los archivos y directorios cuyo nombre comienza con . (punto) no se muestran con la instruccin ls, por lo que se suelen denominar "archivos ocultos". El parmetro -a de ls inhibe este comportamiento, mostrando todos los archivos y subdirectorios, incluso los que comienzan con punto. Sintaxis: $ ls [opciones] [archivo|directorio] sin argumentos muestra el listado del directorio actual. $ ls archivo1 archivo2 archivo3 subdir1 subdir2 Muestra un listado de los archivos y subdirectorios especificados en la lnea de instruccin. Para los archivos muestra el nombre solamente (o ms informacin si se emplea algn argumento como -l ) y para los subdirectorios muestra todos los archivos incluidos en el subdirectorio. Modificadores ms comunes: -l muestra un listado en el formato largo, con informacin de permisos, nmero de enlaces asociados al archivo, usuario, grupo, tamao y fecha de ltima modificacin adems del nombre. $ ls -l total 1424 -rw-r--r-- 1 mail bin 40661 May 13 22:27 Manual.txt.gz -rw-r--r-- 1 nobody nogroup 0 May 13 22:26 fichero1.txt -rw-r--r-- 1 root root 825 May 13 22:26 hosts lrwxrwxrwx 1 user1 grp1 5 May 13 22:31 servidores -> hosts -rw-r----- 1 sys sys 1405600 May 13 22:27 syslog.0 -d muestra solamente el nombre del subdirectorio, sin entrar en l ni dar un listado del contenido. -a muestra los archivos ocultos aparte de los comunes. -t muestra ordenado por la fecha de ltima modificacin. -c muestra ordenado por la fecha de ltima modificacin del estado del archivo. -L en los enlaces simblicos, muestra los datos del archivo referenciado en vez de los del link. -1 muestra el listado en una sola columna. Sin la opcin -1 el listado se muestra en varias columnas, tantas como permita el ancho de la terminal. -i muestra el nmero del i-nodo antes del nombre de archivo. -m muestra los archivos en una lnea y separados por comas. -R hace un listado recursivo. Lista primero los archivos del directorio en curso, luego los de los subdirectorios de ste, luego los de los subdirectorios contenidos en ellos (nietos) y as sucesivamente. -S ordena la salida por tamao de archivo, poniendo los ms pesados en la parte superior del listado. --color muestra cada tipo de archivo de un color distinto: un color para los directorios, otro para los archivos regulares, otro para los enlaces simblicos, otro para los sockets, otro para las tuberas FIFO, etc. Este parmetro no se acepta en todas las versiones de ls y, por supuesto, requiere que la terminal sea capaz de mostrar distintos colores o intensidades. Al igual que en la mayora de instrucciones Unix, los parmetros se pueden agrupar, de manera que es lo mismo poner $ ls -li que $ ls -l -i cat ste es un comando que concatena archivos. Si lo ponemos solo con el nombre del archivo, sin opciones. Lee el archivo por la entrada estndar y lo saca por la salida estndar. Por lo que es usado para ver el contenido de archivos de texto. Por ejemplo: $ cat README Nos muestra el contenido del archivo README (que siempre hay que leer antes de compilar cualquier programa nuevo). $ cat archivo1 archivo2 archivo3 > conjunto.txt Ac s encadena. Los tres archivos, pasan todo sus contenidos a un nuevo archivo, llamado conjunto.txt. $ cat >> archivo1 Nueva lnea al final de archivo1 ^d En este caso, cat abre el archivo1 para que escribamos lo que queremos agregar al final del mismo. Luego de escribir la o las lneas, hacemos Ctrl + d (^d) para salir de la edicin. more More es un filtro para paginar texto, mostrando una pantalla cada vez. Esta versin es especialmente primitiva. Los usuarios deben tener en cuenta que el comando less provee more en emulacin y muchas mejoras ms. Este comando se suele utilizar para entubar otros comandos. Como por ejemplo: $ ls -l | more El comando ls -l manda a la salida estndar un listado de directorios y archivos con todos los datos. Como no va a entrar en una pantalla (y no tenemos interfaz grfica con una barra de desplazamiento vertical para hacer scroll), entonces usamos more para que muestre una pantalla llena y espere a que pulsemos la barra espaciadora para seguir mostrando el resto. less Es un comando similar a more, pero con ms ventajas. less permite que se pagine como con more, pero tambin hacer scroll hacia arriba y abajo con las teclas del cursos. Tambin nos permite usar las teclas PageUp y PageDown. cp Copia archivos y directorios desde un lugar a otro. cp proviene de copy, (copiar en ingls). La sintaxis es: $ cp [opciones] archivo_origen archivo_destino Fjese que no es obligatorio poner opciones y el primer espacio es para el archivo que queremos copiar. Luego de un espacio en blanco, va el destino de nuestro archivo. Este comportamiento nos da muchas variantes. A saber: $ cp archivo1.txt archivo2.txt Hace una copia de archivo1.txt llamada archivo2.txt en el mismo directorio. $ cp archivo1.txt ~/Desktop/ Copia el archivo1.txt al escritorio de mi usuario, con el mismo nombre. $ cp -f archivo1.txt ~/Desktop/ Lo mismo que la anterior, pero sobreescribe la copia que ya estaba antes (si es que ya haba una) sin preguntarme. Opciones ms comunes: -f Borrar archivos destino existentes si se requiere. -i Pregunta si sobreescribe los archivos existentes. -R Copia directorios recursivamente (con todo lo que contengan). -r Hace lo mismo que -R -v Muestra el nombre de cada archivo antes de copiarlo. mv Es un comando usado para mover o renombrar archivos y/o directorios del sistema de archivos. El archivo original es borrado y el crea un nuevo archivo con el mismo contenido, el nombre puede ser diferente o puede ser el mismo. En caso de que se use en la misma ruta y otro nombre solo cambiara el nombre del archivo. mv proviene de la palabra move (que significa mover en Ingls). $ mv archivo1 archivo2 Renombra el archivo1. $ mv archivo1 /home/mi_usuario/ Lo copia a /home/mi_usuario/ con el mismo nombre y luego borra el archivo1 original. touch Este es un caso extrao, ya que este comando fue hecho para cambiar la fecha de los archivos a otra especificada o la actual por defecto. Sin embargo esta es una de las cosas para las que raramente es usado. Un efecto colateral del comando touch, es que si el archivo al que le queremos cambiar la fecha, no existe, el comando lo crea. Por lo que es conocido como un comando para crear archivos en blanco. De esta forma: $ touch archivo Crea el archivo si no exista ya. Opciones: -a Cambia la fecha de acceso. -m Cambia la fecha de modificacin. -t fecha Utiliza la fecha de referencia para los parmetros que cambiamos. mkdir Crea directorios vacos. Proviene de make directory (crear directorio en ingls). La forma de uso es: $ mkdir nuevo Crea un directorio llamado nuevo como subdirectorio del directorio actual. $ mkdir /home/mi_usuario/nuevo/ Crea el directorio nuevo en mi home, sin importar dnde est ejecutando el comando. rm Borra cada archivo dado. Por lo normal, no borra directorios. Pero cuando se da la opcin -r o -R, se borra el rbol de directorios entero a partir del directorio especificado. Su uso: $ rm pepe Borra el archivo pepe. $ rm -r pepe/ Borra el directorio pepe/ con todo su contenido. $ rm -rf pepe/ Como el anterior, pero no nos pregunta si estamos seguros que lo queremos borrar. rmdir Borra directorios vacos. Con la opcin -p borra un encadenamiento de directorios, de esta forma: $ rmdir -p /primero/segundo/tercero Borra el directorio tercero, luego el segundo y finalmente el tercero. Pero siempre con la condicin de que no tengan nada ms en su interior. su Ejecuta comandos con identificador de usuario y grupo distintos (y por consiguiente con distintos permisos). Permite a un usuario convertirse temporalmente en otro usuario. Si no se especifica ningn USUARIO, por defecto se usa root, el superusuario. [pepe@localhost pepe]$ su Password: [root@localhost pepe]# Ac, el usuario pepe ejecuta su. El sistema le pide en la segunda lnea, que le ingrese la contrasea de root. Como pepe la ingresa correctamente, sigue en su directorio personal, pero ahora como superusuario. Note que el prompt le da la informacin del usuario@mquina y a continuacin el directorio actual. Y fuera de los corchetes, indica $ cuando tiene privilegios de usuario corriente y # con los privilegios de root. history Muestra la lista de los comandos realizados por el usuario. Generalmente se utiliza en conjunto con el comando grep para buscar alguna coincidencia. Al ejecutarse sin opciones solo genera una lista con un nmero de ejecucin y el comando en cuestin. Si queremos repetirlo tal como estaba en algn nmero de ejecucin, solo tendremos que hacer: $ history 1 history | grep mplayer 2 mplayer -cache 200 -playlist http://193.41.7.20:8820/listen.pls 3 crontab -e 4 su 5 cd /var/www/html/ $ !2 Esto muestra la lista de todos los comando ejecutados por este usuario (solo 5 para el caso) y luego repite el comando nmero 2 (mplayer -cache 200 -playlist http://193.41.7.20:8820/listen.pls) sin necesidad de reescribirlo. pwd Muestra por la salida estndar, el nombre del directorio actual (desde dnde se ejecut pwd). $ pwd /home/pepe/.mail/Inputbox/ Nos indica que estamos en el directorio /home/pepe/.mail/Inputbox/ find Este comando busca archivos desde un directorio determinado con parmetros determinados. Algunas opciones: -name patrn La bsqueda se hace por un archivo cuyo nombre concuerda con el patrn. -path patrn La bsqueda se hace por un directorio que concuerda con el patrn. Ejemplo: $ find /usr/ -name local /usr/share/evolution/2.0/default/C/mail/local /usr/lib/postfix/local /usr/local Este ejemplo, sin importar dnde est ubicado, busca en /usr/ un archivo con el nombre local. ps Muestra una instantnea del estado de los procesos. Opciones: l formato largo u formato usuario: muestra el usuario y la hora de inicio a muestra tambin los procesos de otros usuarios x muestra procesos que no estn controlados por ninguna terminal r slo procesos que se estn ejecutando Ejemplo: $ ps aux pepe 16965 0.0 0.5 3320 1248 pts/2 Ss Sep15 0:00 /bin/bash pepe 26589 0.0 0.1 3116 436 pts/3 Ss Sep15 0:00 /bin/bash root 12269 0.0 0.2 2336 488 pts/3 S Sep15 0:00 su root 12272 0.0 0.4 2616 984 pts/3 S+ Sep15 0:00 bash pepe 12642 0.0 0.7 25288 1760 ? S Sep15 0:00 kdeinit: kio_fil pepe 15706 0.0 0.3 2360 796 ? S Sep15 0:00 /bin/sh /usr/bin pepe 15732 0.0 0.3 2908 784 ? S Sep15 0:00 /bin/sh /usr/loc root 17912 0.0 0.0 0 0 ? S 00:23 0:00 [pdflush] root 21321 0.0 0.0 0 0 ? S 01:48 0:00 [pdflush] pepe 21877 0.0 0.3 2248 740 pts/2 R+ 02:01 0:00 ps aux kill Matar procesos actuales. Este comando es utilizado para eliminar los procesos que no estn respondiendo o no se pueden cerrar correctamente. Se usa en conjunto con el comando anterior (ps) ya que se necesita el nmero de proceso que queremos matar. Por ejemplo: $ kill -9 16965 Esto matar el primer proceso del listado anterior. killall Similar a kill pero en este caso mata procesos por su nombre. As podramos por ejemplo: $ killall firefox Para matar el Mozilla Firefox que no responde. Se puede usar tambin con las opciones: -e Requiere el nombre largo exacto para matar al proceso (incluida la ruta). -i Interactivo. Nos pregunta por cada uno de los procesos antes de matarlos. top top proporciona una visin continuada de la actividad del procesador en tiempo real. Muestra un listado de las tareas que hacen un uso ms intensivo de la CPU en el sistema, y puede proporcionar una interfaz interactiva para manipular procesos. Puede clasificar las tareas por empleo de CPU, uso de memoria y tiempo de ejecucin. La mayora de las caractersticas pueden seleccionarse mediante una orden interactiva o especificndola en el archivo de configuracin personal o general. Nos puede servir para matar procesos que no queramos con pulsar la tecla k (kill) y el nmero de proceso (PID). $ top top - 02:19:47 up 10 days, 5:36, 1 user, load average: 0.07, 0.04, 0.08 Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie Cpu(s): 0.7% us, 0.7% sy, 0.0% ni, 98.3% id, 0.3% wa, 0.0% hi, 0.0% si Mem: 224056k total, 219844k used, 4212k free, 4360k buffers Swap: 883532k total, 333580k used, 549952k free, 51796k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 31582 pepe 15 0 27280 2312 24m S 0.7 1.0 4:17.65 kdeinit 1 root 16 0 1408 220 1256 S 0.0 0.1 0:03.25 init 2 root 34 19 0 0 0 S 0.0 0.0 0:02.62 ksoftirqd/0 3 root 5 -10 0 0 0 S 0.0 0.0 0:01.83 events/0 4 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 khelper 5 root 5 -10 0 0 0 S 0.0 0.0 0:52.01 kblockd/0 Permisos: chmod y umask Permisos ordinarios Cambia los permisos a los archivos. Solo puede ser usado por el propietario (owner) del mismo o por el root. Los permisos son: lectura ( r ), escritura ( w ) y ejecucin ( x ). Y los mismos se le pueden aplicar a: propietario ( o ), grupo del propietario ( g ) o a todos ( a ). Para cada archivo se definen los tres permisos para cada conjunto de esta manera: rwx rwx rwx El primer conjunto de tres letras son los permisos del propietario. El segundo conjunto de tres letras son los permisos del grupo del propietario. El tercer conjunto de tres letras son los permisos para el resto de los usuarios. chmod se puede usar de dos formas: $ chmod [u|g|o|a] [+|-] [r|w|x] archivo_a_modificar Esto significa, en el primer juego de corchetes, que puedo cambiar permisos para: usuario, grupo, otros o todos. El segundo juego de corchetes indica si agrego o quito permisos. El tercer juego de corchetes indica qu permisos voy a agregar o quitar. Por ltimo va el nombre del archivo. Ejemplo: $ ls -l total 14 -rw-r--r-- 1 pepe pepe 14 sep 15 23:56 pruebita1
$ chmod a+x pruebita1
$ ls -l total 14 -rwxr-xr-x 1 pepe pepe 14 sep 15 23:56 pruebita1* En este caso, tomamos el archivo pruebita1 que tena permisos de lectura y escritura para el propietario pero solo de lectura para el resto y lo volvimos ejecutable con chmod. El otro mtodo es utilizando un sistema de numeracin por el cual se le otorgan los permisos a quien corresponda con un solo nmero. La ponderacin es: Lectura (4), escritura (2) y ejecucin (1) De esta forma: $ chmod 644 pruebita1 deja nuevamente el archivo como al principio. $ ls -l total 14 -rw-r--r-- 1 pepe pepe 14 sep 15 23:56 pruebita1
Permiso SUID Sirve para lanzar proceso con archivos ejecutables con el identificndose como otro usuario. No se usa para directorios. [linus@lagonegro ~]$ chmod u+s script1
[linus@lagonegro ~]$ ls -l script1
rwsrx---- 1 linus linus 0 ago 8 09:45 script1* Permiso SGID Cuando se emplea para archivos con el bit de ejecucin activado se puede lanzar con ellos procesos con otro identificador de grupo. [linus@lagonegro ~]$ chmod 2750 script1
[linus@lagonegro ~]$ ls l script1
rwxrs---- 1 linus linus 0 ago 8 09:45 script1* Cuando a SGID se lo usa para directorios permite que se hereden sus grupo dueos [linus@lagonegro ~]$ ls -ld foldertwo drwxrwxrx 3 linus linus 4096 ago 7 21:57 foldertwo/
[linus@lagonegro ~]$ ls -l foldertwo total 8 lrwxrwxrwx 1 linus linus 13 ago 7 21:21 1ero -> primerarchivo
lrwxrwxrwx 1 linus linus 17 ago 7 21:57 first -> foldertwo/primero
drwxrwsrx 3 linus linus 4096 ago 7 21:57 foldertwo/
[linus@lagonegro ~]$ su Password:
[root@lagonegro linus]# touch foldertwo/prueba
[root@lagonegro linus]# ls -l foldertwo/prueba
rwr--r-- 1 root linus 0 ago 8 09:53 foldertwo/prueba Sticky Bit Sirve para compartir un directorio entre varios usuarios [root@lagonegro linus]# ls -ld /tmp
drwxrwxrwt 11 root root 300 ago 8 08:54 /tmp/
[root@lagonegro linus]# chmod 1777 foldertwo
[root@lagonegro linus]# ls -ld foldertwo
drwxrwxrwt 3 linus linus 4096 ago 8 09:53 foldertwo/
rm: borrar el fichero regular vaco foldertwo/primero protegido contra escritura? (s/n) s
rm: no se puede borrar foldertwo/primero: Operation not permitted
Representacin octal de los permisos Los permisos se representan tambin de manera numrica con cuatro dgitos (permiso especial, permisos del usuario dueo, permisos del grupo dueo y permisos del resto del mundo), de acuerdo a la siguiente tabla Permisos en forma octal r w x 2 2 2 1 2 0
4 2 1 Los permisos especiales tambin tienen su representacin mumrica tal como se muestra en la siguiente tabla Permisos especiales en forma octal SUID SGID Sticky Bit 2 2 2 1 2 0
4 2 1 Mscara del usuario: umask El comando umask sirve para cambiar los permisos de creacin de los archivos (0666) y de los directorios(0777). Los permisos por defecto se obtienen realizando una operacin OR lgica bit a bit entre los permisos predeterminados y la mscara del usuario. Generalmente la umask tiene un valor de 0022, obteniendo los permisos 0644 para archivos y 0755 para directorios. chgrp Cambia el grupo al que pertenece un archivo o directorio. La sintaxis es: # chgrp grupo archivo Y para el ejemplo anterior: # chgrp apache pruebita1 # ls -l total 14 -rw-r--r-- 1 pepe apache 14 sep 15 23:56 pruebita1 Ahora pruebita1 pas a pertenecer al grupo apache, aunque el propietario sigue siendo pepe. chown Cambia el propietario (owner) del archivo o directorio. Y en este caso tambin puede cambiar el grupo como agregado. Usa la misma sintaxis que chgrp solo que con el agregado: # chown usuario:grupo archivo Para entenderlo con el ejemplo anterior: # chown root:root pruebita1 # ls -l -rw-r--r-- 1 root root 14 sep 15 23:56 pruebita1 Observen que en un solo comando se cambi el usuario (de pepe a root) y el grupo (de apache a root). Categora: Material