Comandos Linux:
Para tener informacion relativa a un comando se debe teclear
el comando
$ man ls
Este comando nos dara infomación a cerca de ls listar
archivos.Lamentablemente, el manual no siempre es claro, ni esta
siempre disponible; esto implica aprenderse de memoria las cosas
mas importantes. Esto sucede naturalmente con el tiempo y la
practica.
Indice de Comandos según su
función
Para... |
un.... |
Uso el comando...
|
Borrar |
archivo |
rm |
Borrar |
directorio |
rmdir |
Crear |
archivo (vacio) |
touch |
Crear |
directorio |
mkdir |
Cambiar |
directorio |
cd |
Cambiar |
archivo |
sed |
Copiar |
archivo |
cp |
Editar |
archivo |
sed |
Encontrar |
archivos |
find |
Encontrar |
patron en archivo |
grep |
Encadenar |
archivos |
cat |
Mover |
archivos |
mv |
Ir a |
directorio |
cd |
Listar |
directorio |
ls |
Listar |
procesos |
ps |
Ordenar |
lineas de archivo |
sort |
Partir lineas |
de archivo |
cut |
Pegar |
archivos |
cat |
Pegar |
columnas de archivos |
paste |
Procesar |
archivos |
awk |
Renombrar |
archivo |
mv |
Reformatear |
archivo |
awk |
Ver |
sistema de arch. |
df |
Ver |
un archivo |
more |
Ver |
directorio |
ls |
Ver |
cabeza de archivo |
head |
Ver |
Cola de archivo |
tail |
El comando awk
es un lenguaje de
programacion. En otra leccion, daremos mas detalles de este
utilisimo comando. Sin embargo, muchas cosas se pueden hacer sin
mayores conocimientos de awk
.
awk
lee lineas de un archivo. Cada
linea se parte en campos, segun un separador, por
defecto espacio en blanco. A cada linea se le aplica uno o mas procedimientos
de awk. Un procedimiento consta de dos partes:
/patron/{accion}
El patron es una expresion regular (ver **),
igual que grep
o sed
; la accion es un
"programa", que se aplica a los campos de cada linea.
Veamos unos ejemplos:
awk '{print $1}' arch
Notese el uso de las comillas, necesarias para
evitar problemas con el shell. Imprime el primer campo de cada
linea-- es decir, imprime la primera columna de un archivo.
awk '{print $2, $1}' arch
Imprime la segunda, seguida por la primera,
columna de un archivo
Tambien pueden usarse expresiones aritmeticas:
awk '{print $1*$1, $2 - 5.0}' arch
Lo cual imprime el cuadrado de la primera
columna, etc.
Seleccionemos las lineas que continen el texto
"Hidrogeno"
awk '/Hidrogeno/{print $1, $2*3.1416}' arch
Si el programa de awk
es muy
complicado, puede residir en un archivo:
awk -f miprog arch
Esto le aplica el programa "miprog" al
archivo awk.
Los seleccionadores BEGIN y END seleccionan
procedimientos que se ejecutan respectivamente al principio y fin
de procesamineto:
awk '{s = s + $1}
END{print s}' arch
(notese que se puede dar retorno de linea dentro
de las comillas.) Este programa suma la primera columna del
archivo arch. El programa se basa en la (afortunada) casualidad
que awk
pone todas las variables numericas a cero
inicialmente. Una variable (s en el ejemplo anterior es numerica
cuando se usa aritmeticamente.
Regresar al Indice
La funcion "oficial" de cat
es de pegar o encadenar archivos. El archivo resultado va a
stdout. Cuando hay un solo archivo este aparece por pantalla. Por
eso, cat
se usa mucho para ver el contenido de un
archivo, aunque para eso es mejor more
.
Ejemplos:
cat a1 a2 a3 # a1, a2, a3 a pantalla
cat a1 a2 a3 >a4 # a1, a2, a3 a a4
cat a1 # a1 a pantalla
Regresar al Indice
Con cd
cambiamos el directorio donde
estamos trabajando.
Ejemplos: Cambio absoluto de directorio:
cd /usr/local/bin
Cambia al directorio citado,
cd subdir
Cambia al directorio subdir del directorio actual;
si este no existe hay error.
cd
Cambia al "directorio base" o "home
directory" designado por el super-usuario; en algunos
sistemas esto lo puede cambiar el usuario. El directorio base
esta grabado en la variable de shell $HOME
.
Regresar al Indice
El comando cp
copia archivos. El
ultimo argumento es el destino, los precedentes son el origen.
El comportamiento de cp
depende del
destino. Si el destino es un subdirectorio, los archivos son
copiados a ese subdirectorio; pero si el destino no existe o es
un archivo el origen es copiado al destino.
En el caso de multiples origenes, todos los
origenes son sucesivamente copiados al destino. Eso quiere decir
que en efecto solo el penultimo sobrevive la operacion, lo cual
es probablemente no deseable.
Ejemplos:
cp origen destino
copia el archivo origen
al archivo destino
.
cp origen1 origen2 destino
Si destino
es un directorio, origen1
y origen2
son copiados al directorio destino
.
Si destino es un archivo, el resultado es el mismo que si origen2
fuese copiado a destino.
cp -i origen destino
Copia origen
a destino
como en el caso anterior, pero en el caso que destino
ya existe pregunta antes de hacer la operacion final.
Regresar al Indice
Se usa para separar de cada linea de un archivo
uno o mas campos, o una parte del archivo. Los campos se
delimitan, por defecto, por espacio en blanco; pero se puede
especificar el contenido.
Ejemplos: Supongamos que el archivo prueba
tenga la siguiente apariencia:
1 arepas 250
2 tostones 350
3 cachapas 125
Entonces
cut -f2 prueba
produce:
arepas
tostones
cachapas
Es decir, separa el segundo campo ( -f2
),
mientras que
cut -c1-6 prueba
separa las primneras seis columnas y por lo
tanto produce
1 ar
2 to
3 ca
El delimitador de campos puede cambiar:
cut -d: -f1,2 /etc/passwd
Produce los dos primeros campos de /etc/passwd,
los cuales (verifiquelo) estan separados por los dos puntos :.
Regresar al Indice
Este comando da laa caracteristicas de un sistema
de archivos. Su primer uso es de ver que es lo que sta montado;
su segundo uso es de ver el espacio libre de un sistema de
archivos.
En mi sistema, el comando
df
produce
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/hda2 19424 18165 1259 94% /
/dev/hda3 51718 42116 9602 81% /usr
/dev/hda4 22578 13781 8797 61% /u
/dev/hda1 32678 20052 12626 61% /dos
De lo cual se puede ver, por ejemplo, que el
sistema raiz (/) esta a punto de llenarse. Tambien se puede ver
que hay cuatro sistemas de archivos.
La apariencia de la salida de este comando varia
entre diferentes versiones de Linux.
El comando find
se usa para
encontrar archivos en el arbol de directorios de Linux. La
estructura de directorios puede ser arbitraria. find
requiere un punto de partida y las caracteristicas del archivo a
encontrarse. Despues, find
revisa ese directorio y
todos los directorios subordinados, buscando los archivos que
cumplan la condicion(es) citada(s).
Lo examinaremos en mas detalle en otra leccion,
(ver **) pero algunas formas comunes son:
find . -name perdido -print
Esto busca en el directorio actual (.) todos
los archivos o directorios de nombre perdido
y pone
el resulotado a pantalla (-print). En algunas versiones modernas
de Linux, la opcion -print
no es necesaria, pero en
otras si (de lo contrario no pasa nada!)
find /usr/people -name '*.f' -print
Busca, a partir del directorio /usr/people,
todos los archivos que terminen en .f
. El uso de las
comillas es indispensable porque de lo contrario, el shell
sustituye por el asterisco los nombres de todos los archivos en
el directorio de partida.
Regresar al Indice
El nombre grep
es criptico:
significa "global regular expression and print",
pero su funcion es sencilla: encontrar un patron en una lista de
archivos (por ejemplo, todos los archivos que contengan la
palabra "CALL").
Para verdaderamente usar grep
y
muchos otros comandos de Linux hay que aprender el sistema de
expresar patrones, llamado expresiones regulares, lo cual
haremos en otra leccion (ver **). Por los momentos nos
contentaremos con patrones simples. Grep tiene muchas opciones (ver
manual) para buscar con o sin mayusculas, buscar archivos que no
contienen al patron (especie de anti-grep), etc.
grep CALL *.f
Encuentra todas las lineas de todos los
archivos que contienen la palabra CALL en todos los archivos que
terminan en .f. Esto se podria usar como base a una tabla de
referencias de un programa fortran.
grep juanr /etc/passwd
Busca la linea(s) de /etc/passwd que contiene(n)
"juanr".
Mucho cuidado con patrones que contienen
caracteres especiales del shell, como * y ?. Estos deben ser
escapados, o usar comillas.
Se usa para ver las primeras lineas (cabeza) de
un archivo. Por defecto, se ven 10 lineas, pero esto sae puede
cambiar. Por ejemplo,
head /etc/passwd
Pone en pantalla las primeras 10 lineas de /etc/passwd,
mientras que
head -2 /etc/passwd
pone en patalla las primeras dos.
Regresar al Indice
Probablemente el comando mas usado en Linux, ls
nos permite ver el contenido de un directorio y opcionalmente sus
subdirectorios. Este comando tiene muchas opciones. La forma mas
corriente es simplemente
ls
Que lista en varias columnas los nombres de los
archivos en el directorio actual. Otra variante comun es
ls -l
lo cual da el listado largo (permisos, tama#os,
due#o, etc.). Una opcion util es
ls -FC
que le pone a los ejecutables un asterisco, a los
directorios la barra /, y a los archivos comunes nada (pruebe
esto en us sistema). ls
tambien acepta
especificaciones:
ls -l *.f
Esto da todos los archivos que terminan en .f,
con listado largo. Tambien podemos ordenar la lista de varias
maneras, por ejemplo por edad:
ls -lt *.f
Esto nos lista en edad descendiente (mas viejo de
ultimo) los archivos en que terminan en .f, con listado largo.
Regresar al Indice
Para ver las paginas del manual, suponiendo que
esten en linea. Ejemplos:
man cp
Nos da la informacion en el manual sobre el
comando cp
. Para averiguar mas sobre el comando man,
pruebe
man man
Regresar al Indice
Crea un directorio vacio en el directorio actual,
por ejemplo
mkdir xyz
Crea el directorio xyz
en el
directorio actual.
Regresar al Indice
Sirve para examinar un archivo. Es preferible
al uso de cat
, que se usa para el mismo proposito,
porque more
permite retroceder, avanzar, o hacer
busquedas. Por ejemplo
more xyz
Nos permite ver el archivo xyz
en
pantalla. Una vez entrado a more
, se controla con
los siguientes comandos, o mejor dicho "subcomandos:
En algunos sistemas de sabor a SysV, este mismo
comando se llama pg
.
Regresar al Indice
El comando mv
es similar a cp
, excepto que borra el origen. En
otras palabras, mueve archivos de un directorio a otro, o de un
archivo a otro. En este ultimo caso, como el original desaparece,
mv
puede a veces tener efectos inesperados. El
ultimo argumento de mv
indica el destino del
movimiento; los primeros son los origenes.
Un uso muy frecuente de mv es de camiar el nombre a un archivo.
Supongamos, por ejemplo, que viejo
existe y le
queremos cambiar al nommbre nuevo
; nos aseguramos
primero con ls
que el nombre nuevo
no
existe; luego hacemos
mv viejo nuevo
con lo cual viejo
queda rebautizado a nuevo
.
Ahora suponemos que subdir
es un directorio. Para
mover archivos a este directorio, pudieramos usar
mv xyz uvw subdir
En este caso, xyz
y uvw
se mueven al
subdirectorio subdir
. Pero si subdir
fuese un archivo, o no existiese, este comando mueve,
esencialmente, el penultimo al ultimo-- un comportamiento
probablemente inesperado. Se pueden evitar accidentes con la
opcion interactiva:
mv -i xyz xxx
En este caso, mv
pregunta antes de mover; esto es
bueno en general pero latoso si hay que mover grandes cantidades
de archivos.
Regresar al Indice
rm
borra archivos y con ciertas
opciones, hasta directorios. Advertencia: este comando es irreversible.
Ejemplos:
rm xyz *.o
Este comando borra el archivo xyz y todos los
archivos que terminan en .o. PELIGRO: La especificacion *.o,
y todas las expresiones que contienen el asterisco, son sumamente
peligrosas. Por ejemplo supongamos que por error se deja un
espacio en blanco en el ejemplo anterior:
rm xyz * .o
Esto es desastroso: el asterisco borra todos los
archivos, silenciosamente, y despues se queja que "no puedo
encontrar .o". La mejor manera de evitar este accidente es
con cuidado. Otra posibilidad es de usar la opcion interactiva:
rm -i xxx xyz
Esto pregunta antes de efectuar la remocion.
Con la opcion recursiva, se puede borrar un
directorio y todos los archivos dentro de ese directorio. Esto es
equivalente a hacer cd a ese directorio, borrar todos los
archivos, subir, y hacer rmdir
. Use esta opcion con
sumo cuidado.
rm -r direc
Esto borra el directorio direc
y
todo lo que pueda estar por debajo de direc.
Regresar al Indice
Este comando borra un subdirectorio vacio. Si no
esta vacio, rmdir
se queja y no efectua la operacion.
rmdir direc
Borra el directorio direc
.
Regresar al Indice
paste
es lo suficientemente util
para incluirlo en esta lista de comandos basicos, porque puede
ahorrar mucho trabajo con el editor. Si tenemos dos archivos con
columnas, por ejemplo:
archivo a archivo b
xx yy uu vv
zz 11 ww 22
entonces el comando
paste a b >c
produce un archivo de esta forma:
xx yy uu vv
zz 11 ww 22
paste
tiene varias opciones que
controlan la seleccion de columnas. Ver el manual para mas
informacion. El comando no esta en algunos sistemas (como Sun OS
4.0).
Regresar al Indice
Nos recuerda, cuando estamos perdidos, del
nombre del directorio actual. pwd
nos da el camino
completo.
pwd
Regresar al Indice
Los principales usos de ps
son:
La sintaxis de ps
depende de la
variedad de Linux. En sistemas de origen Berkeley, la sintaxis
para un listado completo es
ps aux
Minetras en sistemas de variedad SysV, es
ps -ef
La forma corta (sin argumentos):
ps
Nos da los procesos de la actual sesion de login,
sin contar los que pudieran seguir corriendo de otras sesiones.
El formato de las salidas tambien depende de la
variedad del sistema.
Regresar al Indice
tail da las ultimas 10 lineas de un archivo, u
opcionalmente las ultimas n lineas del archivo. Por ejemplo
tail xxx
Da las ultimas 10 lineas del archivo xxx,
mientras que
tail -1 xxx
Da la ultima.
Este comando es util para seguir el progreso de
un programa de larga corrida.
Regresar al Indice
Este comando tiene dos usos: uno, crear un
archivo vacio y dos, actualizar la fecha de un archivo-- cambia
la fecha a la de "ahora". Esto a su vez se usa
frecuentemente con el programa make
, objeto de otra
sesion.
touch xxxx
Si xxxx
existe, le cambia la fecha;
si no crea ese archivo sin contenido alguno (longitud cero bytes).
Regresar al Indice
Este programa tiene su mayor utilidad en shell
scripts. Lo veremos en detalle en otra leccion. Para comenzar,
basta decir que sed
es un editor estilo "batch"
que aplica unos subcomandos a todas las lineas de un
archivo. Esto implica que para usar a sed
, hay que
aprenderse estos subcomandos. Lamentablemente, el manual
correspondiente es casi indescifrable. Afortunadamente, los
comandos se parecen a los de vi
, (ver **). Damos
aqui unas aplicaciones simples:
sed '500,600pq' archivote
las lineas de archivote
a entre la
numero 500 y la 600 van a pantalla; (esto es print o p
)
y luego sed
termina debido al q
(quit).
Esto se puede utilizar para seleccionar grupos de lineas de un
archivo.
sed 's/patron1/patron2/g' arch1 >arch2
Cambia todas las ocurrencias de "patron1"
en arch1por
"patron2" y por redireccion
manda el resultado a arch2
. (Normalmente sed
dirige sus salidas a stdout
. El ejemplo anterior es
mas sencillo que usar un editor.
Regresar al Indice
La funcion de sort
es de ordenar
las lineas de un archivo. Las lineas (registros o records
en la terminologia de sort
) se pueden subdividir en
campos; el ordenamiento puede ser alfabetico o numerico y el
orden ascendiente o descendiente.
sort
es un programa generalizado
de ordenamiento con muchas opciones; por lo tanto diferimos su
discusion completa hasta otra leccion (ver **). Mientras tanto,
unos ejemplos:
sort arch1 >arch2
Ordena alfabeticamente las lineas de arch1
.
Por defecto, sort
envia su salida a stdout
;
usamos redireccion para crear un archivo de salida. El
ordenamineto es alfabetico por defecto y el orden ascendiente (es
decir, "a" sale por delante de "z"). El campo
es todo el registro.
sort -n arch1 >arch2
Como el anterior, pero el orden es numerico.
Usase cuando hay columnas numericas. El orden es ascendiente (1
sale antes que 2).
sed sort -nr arch1 >arch2
El anterior, pero en orden descendiente. El
numero mayor sale primero.
sort +0 -1 arch1 >arch2
En este caso, el archivo esta dividido en
campos, deparados por defecto por blancos. El ordenamiento es
solo por primer campo. La manera de especificar los campos
significa "final de campo cero hasta principio de campo uno".
Regresar al Indice