Órdenes avanzadas

De Wikiunix

Órdenes
Compendio de las órdenes de un sistema Unix, con su modo de utilización y un enlace al manual del sistema
Tiempo 6 horas
Nivel Usuario habitual
Bibliografía Documentación básica y manual del sistema • Ubuntu Manpages
Prerrequisitos Órdenes básicasSoporte para pruebas

Normalmente se suelen emplear muy a menudo unas pocas órdenes (sobre todo en relación a la cantidad de programas disponibles), sin embargo, no está de más ver una referencia algo más completa de las órdenes clásicas de Unix, con algunos ejemplos de uso bastante útiles.

Si no deseas ver la clasificación de órdenes en función de su utilidad, puedes acceder a la clasificación por orden alfabético.

Contenido

Referencia general de órdenes

Órdenes varias

PasswdClearBannerEcho • set • EnvSuHistory

Órdenes de conexión / desconexión

LoginPoweroffRebootHalt

Órdenes de comunicación entre usuarios

WriteMesgMailMailxWallRmail

Órdenes de control de terminal

Stty

Órdenes de información

General

ManHelpWhereisWhatis

Fecha y hora

DateCal

De usuarios

WhoFingerLognameIdTty

Del sistema

Uname

Procesos

Ps

Uso de disco

DfDu

De red

Ifconfig

Operaciones con archivos

Archivos

ArCpioTar

Acceso a archivos

ChmodChgrpNewgrpUmask

Borrado

Rm

Búsqueda

FindGrepEgrepFgrep

Cambio de nombre

Mv

Clasificación

File

Comparación

CmpCommDiff

Copia

CpCatLn

Edición

EdViSedRed

Formato

PrDdCol

Listado

LsDirVdir

Mantenimiento del sistema de archivos

TouchSumUniq

Movimiento

Mv

Proceso de archivos por campo

AwkCut

Proceso de archivos por línea

SedAwkTrPrNl

Contador de palabras

Wc

Separación de archivos

CutSplitCsplit

Unión

CatPasteJoin

Visualización

CatMoreTailHeadPrNlOd

Operaciones con directorios

CdPwdLsDirVdirMkdirRmdirLnDirname

Ordenación

Sort

Procesos

PsShAtAtqAtrmBatchNohupKillTeeTrapNiceTime

Ejemplos

Órden Descripción
apropos <palabra>
Ver órdenes relacionadas con <palabra>
which <orden>
Ver la ruta completa de <orden>
time <orden>
Medir el tiempo que tarda <orden> en ejecutarse
nice info
Ejecutar orden (info en este caso) con prioridad baja
renice 19 -p $$
Dar prioridad baja al shell elegido. Usar para tareas no interactivas.

Navegación

Órden Descripción
cd -
Volver al directorio anterior
cd
Ir al directorio casa
(cd <directorio> && <orden>)
Ir a <directorio>, ejecutar <orden> y volver al directorio inicial
pushd .
Guardar el directorio actual en la pila. Si ejecutamos posteriormente popd volveremos al mismo.

Búsquedas

Órden Descripción
alias l='ls -l --color=auto'
Crear un alias para listar el directorio al introducir l
ls -lrt
Listar archivos por fecha
find -name '*.[ch]'
Buscar <expre> en este directorio y subdirectorios
find -type f -print0
Buscar <ejemplo> en todos los archivos regulares en este directorio y subdirectorios
find -maxdepth 1 -type f
Buscar <ejemplo> en todos los archivos regulares de este directorio
find -type f ! -perm -444
Buscar archivos sin permiso general de lectura
find -type d ! -perm -111
Buscar directorios sin permiso general de acceso
locate -r 'file[^/]*\.txt'
Buscar nombres en índice en cache (la expresión regular es igual a *file*.txt)
look <ref>
Búsqueda rápida (ordenada) de prefijo en diccionario
grep --color <ref> /usr/share/dict/palabras
Resaltar ocurrencias de expresión regular en diccionario

Archivos

Órden Descripción
gpg -c <fichero>
Encriptar <fichero>
gpg <fichero>.gpg
Desencriptar <fichero>
tar -c <directorio>/ | bzip2 > <directorio>.tar.bz2
Crear archivo compacto de <directorio>
bzip2 -dc <directorio>.tar.bz2 | tar -x
Extraer archivo compacto (usar gzip en vez de bzip2 para archivos tar.gz )
tar -c <dir>/ | gzip | gpg -c | ssh <usuario>@<equipo> 'dd of=<dir>.tar.gz.gpg'
Crear compactado encriptado de <dir> en <equipo>
find <dir>/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2
Crear compactado de subconjunto de <dir> y subdirectorios
find <dir>/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents
Copiar subconjunto de <dir> y subdirectorios
( tar -c <dir_a_copiar> ) | ( cd /<dir>/ && tar -x -p )
Copiar (con permisos) directorio <dir_a_copiar> a directorio <dir>
( cd <dir_a_copiar> && tar -c . ) | ( cd /<dir>/ && tar -x -p )
Copiar (con permisos) contenido del directorio <dir_a_copiar> a directorio <dir>
( tar -c <dir_a_copiar> ) | ssh -C <usuario>@<equipo> 'cd /<dir>/ && tar -x -p'
Copiar (con permisos) directorio <dir_a_copiar> a directorio remoto <dir>
dd bs=1M if=/dev/hda | gzip | ssh <usuario>@<equipo> 'dd of=hda.gz'
Respaldo de disco duro en equipo remoto

Descargas con wget

Órden Descripción
(cd cmdline && wget -nd -pHEKk http://<dir_web>.html)
Guardar en directorio actual una versión navegable de una página web
wget -c http://<dir_archivo>
Retomar descarga de un archivo parcialmente descargado
wget -r -nd -np -l1 -A '*.jpg' http://<dir>
Descargar una serie de archivos en el directorio actual
wget ftp://<dir_equipo>/archivo[1-9].iso/
El protocolo FTP permite globalizaciones directas
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head
Procesando directamente la salida
echo 'wget <url>' | at 01:00
Descargar la URL a 1AM al directorio actual
wget --limit-rate=20k <url>
Hacer descargas de baja prioridad (en este caso, no exceder los 20KB/s)
wget -nv --spider --force-html -i <url>
Revisar los enlaces de una página
wget --mirror <url>
Actualizar eficientemente una copia local de una página web (útil si usamos cron)


Redes

Órden Descripción
ethtool <interfaz>
Mostrar estado de la interfaz
ip link show
Listar interfaces
ip link set dev eth0 name wan
Renombrar eth0 a wan
ip addr add 1.2.3.4/24 brd + dev eth0
Agregar ip y máscara
ip link set dev interface up
Subir (o bajar) la interfaz
ip route add default via 1.2.3.254
Establecer 1.2.3.254 como valor por omisión para la puerta de enlace
tc qdisc add dev lo root handle 1:0 netem delay 20msec
Agregarle 20ms de espera al dispositivo de retorno (para hacer pruebas)
tc qdisc del dev lo root
Quitar la espera agregada antes
host <IP_o_url>
Obtener la dirección IP para el dominio o al revés
hostname -i
Obtener la dirección IP local
netstat -tupl
Listar los servicios de internet de un sistema
netstat -tup
Listar las conexiones activas desde/hacia un sistema


Espacio en disco

Órden Descripción
ls -lSr
Mostrar archivos, de menor a mayor
du -s * | sort -k1,1rn | head
Mostrar usuarios de disco principales en el directorio actual
df -h
Mostrar espacio libre de disco
df -i
Mostrar nodos-i libres
fdisk -l
Mostrar tamaños y tipos de particiones de disco
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n
Listar todos los paquetes por tamaño instalado (Bytes) de distribuciones RPMs
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
Listar todos los paquetes por tamaño instalado (Kbytes) de distribuciones deb
dd bs=1 seek=2TB if=/dev/null of=ext3.test
Crear un gran archivo de prueba (sin ocupar espacio)

Información del sistema

Órden Descripción
hdparm -i /dev/hda
Ver informe sobre partición hda
hdparm -tT /dev/hda
Hacer una prueba de velocidad de lectura en partición hda
badblocks -s /dev/hda
Hallar bloques ilegibles en partición hda
mount | column -t
Ver particiones montadas en el sistema (y alinear la salida)
cat /proc/partitions
Ver todas las particiones registradas en el sistema
grep MemTotal /proc/meminfo
Ver el total de RAM que registra el sistema
grep "model name" /proc/cpuinfo
Ver informe de CPU(s)
lspci -tv
Ver informe de PCI
lsusb -tv
Ver informe de USB

Ejercicios

Ejercicios de la sección de órdenes avanzadas
Aspectos pedagógicos: Permiten el aprendizaje de órdenes más complejas y a veces poco utilizadas comparadas con la utilidad que tienen.
Preparación previa: Para hacer estos ejercicios debes acceder al sistema con el usuario por defecto usuario (recuerda que la contraseña es unix). A continuación:
  • Ve al directorio casa del usuario actual. Comprueba que existe un directorio llamado unix y dentro de éste un subdirectorio llamado ordenes. Para ello ejecuta:
    ls unix
    Debe aparecer el directorio ordenes. En caso de que no exista alguno de estos elementos, puedes hacer varias cosas:
    1. Descargar el archivo comprimido con la jerarquía de elementos de comprobación que se encuentra en la portada del wiki y descomprimirlo en el directorio casa del usuario actual.
    2. Apagar la máquina virtual y restaurar el snapshot que funcionaba bien.
    3. Apagar la máquina virtual y borrarla eliminando el disco duro virtual. A continuación, descargar el disco duro y volver a configurar la máquina de nuevo.
  • Ve al subdirectorio unix/ordenes. Limpia el sistema antes de realizar los demás ejercicios para prevenir posibles incongruencias:
    sudo python ordenes.py -c
    o
    sudo python ordenes.py --clean
  1. Deseamos hacer una contabilidad de la información de ayuda incluida en nuestro sistema dentro del directorio /usr/share/doc.
    Para ello almacene en un fichero llamado stats-pdf, el nombre de todos los ficheros con extensión pdf que estén ubicados dentro de él.
    Realice la operación recursivamente.
  2. Después almacene en un fichero llamado stats-txt en el nombre de todos los ficheros con extensión txt que ocupen más de 100 bytes que estén ubicados dentro de él.
    Realice la operación recursivamente.
  3. Vuelve al directorio inicial (ordenes) y ejecuta el primer control intermedio:
    sudo python ordenes.py -p 1
    o
    sudo python ordenes.py --partial 1
Debes haber aprendido a: Queda por aprender:
Utilidad de la orden find Utilidad de la orden tar y grep
  1. También sería bueno tener una copia de todos los ficheros alojados en /usr/share/doc/lsb-release. Hágala con tar + gz y almacene el resultado en un fichero llamado backup.tgz dentro del directorio actual.
    Ojo: Trasládate al directorio /usr/share/doc/lsb-release en lugar de utilizar tar con la ruta absoluta, o la comprobación del ejercicio no saldrá correctamente.
  2. Después restaure la información en un directorio llamado prueba.
  3. Vuelve al directorio inicial (ordenes) y ejecuta el segundo control intermedio:
    sudo python ordenes.py -p 2
    o
    sudo python ordenes.py --partial 2
Debes haber aprendido a: Queda por aprender:
Utilidad de la orden tar Utilidad de la orden grep
  1. Queremos analizar el proceso de arranque de nuestro sistema. Para ello analizaremos la información en /var/log/dmesg y generaremos ficheros que lo resuman en el directorio tmp de la raíz del sistema de ficheros:
    • Copie todas las líneas que contengan Device o device a un fichero llamado "dispositivos.txt".
    • Almacene todas las líneas que tienen la cadena eth pero no la palabra driver en "red.txt"
    • Almacene todas las líneas que tengan la cadena PCI en cualquier combinación de mayúsculas y minúsculas en "pecei.txt"
  2. Vuelve al directorio inicial (ordenes) y ejecuta el control final:
    sudo python ordenes.py
Tras la realización de estos ejercicios debes tener clara la utilización y el manejo de las siguientes órdenes:
tarfindgrep


Si aún sigues teniendo dudas puedes:

  1. Releer el artículo Órdenes de nuevo al completo, o tan sólo las secciones en las que tengas dudas.
  2. Volver a desarrollar los ejercicios de nuevo.
  3. Revisar los artículos creados en el wiki para cada una de las órdenes.
  4. Revisar el manual de las órdenes implicadas (recuerda que tienes los enlaces en los artículos del wiki de cada una y además en está el manual del sistema).
Herramientas personales