Coreutils-5.2.1

El paquete Coreutils contiene utilidades para mostrar y establecer las características básicas del sistema.

Tiempo estimado de construcción:  0.9 SBU
Espacio requerido en disco:       69 MB

La instalación de Coreutils depende de: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

Instalación de Coreutils

Normalmente, el comando uname no funciona como debiera, ya que la opción -p siempre devuelve “unknown” (desconocido). Este parche corrige su funcionamiento en arquitecturas Intel:

patch -Np1 -i ../coreutils-5.2.1-uname-1.patch

No queremos que Coreutils instale su versión de hostname, pues es inferior a la versión suministrada por Net-tools. Evita su instalación aplicando este parche:

patch -Np1 -i ../coreutils-5.2.1-hostname-1.patch

Prepara Coreutils para su compilación:

DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr

Compila el paquete:

make

El banco de pruebas de Coreutils hace ciertas suposiciones relativas a la presencia de ficheros y usuarios que no son válidos tan pronto en la construcción de LFS. Por tanto tenemos que preparar varias cosas antes de poder ejecutar las pruebas. Si decides no ejecutar el banco de pruebas, salta hasta “Instala el paquete”.

Para poder ejecutar el banco de pruebas al completo, se debe instalar el programa su. No nos preocupamos de instalar este pequeño programa en Capítulo 5 porque necesita privilegios de root, así que hazlo ahora:

make install-root

Crea un fichero de “tabla de sistemas de ficheros montados” con:

touch /etc/mtab

Y crea dos grupos y un usuario ficticios:

echo "dummy1:x:1000" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd

Ahora todo está preparado para ejecutar el banco de pruebas. Primero ejecuta las pruebas que requieren que se ejecuten como root:

export NON_ROOT_USERNAME=dummy; make check-root

A continuación ejecuta el resto como usuario dummy:

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Cuando termines con las pruebas, elimina los grupos y el usuario ficticios:

sed -i.bak '/dummy/d' /etc/passwd /etc/group

Instala el paquete:

make install

Mueve algunos programas a sus ubicaciones adecuadas:

mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin

Usaremos el programa kill del paquete Procps (que se instala más tarde en este capítulo como /bin/kill). Elimina el instalado por Coreutils:

rm /usr/bin/kill

Finalmente, crea dos enlaces simbólicos para cumplir con el FHS:

ln -s test /bin/[
ln -s ../../bin/install /usr/bin

Contenido de Coreutils

Programas instalados: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami y yes

Descripciones cortas

basename elimina los directorios y los sufijos de los nombres de ficheros.

cat concatena ficheros en la salida estándar.

chgrp cambia el grupo de cada fichero dado al grupo especificado. El grupo puede indicarse tanto por su nombre como por su identificador numérico.

chmod cambia los permisos de cada fichero dado al modo indicado. El modo puede ser una representación simbólica de los cambios a hacer o un número octal que representa los nuevos permisos.

chown cambia el usuario y/o el grupo al que pertenece cada fichero dado al par usuario:grupo indicado.

chroot ejecuta un comando usando el directorio especificado como directorio /. Dicho comando puede ser un interprete de comandos interactivo. En muchos sistemas solo root puede hacer esto.

cksum muestra la suma de comprobación CRC (Comprobación Cíclica Redundante) y cuenta los bytes de cada fichero especificado.

comm compara dos ficheros ordenados, sacando en tres columnas las líneas que son únicas y las líneas que son comunes.

cp copia ficheros.

csplit trocea un fichero en varios nuevos ficheros, separándolos de acuerdo a un patrón indicado o a un número de líneas, y muestra el número de bytes de cada nuevo fichero.

cut imprime fragmentos de líneas, seleccionando los fragmentos de acuerdo a los campos o posiciones indicadas.

date muestra la fecha y hora actual en un formato determinado o establece la fecha y hora del sistema.

dd copia un fichero usando el tamaño y número de bloques indicado, mientras que, opcionalmente, realiza conversiones en él.

df muestra la cantidad de espacio disponible (y usado) en todos los sistemas de ficheros montados, o solo del sistema de ficheros en el que se encuentran los ficheros indicados.

dir es lo mismo que ls.

dircolors imprime comandos para modificar la variable de entorno LS_COLOR, para cambiar el esquema de color usado por ls.

dirname elimina los sufijos que no son directorios del nombre de un fichero.

du muestra la cantidad de espacio en disco usado por el directorio actual o por cada directorio indicado, incluyendo todos sus subdirectorios, o por cada fichero indicado.

echo muestra la cadena indicada.

env ejecuta un programa en un entorno modificado.

expand convierte las tabulaciones a espacios.

expr evalúa expresiones.

factor muestra los factores primos de los números enteros especificados.

false no hace nada, infructuoso. Siempre termina con un código de estado que indica un fallo.

fmt reformatea cada párrafo de los ficheros especificados.

fold reajusta la longitud de las líneas de cada fichero dado.

groups muestra los grupos a los que pertenece un usuario.

head imprime las 10 primeras líneas (o el número de líneas indicado) de un fichero.

hostid muestra el identificador numérico (en hexadecimal) de la máquina actual.

hostname muestra o establece el nombre de la máquina actual.

id muestra los identificadores efectivos de usuario y grupo, y los grupos a los que pertenece, del usuario actual o de un usuario dado.

install copia ficheros, establece sus permisos y, si es posible, su propietario y grupo.

join une a partir de dos ficheros las líneas que tienen campos de unión idénticos.

link crea un enlace duro con el nombre indicado de un fichero dado.

ln crea enlaces duros o blandos (simbólicos) entre ficheros.

logname muestra el nombre de acceso (login name) del usuario actual.

ls lista el contenido de cada directorio indicado. Por defecto ordena los ficheros y subdirectorios alfabéticamente.

md5sum muestra o verifica sumas de comprobación MD5 (Mensaje de Resúmen 5).

mkdir crea directorios con los nombres indicados.

mkfifo crea tuberías (FIFO, el primero en entrar, el primero en salir) con los nombres indicados.

mknod crea dispositivos de nodos con los nombres indicados. Un dispositivo de nodo es un fichero especial de caracteres o un fichero especial de bloques o una tubería.

mv mueve o renombra ficheros o directorios.

nice ejecuta un programa con una prioridad distinta.

nl numera las líneas de los ficheros dados.

nohup ejecuta un comando que no se interrumpe cuando se cierra la sesión, con su salida redirigida a un fichero de registro.

od vuelca ficheros en octal y otros formatos.

paste mezcla los ficheros indicados, uniendo secuencialmente las líneas correspondientes de uno y otro, separándolas con tabulaciones.

pathchk comprueba si los nombres de ficheros son válidos o portables.

pinky es una utilidad parecida a finger. Muestra algo de información sobre un determinado usuario.

pr pagina o encolumna el texto de un fichero para imprimirlo.

printenv muestra el entorno.

printf muestra los argumentos dados de acuerdo al formato indicado. Muy parecido a la función printf de C.

ptx genera un índice permutado de los contenidos de un fichero, con cada palabra clave en su contexto.

pwd muestra el nombre del directorio de trabajo actual.

readlink muestra el valor del enlace simbólico indicado.

rm elimina ficheros o directorios.

rmdir elimina directorios, si están vacíos.

seq muestra una secuencia de números, dentro de un cierto rango y con un cierto incremento.

sha1sum muestra o verifica sumas de comprobación SHA1 de 160 bits.

shred sobreescribe los ficheros indicados repetidamente con patrones extraños, haciendo realmente difícil recuperar los datos.

sleep fija una parada por el espacio de tiempo indicado.

sort ordena las líneas de los ficheros indicados.

split divide un fichero en trozos, por tamaño o por número de líneas.

stty establece o muestra los ajuste de línea del terminal.

su ejecuta un intérprete de comandos con un identificador de usuario y de grupo diferentes.

sum muestra la suma de comprobación y el número de bloques para cada fichero dado.

sync refresca los almacenadores intermedios de los sistemas de ficheros. Fuerza el guardado de los bloques modificados al disco y actualiza el superbloque.

tac concatena los ficheros indicados en orden inverso..

tail imprime las últimas 10 líneas (o el número de líneas indicado) de cada fichero dado.

tee lee de la entrada estándar y escribe tanto en la salida estándar como en los ficheros indicados.

test comprueba el tipo de los ficheros y compara valores.

touch cambia las fechas de modificación o acceso de cada fichero especificado, poniéndole la fecha actual. Si un fichero no existe crea uno vacío.

tr convierte, altera y/o borra caracteres de la entrada estándar.

true no hace nada, conseguido. Siempre termina con un código de estado que indica éxito.

tsort realiza una ordenación topológica. Escribe una lista totalmente ordenada de acuerdo con el orden parcial del fichero especificado.

tty muestra el nombre de fichero del terminal conectado a la entrada estándar.

uname muestra información del sistema.

unexpand convierte los espacios en tabulaciones.

uniq elimina líneas consecutivas duplicadas.

unlink elimina el fichero indicado.

uptime muestra cuanto tiempo hace que el sistema está en marcha, cuantos usuarios hay conectados y los índices de carga del sistema.

users muestra los nombres de los usuarios conectados actualmente.

vdir es lo mismo que ls -l.

wc muestra el número de líneas, palabras y bytes de un fichero, y una línea con el total si se ha especificado más de uno.

who muestra quién está conectado.

whoami muestra el nombre de usuario asociado con el identificador de usuario efectivo actual.

yes muestra en pantalla 'y' o una cadena de texto dada indefinidamente, hasta que es matado.