Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 264

Machine Translated by Google

www.dbooks.org
Machine Translated by Google

Suficiente  Linux
Aprendiendo  sobre  Linux  un  comando  a  la  vez

malcolm  maclean
Este  libro  está  a  la  venta  en  http://leanpub.com/jelinux

Esta  versión  fue  publicada  el  2017­04­30

Este  es  un  libro  Leanpub .  Leanpub  empodera  a  los  autores  y  editores  con  el  proceso  Lean  Publishing.  Lean  
Publishing  es  el  acto  de  publicar  un  libro  electrónico  en  progreso  utilizando  herramientas  livianas  y  muchas  
iteraciones  para  obtener  comentarios  de  los  lectores,  girar  hasta  que  tenga  el  libro  correcto  y  generar  
tracción  una  vez  que  lo  tenga.

Este  trabajo  tiene  una  licencia  Creative  Commons  Attribution­NonCommercial­ShareAlike  3.0  Unported  License
Machine Translated by Google

También  por  Malcolm  Maclean
Consejos  y  trucos  de  D3  v3.x

Consejos  y  trucos  del  folleto

Raspberry  Pi:  medir,  registrar,  explorar.

Coautoría  suficiente  en  Leanpub

Solo  suficiente  ownCloud  en  una  Raspberry  Pi

Bastante  Raspberry  Pi

Solo  suficiente  fantasma  en  una  Raspberry  Pi

Solo  suficientes  Nagios  en  una  Raspberry  Pi

Consejos  y  trucos  de  D3  v4.x

Helado  nunca  suficiente

www.dbooks.org
Machine Translated by Google

Para  el  equipo
Machine Translated by Google

Contenido

Introducción . . . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . . . 1
¡Bienvenido! . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 1
¿Para  quién  es  este  libro? . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 1
Otros  recursos  útiles. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 2

El  Proyecto  de  Información  de  Linux   . . . . . . . . . . . . . . . . . . . . . 2

(linfo.org) . .   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

linuxconfig.org.   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


raspberrypi.org.   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
howtovmlinux.com.  techmint.com:  Guía  práctica   . . . de  
. L.inux. . . .
. . . . . . . . . . . . . . . . 2

Conceptos  Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


. . . . . . . . 3
¿Qué  es  Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  3
Ejecutando  Comandos  en  Linux. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 5
El  comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  6
Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  9
comodines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  9
Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  10
Expresiones  regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 11
Haga  coincidir  un  solo  carácter  definido  con  corchetes  ([]) . . . . .
. . . . . . . .  13
Coincidencia  al  principio  de  una  cadena  (ˆ) . . . . . . . . . . . . . . . . .
. . . . . . . . 14
Coincidencia  al  final  de  una  cadena  ($) . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  15
Coincide  con  cualquier  carácter  individual  (.) . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .  15
Coincide  cuando  el  carácter  anterior  aparece  0  o  1  vez  solamente  (?) . . . . . . . . . .  dieciséis
Coincidencia  cuando  el  carácter  anterior  aparece  0  o  más  veces  (*) . . . . . . . . . . .  dieciséis
Coincidencia  cuando  el  carácter  anterior  aparece  1  o  más  veces  (+) . . . . . . . . . . .  17
Agrupar  partes  de  una  expresión  de  búsqueda  (()) . . . . . . . . . . . . . . . . . . .  17
Encuentra  un  grupo  de  valores  u  otro  (|) . . . . . . . . . . . . . . . . . . . . . . . .  18
Expresiones  regulares  extendidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
Tuberías  (|) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
Estructura  de  directorios  de  Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
/bin . . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
/   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
. . . . .
desarrollo . /etc . . /etc/cron.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
/etc/rc?.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23

www.dbooks.org
Machine Translated by Google

CONTENIDO

/casa . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
/lib . . / . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
perdido+encontrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
/medios . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
mnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/  optar . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
proc . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
raíz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/sbin . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
srv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/tmp . . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
/usr/bin . /usr/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
/usr/local . . . /usr/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
sbin . /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
/var/lib . /var/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
registro . /var/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
carrete . . . /var/tmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
Direccionamiento  absoluto  y  relativo  del  nombre  de  ruta. . . . . . . . . . . . . . . . . . . . . .  27
Nombres  de  rutas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
Direccionamiento  de  nombre  de  ruta  absoluta. . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
Direccionamiento  de  nombre  de  ruta  relativo. . . . . . . . . . . . . . . . . . . . . . . . . . . .  28
El  atajo  de  'casa'. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28
Todo  es  un  archivo  en  Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
Archivos  tradicionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
Directorios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
Información  del  sistema . . . . . . . . . . . .
. . .. . . . . . . . . . . . . . . . . . .  29
Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  30
Archivos  e  inodos  de  Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31
El  nombre  del  archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31
El  inodo.   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32
Enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33
. .
Enlaces  blandos  (también  conocidos  como  enlaces  simbólicos,  también  conocidos  como  enlaces  simbólicos). . .
. . . . . . . . . . . . . . . .  34
Enlaces  duros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35
Enlaces  comparados. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .  35
Edición  de  archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36
El  editor  nano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37
Scripting . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .  39
Escribiendo  nuestro  Guión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39
Haga  que  el  script  sea  ejecutable. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .  40
Coloque  el  script  en  algún  lugar  donde  el  shell  pueda  encontrarlo. . . . . . . . . . . . . . . . . 41

Comandos  Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43


Machine Translated by Google

CONTENIDO

Administración  de  archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43


cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
chgrp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
chmod . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
Chon . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  54
cp  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  57
encontrar . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59
gzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
en . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  70
ls . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
mkdir . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
m.v. . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
pwd  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  81
rm . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  82
rmdir . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  85
alquitrán . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87
Acceso  al  contenido  del  archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  90
gato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  90
cortar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  94
diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  98
grep  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  102
cabeza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  108
menos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
más . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  116
cola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  119
Sistemas  de  archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
fdisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
mkfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  127
montar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  130
desmontar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  134
Información  del  sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136
fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  136
d.f. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
du . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
gratis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  147
Procesos.   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  151
crontab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  151
matar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  155
Mátalos  a  todos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  157
p.d.  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  159
arriba  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  164
Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  170
rizo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  170
anfitrión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  173
siconfig .  ip  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  176
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  180

www.dbooks.org
Machine Translated by Google

CONTENIDO

netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  186
hacer  ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  192
scp  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  196
sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  200
ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  204
trazar  ruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  207
wget  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  209
Misceláneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  215
apt­get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  215
claro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  219
eco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  220
agregar  grupo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  223
hombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Modprobe .   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  227
contraseña  _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  230
cerrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  232
su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  234
sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  236
agregar  usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
modo  de  usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  245
quién  soy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  248

Hoja  de  trucos  de  comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  250

Hoja  de  referencia  de  la  estructura  del  directorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  253

Hoja  de  referencia  de  expresiones  regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  254

Hoja  de  referencia  'buscar' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  255


Machine Translated by Google

Introducción
¡Bienvenido!

Hola.  Felicitaciones  por  estar  lo  suficientemente  interesado  en  el  proceso  de  aprender  sobre  Linux  como  para  haber  
conseguido  este  libro.

Si  aún  no  lo  ha  adivinado,  este  será  un  viaje  de  descubrimiento  para  ambos.  He  'jugado'  con  computadoras  y  Linux  durante  
muchos  años,  pero  siempre  sentí  que  faltaba  algo.  Así  que  he  decidido  escribir  un  libro  sobre  los  comandos  de  Linux  y  la  
filosofía  detrás  de  ellos  para  ayudar  a  mi  comprensión  y,  con  suerte,  a  la  suya  también.  Sé  que  este  tipo  de  esfuerzo  ya  lo  
han  hecho  otros,  pero  creo  que  es  útil  que  la  gente  tenga  opciones :­).

Al  igual  que  otros  libros  que  he  escrito  (o  estoy  en  proceso  de  escribir),  seguirán  siendo  un  trabajo  en  progreso.  Son  
documentos  vivos,  abiertos  a  la  retroalimentación,  comentario,  expansión,  cambio  y  mejora.  Por  favor,  siéntase  libre  de  dar  
su  opinión  sobre  las  formas  en  que  puedo  mejorar  las  cosas.  Su  entrada  sería  muy  apreciada.

Estoy  seguro  de  que  la  mayoría  de  los  autores  tratan  de  ser  lo  más  accesibles  posible.  Me  gustaría  hacer  lo  mismo,  pero  ten  cuidado...
Es  muy  probable  que  si  me  hace  una  pregunta  técnica  no  sepa  la  respuesta.  Por  lo  tanto,  sea  amable  con  sus  correos  
electrónicos :­).

Correo  electrónico:  [email protected]

¿Para  quién  es  este  libro?

¡Tú!

Solo  por  interesarte  y  conseguir  una  copia  de  este  libro,  has  demostrado  un  deseo  de  aprender,  explorar  y  desafiarte  a  ti  
mismo.  Ese  es  el  criterio  más  importante  que  querrás  tener  cuando  pruebes  algo  nuevo.  Su  nivel  de  experiencia  vendrá  en  
segundo  lugar  a  su  deseo  de  aprender.

Habiendo  dicho  eso,  necesitará  acceso  a  una  línea  de  comando  de  Linux  en  alguna  parte.  Esto  podría  significar  que  puede  
hacer  lo  propio  con  una  Raspberry  Pi¹  (Mi  recomendación)  o  podría  ejecutar  un  servidor  Linux  como  una  máquina  virtual  
bajo  otro  sistema  operativo.  De  lo  contrario,  podría  iniciar  Linux  desde  un  CD  en  vivo.  Lamentablemente,  no  voy  a  explicar  
cómo  lograr  esta  parte  de  la  ecuación,  pero  no  dude  en  consultar  'Just  Enough  Raspberry  Pi²'  para  inspirarse.

Lo  mejor  que  debe  recordar  es  que  antes  de  aprender  algo  nuevo,  casi  siempre  parece  indistinguible  de  la  magia,  pero  una  
vez  que  comienza  a  jugar,  el  misterio  se  desvanece  rápidamente.

¹https://www.raspberrypi.org/  
²https://leanpub.com/jerpi

www.dbooks.org
Machine Translated by Google

Introducción 2

Otros  recursos  útiles

El  proyecto  de  información  de  Linux  (linfo.org)

El  Proyecto  de  información  de  Linux  tiene  una  gran  variedad  de  información  que  incluye  una  excelente  sección  'Linux  
para  principiantes  absolutos³'  y  una  variedad  de  descripciones  de  comandos .

linuxconfig.org

Linuxconfig.org  tiene  una  muy  buena  variedad  de  tutoriales   y  una  gran  referencia  de  comandos   que  incluye  un  


enlace  separado  a  las  páginas  man  para  el  comando  equivalente.

raspberrypi.org

La  'nave  nodriza'  de  raspberry  Pi  de  raspberrypi.org  tiene  toneladas  de  buena  información  sobre  Pi  y  que  incluye  guías  
para  usar  Linux   con  la  computadora  pequeña  favorita  de  todos.

howtovmlinux.com

Este  gran  sitio  dirigido  por  Farooq  Mohammed  Ahmed   tiene  artículos  bien  explicados  sobre  Linux   y  Raspberry  Pi¹ .

techmint.com:  Guía  práctica  de  Linux

Un  sitio  realmente  útil  con  una  gran  variedad  de  instrucciones,  tutoriales  y  guías  de  Linux.

³http://www.linfo.org/newbies.html  
http://www.linfo.org/command_index.html  
https://linuxconfig.org/linux­tutorials  
https://linuxconfig.org/linux­commands  
https: //www.raspberrypi.org/documentation/linux/  
http://uk.linkedin.com/in/farooqmohammedahmed  
http://www.howtovmlinux.com/articles/linux.html  
¹ http://www.howtovmlinux.com/  articulos/rasberry­pi.html
Machine Translated by Google

Conceptos  de  Linux
¿Qué  es  Linux?

En  su  forma  más  simple,  la  respuesta  a  la  pregunta  "¿Qué  es  Linux?"  es  que  es  un  sistema  operativo  de  
computadora.  Como  tal,  es  el  software  que  forma  una  base  que  permite  ejecutar  las  aplicaciones  que  se  
ejecutan  en  ese  sistema  operativo.

En  la  forma  más  estricta  de  hablar,  el  término  'Linux'  se  refiere  al  kernel  de  Linux.  Es  decir,  el  núcleo  central  
del  sistema  operativo,  pero  el  término  se  usa  a  menudo  para  describir  el  conjunto  de  programas,  herramientas  
y  servicios  que  se  agrupan  junto  con  el  kernel  de  Linux  para  proporcionar  un  sistema  operativo  completamente  
funcional.

Un  sistema  operativo  es  un  software  que  administra  los  recursos  de  hardware  y  software  de  la  computadora  
para  aplicaciones  informáticas.  Por  ejemplo  Microsoft  Windows  podría  ser  el  sistema  operativo  que  permita  
ejecutar  la  aplicación  de  navegador  Firefox  en  nuestro  ordenador  de  sobremesa.

Linux¹¹  es  un  sistema  operativo  de  computadora  que  se  puede  distribuir  como  software  gratuito  y  de  código  
abierto¹².  El  componente  definitorio  de  Linux  es  el  kernel  de  Linux,  un  kernel  de  sistema  operativo  lanzado  
por  primera  vez  el  5  de  octubre  de  1991  por  Linus  Torvalds.

Linux  se  desarrolló  originalmente  como  un  sistema  operativo  gratuito  para  computadoras  personales  
basadas  en  Intel  x86.  Desde  entonces,  se  ha  puesto  a  disposición  de  una  amplia  gama  de  plataformas  de  
hardware  informático  y  es  un  sistema  operativo  líder  en  servidores,  ordenadores  centrales  y  superordenadores.  
Linux  también  se  ejecuta  en  sistemas  integrados,  que  son  dispositivos  cuyo  sistema  operativo  suele  estar  
integrado  en  el  firmware  y  está  muy  adaptado  al  sistema;  esto  incluye  teléfonos  móviles,  tabletas,  enrutadores  
de  red,  controles  de  automatización  de  instalaciones,  televisores  y  consolas  de  videojuegos.  Android,  el  
sistema  operativo  más  utilizado  para  tabletas  y  teléfonos  inteligentes,  se  basa  en  el  kernel  de  Linux.

La  mascota  de  Linux  'Tux'

¹¹http://en.wikipedia.org/wiki/Linux  
¹²http://en.wikipedia.org/wiki/Free_and_open­source_software

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 4

El  desarrollo  de  Linux  es  uno  de  los  ejemplos  más  destacados  de  colaboración  de  software  libre  y  de  código  
abierto.  Por  lo  general,  Linux  se  empaqueta  en  una  forma  conocida  como  distribución  de  Linux,  tanto  para  uso  
de  escritorio  como  de  servidor.  Las  distribuciones  principales  de  Linux  populares  incluyen  Debian,  Ubuntu  y  el  
Red  Hat  Enterprise  Linux  comercial.  Las  distribuciones  de  Linux  incluyen  el  kernel  de  Linux,  las  utilidades  y  
bibliotecas  de  soporte  y,  por  lo  general,  una  gran  cantidad  de  software  de  aplicación  para  llevar  a  cabo  el  uso  
previsto  de  la  distribución.

Una  distribución  destinada  a  ejecutarse  como  un  servidor  puede  omitir  todos  los  entornos  de  escritorio  gráficos  
de  la  instalación  estándar  y,  en  su  lugar,  incluir  otro  software  para  configurar  y  operar  una  pila  de  soluciones  
como  LAMP  (Linux,  Apache,  MySQL  y  PHP).  Debido  a  que  Linux  se  redistribuye  libremente,  cualquiera  puede  
crear  una  distribución  para  cualquier  uso  previsto.

Linux  no  es  un  sistema  operativo  que  la  gente  use  normalmente  en  sus  computadoras  de  escritorio  en  el  hogar  
y,  como  tal,  los  usuarios  regulares  de  computadoras  pueden  encontrar  alta  la  barrera  de  entrada  para  usar  
Linux.  Esto  se  hace  más  fácil  mediante  el  uso  de  interfaces  gráficas  de  usuario  que  se  incluyen  con  muchas  
distribuciones  de  Linux,  pero  estas  superposiciones  gráficas  son  una  especie  de  cuña  para  el  funcionamiento  
subyacente  de  la  computadora.  Se  puede  obtener  un  mayor  grado  de  control  y  flexibilidad  al  trabajar  con  Linux  
en  lo  que  se  llama  la  'Línea  de  comandos' (o  CLI),  y  el  floreciente  campo  de  los  elementos  informáticos  
educativos,  como  Raspberry  Pi¹³,  ha  brindado  acceso  a  un  nuevo  mundo .  de  oportunidades  de  aprendizaje  
en  este  nivel  más  fundamental.

¹³http://raspberrypi.org/
Machine Translated by Google

Conceptos  de  Linux 5

Ejecutando  Comandos  en  Linux
Un  comando  es  una  instrucción  dada  por  un  usuario  que  le  dice  a  la  computadora  que  lleve  a  cabo  una  acción.  Esto  
podría  ser  para  ejecutar  un  solo  programa  o  un  grupo  de  programas  vinculados.  Los  comandos  generalmente  se  inician  
escribiéndolos  en  la  línea  de  comando  (en  una  terminal)  y  luego  presionando  la  tecla  ENTER,  que  los  pasa  al  shell.

La  terminal

Una  terminal  se  refiere  a  un  programa  contenedor  que  ejecuta  un  shell.  Esto  solía  significar  un  dispositivo  físico  que  
consiste  en  poco  más  que  un  monitor  y  un  teclado.  A  medida  que  los  sistemas  Unix/Linux  avanzaban,  el  concepto  de  
terminal  se  abstrajo  en  software.  Ahora  tenemos  programas  como  LXTerminal  (en  Raspberry  Pi)  que  abrirá  una  ventana  
en  una  interfaz  gráfica  de  usuario  (GUI)  que  ejecutará  un  shell  en  el  que  puede  ingresar  comandos.  Alternativamente,  
podemos  prescindir  de  la  GUI  por  completo  y  simplemente  comenzar  en  la  línea  de  comando  cuando  iniciamos.

El  shell  es  un  programa  que  en  realidad  procesa  comandos  y  devuelve  resultados.  Cada  sistema  operativo  Linux  tiene  
al  menos  un  shell  y  la  mayoría  tiene  varios.  El  shell  predeterminado  en  la  mayoría  de  los  sistemas  Linux  es  bash.

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 6

El  comando
Los  comandos  en  los  sistemas  operativos  Linux  son  comandos  integrados  o  externos.  Los  comandos  incorporados  son  
parte  del  shell.  Los  comandos  externos  son  ejecutables  (programas  escritos  en  un  lenguaje  de  programación  y  luego  
compilados  en  un  binario  ejecutable)  o  scripts  de  shell.

Un  comando  consta  de  un  nombre  de  comando  seguido  generalmente  por  una  o  más  secuencias  de  caracteres  que  
incluyen  opciones  y/o  argumentos.  Cada  una  de  estas  cadenas  está  separada  por  un  espacio  en  blanco.  La  sintaxis  
general  de  los  comandos  es;

nombre  de  comando  [opciones]  [argumentos]

Los  corchetes  indican  que  los  elementos  adjuntos  son  opcionales.  Los  comandos  suelen  tener  algunas  opciones  y  utilizan  
argumentos.  Sin  embargo,  hay  algunos  comandos  que  no  aceptan  argumentos  y  algunos  sin  opciones.  Como  ejemplo,  
podemos  ejecutar  el  comando  ls  sin  opciones  ni  argumentos  de  la  siguiente  manera;

ls

El  comando  ls  enumerará  el  contenido  de  un  directorio  y,  en  este  caso,  se  espera  que  el  comando  y  la  salida  tengan  un  
aspecto  similar  al  siguiente;

pi@frambuesapi  ~  $  ls
Escritorio python_games

Opciones

Una  opción  (también  conocida  como  interruptor  o  indicador)  es  un  código  de  una  sola  letra,  o  a  veces  una  sola  palabra  o  
conjunto  de  palabras,  que  modifica  el  comportamiento  de  un  comando.  Cuando  se  utilizan  varias  opciones  de  una  sola  
letra,  todas  las  letras  se  colocan  una  al  lado  de  la  otra  (no  separadas  por  espacios)  y  pueden  estar  en  cualquier  orden.  El  
conjunto  de  opciones  generalmente  debe  estar  precedido  por  un  solo  guión,  nuevamente  sin  espacio  intermedio.

Entonces,  nuevamente  usando  ls  si  introducimos  la  opción  ­l  podemos  mostrar  el  total  de  archivos  en  el  directorio  y  
subdirectorios,  los  nombres  de  los  archivos  en  el  directorio  actual,  sus  permisos,  la  cantidad  de  subdirectorios  en  los  
directorios  enumerados,  el  tamaño  del  archivo,  y  la  fecha  de  la  última  modificación.

El  comando  que  ejecutamos  por  lo  tanto  se  ve  así;

ls­l

Entonces,  el  comando  (con  la  opción  ­l )  y  la  salida  se  verían  de  la  siguiente  manera;
Machine Translated by Google

Conceptos  de  Linux 7

pi@frambuesapi  ~  $  ls  ­l
26  totales

drwxr­xr­x  2  pi  pi  4096  20  de  febrero  08:07  Escritorio  drwxrwxr­x  2  pi  pi  4096  

27  de  enero  08:34  python_games

Aquí  podemos  ver  un  cambio  bastante  radical  en  el  formato  y  contenido  de  la  información  devuelta.

Argumentos

Un  argumento  (también  llamado  argumento  de  línea  de  comando)  es  un  nombre  de  archivo  u  otros  datos  que  
se  proporcionan  a  un  comando  para  que  el  comando  lo  use  como  entrada.

Usando  ls  nuevamente,  podemos  especificar  que  deseamos  enumerar  el  contenido  del  directorio  python_games  
(que  pudimos  ver  cuando  ejecutamos  ls)  usando  el  nombre  del  directorio  como  argumento  de  la  siguiente  
manera;

ls  python_games

El  comando  (con  el  argumento  python_games )  y  el  resultado  tendrían  el  siguiente  aspecto  (en  realidad,  eliminé  
bastantes  archivos  para  hacerlo  un  poco  más  legible);

pi@raspberrypi  ~  $  ls  python_games  4row_arrow.png  

gem4.png  4row_black.png  gem5.png  4row_board.png   pentomino.py  

gem6.png  4row_computerwinner.png  gem7.png   pinkgirl.png  

4row_humanwinner.png  gem1.png  gem2.png  gem3.png Plain_Block.png  

princess.png  

gemgem.py RedSelector.png  
partido5.wav Wall_Block_Tall.png  

memorypuzzle_offuscated.py  Wood_Block_Tall.png  memorypuzzle.py

gusano.py

Poniendolo  todo  junto

Y  como  nuestro  ejemplo  final,  podemos  combinar  nuestro  comando  (ls)  con  una  opción  (­l)  y  un  argumento  
(python_games)  de  la  siguiente  manera;

ls  ­l  python_games

Con  suerte,  en  esta  etapa,  la  salida  no  debería  sorprender  demasiado,  aunque  nuevamente  he  podado  algunos  
de  los  archivos  por  razones  de  legibilidad;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 8

pi@raspberrypi  ~  $  ls  ­l  python_games
total  1800
­rw­rw­r­­  1  pi  pi  9731  27  de  enero  08:34  4row_arrow.png  ­rw­rw­r­­  1  pi  
pi  7463  27  de  enero  08:34  4row_black.png  ­rw­rw­r­­  1  pi  pi  8666  27  de  
enero  08:34  4row_board.png  ­rw­rw­r­­  1  pi  pi  18933  27  de  enero  08:34  
4row_computerwinner.png  ­rw­rw­r­­  1  pi  pi  25412  27  de  enero  08:34  
4row_humanwinner.png  ­rw­rw­r­­  1  pi  pi  8562  27  de  enero  08:34  4row_red.png  
­rw­rw­r­­  1  pi  pi  14661  27  de  enero  08:34  tetrisc.mid  ­rw­rw­r­­  1  pi  pi  
15759  27  de  enero  08:34  tetrominoforidiots.py  ­rw­rw­r­­  1  pi  pi  
18679  27  de  enero  08:34  tetromino.py  ­rw­rw­r­­  1  pi  pi  9771  27  de  enero  08:34  
Tree_Short.png  ­rw­rw­r­­  1  pi  pi  11546  27  de  enero  08:34  
Tree_Tall.png  ­rw­rw­r­­  1  pi  pi  10378  27  de  enero  08:34  Tree_Ugly.png  
­rw­rw­r­­  1  pi  pi  8443  27  de  enero  08:34  Wall_Block_Tall.png  ­rw­rw­
r­­  1  pi  pi  6011  27  de  enero  08:34  Wood_Block_Tall.png  ­rw­rw­r­­  1  pi  
pi  8118  27  de  enero  08:34  wormy.py
Machine Translated by Google

Conceptos  de  Linux 9

Comandos

comodines
Un  concepto  importante  a  comprender  en  Linux  es  el  uso  de  comodines.  En  un  contexto  deportivo,  un  comodín  es  algo  (o  
alguien)  que  se  puede  introducir  en  un  juego  como  sustituto.  Puede  que  no  tenga  un  valor  estrictamente  definido,  pero  
podría  reemplazar  una  variedad  de  objetos  estándar.

Los  comodines  son  una  característica  de  la  línea  de  comandos  de  Linux  (y  otros  lugares)  que  hace  que  la  línea  de  
comandos  sea  mucho  más  versátil  que  los  administradores  de  archivos  gráficos.  Cualquiera  que  haya  intentado  usar  
combinaciones  sofisticadas  de  shift/ctrl  y  clic  del  mouse  mientras  clasificaba  en  un  administrador  de  archivos  dará  fe  de  
cierto  grado  de  dificultad.

Por  ejemplo,  si  tenemos  un  directorio  con  una  gran  cantidad  de  archivos  y  subdirectorios,  y  necesitamos  mover  todos  los  
archivos  de  Python  (archivos  que  terminan  en .py) ,  que  tienen  la  palabra  'pi'  en  algún  lugar  de  sus  nombres,  de  ese  
directorio  grande  a  otro  directorio.  Esto  tiene  el  potencial  de  ser  una  tarea  que  requiere  mucho  tiempo.

En  la  línea  de  comandos  de  Linux,  esa  tarea  es  casi  tan  fácil  de  realizar  como  mover  solo  un  archivo  de  Python,  y  es  
simple  debido  a  los  comodines.  Estos  son  caracteres  especiales  que  nos  permiten  seleccionar  nombres  de  archivo  que  
coincidan  con  ciertos  patrones  de  caracteres.  Esto  nos  ayuda  a  seleccionar  un  rango  de  coincidencia  de  archivos  
escribiendo  solo  unos  pocos  caracteres  y,  en  la  mayoría  de  los  casos  (en  mi  humilde  opinión),  es  más  fácil  que  usar  un  
administrador  de  archivos  gráfico.

El  proceso  de  usar  comodines  también  se  conoce  como  'Globbing'.  El  término  'Globbing'  se  originó  
a  partir  de  un  programa  llamado  glob  que  (hace  mucho  tiempo)  expandía  los  comodines  y  los  
aplicaba  a  conjuntos  de  archivos  (dependiendo  de  los  comodines  utilizados).  Esto  fue  visto  como  
algo  bastante  útil.  Tan  útil  que  estaba  integrado  en  el  caparazón.  Todavía  se  puede  ejecutar  desde  
la  línea  de  comandos  (escriba  man  glob  en  una  terminal  para  obtener  más  información).

Aquí  hay  una  lista  de  los  comodines  más  utilizados:

Comodín Partidos
* cero  o  más  caracteres
? exactamente  un  carácter  
[abcde]   exactamente  uno  de  los  caracteres  enumerados  
[ae]  [! exactamente  un  carácter  en  el  rango  especificado  cualquier  
abcde]  [! carácter  que  no  esté  en  la  lista  cualquier  
ae] carácter  que  no  esté  en  el  rango  especificado  {pi,frambuesa}  
exactamente  una  palabra  completa  de  las  opciones  dadas

Además  de  poder  aplicarse  de  forma  aislada,  algunas  de  las  verdaderas  fortalezas  de  los  comodines  surgen  cuando  se  
usan  en  combinación.

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 10

Ejemplos
Cero  o  más  caracteres

Para  enumerar  todos  los  archivos  de  Python  con  'pi'  en  sus  nombres;

ls  *pi*.py

Exactamente  un  personaje

Para  enumerar  todos  los  archivos  en  el  directorio  actual  con  extensiones  de  archivo  de  tres  caracteres;

ls  *.???

Exactamente  uno  de  los  personajes  enumerados.

Para  enumerar  todos  los  archivos  que  tienen  una  extensión  que  comienza  con  'p'  o  'j';

ls  *.[pj]*

Exactamente  un  carácter  en  el  rango  especificado

Para  enumerar  todos  los  archivos  que  tienen  un  número  en  el  nombre  del  archivo;

ls  *[0­9]*

Combinación

Para  enumerar  todos  los  archivos  que  comienzan  con  una  de  las  tres  primeras  o  tres  últimas  letras  del  alfabeto  y  terminan  con  
una  extensión  'jpg'  o  'png'.

ls  [a­cx­z]*.{jp,pn}g
Machine Translated by Google

Conceptos  de  Linux 11

Expresiones  regulares
Las  expresiones  regulares  (también  llamadas  'regex')  son  un  sistema  de  coincidencia  de  patrones  que  utiliza  secuencias  de  
caracteres  construidas  de  acuerdo  con  reglas  de  sintaxis  predefinidas  para  encontrar  las  cadenas  deseadas  en  el  texto.  El  
tema  de  las  expresiones  regulares  es  un  libro  en  sí  mismo  y  recomiendo  de  todo  corazón  la  lectura  adicional  para  aquellos  
que  sienten  la  necesidad  de  usarlas  cuando  están  enojados.

Aunque  los  comodines  se  usan  mucho  en  expresiones  regulares  y  lenguajes  de  programación,  
tenga  en  cuenta  que  los  comodines  no  forman  parte  del  conjunto  de  expresiones  regulares  
estándar.  Esto  significa  que  tratar  de  usar  expresiones  regulares  en  una  terminal  no  siempre  
funcionará.

El  comando  grep  (donde  re  en  grep  significa  expresión  regular )  es  una  herramienta  esencial  para  cualquiera  
que  use  Linux,  ya  que  permite  usar  expresiones  regulares  en  búsquedas  de  archivos  o  resultados  de  
comandos.  Aunque  el  uso  de  expresiones  regulares  está  muy  extendido  en  múltiples  facetas  de  las  
operaciones  informáticas.

Por  ejemplo,  si  quisiéramos  buscar  el  archivo  dmesg  que  está  en  el  directorio /var/log  y  quisiéramos  mostrar  
cada  línea  que  contenía  la  cadena  de  caracteres  CPU.  usaríamos  el  comando  grep  de  la  siguiente  manera;

grep  CPU /var/log/dmesg

El  resultado  del  comando  será  similar  al  siguiente;

pi@raspberrypi  ~  $  grep  CPU /var/log/dmesg  
0.000000]  Arrancar  Linux  en  CPU  física  0xf00  0.000000]  CPU:  
Procesador  ARMv7  [410fc075]  revisión  5  (ARMv7),  cr=10c5387d  0.000000]  SLUB:  HWalign=64,  
Order=0­3,  MinObjects=0,  CPU=4,  Nodes=  1  0.004116]  CPU:  Probando  la  coherencia  del  búfer  
de  escritura:  ok  0.053503]  CPU0:  actualizar  cpu_capacity  1024  
0.053577]  CPU0:  hilo  ­1,  cpu  0,  socket  15,  mpidr  
80000f00  0.113791]  CPU1:  Procesador  secundario  arrancado  0.113851]  CPU1:  
actualizar  cpu_capa  ciudad  1024  0.113860]  CPU1:  
subproceso  ­1,  cpu  1,  zócalo  15,  mpidr  80000f01  
0,133710]  CPU2:  procesador  secundario  arrancado  0,133746]  CPU2:  actualizar  
cpu_capacity  1024  0,133755]  CPU2:  subproceso  ­1,  cpu  
2,  zócalo  15,  mpidr  80000f02  0,153750]  CPU3:  
Secundario  arrancado  procesador  0.153788]  CPU3:  actualice  cpu_capacity  1024  
0.153797]  CPU3:  subproceso  ­1,  cpu  3,  socket  15,  mpidr  
80000f03  0.153891]  Trajo  4  CPU  0.154045]  CPU:  Todas  
las  CPU  se  iniciaron  en  modo  SVC.  2.406902]  ledtrig­cpu:  registrado  para  indicar  
actividad  en  las  CPU

[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 12

Este  es  un  ejemplo  básico  que  utiliza  una  cadena  simple  para  hacer  coincidir  y  no  necesariamente  debe  considerarse  como  un  
gran  uso  de  expresiones  regulares.  Sin  embargo,  si  quisiéramos  limitar  los  resultados  devueltos  a  instancias  en  las  que  la  
cadena  fuera  la  CPU  de  texto  seguida  del  número  0,  1,  2  o  3,  podríamos  usar  una  expresión  regular  con  una  función  que  
incluyera  un  rango  de  opciones.  Esto  se  logra  mediante  el  uso  de  corchetes  []  con  el  rango  especificado  dentro.

En  nuestro  caso  queremos  el  texto  CPU  y  debe  ser  seguido  inmediatamente  por  un  número  en  el  rango  de  0  a  3.  Esto  puede  
ser  designado  por  la  expresión  regular  CPU[0­3].

Lo  que  significa  que  nuestra  búsqueda  es  la  siguiente;

grep  CPU[0­3] /var/log/dmesg

…  resultará  en;

pi@raspberrypi  ~  $  grep  CPU[0­3] /var/log/dmesg  [0.053503]  
CPU0:  actualizar  cpu_capacity  1024  [0.053577]  CPU0:  
subproceso  ­1,  cpu  0,  socket  15,  mpidr  80000f00  [0.113791]  CPU1:  Booted  
secundario  procesador  [ 0.113851]  CPU1:  actualizar  
cpu_capacity  1024  [ 0.113860]  CPU1:  hilo  ­1,  cpu  1,  socket  
15,  mpidr  80000f01  [ 0.133710]  CPU2:  Procesador  secundario  arrancado  [ 0.133746]  
CPU2:  actualizar  cpu_capacity  1024  [ 0.133755]  CPU2 :  hilo  
­1 ,  cpu  2,  socket  15,  mpidr  80000f02  [ 0.153750]  CPU3:  
Procesador  secundario  arrancado  [ 0.153788]  CPU3:  actualizar  cpu_capacity  1024  
[ 0.153797]  CPU3:  subproceso  ­1,  cpu  3,  socket  15,  mpidr  
80000f03

Los  corchetes  son  'metacaracteres'  y  es  el  uso  de  estos  metacaracteres  lo  que  proporciona  a  las  expresiones  regulares  la  base  
de  su  fuerza.

Los  siguientes  son  algunos  de  los  metacaracteres  más  utilizados  y  una  descripción  muy  breve  de  su  efecto  (más  adelante  
mostraremos  ejemplos);

[ ]  Haga  coincidir  cualquier  cosa  dentro  de  los  corchetes  para  UN  carácter
ˆ
(circunflejo  o  símbolo  de  intercalación)  Coincide  solo  al  comienzo  de  la  cadena  de  destino  (cuando  no  se  
usa  entre  corchetes  (donde  tiene  un  significado  diferente))
ps Coincide  solo  al  final  de  la  cadena  de  destino  
. (punto  o  punto)  Coincide  con  cualquier  carácter  individual
? Coincide  cuando  el  carácter  anterior  aparece  0  o  1  vez  solamente
* Coincide  cuando  el  carácter  anterior  aparece  0  o  más  veces
+ Coincide  cuando  el  carácter  anterior  aparece  1  o  más  veces
( )  Se  puede  usar  para  agrupar  partes  de  nuestra  expresión  de  búsqueda  |
(barra  vertical  o  tubería)  Nos  permite  encontrar  los  valores  de  la  mano  izquierda  o  derecha
Machine Translated by Google

Conceptos  de  Linux 13

Haga  coincidir  un  solo  carácter  definido  con  corchetes  ([])
Como  se  demostró  al  comienzo  de  esta  sección,  el  uso  de  corchetes  nos  permitirá  hacer  coincidir  cualquier  carácter  
individual.  El  ejemplo  que  usamos  a  continuación  empleó  el  uso  del  carácter  guión  (o  menos)  como  indicador  de  rango  
para  indicar  que  los  caracteres  posibles  eran  0,  1,  2  o  3.

grep  CPU[0­3] /var/log/dmesg

También  podríamos  haber  puesto  simplemente  cada  carácter  entre  corchetes  de  la  siguiente  manera;

grep  CPU[0123] /var/log/dmesg

En  cualquier  caso,  debe  tenerse  en  cuenta  que  solo  un  carácter  coincide  con  las  entradas  entre  corchetes.

Podemos  especificar  más  de  un  rango  y  también  podemos  distinguir  entre  mayúsculas  y  minúsculas.  Por  lo  tanto  los  
siguientes  rangos  tendrán  los  resultados  correspondientes;

•  [az] :  coincide  con  cualquier  carácter  individual  entre  la  a  y  la  z.  •  
[AZ] :  coincide  con  cualquier  carácter  único  entre  la  A  y  la  Z.  •  [0­9] :  
coincide  con  cualquier  carácter  único  entre  0  y  9.  •  [a­zA­Z0­9] :  
coincide  con  cualquier  carácter  único,  ya  sea  de  la  a  a  la  z  o  A  a  Z  o  0  a  9

Dentro  de  los  corchetes  también  podemos  usar  el  carácter  circunflejo  o  de  intercalación  (ˆ)  para  negar  la  selección  de  
caracteres.  Es  decir  con  un  símbolo  de  intercalación  podemos  decir  buscar  líneas  con  el  texto  CPU  y  debe  ser  seguido  
inmediatamente  por  un  carácter  que  no  esté  en  el  rango  de  0  a  3.  Esto  se  hace  de  la  siguiente  manera;

grep  CPU[^0­3] /var/log/dmesg

Lo  que  daría  como  resultado  una  salida  similar  a  la  siguiente;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 14

pi@raspberrypi  ~  $  grep  CPU[^0­3] /var/log/dmesg  [ [ [ [ [ [ [ [ [
0.000000]  Arrancar  Linux  en  CPU  física  0xf00  0.000000]  CPU:  Procesador  
ARMv7  [410fc075]  revisión  5  (ARMv7),  cr=10c5387d  0.000000]  CPU:  Caché  de  datos  sin  aliasing  PIPT /  VIPT,  alias  VIPT  

0.000000]  PERCPU:  Embebido  11  páginas/c  pu  @ba05d000  s12864  r8192  d24000  0.000000]  SLUB:  
HWalign=64,  Order=0­3,  MinObjects=0,  CPU=4,  Nodes=1  0.004116]  CPU:  Probando  la  coherencia  del  búfer  de  
escritura:  correcto  0.153891]  Trajo  4  CPU  0.154045]  CPU:  Todas  las  CPU  (s)  iniciado  en  modo  SVC.  2.406902]  
ledtrig­cpu:  registrado  para  indicar  actividad  en  las  CPU

Tenga  en  cuenta  que  no  se  ha  incluido  ninguna  de  las  líneas  anteriores  con  CPU0,  CPU1,  CPU2  o  CPU3 .

Coincidencia  al  principio  de  una  cadena  (ˆ)
Podemos  usar  el  carácter  circunflejo  o  de  intercalación  (ˆ)  para  hacer  coincidir  líneas  de  texto  que  comienzan  con  un  conjunto  
específico  de  caracteres.

Solo  tenga  cuidado  y  no  confunda  este  uso  del  signo  de  intercalación  con  su  uso  dentro  de  
corchetes  donde  niega  la  búsqueda.

Dado  un  nombre  de  archivo  de  texto  foo.txt  con  los  siguientes  contenidos;

Primera  linea  con  algo
Segunda  línea  con  algo  más
La  tercera  línea  sigue  en  marcha
Cuarta  línea  pero  penúltima

Última  línea.  ¡Adiós!

Si  ejecutamos  el  comando  grep  buscando  la  cadena  'Segundo'  de  la  siguiente  manera;

grep  Segundo  foo.txt

Deberíamos  tener  dos  líneas  devueltas  como  se  muestra  a  continuación;

pi@raspberrypi  ~  $  grep  Segundo  foo.txt  Segunda  línea  con  algo  
más
Cuarta  línea  pero  penúltima

Pero  si  usamos  el  carácter  de  intercalación  para  indicar  que  solo  estamos  buscando  líneas  que  comiencen  con  nuestra  cadena  
de  la  siguiente  manera;
Machine Translated by Google

Conceptos  de  Linux 15

grep  ^Segundo  foo.txt

…  obtendremos  el  siguiente  resultado  donde  solo  se  devuelve  la  segunda  línea;

pi@raspberrypi  ~  $  grep  Segundo  foo.txt  Segunda  línea  con  algo  
más

Coincidencia  al  final  de  una  cadena  ($)

Podemos  usar  el  carácter  de  signo  de  dólar  ($)  para  hacer  coincidir  líneas  de  texto  que  terminan  con  un  carácter  específico  o  un  
conjunto  de  caracteres.

Por  ejemplo,  dado  un  nombre  de  archivo  de  texto  foo.txt  con  los  siguientes  contenidos;

Primera  linea  con  algo
Segunda  línea  con  algo  más
La  tercera  línea  sigue  en  marcha
Cuarta  línea  pero  penúltima

Última  línea.  ¡Adiós!

Si  usamos  el  carácter  de  signo  de  dólar  para  buscar  todas  las  líneas  que  terminan  en  'ing'  de  la  siguiente  manera;

grep  ing$  foo.txt

…  obtendremos  el  siguiente  resultado  donde  solo  se  devuelve  la  segunda  línea;

pi@raspberrypi  ~  $  grep  ing$  foo.txt  Primera  línea  con  algo  
Tercera  línea  todavía  activa

Tenga  en  cuenta  que  el  signo  $  se  coloca  después  del  texto  que  intenta  hacer  coincidir.

Coincide  con  cualquier  carácter  individual  (.)

el .  El  carácter  (punto)  nos  permitirá  hacer  coincidir  cualquier  carácter  individual  en  esta  posición.

Por  ejemplo,  dado  un  nombre  de  archivo  de  texto  foo.txt  con  los  siguientes  contenidos;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux dieciséis

Primera  linea  con  algo
Segunda  línea  con  algo  más
La  tercera  línea  sigue  en  marcha
Cuarta  línea  pero  penúltima

Última  línea.  ¡Adiós!

… si  quisiéramos  devolver  todas  las  líneas  donde  los  caracteres  ing  estuvieran  en  el  medio  de  la  línea  (no
al  final)  podríamos  ejecutar  el  siguiente  comando  grep ;

grep  ing.  foo.txt

Esto  produciría  una  salida  similar  a  la  siguiente;

pi@raspberrypi  ~  $grep  ing.  foo.txt  Segunda  línea  con  algo  
más

Si  bien  hay  otras  dos  líneas  con  ing  (la  primera  y  la  tercera),  ambas  terminan  con  'ing'  y,  como  resultado,  no  hay  
ningún  carácter  después  de  ellas.  El  único  en  el  que  hay  'ing'  seguido  de  un  carácter  es  en  la  segunda  línea.

Coincide  cuando  el  carácter  anterior  aparece  0  o  1  vez  solamente  (?)
Puede  ser  difícil  pensar  en  una  situación  en  la  que  querríamos  coincidir  con  algo  que  ocurre  0  o  1  vez,  pero  el  
mejor  ejemplo  proviene  del  mundo  del  lenguaje.  En  la  ortografía  estadounidense,  la  palabra  'color'  difiere  de  la  
ortografía  británica  por  la  omisión  de  la  letra  'u' ('color').  Podemos  escribir  una  expresión  regular  que  coincida  
con  la  ortografía  de  la  siguiente  manera;

color

De  esta  forma,  el  signo  de  interrogación  indica  que  para  que  se  produzca  una  coincidencia,  el  carácter  anterior  
no  debe  estar  presente  o  debe  aparecer  una  vez.  Los  caracteres  adicionales  ('colo'  y  la  'r')  son  literales  en  el  
sentido  de  que  deben  estar  presentes  exactamente  como  se  indica.  La  única  variable  en  la  expresión  es  la  'u'.

Coincidencia  cuando  el  carácter  anterior  aparece  0  o  más  veces  (*)
El  metacarácter  de  asterisco  en  las  expresiones  regulares  puede  ser  una  de  las  opciones  más  confusas  de  
usar,  pero  esto  se  debe  principalmente  a  que  su  fuerza  real  se  aplica  cuando  se  combina  con  otros  metacaracteres.

Por  ejemplo,  se  podría  argumentar  que  una  expresión  regular  como  q*w  coincidirá  con  w,  qw  y  qqqw;  sin  
embargo,  si  usamos  un  punto  y  un  asterisco  juntos  (.*)  obtenemos  una  función  que  coincidirá  con  cero  o  más  
de  cualquier  serie.  de  personajes

En  este  caso  podemos  usar  una  expresión  regular  como…
Machine Translated by Google

Conceptos  de  Linux 17

pagar

…  para  encontrar  cualquier  combinación  de  caracteres  que  comiencen  con  pa  y  terminen  con  y  y  que  tengan  
cualquier  número  de  caracteres  (incluido  ninguno)  en  el  medio.  Estos  incluirían  lo  siguiente;

pacificar  

dolorosamente  paisley  

quiromancia  

palpablemente

pagar

Coincidencia  cuando  el  carácter  anterior  aparece  1  o  más  veces  (+)
El  uso  del  carácter  +  para  permitir  una  o  más  instancias  de  un  carácter  es  similar  al  del  asterisco.  Donde  el  
metacarácter  *  podría  devolver  las  siguientes  coincidencias  de  la  expresión  regular  fe*d;

f.d.

alimentado

alimentar

El  uso  de  fe+d  resultaría  en;

alimentado

alimentar

Agrupar  partes  de  una  expresión  de  búsqueda  (())
Las  expresiones  regulares  se  pueden  combinar  en  subgrupos  que  se  pueden  operar  como  entidades  
separadas  encerrando  esas  entidades  entre  paréntesis.  Por  ejemplo,  si  quisiéramos  devolver  una  coincidencia  
si  viésemos  la  palabra  'monkey'  o  'banana',  usaríamos  el  metacarácter  o  |  (la  pipa)  para  intentar  hacer  coincidir  
una  cuerda  u  otra  de  la  siguiente  manera;

(mono)|(plátano)

Tenga  en  cuenta  que  si  estamos  tratando  de  operar  una  expresión  regular  en  una  terminal,  es  posible  
que  debamos  encerrarla  entre  marcas  de  voz  o  escapar  del  paréntesis  (y  la  tubería)  con  el  carácter  de  
barra  inclinada  (\) .  A  veces,  este  tipo  de  cosas  pueden  comenzar  a  verse  desordenadas  dependiendo  
del  uso  que  se  le  dé  a  nuestra  expresión  regular.

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 18

Encuentra  un  grupo  de  valores  u  otro  (|)
El  metacarácter  de  tubería  nos  permite  aplicar  un  operador  lógico  'o'  a  nuestra  coincidencia  de  patrones.  Por  
ejemplo,  si  quisiéramos  devolver  una  coincidencia  si  viéramos  la  palabra  'monkey'  o  'banana',  usaríamos  las  
palabras  encapsuladas  entre  paréntesis  y  el  metacarácter  de  tubería  para  intentar  hacer  coincidir  una  cadena  u  
otra  de  la  siguiente  manera;

(mono)|(plátano)

Tenga  en  cuenta  que  si  estamos  tratando  de  operar  una  expresión  regular  en  una  terminal,  es  posible  
que  debamos  encerrarla  entre  marcas  de  voz  o  escapar  del  paréntesis  (y  la  tubería)  con  el  carácter  de  
barra  inclinada  (\) .  A  veces,  este  tipo  de  cosas  pueden  comenzar  a  verse  desordenadas  dependiendo  
del  uso  que  se  le  dé  a  nuestra  expresión  regular.

Expresiones  regulares  extendidas
En  las  expresiones  regulares  básicas,  los  metacaracteres ?,  +,  {,  |,  (,  y )  no  se  consideran  especiales  y,  en  su  
lugar,  debemos  usar  las  versiones  con  barra  invertida  \?,  \+,  \{,  \|,  \(,  y  \).
Machine Translated by Google

Conceptos  de  Linux 19

Tuberías  (|)

Los  conductos  se  utilizan  en  Linux  para  combinar  comandos  y  permitirles  que  la  salida  de  un  comando  se  alimente  directamente  a  otro  
comando  y  así  sucesivamente.  La  idea  es  usar  varios  comandos  para  crear  una  secuencia  de  procesamiento  de  información  de  un  
comando  a  otro.

Los  comandos  están  separados  por  la  línea  vertical  (|)  que  normalmente  se  encuentra  sobre  la  tecla  de  barra  invertida  (\).  Este  es  el  
carácter  que  denota  la  función  'tubería'.  Para  combinar  tres  funciones  junto  con  el  símbolo  de  tubería  tendríamos  algo  como  lo  siguiente;

comando1  |  comando2  |  comando3

Como  sugiere  el  nombre,  podemos  pensar  en  la  función  de  tubería  como  una  representación  de  comandos  vinculados  por  una  tubería  
donde  el  comando  ejecuta  una  función  que  se  genera  en  una  tubería  para  fluir  hacia  el  segundo  comando  y  hacia  la  salida  final  
eventual.  Para  ayudar  con  la  asociación  visual,  podría  ser  útil  pensar  en  conexiones  similares  a  las  siguientes;

Tubería  de  un  comando  tras  otro

Para  demostrar  con  un  ejemplo,  podemos  considerar  un  conjunto  de  comandos  alineados  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 20

Ejemplo  de  tubería

Aquí  tenemos  el  comando  ls  que  enumera  los  contenidos  del  directorio /var/log  con  los  listados  ordenados  por  
tiempo.  Esto  luego  se  alimenta  al  comando  principal  que  solo  mostrará  las  primeras  10  de  esas  líneas.  Luego  
ingresamos  esas  10  líneas  en  un  comando  grep  que  filtra  el  resultado  para  mostrar  solo  aquellas  líneas  que  
tienen  la  palabra  'raíz'  en  ellas.

El  comando  como  se  ejecutaría  desde  la  línea  de  comando  sería  el  siguiente;

ls  ­lt /var/registro  |  cabeza  |  raíz  de  grep

…  y  el  resultado  sería  algo  como  lo  siguiente;

pi@raspberrypi  ~  $ls  ­lt /var/log  |  cabeza  |  grep  root  ­rw­r­­­­­  1  root  adm  
133637  13  de  septiembre  04:01  auth.log  ­rw­r­­­­­  1  root  adm  16794  13  
de  septiembre  04:01  syslog  ­rw­rw­r­­  1  raíz  utmp  292292  12  de  
septiembre  18:58  lastlog  ­rw­rw­r­­  1  raíz  utmp  2688  12  de  septiembre  
18:58  wtmp
­rw­r­­­­­  1  administrador  raíz 1050  12  de  septiembre  06:25  
mensajes  ­rw­r­­­­­  1  root  adm  18986  12  de  septiembre  06:25  syslog.1  
­rw­r­­­­­  1  administrador  raíz 1357  11  de  septiembre  06:25  syslog.2.gz
Machine Translated by Google

Conceptos  de  Linux 21

Estructura  de  directorios  de  Linux

Para  un  nuevo  usuario  de  Linux,  la  estructura  de  archivos  puede  sentirse  como  algo  arcano  y  en  algunos  casos  
arbitrario.  Por  supuesto,  este  no  es  del  todo  el  caso  y,  a  pesar  de  algunas  diferencias  específicas  de  distribución,  
existe  una  jerarquía  de  directorios  y  archivos  bastante  bien  diseñada  con  una  buena  razón  para  estar  donde  están.

Con  frecuencia  nos  sentimos  cómodos  con  el  concepto  de  navegar  por  esta  estructura  usando  una  interfaz  gráfica  
similar  a  la  que  se  muestra  a  continuación,  pero  para  operar  de  manera  efectiva  en  la  línea  de  comandos  
necesitamos  tener  un  conocimiento  práctico  de  qué  va  a  dónde.

Directorios  de  Linux

Los  directorios  que  vamos  a  describir  forman  una  jerarquía  similar  a  la  siguiente;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 22

Jerarquía  de  directorios

Para  obtener  una  descripción  concisa  de  las  funciones  del  directorio,  consulte  la  hoja  de  trucos.  Alternativamente,  
su  función  y  descripciones  son  las  siguientes;

El  directorio /  o  'raíz'  contiene  todos  los  demás  archivos  y  directorios.  Es  importante  tener  en  cuenta  que  este  no  
es  el  directorio  de  inicio  de  los  usuarios  raíz  (aunque  solía  serlo  hace  muchos  años).  El  directorio  de  inicio  del  
usuario  raíz  es /root.  Solo  el  usuario  raíz  tiene  privilegios  de  escritura  para  este  directorio.

/papelera

El  directorio /bin  contiene  ejecutables/comandos  binarios  esenciales  comunes  para  uso  de  todos  los  usuarios.  Por  
ejemplo:  los  comandos  cd,  cp,  ls,  ping,  ps.  Estos  son  comandos  que  pueden  ser  utilizados  tanto  por  el  
administrador  del  sistema  como  por  los  usuarios,  pero  que  son  necesarios  cuando  no  hay  otros  sistemas  de  
archivos  montados.

/bota

El  directorio /boot  contiene  los  archivos  necesarios  para  iniciar  con  éxito  la  computadora  durante  el  proceso  de  
arranque.  Como  tal,  el  directorio /boot  contiene  información  a  la  que  se  accede  antes  de  que  el  kernel  de  Linux  
comience  a  ejecutar  los  programas  y  procesos  que  permiten  que  funcione  el  sistema  operativo.

/desarrollo

El  directorio /dev  contiene  archivos  de  dispositivos  que  representan  dispositivos  físicos  conectados  a  la  
computadora,  como  discos  duros,  dispositivos  de  sonido  y  puertos  de  comunicación,  así  como  dispositivos  'lógicos'  como  un
Machine Translated by Google

Conceptos  de  Linux 23

generador  de  números  aleatorios  y /dev/null  que  esencialmente  descartará  cualquier  información  que  se  le  envíe.  
Este  directorio  contiene  una  variedad  de  archivos  que  refuerza  fuertemente  el  precepto  de  Linux  de  que  Todo  es  un  
archivo.

/etc

El  directorio /etc  contiene  archivos  de  configuración  que  controlan  el  funcionamiento  de  los  programas.  También  
contiene  scripts  que  se  utilizan  para  iniciar  y  cerrar  programas  individuales.

/etc/cron.d

Los  directorios /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly  contienen  
scripts  que  el  proceso  crontab  ejecuta  periódicamente .

/etc/rc?.d

Los  directorios /rc0.d, /rc1.d, /rc2.d, /rc3.d, /rc4.d, /rc5.d, /rc6.d, /rcS.d  contienen  los  archivos  necesarios  
para  controlar  los  servicios  del  sistema  y  configurar  el  modo  de  operación  (nivel  de  ejecución)  para  la  
computadora.

/hogar

Debido  a  que  Linux  es  un  sistema  operativo  que  es  un  entorno  'multiusuario',  cada  usuario  requiere  un  espacio  para  
almacenar  información  específica  para  ellos.  Esto  se  hace  a  través  del  directorio /home .  Por  ejemplo,  el  usuario  'pi'  
tendría /home/pi  como  su  directorio  de  inicio.

/lib

El  directorio /lib  contiene  archivos  de  biblioteca  compartidos  que  admiten  los  archivos  ejecutables  ubicados  en /bin  
y /sbin.  También  hace  que  los  módulos  del  kernel  (controladores)  sean  responsables  de  darle  a  Linux  una  gran  
versatilidad  para  agregar  o  eliminar  funcionalidades  según  lo  dicten  las  necesidades.

/perdido+encontrado

El  directorio /lost+found  contendrá  datos  potencialmente  recuperables  que  podrían  generarse  si  el  sistema  de  
archivos  se  apaga  incorrectamente  debido  a  un  bloqueo  o  falla  de  energía.  Es  poco  probable  que  los  datos  
recuperados  estén  completos  o  en  buen  estado,  pero  en  algunas  circunstancias  pueden  contener  información  útil  o  
indicaciones  sobre  el  motivo  del  apagado  incorrecto.

/medios  de  comunicación

El  directorio /media  se  utiliza  como  directorio  para  montar  temporalmente  dispositivos  extraíbles  (por  ejemplo, /
media/cdrom  o /media/cdrecorder).  Este  es  un  desarrollo  relativamente  nuevo  para  Linux  y  surge  como  resultado  
de  un  grado  de  confusión  histórica  sobre  dónde  era  mejor  montar  este  tipo  de  dispositivos  (/cdrom, /mnt  o /mnt/
cdrom,  por  ejemplo).

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 24

/mnt

El  directorio /mnt  se  utiliza  como  punto  de  montaje  genérico  para  sistemas  de  archivos  o  dispositivos.  El  uso  
reciente  del  directorio  lo  dirige  hacia  su  uso  como  un  punto  de  montaje  temporal  para  los  administradores  del  
sistema,  pero  hay  un  grado  de  variación  histórica  que  ha  resultado  en  diferentes  distribuciones  haciendo  las  cosas  
de  diferentes  maneras  (por  ejemplo,  Debian  asigna /floppy  y /  cdrom  como  puntos  de  montaje  mientras  que  Redhat  
los  coloca  en /mnt/floppy  y /mnt/cdrom  respectivamente).

/optar

El  directorio /opt  se  utiliza  para  la  instalación  de  software  opcional  adicional  o  de  terceros  que  no  forma  parte  de  la  
instalación  predeterminada.  Cualquier  aplicación  instalada  en  esta  área  debe  instalarse  de  tal  manera  que  se  ajuste  
a  una  estructura  razonable  y  no  debe  instalar  archivos  fuera  del  directorio /opt .

/proc

El  directorio /proc  contiene  archivos  que  contienen  información  sobre  procesos  en  ejecución  y  recursos  del  sistema.  
Se  puede  describir  como  un  pseudo  sistema  de  archivos  en  el  sentido  de  que  contiene  información  del  sistema  en  
tiempo  de  ejecución,  pero  no  archivos  'reales'  en  el  sentido  normal  de  la  palabra.  Por  ejemplo,  el  archivo /proc/
cpuinfo  que  contiene  información  sobre  la  CPU  de  la  computadora  se  enumera  con  una  longitud  de  0  bytes  y,  sin  
embargo,  si  aparece  en  la  lista,  producirá  una  descripción  de  la  CPU  en  uso.

/raíz

El  directorio /root  es  el  directorio  de  inicio  del  administrador  del  sistema  o  del  usuario  'root'.  Esto  podría  verse  como  
un  poco  confuso,  ya  que  todos  los  demás  directorios  de  inicio  de  los  usuarios  están  en  el  directorio /home  y  ya  
existe  un  directorio  denominado  directorio  'raíz' (/).  Sin  embargo,  tenga  la  seguridad  de  que  hay  una  buena  razón  
para  hacer  esto  (a  veces,  el  directorio /home  se  puede  montar  en  un  sistema  de  archivos  separado  al  que  se  debe  
acceder  como  un  recurso  compartido  remoto).

/sbin

El  directorio /sbin  es  similar  al  directorio /bin  en  el  sentido  de  que  contiene  ejecutables/comandos  binarios,  pero  los  
que  se  encuentran  en /sbin  son  esenciales  para  el  funcionamiento  del  sistema  operativo  y  se  identifican  como  
aquellos  que  el  administrador  del  sistema  usaría  en  manteniendo  el  sistema.
Ejemplos  de  estos  comandos  son  fdisk,  shutdown,  ifconfig  y  modprobe.

/srv

El  directorio /srv  se  reserva  para  proporcionar  una  ubicación  para  almacenar  datos  para  servicios  específicos.  La  
razón  detrás  del  uso  de  este  directorio  es  que  los  procesos  o  servicios  que  requieren  una  sola  ubicación  y  jerarquía  
de  directorios  para  datos  y  secuencias  de  comandos  pueden  tener  una  ubicación  uniforme  en  todos  los  sistemas.
Machine Translated by Google

Conceptos  de  Linux 25

/tmp

El  directorio /tmp  se  reserva  como  una  ubicación  donde  los  programas  o  usuarios  que  requieren  una  ubicación  
temporal  para  almacenar  archivos  o  datos  pueden  hacerlo  en  el  entendimiento  de  que  cuando  un  sistema  se  
reinicia  o  apaga,  esta  ubicación  se  borra  y  el  contenido  se  elimina.

/usr

El  directorio /usr  sirve  como  directorio  donde  se  almacenan  y  comparten  los  programas  de  usuario  y  los  datos.
Esta  amplia  gama  potencial  de  archivos  e  información  puede  hacer  que  el  directorio /usr  sea  bastante  grande  y  
complejo,  por  lo  que  contiene  varios  subdirectorios  que  reflejan  los  del  directorio  raíz  (/)  para  que  la  organización  
sea  más  coherente.

/usr/bin

El  directorio /usr/bin  contiene  archivos  ejecutables  binarios  para  los  usuarios.  La  distinción  entre /bin  y /usr/
bin  es  que /bin  contiene  los  comandos  esenciales  necesarios  para  operar  el  sistema  incluso  si  no  hay  
ningún  otro  sistema  de  archivos  montado  y /usr/bin  contiene  los  programas  que  los  usuarios  necesitarán  
para  realizar  tareas  normales.  Por  ejemplo;  awk,  curl,  php,  pitón.  Si  no  puede  encontrar  un  binario  de  
usuario  en /bin,  busque  en /usr/bin.

/usr/lib

El  directorio /usr/lib  es  el  equivalente  del  directorio /lib  en  el  sentido  de  que  contiene  archivos  de  biblioteca  
compartidos  que  admiten  los  archivos  ejecutables  para  usuarios  ubicados  en /usr/bin  y /usr/sbin.

/usr/local

El  directorio /usr/local  contiene  programas  de  usuarios  que  se  instalan  localmente  desde  el  código  fuente.
Se  coloca  aquí  específicamente  para  evitar  que  se  sobrescriba  inadvertidamente  si  se  actualiza  el  software  del  
sistema.

/usr/sbin

El  directorio /usr/sbin  contiene  ejecutables  binarios  no  esenciales  que  utiliza  el  administrador  del  sistema.  Por  
ejemplo ,  cron  y  useradd.  Si  no  puede  ubicar  un  sistema  binario  en /usr/sbin,  intente  con /sbin.

/var

El  directorio /var  contiene  archivos  de  datos  variables.  Estos  son  archivos  que  se  espera  que  crezcan  en  
circunstancias  normales.  Por  ejemplo,  archivos  de  registro  o  directorios  de  spool  para  colas  de  impresión.

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 26

/var/lib

El  directorio /var/lib  contiene  información  de  estado  dinámico  que  los  programas  suelen  modificar  mientras  se  ejecutan.  
Esto  se  puede  usar  para  conservar  el  estado  de  una  aplicación  entre  reinicios  o  incluso  para  compartir  información  de  
estado  entre  diferentes  instancias  de  la  misma  aplicación.

/var/registro

El  directorio /var/log  contiene  archivos  de  registro  de  una  variedad  de  programas  y  servicios.  Los  archivos  en /var/log  a  
menudo  pueden  crecer  bastante  y  se  debe  tener  cuidado  para  garantizar  que  el  tamaño  del  directorio  se  administre  
adecuadamente.  Esto  se  puede  hacer  con  el  programa  logrotate .

/var/carrete

El  directorio /var/spool  contiene  lo  que  se  denominan  archivos  'spool'  que  contienen  datos  almacenados  para  su  
procesamiento  posterior.  Por  ejemplo,  las  impresoras  que  pondrán  en  cola  los  trabajos  de  impresión  en  un  archivo  de  cola  
para  una  eventual  impresión  y  luego  se  eliminarán  cuando  el  recurso  (la  impresora)  esté  disponible.

/var/tmp

El  directorio /var/tmp  es  un  almacén  temporal  de  datos  que  deben  mantenerse  entre  reinicios  (a  diferencia  de /tmp).
Machine Translated by Google

Conceptos  de  Linux 27

Direccionamiento  de  nombre  de  ruta  absoluto  y  relativo

Uno  de  los  puntos  fuertes  de  trabajar  con  archivos  desde  la  línea  de  comandos  en  Linux  es  la  flexibilidad  y  
variedad  de  opciones  disponibles  para  nosotros  como  usuarios.  Algunos  pueden  afirmar  que  demasiadas  
opciones  solo  hacen  que  sea  más  difícil  saber  cuál  es  la  forma  correcta  o  incorrecta  de  realizar  una  acción,  pero  
otros  (incluido  yo  mismo)  propondremos  que  a  menudo  no  existe  una  forma  perfecta  de  realizar  una  tarea,  solo  
hay  formas  perfectas¹ .

Lo  que  debe  recordarse  es  que  la  forma  en  que  elegimos  llevar  a  cabo  una  tarea  debe  adaptarse  a  la  tarea  y  al  
contexto.  En  ese  sentido,  hay  muchas  opciones  disponibles  en  Linux  y  esto  es  especialmente  cierto  cuando  se  
trata  del  proceso  de  especificar  ubicaciones  de  archivos.

Nombres  de  ruta

Un  nombre  de  ruta  representa  una  cadena  de  prueba  que  actúa  como  un  puntero  a  un  archivo  o  directorio.  El  
siguiente  nombre  de  ruta  apunta  al  archivo  foo.txt  que  está  dentro  del  directorio  pi ,  que  a  su  vez  está  dentro  del  
directorio  home

/home/pi/foo.txt

El  único  carácter  'especial'  o  'reservado'  cuando  se  utiliza  un  nombre  de  ruta  es  la  barra  diagonal /.  Este  carácter  
se  utiliza  únicamente  para  separar  directorios  y  nombres  de  archivos,  según  corresponda.

Los  directorios  individuales  y  los  nombres  de  archivos  normalmente  están  restringidos  a  255  caracteres  con  una  
longitud  total  de  una  ruta  restringida  a  4096  caracteres.  Por  el  bien  del  contexto,  hay  aproximadamente  1500  
caracteres  hasta  este  punto  en  este  capítulo.

Direccionamiento  de  nombre  de  ruta  absoluta

Un  nombre  de  ruta  absoluto  siempre  comenzará  en  el  directorio  raíz  (/).  Es  una  peculiaridad  interesante  que  las  
personas  a  menudo  identifiquen  el  directorio  raíz  como  la  barra  diagonal,  cuando  en  realidad  se  refiere  a  un  
directorio  que  no  tiene  nombre  y  que  existe  en  el  lado  izquierdo  de  la  marca /  (recuerde  que  no  se  puede  usar /  
en  nombres  de  archivos  o  directorios).

El  siguiente  es  un  nombre  de  ruta  absoluto  al  archivo  foo.txt  que  está  dentro  del  directorio  pi  que  está  dentro  del  
directorio  home  que  está  en  el  directorio  raíz.

/home/pi/foo.txt

¹ http://ed.ted.com/lessons/malcolm­gladwell­on­spaghetti­sauce

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 28

Direccionamiento  de  nombre  de  ruta  relativo

Un  nombre  de  ruta  relativo  es  aquel  en  el  que  la  ubicación  del  archivo  o  directorio  se  toma  en  relación  con  el  directorio  
actual  en  el  que  se  encuentra  el  usuario.

Por  ejemplo,  si  estuviéramos  en  el  directorio  home/pi  (el  directorio  de  inicio  de  los  usuarios  'pi')  y  quisiéramos  listar  (ls)  
el  archivo  foo.txt ,  podríamos  usar  el  direccionamiento  absoluto  para  llegar  al  archivo  escribiendo;

ls /home/pi/foo.txt

Sin  embargo,  dado  que  estamos  en  el  directorio /home/pi,  podríamos  usar  el  direccionamiento  relativo  y  simplemente  
escribir;

ls  foo.txt

Para  usar  el  direccionamiento  relativo  de  manera  efectiva,  debemos  poder  informarle  a  la  computadora  cuándo  queremos  
subir  en  la  jerarquía  del  directorio  (el  movimiento  hacia  abajo  se  realiza  simplemente  escribiendo  el  nombre  del  
directorio).  El  ascenso  a  un  directorio  principal  se  logra  mediante  el  uso  de  los  caracteres ..  (punto,  punto).
Si  nos  imaginamos  nuevamente  en  el  directorio /home/pi  y  queremos  listar  el  archivo  bar.txt  que  se  encuentra  en  el  
directorio /home/raspberry ,  podemos  teclear  lo  siguiente;

ls ../frambuesa/foo.txt

Aquí,  los  caracteres ..  primero  saltaron  al  directorio  de  inicio  y  luego  fueron  al  directorio  raspberry .

El  atajo  de  'casa'

El  carácter  de  tilde  ( )  se  utiliza  como  atajo  para  designar  el  directorio  de  inicio  de  un  usuario.  Por  lo  tanto,  suponiendo  
que  el  usuario  'pi'  tiene  el  directorio  de  inicio  de /home/pi,  pero  el  directorio  en  el  que  nosotros  (como  usuario  'pi')  
estamos  es  el  directorio /tmp ,  podemos  listar  el  archivo  foo.txt  usando  lo  siguiente  ruta  relativa  y  el  carácter  de  acceso  
directo  de  inicio;

ls  ~/foo.txt
Machine Translated by Google

Conceptos  de  Linux 29

Todo  es  un  archivo  en  Linux
Una  frase  que  a  menudo  surgirá  en  la  conversación  de  Linux  es  esa;

todo  es  un  archivo

Para  alguien  nuevo  en  Linux,  esto  suena  como  una  especie  de  "broma"  diseñada  para  asustar  a  los  desprevenidos  
y,  a  veces,  puede  actuar  como  una  barrera  para  una  comprensión  más  profunda  de  la  filosofía  detrás  del  enfoque  
adoptado  en  el  desarrollo  de  Linux.

La  explicación  detrás  de  la  declaración  es  que  Linux  está  diseñado  para  ser  un  sistema  construido  a  partir  de  un  
grupo  de  partes  que  interactúan  y  la  forma  en  que  esas  partes  pueden  trabajar  juntas  es  comunicarse  usando  un  
método  común.  Ese  método  consiste  en  usar  un  archivo  como  bloque  de  construcción  común  y  los  datos  en  un  
archivo  como  mecanismo  de  comunicación.

El  truco  para  entender  lo  que  significa  'Todo  es  un  archivo'  es  ampliar  nuestra  comprensión  de  lo  que  puede  ser  
un  archivo.

Archivos  tradicionales

El  concepto  tradicional  de  un  archivo  es  un  objeto  con  un  nombre  específico  en  una  ubicación  específica  con  un  
contenido  particular.  Por  ejemplo,  podríamos  tener  un  archivo  llamado  foo.txt  que  se  encuentra  en  el  directorio /
home/pi/  y  podría  contener  un  par  de  líneas  de  texto  similar  al  siguiente;

esta  es  la  primera  linea

Esta  es  la  segunda  línea

Directorios

Tan  inusual  como  suena,  un  directorio  también  es  un  archivo.  El  aspecto  especial  de  un  directorio  es  que  es  un  
archivo  que  contiene  una  lista  de  información  sobre  qué  archivos  (y/o  subdirectorios)  contiene.
Entonces,  cuando  queremos  enumerar  el  contenido  de  un  directorio  usando  el  comando  ls ,  lo  que  realmente  
sucede  es  que  el  sistema  operativo  obtiene  la  información  adecuada  del  archivo  que  representa  el  directorio.

Información  del  sistema

Sin  embargo,  los  archivos  también  pueden  ser  conductos  de  información.  El  directorio /proc/  contiene  archivos  
que  representan  información  del  sistema  y  del  proceso.  Si  queremos  determinar  información  sobre  el  tipo  de  CPU  
que  está  usando  la  computadora,  el  archivo  cpuinfo  en  el  directorio /proc/  puede  listarlo.  Al  ejecutar  el  comando  
'cat /proc/cpuinfo'  podemos  enumerar  una  gran  cantidad  de  información  sobre  nuestra  CPU  (por  cierto,  el  
siguiente  es  un  subconjunto  de  esa  información);

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 30

pi@raspberrypi  ~  $  gato /proc/cpuinfo
procesador :  0

nombre  del  modelo :  Procesador  ARMv7  rev  5  (v7l)

BogoMIPS :  57,60

Características :  medio  pulgar  fastmult  vfp  edsp  neon  vfpv3  tls  vfpv4  idiva  idi\  vt  vfpd32  lpae  evtstrm

Implementador  de  CPU:  0x41
Arquitectura  de  la  CPU:  7

variante  de  CPU :  0x0

parte  de  la  CPU :  0xc07

revisión  de  la  CPU :  5

Hardware :  BCM2709

Revisión :  a01041

De  serie :  000000002a4ea712

Ahora,  eso  podría  no  significar  mucho  para  nosotros  en  esta  etapa,  pero  si  estuviéramos  escribiendo  un  programa  que  
necesitara  un  tipo  particular  de  CPU  para  ejecutarse  correctamente,  podría  verificar  este  archivo  para  asegurarse  de  
que  pueda  funcionar  correctamente.  Hay  una  amplia  gama  de  archivos  en  el  directorio /proc/  que  representan  una  gran  
cantidad  de  información  sobre  cómo  está  funcionando  nuestro  sistema.

Dispositivos

Cuando  usamos  diferentes  dispositivos  en  un  sistema  operativo  Linux  estos  también  se  representan  como  un  archivo.
En  el  directorio /dev/  tenemos  archivos  que  representan  una  variedad  de  dispositivos  físicos  que  forman  parte  de  
nuestra  computadora.  En  sistemas  informáticos  más  grandes  con  varios  discos,  podrían  representarse  como /dev/sda1  
y /dev/sda2,  de  modo  que  cuando  quisiéramos  realizar  una  acción  como  formatear  una  unidad,  usaríamos  el  comando  
mkfs  en  el  archivo /dev/sda1 .

El  directorio /dev/  también  contiene  algunos  archivos  curiosos  que  se  utilizan  como  herramientas  para  generar  o  
administrar  datos.  Por  ejemplo , /dev/random  es  una  interfaz  para  el  dispositivo  de  números  aleatorios  del  kernel. /dev/
zero  representa  un  archivo  que  transmitirá  constantemente  ceros  (si  bien  esto  puede  sonar  extraño,  imagine  una  
situación  en  la  que  desea  escribir  sobre  un  área  del  disco  con  datos  para  borrarlos).  El  más  conocido  de  estos  archivos  
inusuales  es  probablemente /dev/null¹ .  Esto  actuará  como  un  'dispositivo  nulo'  que  esencialmente  descartará  
cualquier  información  que  se  le  envíe.

¹ https://en.wikipedia.org/wiki/Null_device
Machine Translated by Google

Conceptos  de  Linux 31

Archivos  e  inodos  de  Linux

Habiendo  establecido  ya  que  todo  es  un  archivo  en  un  sistema  operativo  Linux,  nos  encontramos  en  la  situación  en  
la  que  los  archivos  de  repente  son  un  poco  más  interesantes  y  misteriosos,  y  es  útil  comprender  mejor  cómo  se  
representan  los  archivos  en  un  sistema  operativo  Linux  para  que  el  el  contexto  de  otras  funciones  se  puede  entender  
mejor  (pensando  en  enlaces).

Los  archivos  de  Linux  se  pueden  entender  mejor  pensando  en  ellos  como  descritos  en  tres  partes;

•  El  nombre  del  archivo

•  Un  inodo
•  Los  datos

el  nombre  del  archivo

Los  nombres  de  archivos  individuales  normalmente  están  restringidos  a  255  caracteres  y  pueden  estar  formados  por  
casi  cualquier  combinación  de  caracteres.  El  único  carácter  'especial'  o  'reservado'  al  asignar  un  nombre  de  archivo  
es  la  barra  diagonal  (/).  Este  carácter  se  utiliza  únicamente  para  separar  directorios  y  nombres  de  archivos,  según  
corresponda.

El  otro  componente  de  un  nombre  de  archivo  es  un  número  de  inodo.  Este  es  un  número  asignado  por  el  sistema  
operativo  que  actúa  como  un  puntero  a  un  inodo  (Nodo  de  índice)  que  es  un  objeto  que  puede  considerarse  como  
una  entrada  en  una  base  de  datos  que  almacena  información  específicamente  sobre  ese  archivo.

Podemos  enumerar  los  números  de  inodo  asociados  con  los  archivos  usando  la  opción  ­i  al  enumerar  los  archivos.  
Por  ejemplo;

ls  ­i  python_games/

La  salida  (reproducida  en  forma  editada  a  continuación)  muestra;

pi@raspberrypi  ~  $  ls  ­i  python_games/  45014  4row_arrow.png  
63554  inkspillresetbutton.png  49906  4row_black.png  63556  inkspillsettingsbutton.png  54215  
4row_red.png  63530  cat.png  63533  drawing.py  63544  gem6.  png  63545  gem7.png  63546  gemgem.py  
63553  inkspilllogo.png  63552   63559  partido0.wav

inkspill.py 63569  princesa.png  63488  
RedSelector.png  63576  star_title.png

63578  tetrisb.mid
63579  tetrisc.mid

63522  Wood_Block_Tall.png  63582  
gusano.py

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 32

Los  números  a  la  izquierda  de  los  nombres  de  archivo  son  los  números  de  inodo  asociados.

El  nombre  del  archivo  y  el  inodo  asociado  están  en  el  directorio  en  el  que  está  contenido  el  archivo.  Cada  directorio  (que  en  sí  
mismo  es  solo  un  archivo)  contiene  una  tabla  de  los  archivos  que  contiene  con  los  números  de  inodo  asociados.

el  inodo
Cada  archivo  tiene  un  inodo  asociado  ( nodo  de  índice).  El  inodo  es  análogo  a  una  entrada  de  base  de  datos  que  describe  un  
rango  de  atributos  del  archivo.  Estos  atributos  incluyen;

•  El  número  de  inodo  único  •  Lista  de  
control  de  acceso  (ACL)  •  Atributos  

extendidos,  como  agregar  solo  o  inmutabilidad  •  Ubicación  del  bloque  de  disco

•  Número  de  bloques

•  Hora  de  acceso,  cambio  y  modificación  de  archivos  •  
Hora  de  borrado  de  archivos

•  Número  de  generación  de  archivo  
•  Tamaño  de  

archivo  •  Tipo  

de  archivo  
•  Grupo  •  Número  de  enlaces

•  Dueño
•  Permisos

•  Indicadores  de  estado

Bien  puede  preguntarse  cuál  es  el  punto  de  tener  inodos  numerados.  Buena  pregunta.  Tienen  una  variedad  de  usos,  incluido  
el  uso  cuando  hay  archivos  para  eliminar  con  nombres  de  archivo  complejos  que  no  se  pueden  reproducir  fácilmente  en  la  
línea  de  comandos  o  permitir  la  vinculación.

Curiosamente,  se  debe  asignar  espacio  para  los  inodos  cuando  se  instala  un  sistema  operativo.  Dentro  de  cualquier  sistema  
de  archivos,  la  cantidad  máxima  de  inodos  y,  por  lo  tanto,  la  cantidad  máxima  de  archivos,  se  establece  cuando  se  crea  el  
sistema  de  archivos.

Por  lo  tanto,  hay  dos  formas  en  las  que  un  sistema  de  archivos  puede  quedarse  sin  espacio;

1.  Puede  consumir  todo  el  espacio  para  agregar  nuevos  datos  (es  decir,  quedarse  sin  espacio  en  el  disco  duro),  o  
2.  Puede  usar  todos  los  inodos.

Quedarse  sin  inodos  hará  que  una  computadora  se  detenga  porque  el  agotamiento  de  los  inodos  prohíbe  la  creación  de  
archivos  adicionales.  Incluso  si  existe  suficiente  espacio  en  el  disco  duro.  Es  particularmente  fácil  quedarse  sin  inodos  si  un  
sistema  de  archivos  contiene  una  gran  cantidad  de  archivos  muy  pequeños.
Machine Translated by Google

Conceptos  de  Linux 33

Enlaces

Un  enlace  en  un  sistema  de  archivos  de  Linux  proporciona  un  mecanismo  para  establecer  una  conexión  entre  archivos.
Si  bien  se  pueden  hacer  comparaciones  con  los  accesos  directos  en  Windows,  esto  no  es  muy  preciso  ya  que  la  
vinculación  en  Linux  tiene  mucha  más  utilidad.

Para  obtener  el  beneficio  completo  de  la  descripción  de  los  enlaces,  debemos  estar  familiarizados  con  la  discusión  
anterior  sobre  archivos  e  inodos.  Debemos  recordar  que  un  archivo  Linux  consta  de  tres  partes;

1.  El  nombre  del  archivo  y  su  número  de  inodo  asociado
2.  Un  inodo  que  describe  los  atributos  del  archivo.
3.  Los  datos  asociados  al  fichero.

El  nombre  del  archivo  y  el  número  de  inodo  apuntan  a  un  inodo  que  tiene  toda  la  información  sobre  el  archivo  y,  a  su  
vez,  apunta  a  los  datos  almacenados  en  el  disco  duro.

Los  enlaces  se  pueden  identificar  al  listar  archivos  con  ls  ­l  por  una  l  que  aparece  como  el  primer  carácter  en  el  listado  
del  archivo  y  por  la  flecha  (­>)  al  final  que  ilustra  el  enlace.  Por  ejemplo,  al  ejecutar  el  siguiente  comando  de  lista  podemos  
ver  (como  solo  uno  entre  muchos  archivos)  que  el  archivo /etc/vtrgb  es  un  enlace  al  archivo /etc/alternatives/vtrgb.

ls  ­l /etc

Tenga  en  cuenta  la  l  inicial  y  el  signo  de  enlace  para  vtrgb  en  la  salida.

drwxr­xr­x  2  raíz  raíz 4096  17  de  abril  de  2014  vim
lrwxrwxrwx  1  raíz  raíz 23  de  julio  de  10  07:45  vtrgb  ­> /etc/alternatives/vtrgb
­rw­r­­r­­  1  raíz  raíz 4812  8  de  febrero  de  2014
drwxr­xr­x  2  raíz  raíz 4096  10  de  julio  08:04  wildmidi

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux
34

Enlaces  blandos  (también  conocidos  como  enlaces  simbólicos,  también  conocidos  como  enlaces  simbólicos)

Un  enlace  suave  también  se  puede  denominar  enlace  simbólico,  pero  probablemente  se  lo  llame  con  más  frecuencia  
'enlace  simbólico'.  Un  enlace  simbólico  tiene  un  nombre  de  archivo  y  un  número  de  inodo  que  apunta  a  su  propio  
inodo,  pero  en  el  inodo  hay  una  ruta  que  redirige  a  otro  inodo  que  a  su  vez  apunta  a  un  bloque  de  datos.

Enlace  suave

Debido  a  que  los  inodos  están  restringidos  a  la  partición  en  la  que  se  crean,  un  enlace  simbólico  permite  redirigir  a  una  
ruta  que  puede  cruzar  particiones.

Si  editamos  el  archivo  vinculado,  se  editará  el  archivo  original.  Si  eliminamos  el  archivo  vinculado,  el  archivo  original  
no  se  eliminará.  Pero  si  borramos  el  archivo  original  sin  borrar  el  enlace,  nos  quedaremos  con  un  enlace  huérfano.

Los  enlaces  suaves  pueden  vincular  a  directorios  y  archivos,  pero  si  el  archivo  se  mueve,  el  enlace  ya  no  funcionará.
Machine Translated by Google

Conceptos  de  Linux 35

Enlaces  duros

Un  vínculo  fijo  es  aquel  en  el  que  más  de  un  nombre  de  archivo  se  vincula  a  un  inodo.

Enlace  duro

Esto  significa  que  dos  nombres  de  archivo  comparten  esencialmente  el  mismo  inodo  y  bloque  de  datos,  sin  embargo,  se  
comportarán  como  archivos  independientes.  Por  ejemplo,  si  luego  eliminamos  uno  de  los  archivos,  el  enlace  se  rompe,  pero  
el  inodo  y  el  bloque  de  datos  permanecerán  hasta  que  se  eliminen  todos  los  nombres  de  archivo  que  enlazan  con  el  inodo.

Los  enlaces  duros  solo  se  vinculan  a  un  archivo  (sin  directorios),  no  pueden  abarcar  particiones  y  aún  se  vincularán  a  un  
archivo  incluso  si  se  mueve.

Enlaces  comparados
enlaces  duros

•  Solo  vinculará  a  un  archivo  (sin  directorios)  •  No  
vinculará  a  un  archivo  en  un  disco  duro /  partición  diferente  •  Vinculará  a  un  
archivo  incluso  cuando  se  mueva  •  Vincula  a  un  inodo  

y  una  ubicación  física  en  el  disco

Enlaces  blandos  (o  enlaces  simbólicos  o  symlinks)

•  Se  vinculará  a  directorios  o  archivos

•  Se  vinculará  a  un  archivo  o  directorio  en  un  disco  duro/partición  diferente  •  Los  vínculos  
permanecerán  si  se  elimina  el  archivo  original  •  Los  vínculos  
no  se  conectarán  al  archivo  si  se  mueve

•  Los  enlaces  se  conectan  a  través  de  convenciones  abstractas  (por  lo  tanto,  simbólicas),  no  ubicaciones  físicas  en  el
disco.  Tienen  su  propio  inodo

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 36

Edición  de  archivos

Trabajar  en  Linux  es  un  ejercicio  para  comprender  los  conceptos  que  utiliza  Linux  como  base,  como  "Todo  es  un  
archivo"  y  el  uso  de  comodines,  conductos  y  la  estructura  de  directorios.

Mientras  trabaja  en  la  línea  de  comando,  se  dará  cuenta  muy  rápidamente  de  que  es  necesario  saber  cómo  editar  
un  archivo.  Siendo  Linux  lo  que  es,  hay  muchas  formas  de  editar  los  archivos.

Una  excelente  ilustración  de  esto  es  a  través  del  excelente  trabajo  de  dibujos  animados  de  la  tira  cómica  xkcd¹   
(Compre  sus  cosas¹ ,  ¡es  increíble!).

Programadores  reales

Para  una  muestra  de  las  posibles  opciones  disponibles,  Wikipedia¹   nos  respalda.  Inevitablemente,  donde  hay  
elección,  hay  preferencias  y  donde  hay  preferencias,  hay  sesgo.  Todos  tendrán  una  preferencia  por  un  editor  en  
particular  y  no  dejes  que  un  sesgo  en  particular  te  influya  para  ir  en  una  dirección  particular  sin  considerar  tus  
opciones.  Hablando  desde  mi  experiencia  personal,  me  animaron  a  usar  'vi'  ya  que  representaba  la  preferencia  
del  grupo  en  el  que  estaba,  pero  debido  a  que  llegué  tarde  a  la  línea  de  comando,  luché  durante  mucho  tiempo  
para  tratar  de  familiarizarme  con  ella.  Sé  que  debería  haberme  esforzado  más,  pero  fracasé.  Durante  un  tiempo  
deambulé  por  el  desierto  del  editor  tratando  desesperadamente  de  aferrarme  a  la  GUI  donde  podía  usar  'gedit'  o  
'geany'  y  luego  un  día  me  presentaron  a  'nano'.

Esto  se  ha  convertido  en  mi  preferencia  y,  por  lo  tanto,  estoy  sesgado  hacia  él.  No  confíes  en  mi  palabra.  Prueba  
alternativas.  Describiré  'nano'  a  continuación,  pero  tómelo  como  un  camino  posible  y  tenga  en  cuenta  que  cualquier  
editor  que  funcione  para  usted  será  el  correcto.  El  truco  es  simplemente  encontrar  uno  que  funcione  para  ti.

¹ http://xkcd.com/378/  
¹ http://store.xkcd.com/  
¹ https://en.wikipedia.org/wiki/List_of_text_editors
Machine Translated by Google

Conceptos  de  Linux 37

El  editor  nano
El  editor  nano  se  puede  iniciar  desde  la  línea  de  comando  usando  solo  el  comando  y  la /ruta/nombre  del  archivo.

nano  foo.txt

Si  el  archivo  requiere  permisos  de  administrador,  se  puede  ejecutar  con  'sudo'.

sudo  nano  foo.txt

Cuando  se  abre  nos  presenta  un  espacio  de  trabajo  y  parte  del  archivo  y  algunos  atajos  comunes  de  uso  en  la  
parte  inferior  de  la  consola;

Interfaz  nana

Incluye  algunos  resaltados  de  sintaxis  simples  para  formatos  de  archivo  comunes;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 38

Resaltado  de  sintaxis  nano

Esto  se  puede  mejorar  si  se  desea  (cue  Google).

Hay  una  variedad  de  atajos  para  facilitar  la  edición,  pero  los  más  simples  son  los  siguientes;

•  CTRL­x  ­  Salir  del  editor.  Si  estamos  en  medio  de  la  edición  de  un  archivo,  se  nos  preguntará  si
queremos  guardar  nuestro  trabajo

•  CTRL­r:  leer  un  archivo  en  nuestro  archivo  de  trabajo  actual.  Esto  nos  permite  agregar  texto  de  otro  
archivo  mientras  trabajamos  desde  un  archivo  nuevo.
•  CTRL­k  ­  Cortar  texto.  
•  CTRL­u:  texto  sin  cortar  (o  pegar).  •  
CTRL­o:  guarda  el  nombre  del  archivo  y  continúa  
trabajando.  •  CTRL­t  ­  Revisar  la  ortografía  de  
nuestro  texto.  •  CTRL­w  ­  Buscar  el  texto.

•  CTRL­a  ­  Ir  al  principio  de  la  línea  de  trabajo  actual.  •  CTRL­e  ­  Ir  al  
final  de  la  línea  de  trabajo  actual.  •  CTRL­g:  obtener  ayuda  
con  nano.
Machine Translated by Google

Conceptos  de  Linux 39

secuencias  de  comandos

Un  script  de  shell  es  un  archivo  que  contiene  una  serie  de  comandos.  El  proceso  de  secuencias  de  comandos  es  la  
escritura  de  esos  comandos  en  el  archivo.  El  shell  puede  leer  este  archivo  y  actuar  sobre  los  comandos  como  si  
estuvieran  escritos  en  el  teclado.

Debido  a  que  hay  muchos  comandos  disponibles  para  usar,  podemos  darnos  cuenta  del  poder  real  de  la  informática  
y  la  reducción  de  tareas  repetitivas  mediante  la  automatización  de  procesos.

Piense  en  los  scripts  de  shell  como  comandos  de  programa  que  están  encadenados  y  que  el  sistema  puede  ejecutar  
como  un  evento  con  script.  Hacen  uso  de  funciones  como  la  sustitución  de  comandos  donde  podemos  invocar  un  
comando,  como  la  fecha,  y  usar  su  salida  como  parte  de  un  esquema  de  nombres  de  archivos.  Los  scripts  son  
programas  por  derecho  propio  que  utilizan  funciones  de  programación  como  bucles,  variables  y  sentencias  if/then/
else.  La  belleza  de  las  secuencias  de  comandos  es  que  no  tenemos  que  aprender  otro  lenguaje  de  programación  
para  crear  secuencias  de  comandos  de  manera  efectiva,  simplemente  usamos  los  comandos  que  usamos  en  la  línea  
de  comandos.

Para  escribir  con  éxito  un  guión  para  hacer  algo,  tenemos  que  hacer  tres  cosas;

1.  Escriba  un  script  (un  archivo  con  una  extensión  '.sh')  que  use  comandos  comunes.
2.  Establezca  los  permisos  en  el  archivo  para  que  se  pueda  ejecutar.  3.  
Coloque  el  archivo  en  algún  lugar  donde  el  shell  pueda  localizarlo  cuando  se  invoque.

Escribiendo  nuestro  Guión

El  script  en  sí  es  solo  un  archivo  de  texto.  Lo  único  elegante  es  que  contiene  comandos  y  lo  haremos  ejecutable.

Podemos  comenzar  con  un  ejemplo  simple  que  demuestra  hacer  eco  de  un  mensaje  simple  en  la  pantalla.

Comenzando  en  nuestro  directorio  de  inicio  (/home/pi)  podemos  usar  el  editor  nano  para  crear  nuestro  script  
ejecutando  el  siguiente  comando;

nano  di  hola.sh

Esto  abrirá  el  editor  nano  y  podemos  escribir  algo  como  lo  siguiente;

#!/bin/bash
#  Guión  de  Hola  Mundo

echo  "¡Hola  mundo!"

La  primera  línea  del  script  es  importante  porque  proporciona  información  al  shell  sobre  qué  programa  se  debe  usar  
para  interpretar  y  ejecutar  el  script.  La  línea  comienza  con  un  'shebang' (#!)  y  luego  la  ruta  al  programa  (en  este  caso /
bin/bash).

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 40

La  segunda  línea  es  un  comentario  que  colocaríamos  en  un  script  para  decirnos  a  nosotros  mismos  oa  otros  que  abren  el  archivo  lo  
que  está  pasando.  Cualquier  cosa  que  aparezca  después  de  una  marca  #  (excepto  en  la  primera  línea  con  'shebang')  será  ignorada  
por  el  script  y  se  ingresará  para  tomar  notas  para  el  lector.

La  última  línea  es  el  comando  que  ejecutaremos.  En  este  caso  es  solo  un  comando,  pero  también  puede  ser  cualquier  número.  El  
comando  en  este  caso  es  un  comando  de  eco  muy  simple  para  imprimir  las  palabras  '¡Hola  mundo!'  a  la  pantalla

Una  vez  terminado  podemos  cerrar  y  guardar  el  archivo  (CTRL­x  para  cerrar  y  decir  'y'  para  guardar);

Ese  es  nuestro  guión  escrito.

Hacer  el  script  ejecutable
Si  enumeramos  las  propiedades  de  nuestro  archivo  sayhello.sh  con  ls  de  la  siguiente  manera;

ls  ­l  digo  hola.sh

…  veremos  los  detalles  del  archivo  algo  así;

­rw­r­­r­­  1  pi  pi  54  17  de  febrero  17:18  sayhello.sh

Los  permisos  de  Linux  especifican  qué  puede  hacer  el  usuario  propietario,  qué  puede  hacer  un  miembro  del  grupo  propietario  y  qué  
pueden  hacer  otros  usuarios  con  el  archivo.  Para  cualquier  usuario,  necesitamos  tres  bits  para  especificar  permisos  de  acceso:  el  
primero  para  indicar  acceso  de  lectura  (r),  el  segundo  para  indicar  acceso  (w)  y  el  tercero  para  indicar  acceso  de  ejecución  (x).

También  tenemos  tres  niveles  de  propiedad:  'usuario',  'grupo'  y  'otros',  por  lo  que  necesitamos  un  triplete  (tres  conjuntos  de  tres)  para  
cada  uno,  lo  que  da  como  resultado  nueve  bits.

El  siguiente  diagrama  muestra  cómo  se  puede  representar  esta  agrupación  de  permisos  en  un  sistema  Linux  donde  el  usuario,  el  
grupo  y  otros  tenían  permisos  completos  de  lectura,  escritura  y  ejecución;

Permisos  de  Linux  como  rwx

Los  permisos  de  nuestro  archivo  sayhello.sh  nos  dicen  que  el  usuario  puede  leer  y  escribir  el  archivo,  los  miembros  del  grupo  y  
cualquier  otra  persona  puede  leer  el  archivo.  Lo  que  tenemos  que  hacer  es  hacerlo  ejecutable  usando  el  comando  chmod
Machine Translated by Google

Conceptos  de  Linux 41

chmod  755  saluda.sh

Si  comprobamos  de  nuevo  con  ls  ­l  sayhello.sh  deberíamos  ver  algo  similar  a  esto;

­rwxrwxr­x  1  pi  pi  54  17  de  febrero  17:18  sayhello.sh

Aquí  todos  tienen  permisos  de  ejecución  y  el  usuario  'pi'  y  el  grupo  'pi'  tienen  permisos  de  lectura  y  escritura.

Coloque  el  script  en  algún  lugar  donde  el  shell  pueda  encontrarlo.

Actualmente  estamos  trabajando  en  el  directorio  de  inicio  'pi'  donde  hemos  guardado  nuestro  archivo.  Este  debería  
ser  el  ejemplo  más  fácil  de  hacer  que  el  script  sea  accesible  y,  como  tal,  deberíamos  poder  ejecutar  el  comando  
directamente  desde  la  línea  de  comandos  de  la  siguiente  manera:

./dihola.sh

La  salida  del  comando  debería  verse  así;

¡Hola  Mundo!

La  notación ./  delante  del  script  designa  la  ruta  al  archivo  que  es  nuestro  directorio  actual.
También  podríamos  haber  proporcionado  la  ruta  completa  de  la  siguiente  manera;

/home/pi/di  hola.sh

(Dado  que /home/pi/  es  el  directorio  en  el  que  se  encuentra  actualmente  el  archivo).

Eso  funciona,  pero  en  el  mundo  perfecto  no  necesitaríamos  designar  una  ruta  al  script  para  ejecutarlo.  Podemos  
hacer  que  eso  suceda  colocando  el  script  en  uno  de  los  directorios  en  la  'RUTA'  de  los  usuarios.

PATH  es  una  variable  ambiental  que  le  dice  al  shell  en  qué  directorios  buscar  archivos  ejecutables.  No  debe  
confundirse  con  el  término  'ruta'  que  se  refiere  a  la  dirección  de  un  archivo  o  directorio  en  un  sistema  de  archivos.

La  RUTA  de  un  usuario  consta  de  una  serie  de  rutas  absolutas  separadas  por  dos  puntos.  Cuando  escribimos  un  
comando  en  la  línea  de  comando  que  no  se  distribuye  con  el  sistema  operativo  o  que  no  incluye  su  ruta  absoluta  y  
luego  el  shell  busca  a  través  de  los  directorios  en  PATH,  que  constituyen  nuestra  ruta  de  búsqueda,  hasta  que  
encuentra  un  archivo  ejecutable  con  ese  nombre

Podemos  verificar  cuáles  son  las  rutas  disponibles  haciendo  eco  de  la  variable  PATH  en  la  pantalla  de  esta  manera;

www.dbooks.org
Machine Translated by Google

Conceptos  de  Linux 42

echo  $RUTA

Esto  luego  informará  PATH  a  la  pantalla  algo  como  lo  siguiente

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Por  lo  tanto,  podemos  agregar  nuestro  script  a  cualquiera  de  esos  directorios  y  funcionará  como  un  comando  normal.  
Sin  embargo,  esto  hará  que  esté  disponible  para  todos  los  usuarios  del  sistema  y  si  queremos  que  solo  esté  disponible  
para  nosotros  como  usuario  actual,  necesitaremos  agregar  una  nueva  ruta  a  PATH.

La  buena  noticia  es  que  esto  es  fácil  de  hacer  y  en  Debian  Jessie  todo  lo  que  tenemos  que  hacer  es  crear  un  directorio  
en  nuestro  directorio  de  inicio  (si  estamos  conectados  como  el  usuario  'pi',  sería /home/pi )  llamado  papelera.  Podemos  
colocar  cualquier  script  que  queramos  que  esté  disponible  para  el  usuario  'pi'  allí  y  tendrá  acceso  a  él.  La  razón  por  la  
que  tendrán  acceso  es  que,  si  bien  no  aparece  en  PATH  en  este  momento,  cuando  agregamos  el  directorio  bin  a  
nuestro  directorio  de  inicio,  hay  un  script  llamado .profile  que  se  verifica  cada  vez  que  iniciamos  nuestro  shell  bash.  
Si .profile  ve  que  tenemos  un  directorio  bin  en  nuestro  directorio  de  inicio,  lo  agrega  a  nuestra  RUTA.

Entonces,  si  agregamos  el  directorio  usando  mkdir  de  la  siguiente  manera;

mkdir~/bin

…  se  nos  configurará  una  nueva  ruta  en  PATH  la  próxima  vez  que  iniciemos  nuestro  shell.

No  olvidemos  que  debemos  mover  nuestro  archivo  a  nuestro  nuevo  directorio  con  mv  de  la  siguiente  manera;

mv  ~/di  hola.sh  ~/bin/

Si  abrimos  una  nueva  terminal  e  iniciamos  sesión  como  nuestro  usuario  (es  'pi'  en  el  ejemplo)  podemos  ir  a  cualquier  
parte  (cd)  en  la  estructura  del  directorio  y  simplemente  ejecutar  el  comando;

hola.sh

…  y  obtener  la  respuesta;

¡Hola  Mundo!

Esa  es  la  finalización  de  nuestro  primer  ejemplo  simple.  El  trabajo  más  avanzado  con  bucles,  variables  y  sentencias  if/
then/else  tendrá  que  ser  un  ejercicio  para  el  lector.  Con  suerte,  eso  es  'solo  lo  suficiente'  para  comenzar.
Machine Translated by Google

Comandos  Linux
Administración  de  archivos

cd

El  comando  cd  se  usa  para  moverse  en  la  estructura  de  directorios  del  sistema  de  archivos  (cambiar  directorio).  Es  
uno  de  los  comandos  fundamentales  para  navegar  por  la  estructura  de  directorios  de  Linux.

cd  [opciones]  directorio:  Se  utiliza  para  cambiar  el  directorio  actual.

Por  ejemplo,  cuando  iniciamos  sesión  por  primera  vez  en  Raspberry  Pi  como  usuario  'pi',  nos  encontraremos  en  el  
directorio /home/pi .  Si  quisiéramos  cambiar  al  directorio /home  (subir  un  nivel)  podríamos  usar  el  comando;

cd /casa

Tómese  un  tiempo  para  familiarizarse  con  el  concepto  de  moverse  por  la  estructura  de  directorios  desde  la  línea  de  
comandos,  ya  que  es  una  habilidad  importante  para  establecer  desde  el  principio  en  Linux.

el  comando  cd

El  comando  cd  será  uno  de  los  primeros  comandos  que  usará  alguien  que  comience  con  Linux.  Se  usa  para  moverse  
en  la  estructura  de  directorios  del  sistema  de  archivos  (por  lo  tanto,  cd  =  cambiar  directorio).
Solo  tiene  dos  opciones  y  rara  vez  se  usan.  Los  argumentos  consisten  en  apuntar  al  directorio  al  que  queremos  ir  y  
estos  pueden  ser  caminos  absolutos  o  relativos.

El  comando  cd  se  puede  usar  sin  opciones  ni  argumentos.  En  este  caso  nos  devuelve  a  nuestro  directorio  de  inicio  
como  se  especifica  en  el  archivo /etc/passwd .

Si  usamos  cd  en  cualquier  directorio  aleatorio  (pruebe  con  cd /var)  podemos  ejecutar  cd  por  sí  mismo;

cd

…  y  en  el  caso  de  una  instalación  vainilla  de  Raspbian,  cambiaremos  al  directorio /home/pi ;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 44

pi@raspberrypi  ~  $  cd /var  
pi@raspberrypi /var  $  cd  
pi@raspberrypi  ~  $  pwd /
home/pi

En  el  ejemplo  anterior,  cambiamos  a /var  y  luego  ejecutamos  el  comando  cd  solo  y  luego  ejecutamos  el  comando  pwd  que  
nos  mostró  que  el  directorio  de  trabajo  actual  es /home/pi.  Este  es  el  directorio  de  inicio  predeterminado  de  Raspbian  para  el  
usuario  pi.

Opciones

Como  se  mencionó,  solo  hay  dos  opciones  disponibles  para  usar  con  el  comando  cd .  Esta  es  ­P ,  que  le  indica  a  cd  que  use  
la  estructura  de  directorios  físicos  en  lugar  de  seguir  enlaces  simbólicos  y  la  opción  ­L ,  que  obliga  a  seguir  los  enlaces  
simbólicos.

Para  aquellos  que  comienzan  con  Linux,  hay  pocas  posibilidades  de  usar  cualquiera  de  estas  dos  opciones  en  el  futuro  
inmediato  y  sugiero  que  use  su  valiosa  memoria  para  recordar  otras  cosas  de  Linux.

Argumentos

Como  se  mencionó  anteriormente,  el  argumento  predeterminado  (si  no  se  incluye  ninguno)  es  volver  al  directorio  de  inicio  de  
los  usuarios  como  se  especifica  en  el  archivo /etc/passwd .

Al  especificar  un  directorio,  podemos  hacerlo  mediante  direccionamiento  absoluto  o  relativo.  Entonces,  si  comenzamos  en  el  
directorio /home/pi ,  podríamos  ir  al  directorio /home  ejecutando;

cd /casa

…  o  usando  direccionamiento  relativo  y  podemos  usar  los  símbolos ..  para  designar  el  directorio  padre;

discos  compactos ..

Una  vez  en  el  directorio /home ,  podemos  cambiar  al  directorio /home/pi/Desktop  usando  el  direccionamiento  relativo  de  la  
siguiente  manera;

cd  pi/Escritorio

También  podemos  usar  el  argumento  ­  para  navegar  al  directorio  anterior  en  el  que  estábamos.
Machine Translated by Google

Comandos  Linux 45

Ejemplos

Cambie  al  directorio  raíz  (/) ;

discos  compactos /

Pruébate

1.  Después  de  haber  cambiado  del  directorio /home/pi  al  directorio /home ,  ¿cuáles  son  las  
cinco  variaciones  del  uso  del  comando  cd  que  llevarán  al  usuario  pi  al  directorio /home/pi ?  
2.  Comenzando  en /home/pi  directorio  y  usando  solo  direccionamiento  relativo,  use  cd  para  cambiar
en  el  directorio /var .

www.dbooks.org
Machine Translated by Google

Comandos  Linux 46

chgrp

El  comando  chgrp  se  usa  para  cambiar  la  propiedad  del  grupo  de  un  archivo  o  directorio.  En  este  sentido,  es  muy  similar  
al  comando  chown ,  excepto  que  se  usa  para  cambiar  la  membresía  del  grupo  en  lugar  de  la  de  los  usuarios.

•  chgrp  [opciones]  archivos  de  grupo:  cambie  la  propiedad  del  grupo  de  uno  o  más  archivos  y  directorios

Por  ejemplo,  el  siguiente  comando  (que  probablemente  tenga  el  prefijo  sudo)  establece  la  propiedad  del  grupo  para  el  
directorio /srv/shared .  Los  permisos  de  grupo  en  este  directorio  ahora  se  aplican  a  cualquier  usuario  en  el  grupo  de  
usuarios .  En  la  mayoría  de  los  casos,  el  comando  chmod  se  usaría  para  garantizar  que  los  permisos  para  el  grupo  en  
ese  directorio  sean  correctos.

usuarios  chgrp /srv/compartido

Podemos  verificar  esto  usando  ls  ­l:

pi@frambuesapi  ~  $  ls  ­l
4  totales

drwxr­xr­x  2  usuarios  raíz  4096  18  de  julio  21:24  compartido

En  esta  etapa,  los  miembros  del  grupo  de  usuarios  pueden  leer  y  examinar  el  contenido  del  directorio /srv/shared .

Si  agregamos  el  permiso  de  escritura  del  grupo  usando  chmod  g+w ,  cualquier  usuario  que  sea  miembro  del  grupo  de  
usuarios  podrá  escribir  en  este  directorio.

Este  proceso  puede  ser  útil  para  crear  un  directorio  en  el  que  los  usuarios  habituales  del  sistema  puedan  compartir  datos  
libremente.

El  comando

El  nombre  chgrp  es  simplemente  una  abreviatura  de  'cambio  de  grupo'.  Probablemente  recordará  que  chown  también  
puede  cambiar  la  propiedad  del  grupo,  por  lo  que  chgrp  es  realmente  un  medio  más  rápido  para  cambiar  la  propiedad  del  
grupo  de  un  archivo  o  directorio  si  no  necesitamos  cambiar  la  propiedad  del  usuario.

Opciones

La  opción  más  utilizada  con  chgrp  es  la  opción  ­R .  Al  igual  que  chown  y  chgrp,  esto  hace  que  chgrp  cambie  los  permisos  
de  forma  recursiva;  es  decir,  al  propio  directorio  de  destino  y  todo  su  contenido.

Otra  opción  posible  es  ­­reference.  Esto  cambia  la  propiedad  del  grupo  objetivo  a  la  misma  que  la  del  archivo  de  
referencia.  Por  ejemplo:
Machine Translated by Google

Comandos  Linux 47

chgrp  ­­reference=archivo1.txt  archivo2.txt

Argumentos

¡ Afortunadamente,  chgrp  es  bastante  simple!  Simplemente  asegúrese  de  que  el  nombre  del  grupo  sea  el  primer  
argumento  y  que  los  argumentos  posteriores  sean  archivos  y  directorios  que  desee  modificar.

chgrp  nombre  de  grupo  archivo1  archivo2 ...

Ejemplos

Muestre  algunos  ejemplos  de  uso  y  resultados  (estos  deben  ser  diferentes  de  los  ejemplos  utilizados  
anteriormente  y  deben  demostrar  el  uso  del  mundo  real  y  las  combinaciones  de  argumentos  y  opciones).

Pruébate

1.  ¿Qué  haría  al  ejecutar  el  comando  chgrp  root   /file.txt ?  ¿Quién  puede  acceder  al  archivo  después  
de  ejecutar  esto?
2.  ¿Qué  problemas  de  seguridad  podrían  resultar  del  uso  de  chgrp  para  otorgar  a  un  grupo  acceso  
compartido  a  un  directorio?  ¿Cómo  se  podrían  prevenir?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 48

chmod

El  comando  chmod  nos  permite  establecer  o  modificar  los  permisos  de  un  archivo.  Debido  a  que  Linux  está  diseñado  como  
un  sistema  multiusuario,  normalmente  hay  varios  usuarios  diferentes  con  diferentes  permisos  para  los  archivos  que  pueden  
leer/escribir  o  ejecutar.  chmod  nos  permite  limitar  el  acceso  a  usuarios  autorizados  para  hacer  cosas  como  editar  archivos  
web,  mientras  que  los  usuarios  generales  solo  pueden  leer  los  archivos.

•  Archivos  de  modo  chmod  [opciones]:  cambie  los  permisos  de  acceso  de  uno  o  más  archivos  y  directorios

Por  ejemplo,  el  siguiente  comando  (que  probablemente  tenga  el  prefijo  sudo)  establece  los  permisos  para  el  directorio /var/
www  para  que  el  usuario  pueda  leer,  escribir  y  cambiar  en  el  directorio.  Los  propietarios  de  grupos  también  pueden  leer,  
escribir  y  cambiar  en  el  directorio.  Todos  los  demás  pueden  leer  y  cambiar  en  el  directorio,  pero  no  pueden  crear  ni  eliminar  
un  archivo  dentro  de  él;

chmod  775 /var/www

Esto  podría  permitir  a  los  usuarios  normales  navegar  por  páginas  web  en  un  servidor,  pero  evitar  que  editen  esas  páginas  
(lo  que  probablemente  sea  algo  bueno).

El  comando  chmod

El  comando  chmod  nos  permite  cambiar  los  permisos  por  los  cuales  el  usuario  puede  hacer  qué  (leer,  escribir  o  ejecutar)  en  
archivos  y  directorios.  Lo  hace  cambiando  el  'modo' (por  lo  tanto,  chmod  =  modo  de  cambio  de  archivo )  del  archivo  donde  
podemos  asumir  que  'modo'  =  permisos.

Cada  archivo  en  la  computadora  tiene  un  conjunto  asociado  de  permisos.  Los  permisos  le  dicen  al  sistema  operativo  qué  se  
puede  hacer  con  ese  archivo  y  quién  lo  puede  hacer.  Hay  tres  cosas  que  puede  (o  no  puede)  hacer  con  un  archivo  dado:

•  leerlo,  •  

escribirlo  (modificarlo)  y  •  
ejecutarlo.

Los  permisos  de  Linux  especifican  qué  puede  hacer  el  usuario  propietario,  qué  pueden  hacer  los  miembros  del  grupo  
propietario  y  qué  pueden  hacer  otros  usuarios  con  el  archivo.  Para  cualquier  usuario,  necesitamos  tres  bits  para  especificar  
permisos  de  acceso:  el  primero  para  indicar  acceso  de  lectura  (r),  el  segundo  para  indicar  acceso  (w)  y  el  tercero  para  
indicar  acceso  de  ejecución  (x).

También  tenemos  tres  niveles  de  propiedad:  'usuario',  'grupo'  y  'otros',  por  lo  que  necesitamos  un  triplete  (tres  conjuntos  de  
tres)  para  cada  uno,  lo  que  da  como  resultado  nueve  bits.

El  siguiente  diagrama  muestra  cómo  se  puede  representar  esta  agrupación  de  permisos  en  un  sistema  Linux  donde  el  
usuario,  el  grupo  y  otros  tenían  permisos  completos  de  lectura,  escritura  y  ejecución;
Machine Translated by Google

Comandos  Linux 49

Permisos  de  Linux  como  rwx

Por  lo  general,  en  Linux  (cuando  ejecuta  el  comando  ls  ­l )  también  hay  otro  bit  que  
lidera  este  patrón  de  9  bits,  pero  lo  ignoraremos  mientras  tanto.

Si  tuviéramos  un  archivo  con  permisos  más  complejos  donde  el  usuario  pudiera  leer,  escribir  y  ejecutar,  el  
grupo  pudiera  leer  y  escribir,  pero  todos  los  demás  usuarios  solo  pudieran  leer,  se  vería  de  la  siguiente  manera;

Permisos  de  Linux  un  poco  más  complejos

Esta  descripción  de  permisos  es  factible,  pero  debemos  tener  en  cuenta  que  los  permisos  también  se  
representan  como  valores  de  3  bits  (donde  cada  bit  es  un  '1'  o  un  '0' (donde  un  '1'  es  sí  puede,  o  '0'  es  no,  no  
puedes))  o  como  el  valor  octal  equivalente.

Permisos  de  Linux  como  simbólico,  3  bit  y  octal.

El  rango  completo  de  valores  posibles  para  estas  combinaciones  de  permisos  es  el  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 50

Permiso Octal  simbólico  de  3  bits
leer,  escribir  y  ejecutar  rwx 111 7
Lee  y  escribe rw­ 110  6

leer  y  ejecutar rw 101  5

solo  lectura r­­ 100  4

escribir  y  ejecutar ­wx 011  3

solo  escribir  solo   ­w­ 010  2

ejecutar ­­X 001  1

ninguno ­­­ 000  0

Otra  cosa  interesante  a  tener  en  cuenta  es  que  los  permisos  tienen  una  inclinación  diferente  para  los  directorios.

•  read  determina  si  un  usuario  puede  ver  el  contenido  del  directorio,  es  decir,  ejecutar  ls  en  él.  •  escribir  
determina  si  un  usuario  puede  crear  nuevos  archivos  o  borrar  archivos  en  el  directorio.  (¡Tenga  en  cuenta  que  esto  significa  
esencialmente  que  un  usuario  con  acceso  de  escritura  a  un  directorio  puede  eliminar  archivos  en  el  directorio  incluso  si  
no  tiene  permisos  de  escritura  para  el  archivo!  Así  que  tenga  cuidado).  •  ejecutar  determina  si  el  usuario  puede  cd  
en  el  directorio.

También  vale  la  pena  señalar  en  este  punto  que  solo  el  propietario  (o  root  a  través  de  sudo)  de  un  archivo  puede  
usar  chmod  para  modificar  los  permisos  de  un  archivo.

Podemos  verificar  los  permisos  de  los  archivos  usando  el  comando  ls  ­l  que  listará  los  archivos  en  un  formato  largo  de  la  
siguiente  manera;

ls  ­l /tmp/foo.txt

Este  comando  enumerará  los  detalles  del  archivo  foo.txt  que  se  encuentra  en  el  directorio /tmp  de  la  siguiente  manera

pi@raspberrypi  ~  $  ls  ­l /tmp  ­rwxrw­r­­  1  pi  pi­

group  20  10  de  julio  13:14  foo.txt

Los  permisos  sobre  el  archivo,  el  usuario  y  el  propietario  del  grupo  se  pueden  encontrar  de  la  siguiente  manera;

Detalles  del  archivo

A  partir  de  esta  información  podemos  ver  que  el  usuario  del  archivo  ('pi')  tiene  permisos  para  leer,  escribir  y  ejecutar  el  archivo.  
El  propietario  del  grupo  ("pi­group")  puede  leer  y  escribir  en  el  archivo  y  todos  los  demás  usuarios  pueden  leer  el  archivo.
Machine Translated by Google

Comandos  Linux 51

Opciones

La  opción  principal  que  vale  la  pena  recordar  es  la  opción  ­R  que  aplicará  permisos  recursivamente  en  los  
archivos  en  el  directorio  especificado  y  sus  subdirectorios.

El  siguiente  comando  cambiará  los  permisos  para  todos  los  archivos  en  el  directorio /srv/foo  y  en  todos  los  
directorios  que  se  encuentran  debajo  de  él;

chmod  ­R  764 /srv/foo

Argumentos

Simplistamente  (en  otras  palabras,  puede  ser  más  complicado,  pero  lo  estamos  simplificando)  hay  dos  formas  
principales  en  que  se  usa  chmod .  En  cualquiera  de  los  modos  simbólicos,  donde  los  permisos  se  cambian  
mediante  símbolos  asociados  con  lectura,  escritura  y  ejecución,  así  como  símbolos  para  el  usuario  (u),  el  
propietario  del  grupo  (g),  otros  (o)  y  todos  los  usuarios  (a).  O  en  modo  numérico  donde  usamos  los  valores  
octales  para  combinaciones  de  permisos.

Modo  simbólico

En  modo  simbólico  podemos  cambiar  los  permisos  de  un  archivo  con  la  siguiente  sintaxis:

•  chmod  [quién][op][permisos]  nombre  de  archivo

Donde  quien  puede  ser  el  usuario  (u),  el  dueño  del  grupo  (g)  y/u  otros  (o).  El  operador  (op)  es  +  para  agregar  
un  permiso,  ­  para  quitar  un  permiso  o  =  para  establecer  permisos  explícitamente.  Los  permisos  en  sí  son  
legibles  (r),  escribibles  (w)  o  ejecutables  (x).

Por  ejemplo,  el  siguiente  comando  agrega  permisos  ejecutables  (x)  al  usuario  (u)  para  el  archivo /tmp/foo.txt;

chmod  u+x /tmp/foo.txt

Este  comando  elimina  los  permisos  de  escritura  (w)  y  ejecución  (x)  del  propietario  del  grupo  (g)  y  todos  los  
demás  (o)  para  el  mismo  archivo;

chmod  go­wx /tmp/foo.txt

Con  suerte,  notará  que  puede  combinar  los  campos  'quién'  y  'permisos'  para  
permitir  múltiples  valores.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 52

Tenga  en  cuenta  que  eliminar  el  permiso  de  ejecución  de  un  directorio  evitará  que  pueda  enumerar  su  contenido  (aunque  la  raíz  
anulará  esto).  Si  elimina  accidentalmente  el  permiso  de  ejecución  de  un  directorio,  puede  usar  el  argumento  +X  para  indicarle  a  
chmod  que  solo  aplique  el  permiso  de  ejecución  a  los  directorios.

chmod  ­R  u+X /inicio/pi/*

Modo  numérico

En  modo  numérico,  podemos  establecer  explícitamente  los  permisos  usando  los  valores  octales,  por  lo  que  esta  forma  de  comando  
es  bastante  común.

Por  ejemplo,  el  siguiente  comando  cambiará  los  permisos  en  el  archivo  foo.txt  para  que  el  usuario  pueda  leerlo,  escribirlo  y  
ejecutarlo,  el  propietario  del  grupo  pueda  leerlo  y  escribirlo  y  todos  los  demás  puedan  leerlo;

chmod  764 /tmp/foo.txt

Ejemplos

Para  cambiar  los  permisos  en  su  directorio  de  inicio  para  eliminar  los  permisos  de  lectura  y  ejecución  del  propietario  del  grupo  y  
todos  los  demás  usuarios;

chmod  go­rx  ~

Para  hacer  que  un  script  sea  ejecutable  por  el  usuario;

chmod  u+x  foo.sh

Windows  marca  todos  los  archivos  como  ejecutables  de  forma  predeterminada.  Si  copia  un  archivo  o  directorio  desde  un  sistema  
Windows  (o  incluso  un  disco  con  formato  de  Windows)  a  su  sistema  Linux,  lo  ideal  es  eliminar  los  permisos  de  ejecución  
innecesarios  de  todos  los  archivos  copiados,  a  menos  que  necesite  conservarlos  específicamente.
¡Tenga  en  cuenta  que  todavía  lo  necesitamos  en  todos  los  directorios  para  que  podamos  acceder  a  sus  contenidos!  Así  es  
como  podemos  lograr  esto  en  un  solo  comando:

chmod  ­R  a­x+X  ~/copiado_desde_windows
Machine Translated by Google

Comandos  Linux 53

Esto  le  indica  a  chmod  que  elimine  el  permiso  de  ejecución  para  cada  archivo  y  directorio,  y  luego  vuelva  a  
configurar  inmediatamente  la  ejecución  si  está  trabajando  en  un  directorio.

Pruébate

1.  Evite  que  todos  ejecuten  el  script /tmp/foo.sh.
2.  ¿Qué  hace  el  siguiente  comando?  chmod  u=rwx,g=rx,o=r  file.txt  3.  Mientras  
cambia  los  permisos  en  algunos  archivos,  accidentalmente  elimina  el  bit  de  ejecución  de  todo  su  
directorio  de  inicio.  ¿Cuál  podría  ser  una  forma  rápida  de  solucionar  esto?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 54

Chon

El  comando  chown  cambia  la  propiedad  del  usuario  y/o  grupo  de  los  archivos  dados.  Debido  a  que  Linux  está  
diseñado  como  un  sistema  multiusuario,  normalmente  hay  varios  usuarios  diferentes  (no  necesariamente  personas  
reales,  sino  demonios  u  otros  programas  que  pueden  ejecutarse  como  su  propio  usuario)  responsables  de  
mantener  límites  de  permisos  claros  que  separan  los  servicios  para  evitar  la  corrupción  o  mantener  la  seguridad.  o  
privacidad.  Esto  nos  permite  limitar  el  acceso  a  usuarios  autorizados  para  hacer  cosas  como  editar  archivos  web.

•  chown  [opciones]  archivos  de  nuevo  propietario:  cambiar  la  propiedad  de  uno  o  más  archivos  y  directorios

Por  ejemplo,  si  queremos  que  el  usuario  www­data  sea  el  propietario  del  directorio  www  (en  el  directorio /var )  y  
queremos  pasar  la  propiedad  del  grupo  de  ese  directorio  al  grupo  www­data,  ejecutaríamos  el  siguiente  comando;

chown  www­datos:www­datos /var/www

Es  muy  probable  que  necesitemos  prefijar  el  comando  con  sudo  para  ejecutarlo  como  root,  según  el  usuario  que  
éramos  cuando  lo  ejecutamos.

El  comando  chown

El  comando  chown  cambia  la  propiedad  del  usuario  y/o  grupo  de  los  archivos  dados  (por  lo  tanto,  chown  =  cambiar  
propietario).  Se  utiliza  para  ayudar  a  especificar  exactamente  quién  o  qué  grupo  puede  acceder  a  ciertos  archivos.
Hay  varias  opciones  diferentes,  pero  solo  una  que  podría  considerarse  lo  suficientemente  importante  como  para  
tratar  de  recordar.  También  hay  varias  formas  diferentes  de  asignar  la  propiedad  dependiendo  de  si  estamos  
tratando  de  asignar  permisos  de  un  solo  usuario  y/o  grupo.  Para  obtener  más  información  sobre  la  modificación  de  
permisos,  consulte  chmod.

Opciones

La  opción  principal  que  vale  la  pena  recordar  es  la  opción  ­R  que  aplicará  permisos  recursivamente  en  los  archivos  
en  el  directorio  especificado  y  sus  subdirectorios.

El  siguiente  comando  cambiará  el  propietario  al  usuario  'apache'  para  el  directorio /var/www  y  todos  los  directorios  
que  se  encuentran  debajo  de  él;

chown  ­R  apache /var/www
Machine Translated by Google

Comandos  Linux 55

Argumentos

El  objeto  al  que  se  le  ha  cambiado  la  propiedad  puede  ser  un  archivo  o  un  directorio  y  su  contenido.

Una  de  las  cosas  inteligentes  sobre  la  asignación  de  permisos  usando  chown  es  la  forma  en  que  la  propiedad  del  
usuario  y  del  grupo  se  puede  aplicar  en  el  mismo  comando  (si  se  desea).

Si  solo  se  proporciona  un  nombre  de  usuario,  ese  usuario  se  convierte  en  el  propietario  de  cada  archivo  determinado  y  el  grupo  de  
archivos  no  cambia.

chown  apache /var/www

Si  el  propietario  va  seguido  de  dos  puntos  y  un  nombre  de  grupo  (sin  espacios  entre  ellos),  la  propiedad  del  grupo  
de  los  archivos  también  cambia.  En  el  siguiente  ejemplo,  el  usuario  apache  y  el  grupo  apache­group  reciben  la  
propiedad  de  los  archivos  en  el  directorio /var/www ;

chown  apache:grupo­apache /var/www

Si  al  nombre  de  usuario  le  siguen  dos  puntos  pero  no  el  nombre  del  grupo,  ese  usuario  se  convierte  en  el  propietario  
de  los  archivos  y  el  grupo  de  los  archivos  se  cambia  al  grupo  de  inicio  de  sesión  inicial  de  ese  usuario.  Entonces,  si  
el  grupo  de  inicio  de  sesión  inicial  de  los  usuarios  de  apache  fuera  apache­group ,  el  siguiente  comando  lograría  lo  
mismo  que  el  ejemplo  anterior;

chown  apache: /var/www

Si  se  dan  los  dos  puntos  y  el  grupo,  pero  se  omite  el  propietario,  solo  se  cambia  el  grupo  de  archivos.

chown :apache­group /var/www

En  realidad ,  se  puede  usar  un  punto  (.)  en  lugar  de  dos  puntos  (:)  para  separar  al  usuario  
del  grupo  al  ejecutar  el  comando.  Además,  el  ID  de  usuario  numérico  (UID)  y/o  el  ID  de  
grupo  (GID)  se  pueden  utilizar  en  lugar  de  los  nombres  de  usuario  y  grupo.

Ejemplos

Para  cambiar  la  propiedad  del  archivo /home/pi/foo.txt  al  UID  3456  y  la  propiedad  del  grupo  al  GID  4321.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 56

chown  3456:4321 /home/pi/foo.txtt

Pruébate

1.  ¿Qué  ha  ido  terriblemente  mal  si  ejecuta  este  comando?

chown  usuario:  grupo /  var /  ftp

2.  ¿Qué  comando  ejecutaría  para  cambiar  la  propiedad  del  grupo  de  los  archivos  en  el  
directorio /tmp/junk  a  los  propietarios  de  basura  del  grupo,  pero  no  al  directorio  en  sí?
Machine Translated by Google

Comandos  Linux 57

c.p.

El  comando  cp  se  usa  para  copiar  archivos  o  directorios.  Es  uno  de  los  comandos  básicos  de  Linux  que  permite  
la  gestión  de  archivos  desde  la  línea  de  comandos.

•  cp  [opciones]  origen  destino:  Copiar  archivos  y  directorios

Por  ejemplo:  para  hacer  una  copia  del  archivo  foo.txt  y  llamarlo  foo­2.txt  ingresaríamos  lo  siguiente;

cp  foo.txt  foo­2.txt

Esto  supone  que  estamos  en  el  mismo  directorio  que  el  archivo  foo.txt,  pero  incluso  si  no  lo  estuviéramos,  
podríamos  nombrar  explícitamente  el  archivo  con  la  estructura  del  directorio  y,  por  lo  tanto,  no  solo  hacer  una  
copia  del  archivo,  sino  colocarlo  en  algún  lugar.  diferente;

cp /home/pi/foo.txt /home/pi/stuff/foo­2.txt

El  comando  cp

El  comando  cp  se  usa  para  copiar  archivos  y  directorios  (cp  es  una  forma  abreviada  de  la  palabra  copiar).  
Cualquier  copia  es  independiente  de  los  originales  y  existe  por  derecho  propio.  Si  bien  cp  puede  copiar  directorios,  
por  defecto  copiará  archivos.  Si  le  decimos  a  cp  que  copie  un  archivo  cuando  ese  archivo  ya  existe  en  el  destino,  
el  archivo  anterior  se  sobrescribirá.  Sin  embargo,  el  propietario,  el  grupo  y  los  permisos  del  nuevo  archivo  copiado  
serán  los  mismos  que  los  del  archivo  con  el  mismo  nombre  que  reemplazó.
El  acceso  y  la  hora  del  archivo  de  origen  y  la  hora  de  modificación  del  nuevo  archivo  se  establecen  en  el  momento  
en  que  se  realizó  la  copia.

El  conjunto  normal  de  comodines  y  opciones  de  direccionamiento  están  disponibles  para  que  el  proceso  sea  más  
flexible  y  extensible.

Opciones

Si  bien  la  funcionalidad  básica  del  comando  cp  se  explica  por  sí  misma,  hay  varias  opciones  que  amplían  esa  
funcionalidad.

•  ­r  (también  funciona  con  ­R)  nos  permite  copiar  directorios  y  sus  contenidos  de  forma  recursiva.  En  otra
palabras  podemos  copiar  el  directorio,  su  archivo  y  subdirectorios  hasta  el  infinito.
•  ­p  conserva  el  modo,  la  propiedad  y  las  marcas  de  tiempo  de  los  archivos  
copiados  •  ­u  actualiza  los  archivos  copiados  copiándolos  solo  cuando  el  archivo  de  origen  es  más  reciente  que  el
archivo  de  destino  o  cuando  falta  el  archivo  de  destino

www.dbooks.org
Machine Translated by Google

Comandos  Linux 58

Por  ejemplo,  para  copiar  el  directorio  'directorio1'  y  todo  su  contenido  en  términos  de  archivos  y  
subdirectorios  contenidos  en  'directorio2',  podemos  ejecutar  el  siguiente  comando;

cp  ­r  directorio1/  directorio2/

Ejemplos

Para  copiar  todos  los  archivos  del  directorio1  al  directorio2;

cp  directorio1/*  directorio2/

Para  copiar  todos  los  archivos  y  subdirectorios  del  directorio1  al  directorio2;

cp  ­r  directorio1/*  directorio2/

Para  copiar  los  archivos  foo.txt  y  bar.txt  al  directorio  foobar;

cp  foo.txt  bar.txt  foobar/

Para  copiar  todos  los  archivos  'txt'  del  directorio  de  inicio  de  los  usuarios  a  un  directorio  llamado  copia  de  seguridad;

cp  ~/*.txt  copia  de  seguridad/

Pruébate

1.  ¿Qué  comando  se  puede  usar  para  copiar  todos  los  archivos  'txt'  del  directorio  de  inicio  de  los  
usuarios  al  directorio /home/pi/backup  pero  solo  si  los  archivos  que  se  copian  son  más  nuevos  que  
los  archivos  en /home/pi/  directorio  de  respaldo ?
2.  ¿Qué  caracteres  no  se  pueden  usar  al  nombrar  directorios  o  archivos?
Machine Translated by Google

Comandos  Linux 59

encontrar

El  comando  de  búsqueda  es  una  herramienta  extremadamente  potente  y  flexible  para  localizar  archivos  según  criterios  
coincidentes.  Debido  a  que  siempre  se  requerirá  una  gran  variedad  de  archivos  para  crear  un  sistema,  es  esencial  
comprender  una  utilidad  como  find .

•  encontrar  [punto  de  inicio]  [criterios  de  búsqueda]  [término  de  búsqueda]:  buscar  archivos

Es  importante  dar  el  salto  conceptual  cuando  se  usa  find,  ya  que  encontrar  un  archivo  o  archivos  no  se  trata  solo  de  
buscar  un  nombre.  Un  archivo  puede  ser  descrito  y  buscado  por  una  variedad  de  propiedades  que  incluyen  nombre,  
ubicación,  permisos,  usuario,  hora/fecha  de  modificación  y  tamaño  (y  probablemente  más).
Entonces,  si  bien  al  principio  el  comando  de  búsqueda  puede  parecer  un  poco  arcano,  la  lógica  detrás  de  su  uso  es  
sólida  y  una  vez  que  lo  dominamos,  se  convierte  en  una  herramienta  muy  poderosa.

Un  ejemplo  simple  podría  aparecer  como  sigue;

encontrar /home/pi  ­nombre  archivo  faltante.txt

Aquí  estamos  usando  el  punto  de  inicio  del  directorio  de  inicio  de  los  usuarios  'pi' (/home/pi),  el  criterio  de  búsqueda  es  
el  nombre  del  archivo  (­name)  y  el  término  de  búsqueda  es  un  archivo  llamado  archivofaltante.txt.

El  resultado  informado  es  el  siguiente;

/home/pi/foodir/missingfile.txt

Aquí  podemos  ver  que  hay  un  archivo  llamadomisingfile.txt  en  el  directorio /home/pi/foodir.

La  búsqueda  se  realizó  con  el  punto  de  inicio  del  directorio /home/pi  y  verificó  ese  directorio  y  todos  los  directorios  
debajo  de  ese,  que  incluían /home/pi/foodir.

El  comando  de  búsqueda

find  es  un  comando  para  buscar  que  es  bastante  'antiguo'.  Hay  otros  comandos  que  se  han  introducido  para  hacer  un  
trabajo  similar,  como  localizar  y  mlocate ,  pero  su  adopción  no  ha  sido  universal  y,  como  resultado,  no  se  puede  confiar  
en  que  estén  disponibles  en  todas  las  distribuciones.  Sin  embargo,  es  muy  inusual  encontrar  una  versión  de  Linux  (o  
Unix)  que  no  admita  find,  por  lo  que  para  poder  aprender  un  comando  que  debería  ser  fácilmente  transportable,  find  
tiene  una  ventaja.

Como  se  mencionó  en  la  descripción  inicial  anterior,  es  importante  dar  un  salto  conceptual  al  usar  find ,  ya  que  el  
proceso  de  búsqueda  se  trata  de  combinar  tres  cosas;

1.  El  punto  de  inicio  de  la  búsqueda  2.  
El  tipo  de  criterio  o  propiedad  que  vamos  a  evaluar  en  nuestra  búsqueda  3.  El  valor  específico  de  los  
criterios  contra  los  que  queremos  buscar.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 60

Luego,  una  vez  que  nos  sintamos  cómodos  con  el  funcionamiento  de  la  búsqueda  según  los  criterios,  podemos  encadenarlos  para  que  nuestras  

búsquedas  sean  más  refinadas.

Los  argumentos  numéricos  a  continuación  se  pueden  especificar  como;

•  +n :  para  mayor  que  n,  •  ­n :  para  
menor  que  n,  •  n :  para  

exactamente  n.

También  podemos  emplear  comodines  para  ayudar  a  hacer  coincidir  los  nombres.

•  ­name  patrón:  el  nombre  del  archivo  que  coincide  con  el  patrón  del  patrón  •  ­iname  patrón:  como  

­nombre,  pero  la  coincidencia  no  distingue  entre  mayúsculas  y  minúsculas  •  ­mmin  n:  los  datos  

del  archivo  se  modificaron  por  última  vez  hace  n  minutos  •  ­mtime  n:  los  datos  del  archivo  

se  modificó  por  última  vez  hace  n  *24  horas  •  ­archivo  más  nuevo :  el  archivo  se  modificó  más  

recientemente  que  el  archivo  •  ­amin  n:  se  accedió  al  archivo  por  última  vez  hace  n  minutos.  

•  ­atime  n :  el  archivo  fue  accedido  por  última  vez  hace  n  *24  horas  •  ­user  

uname :  el  archivo  es  propiedad  del  usuario  uname  •  ­group  gname :  el  archivo  

pertenece  al  grupo  gname  •  ­executable :  compara  archivos  que  son  

ejecutables  y  directorios  que  se  pueden  buscar  •  ­type  c :  el  archivo  es  de  
tipo  c:

–  b  bloque  (con  búfer)  especial  –  c  carácter  

(sin  búfer)  especial  –  d  directorio  –  p  canalización  

con  nombre  (FIFO)  

–  f  archivo  normal  –  l  enlace  

simbólico  –  s  socket

•  ­size  n[cwbkMG] :  el  archivo  usa  n  unidades  de  espacio  (redondeando  hacia  arriba).  Los  siguientes  sufijos  pueden
ser  usado:

–  b  para  bloques  de  512  bytes  (este  es  el  valor  predeterminado  si  no  se  usa  sufijo)  –  c  para  

bytes  –  w  para  

palabras  de  dos  bytes  –  k  para  

kilobytes  (unidades  de  1024  bytes)

–  M  para  Megabytes  (unidades  de  1048576  bytes)

–  G  para  Gigabytes  (unidades  de  1073741824  bytes)

•  Modo  ­perm :  Los  archivos  tienen  un  conjunto  específico  de  permisos  con  un  modo  diferente  dependiendo  de  cómo  queramos  acceder  a  
ellos  –  modo  Los  bits  de  permiso  del  archivo  

son  exactamente  el  modo  –  ­modo  Todos  los  modos  de  bits  de  permiso  

están  configurados  para  el  archivo.  – /mode  Se  establece  cualquiera  de  los  modos  de  bits  

de  permiso  para  el  archivo.
Machine Translated by Google

Comandos  Linux 61

Ejemplos  de  uso

Insensible  a  mayúsculas  y  minúsculas  (­iname)

Para  buscar  por  nombre  y  hacer  que  la  búsqueda  no  distinga  entre  mayúsculas  y  minúsculas,  usamos  ­iname.

encontrar /home/pi  ­iname  archivo  faltante.txt

El  resultado  informado  es  el  siguiente;

/home/pi/foodir/missingfile.txt /home/pi/
foodir/MissingFile.txt

Modificado  hace  minutos  u  horas  (­mmin  o  ­mtime)

Para  buscar  archivos  que  hayan  sido  modificados  hace  algunos  minutos  usaríamos  ­mmin.

encontrar /inicio/pi  ­mmin  ­10

El  resultado  informado  es  el  siguiente;

/home/pi/foodir /
home/pi/foodir/MissingFile.txt

El  archivo  MissingFile.txt  y  el  directorio  en  el  que  se  encuentra /home/pi/foodir  se  modificaron  hace  menos  de  10  minutos.

Recuerde  que  ­10  significa  archivos  de  hace  menos  de  10  minutos,  +10  significaría  hace  
más  de  10  minutos  y  10  significaría  hace  10  minutos.

Si  estuviéramos  usando  ­mtime,  ­10  significaría  hace  menos  de  10  días  y  +10  significaría  hace  más  
de  10  días.

Modificado  más  recientemente  que  otro  archivo  (­más  reciente)

Podemos  buscar  archivos  que  hayan  sido  modificados  más  recientemente  que  un  archivo  específico  usando  ­newer.

Creé  el  archivomisingfile.txt  hace  un  par  de  días,  y  desde  entonces  he  realizado  algunos  cambios.  Entonces,  ¿qué  
archivos  han  cambiado  en  mi  directorio  de  inicio  desde  que  modifiqué  ese  archivo?

encontrar /home/pi  ­archivo  faltante  más  nuevo.txt

El  resultado  informado  es  el  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 62

/home/pi /
home/pi/.xsession­errors /home/
pi/.bash_history /home/pi/.vnc /
home/pi/.vnc/
raspberrypi:1.log /home/pi/.vnc/raspberrypi:  
1.pid /home/pi/.Xauthority /home/pi/foodir /
home/pi/foodir/MissingFile.txt

Podemos  ver  algunos  archivos  que  han  estado  cuidando  la  experiencia  de  usuario  del  usuario  'pi'  y  también  
podemos  ver  que  el  archivo  MissingFile.txt  es  más  nuevo  que  el  archivo  perdido.txt.

Por  nombre  de  usuario  o  grupo  (­usuario  o  ­grupo)

Podemos  buscar  por  usuario  utilizando  el  criterio  ­user .  En  el  siguiente  ejemplo,  buscaremos  los  archivos  que  
pertenecen  al  usuario  'root'  en  el  directorio /home/pi.

encontrar /home/pi  ­usuario  raíz

La  salida  a  la  pantalla  es;

/home/pi/foodir/rootsfile.txt

Si  revisamos  los  archivos  en  el  directorio /home/pi/foodir  usando  ls  ­l  vemos  lo  siguiente;

­rw­r­­r­­  1  pi  ­rw­r­­ pi  0  31  de  enero  10:08  anotherfoo.txt  pi  0  20  
r­­  1  pi  ­rwxrw­r­­  1   de  febrero  19:22  archivo  perdido.txt  pi  0  21  de  
pi  ­rwxr­xr­x  1  pi febrero  13:28  Archivo  perdido.txt  pi  0  21  de  
febrero  13:29  runme.sh
­rw­r­­r­­  1  raíz  raíz  0  21  de  febrero  20:45  archivo  de  raíces.txt

Efectivamente,  está  el  archivo  rootsfile.txt  que  es  propiedad  de  root,  podemos  realizar  la  misma  búsqueda  y  
obtener  el  mismo  resultado  (al  menos  en  este  directorio  usando  el  criterio  de  búsqueda  ­group .

Buscar  archivos  ejecutables  (­ejecutable)

Podemos  buscar  archivos  ejecutables  usando  el  criterio  ­ejecutable .  En  este  caso  buscamos  archivos  que  
hayan  sido  configurados  como  ejecutables  en  sus  permisos;

encontrar /home/pi/foodir  ­ejecutable

La  salida  a  la  pantalla  en  este  caso  es;
Machine Translated by Google

Comandos  Linux 63

/home/pi/foodir/runme.sh /home/
pi/foodir/MissingFile.txt

Si  revisamos  los  archivos  en  el  directorio /home/pi/foodir  usando  ls  ­l  vemos  lo  siguiente;

­rw­r­­r­­  1  pi  ­rw­r­­ pi  0  31  de  enero  10:08  anotherfoo.txt  pi  0  20  
r­­  1  pi  ­rwxrw­r­­  1   de  febrero  19:22  archivo  perdido.txt  pi  0  21  de  
pi  ­rwxr­xr­x  1  pi febrero  13:28  Archivo  perdido.txt  pi  0  21  de  
febrero  13:29  runme.sh
­rw­r­­r­­  1  raíz  raíz  0  21  de  febrero  20:45  archivo  de  raíces.txt

Efectivamente,  los  archivos  runme.sh  y  MissingFile.txt  son  ejecutables.

Por  el  tipo  de  archivo  (­tipo)

Los  archivos  individuales  pueden  ser  uno  de  una  gama  bastante  amplia  de  tipos.  Podemos  usar  el  tipo  como  nuestro  criterio  de  
búsqueda  usando  ­type.  Los  rangos  de  tipos  que  se  pueden  buscar  incluyen;

•  b  bloque  (con  búfer)  especial  •  c  
carácter  (sin  búfer)  especial  •  d  directorio  •  p  
canalización  con  
nombre  (FIFO)  •  f  archivo  
normal  •  l  enlace  
simbólico  •  s  socket

Entonces,  si  buscamos  usando  el  directorio,  escriba  d  de  la  siguiente  manera;

busque /home/pi/  ­escriba  d

Todos  los  directorios  se  muestran  en  la  pantalla  de  la  siguiente  manera;

/inicio/pi/ /
inicio/pi/.vnc /
inicio/pi/foodir /inicio/
pi/.ssh /inicio/pi/
bin

Por  el  tamaño  del  archivo  (­tamaño)

Buscar  archivos  por  tamaño  con  ­size  implica  incluir  un  sufijo  al  valor  para  indicar  el  tipo  de  unidad  involucrada.  La  gama  de  
unidades  son;

•  b  para  bloques  de  512  bytes  (este  es  el  valor  predeterminado  si  no  se  usa  sufijo)

www.dbooks.org
Machine Translated by Google

Comandos  Linux 64

•  c  para  bytes  •  
w  para  palabras  de  dos  bytes  
•  k  para  Kilobytes  (unidades  de  1024  bytes)  •  M  
para  Megabytes  (unidades  de  1048576  bytes)  •  G  
para  Gigabytes  (unidades  de  1073741824  bytes)

Si  quisiéramos  buscar  archivos  de  más  de  1  Megabyte  usaríamos;

encontrar /home/pi/  ­tamaño  +1M

Esos  archivos  se  mostrarían  en  la  pantalla  de  la  siguiente  manera;

/home/pi/master.zip.2 /home/
pi/alpha.zip /home/pi/
master.zip.1 /home/pi/
master.zip.4 /home/pi/
master.zip.3

Una  verificación  muy  desaliñada  para  ver  qué  tamaño  tienen  esos  archivos  con  ls  ­l  *zip*  nos  muestra  lo  siguiente;

­rw­r­­r­­  1  pi  pi  3204673  8  de  febrero  07:35  alpha.zip  ­rw­r­­r­­  1  pi  
pi  116  10  de  febrero  17:14  master.zip  ­rw­r­­r­  ­  1  pi  pi  3204673  7  de  
febrero  09:10  master.zip.1  ­rw­r­­r­­  1  pi  pi  3204673  8  de  febrero  07:29  
master.zip.2  ­rw­r­­r­­  1  pi  pi  3204673  8  de  febrero  07:39  master.zip.3  
­rw­r­­r­­  1  pi  pi  3204673  10  de  febrero  17:20  master.zip.4  ­rw­r­­r­­  1  pi  
pi  295696  10  de  febrero  17  :47  test2.zip  ­rw­r­­r­­  1  pi  pi

116  10  de  febrero  17:19  prueba.zip

Efectivamente,  los  archivos  devueltos  por  la  búsqueda  tenían  más  de  1  Megabyte  y  había  otros  de  menor  tamaño  que  no  
se  devolvieron.

Por  los  permisos  del  Archivo  (­perm)

La  búsqueda  de  archivos  por  permiso  usando  ­perm  se  puede  lograr  de  una  de  tres  maneras

•  mode  Los  bits  de  permiso  del  archivo  están  exactamente  
en  modo  •  ­mode  Todos  los  bits  de  permiso  están  configurados  para  el  
archivo.  • /mode  Se  establece  cualquier  modo  de  bits  de  permiso  para  el  archivo.

Al  igual  que  chmod,  find  comprende  los  permisos  especificados  en  formato  simbólico  o  numérico  (octal).

Para  repetir  nuestra  búsqueda  anterior  donde  buscamos  archivos  ejecutables,  podríamos  ejecutar  lo  siguiente  usando  el  
modo  simbólico  y  buscando  cualquiera  de  los  bits  de  permiso  establecidos  en  ejecutable;
Machine Translated by Google

Comandos  Linux sesenta  y  cinco

encontrar /home/pi/foodir  ­perm /a=x

El  resultado  de  esto  podría  verse  así;

/home/pi/foodir/runme.sh

Quizá  queramos  localizar  cualquier  archivo  con  los  permisos  764  en  octal  (rwxrw­r­­  en  simbólico):

encontrar /inicio/pi  ­perm  0764

Que  en  este  caso  nos  muestra;

/home/pi/foodir/MissingFile.txt

Ya  que  'ls  ­ls /home/pi/foodir/MissingFile.txt  nos  muestra  lo  siguiente

0  ­rwxrw­r­­  1  pi pi  0  21  de  febrero  13:28  MissingFile.txt

Encadenamiento  de  criterios  de  

búsqueda  El  comando  de  búsqueda  comienza  realmente  a  flexionar  sus  músculos  cuando  se  combinan  los  criterios  de  búsqueda.  
Por  ejemplo  podríamos  buscar  todos  los  archivos  pertenecientes  al  usuario  'pi'  y  que  estuvieran  por  encima  de  1  Megabyte  de  la  
siguiente  manera;

encontrar /home/pi  ­usuario  pi  ­tamaño  +1M

O  tal  vez  reduciendo  una  ventana  de  tamaño  para  archivos  por  encima  de  500  Kilobytes  y  por  debajo  de  1  Megabyte;

encontrar /home/pi  ­tamaño  +500k  ­tamaño  ­1M

Evitar  los  mensajes  de  'Permiso  denegado'  Al  ejecutar  una  

búsqueda  en  una  parte  más  grande  del  sistema  de  archivos  (por  ejemplo,  comenzando  en  el  directorio  raíz),  habrá  una  gran  
cantidad  de  directorios  que  el  usuario  que  realiza  la  búsqueda  puede  no  tener  permisos  para  ver.  Como  resultado,  los  comentarios  
del  comando  de  búsqueda  incluirán  una  gran  cantidad  de  mensajes  que  nos  informarán  que  se  nos  negó  el  permiso  para  buscar  
en  esos  directorios.  Una  solución  a  esto  es  usar  el  criterio  ­print  para  redirigir  cualquier  mensaje  de  error  a  'dev/null' (que  es  como  
decir  'vete').

www.dbooks.org
Machine Translated by Google

Comandos  Linux 66

La  siguiente  es  una  búsqueda  que  devolverá  cualquier  archivo  de  más  de  1  Megabyte  de  todo  el  sistema  de  
archivos  (comenzando  en  la  raíz  (/).  Y  cuando  se  produce  un  error  (como  permiso  denegado),  imprime  ese  
error  en /dev/null;

encontrar /  ­usuario  pi  ­tamaño  +1M  ­imprimir  2>/dev/null

Pruébate

1.  ¿Por  qué  usaríamos  find  en  lugar  de  los  comandos  de  búsqueda  alternativos  de  Linux?
2.  Elabore  una  búsqueda  para  buscar  archivos  en  el  directorio  de  inicio  de  los  usuarios  actuales  (sin  
usar  el  direccionamiento  absoluto)  y  busque  archivos  que  se  crearon  hace  más  de  20  minutos  pero  
menos  de  36  horas.
3.  Si  no  especificamos  un  punto  de  búsqueda,  ¿cuál  es  el  predeterminado?
Machine Translated by Google

Comandos  Linux 67

gzip

gzip  es  una  herramienta  para  comprimir  y  descomprimir  un  archivo  (o  varios  archivos)  utilizando  el  formato  gzip.
Por  sí  mismo ,  gzip  solo  puede  comprimir  un  archivo  a  la  vez,  por  lo  que  si  es  necesario  comprimir  varios  archivos,  
normalmente  se  usa  tar  para  combinar  los  archivos  en  un  solo  archivo.  Ese  archivo  de  almacenamiento  se  puede  comprimir  
con  gzip.  Puede  ser  una  acción  útil  comprimir  archivos  al  transferirlos  o  almacenarlos  para  ahorrar  ancho  de  banda  o  
espacio.

•  gzip  [opciones]  nombre  de  archivo:  comprimir  o  expandir  archivos

En  su  caso  de  uso  más  simple,  solo  necesitamos  usar  el  comando  gzip  y  el  nombre  del  archivo  de  la  siguiente  manera;

archivos  gzip.txt

Por  defecto,  esto  tomará  el  archivo  files.txt  y  lo  comprimirá  y  reemplazará  el  archivo  original  con  uno  llamado  file.txt.gz.

Podemos  comprobar  la  compresión  comparando  la  salida  del  comando  ls  ­l  archivos.txt  antes  de  comprimir…..

­rw­r­­r­­  1  pi  pi 398  8  de  febrero  08:04  archivos.txt

Con  eso  de  después  de  la  compresión;

­rw­r­­r­­  1  pi  pi 146  8  de  febrero  08:04  archivos.txt.gz

Antes  el  tamaño  del  archivo  era  de  398  bytes  y  después  de  146  bytes.

La  cantidad  de  compresión  dependerá  de  una  variedad  de  factores,  uno  de  los  cuales  será  el  tipo  de  
archivo  que  se  comprime.  Algunos  archivos  están  comprimidos  por  diseño  (piense  en  archivos  *.jpg  
o  *.png)  y  estos  no  tendrán  el  mismo  tipo  de  relación  de  compresión.

La  compresión  siempre  se  realiza,  incluso  si  el  archivo  comprimido  es  un  poco  más  grande  que  el  
original.  La  expansión  teórica  en  el  peor  de  los  casos  es  unos  pocos  bytes  adicionales,  pero  en  
realidad  el  número  real  de  bloques  de  disco  utilizados  casi  nunca  aumenta.

El  comando  gzip

El  comando  gzip  reduce  el  tamaño  de  los  archivos  nombrados  usando  el  algoritmo  de  codificación  Lempel­Ziv  (este  es  el  
mismo  algoritmo  usado  en  zip  y  PKZIP).  Cuando  se  realiza  la  compresión,  cada  archivo  es  reemplazado  por  uno  con  el  
mismo  nombre  y  extensión .gz ,  manteniendo  los  mismos  modos  de  propiedad,  acceso  y  tiempos  de  modificación.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 68

Si  el  nombre  del  archivo  comprimido  es  demasiado  largo  para  su  sistema  de  archivos,  gzip  intentará  truncar  las  partes  del  
nombre  del  archivo  que  tengan  más  de  3  caracteres.

Los  archivos  comprimidos  se  pueden  restaurar  a  su  forma  original  usando  gzip  ­d  o  gunzip.  Si  el  nombre  original  
guardado  en  el  archivo  comprimido  no  es  adecuado  para  el  sistema  de  archivos  en  el  que  se  descomprime,  se  
construye  un  nuevo  nombre  a  partir  del  original  para  que  sea  legal.

gunzip  toma  una  lista  de  archivos  en  su  línea  de  comando  y  reemplaza  cada  archivo  cuyo  nombre  
termina  con .gz,  ­gz, .z,  ­z,  _z  o .Z.  También  reconoce  las  extensiones  especiales .tgz  y .taz  como  
abreviaturas  de .tar.gz  y .tar.Z  respectivamente.  Al  comprimir,  gzip  usa  la  extensión .tgz  si  es  
necesario  en  lugar  de  truncar  un  archivo  con  una  extensión .tar .

Opciones

Las  opciones  que  son  las  más  comunes  y  posiblemente  las  más  útiles  incluyen:.

•  ­d :  descomprime  un  archivo  comprimido.  •  
­l :  enumera  los  detalles  de  un  proceso  de  descompresión

Descomprimir

Para  descomprimir  un  archivo  gzip  podemos  usar  el  comando  gzip  con  la  opción  ­d  de  la  siguiente  manera;

gzip  ­d  archivos.txt.gz

O  podemos  usar  el  comando  gunzip  que  es  el  equivalente  de  gzip  ­d  así;

archivos  gunzip.txt.gz

Lista  de  detalles  de  descompresión

Para  tener  una  idea  de  qué  tan  bien  ha  funcionado  la  compresión,  podemos  usar  la  opción  ­l  al  descomprimir  e  
imprimirá  el  tamaño  comprimido,  el  tamaño  sin  comprimir,  la  relación  de  compresión  y  el  nombre  del  archivo  
descomprimido.  El  comando  se  vería  así;

gzip  ­dl  archivos.txt.gz

Y  la  salida  se  vería  así;
Machine Translated by Google

Comandos  Linux 69

comprimido relación  sin  comprimir  uncompressed_name
146 398  70.4%  archivos.txt

Pruébate

1.  ¿Comprimirá  el  comando  gzip  file1.txt  file2.txt  ambos  archivos  en  uno  solo?  En  caso  
afirmativo,  ¿cómo  se  llamará?  Si  es  "no",  ¿cuál  será  el  resultado?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 70

en

El  comando  ln  se  usa  para  hacer  enlaces  entre  archivos.  Esto  nos  permite  tener  un  solo  archivo  o  directorio  al  que  se  hace  
referencia  con  diferentes  nombres.

•  ln  [opciones]  originalfile  linkfile :  crea  vínculos  entre  archivos  o  directorios  •  ln  [opciones]  
originalfile :  crea  un  vínculo  al  archivo  original  en  el  directorio  actual

El  comando  ln  creará  un  enlace  fijo  de  forma  predeterminada  y  un  enlace  flexible  (enlace  simbólico)  mediante  la  opción  ­s .

Por  ejemplo,  para  crear  un  enlace  duro  en  la  carpeta /home/pi/foobar/  al  archivo  foo.txt  que  está  en /home/pi/  podríamos  usar;

ln /home/pi/foo.txt /home/pi/foobar/

El  directorio  de  destino  del  nuevo  vínculo  debe  existir  para  que  el  comando  se  ejecute  correctamente.

Una  vez  que  se  crea  el  enlace,  si  tuviéramos  que  editar  el  archivo  desde  cualquier  ubicación,  será  el  mismo  archivo  que  se  

está  cambiando.

El  comando  ln

El  comando  ln  se  usa  para  hacer  enlaces  entre  archivos  (por  lo  tanto,  ln  =  enlace).  De  forma  predeterminada,  los  enlaces  
serán  'duros',  lo  que  significa  que  los  enlaces  apuntan  al  mismo  inodo  y,  por  lo  tanto,  apuntan  a  los  mismos  datos  en  el  disco  
duro.  Al  usar  la  opción  ­s ,  se  puede  crear  un  enlace  suave  (también  conocido  como  enlace  simbólico  o  enlace  simbólico).  
Un  enlace  flexible  tiene  su  propio  inodo  y  puede  abarcar  particiones.

Esto  nos  permite  tener  un  solo  archivo  de  directorio  al  que  se  hace  referencia  con  diferentes  nombres.

enlaces  duros

•  Solo  vinculará  a  un  archivo  (sin  directorios)  •  No  
vinculará  a  un  archivo  en  un  disco  duro /  partición  diferente  •  Vinculará  a  un  
archivo  incluso  cuando  se  mueva  •  Vincula  a  un  inodo  

y  una  ubicación  física  en  el  disco

Enlaces  blandos  (o  enlaces  simbólicos  o  symlinks)

•  Vinculará  a  directorios  o  archivos  •  

Vinculará  a  un  archivo  o  directorio  en  un  disco  duro/partición  diferente  •  Los  vínculos  
permanecerán  si  se  elimina  el  archivo  original  •  Los  vínculos  
no  se  conectarán  al  archivo  si  se  mueve  •  Los  vínculos  se  

conectan  a  través  de  resumen  ( por  lo  tanto  simbólicas)  convenciones,  no  ubicaciones  físicas  en  el
disco.  Tienen  su  propio  inodo
Machine Translated by Google

Comandos  Linux 71

Opciones

Hay  varias  opciones  diferentes,  pero  la  principal  que  se  usará  más  es  la  opción  ­s  para  crear  un  enlace  suave.

Si  repetimos  nuestro  ejemplo  anterior  donde  queríamos  crear  un  enlace  en  la  carpeta /home/pi/­foobar/  al  
archivo  foo.txt  que  está  en /home/pi/,  al  incluir  la  opción  ­s  podemos  hacer  que  el  enlace  suave  en  su  lugar;

ln  ­s /home/pi/foo.txt /home/pi/foobar/

Si  luego  enumeramos  el  contenido  del  directorio  foobar ,  veremos  lo  siguiente;

pi@raspberrypi  ~/foobar  $  ls  foobar/  ­l
total  0
lrwxrwxrwx  1  pi  pi  16  ago  16  01:30  foo.txt  ­> /home/pi/foo.txt

Los  descriptores  de  lectura/escritura/ejecución  de  los  permisos  están  precedidos  por  una  l  (de  vínculo)  y  hay  
una  flecha  estilizada  (­>)  que  vincula  los  archivos.

Pruébate

1.  ¿Puede  el  usuario  'raíz'  crear  un  enlace  físico  para  un  directorio?
2.  ¿Qué  comando  se  usaría  para  crear  enlaces  para  múltiples  archivos  'txt'  al  mismo  tiempo?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 72

ls

El  comando  ls  enumera  el  contenido  de  un  directorio  y  puede  mostrar  las  propiedades  de  los  objetos  que  enumera.  
Es  uno  de  los  comandos  fundamentales  para  saber  qué  archivos  están  dónde  y  las  propiedades  de  esos  archivos.

•  ls  [opciones]  directorio:  muestra  los  archivos  en  un  directorio  en  particular

Por  ejemplo:  Si  ejecutamos  el  comando  ls  con  la  opción  ­l  para  mostrar  las  propiedades  de  los  listados  en  formato  
largo  y  con  el  argumento /var  para  que  enumere  el  contenido  del  directorio /var  …

ls  ­l /var

…  pudimos  ver  lo  siguiente;

pi@frambuesapi  ~  $  ls  ­l /var
total  102440
drwxr­xr­x  2  raíz raíz 4096  7  de  marzo  06:25  copias  de  seguridad
drwxr­xr­x  12  raíz raíz 4096  20  de  febrero  08:33  caché
drwxr­xr­x  43  raíz raíz 4096  20  de  febrero  08:33  lib
drwxrwsr­x  2  raíz uucp 4096  11  de  enero  00:02  local
lrwxrwxrwx  1  raíz raíz 9  15  de  febrero  11:23  bloquear  ­> /ejecutar/bloquear
raíz  drwxr­xr­x  11 raíz 4096  7  de  julio  06:25  registro
drwxrwsr­x  2  raíz correo 4096  15  de  febrero  11:23  correo
drwxr­xr­x  2  raíz raíz 4096  15  de  febrero  11:23  opt
lrwxrwxrwx  1  raíz raíz 4  15  de  febrero  11:23  ejecutar  ­> /ejecutar
drwxr­xr­x  4  raíz raíz 4096  15  de  febrero  11:26  carrete
­rw­­­­­­­  1  raíz raíz 104857600  16  de  febrero  14:03  intercambiar
drwxrwxrwt  2  raíz raíz 4096  11  de  enero  00:02  tmp
drwxrwxr­x  2  www­datos  www­datos 4096  20  de  febrero  08:21  www

¿Cuál  es  la  información  en  el  formato  de  lista  larga?

•  La  primera  columna  brindará  información  detallada  sobre  el  permiso  del  
archivo,  •  La  segunda  columna  le  informará  sobre  la  cantidad  de  enlaces  
al  archivo,  •  Las  columnas  tercera  y  cuarta  están  asociadas  con  el  propietario  y  
el  grupo  del  archivo,  •  La  quinta  columna  mostrará  el  tamaño  de  el  
archivo  en  bytes,  •  la  sexta  columna  mostrará  la  hora  y  fecha  reciente  en  que  se  modificó  el  
archivo,  •  y  la  última  y  séptima  columna  es  el  nombre  real  del  archivo/directorio/enlace.
Machine Translated by Google

Comandos  Linux 73

El  comando  ls

El  comando  ls  será  uno  de  los  primeros  comandos  que  usará  alguien  que  comience  con  Linux.
Se  utiliza  para  enumerar  el  contenido  de  un  directorio  (por  lo  tanto,  ls  =  lista).  Tiene  una  gran  cantidad  de  opciones  
para  mostrar  los  listados  y  sus  propiedades  de  diferentes  maneras.  Los  argumentos  utilizados  normalmente  son  el  
nombre  del  directorio  o  archivo  del  que  queremos  mostrar  el  contenido.

De  forma  predeterminada,  el  comando  ls  mostrará  el  contenido  del  directorio  actual  en  el  que  se  encuentra  el  
usuario  y  solo  los  nombres  de  los  archivos  que  ve  en  el  directorio.  Entonces,  si  ejecutamos  el  comando  ls  solo  
desde  el  directorio  de  inicio  de  los  usuarios  de  pi  (donde  estaríamos  después  de  iniciar  Raspberry  Pi),  este  es  el  
comando  que  usaríamos;

ls

…  y  deberíamos  ver  lo  siguiente;

pi@frambuesapi  ~  $  ls
python_games  de  escritorio

Esto  muestra  dos  directorios  (Desktop  y  python_games)  que  están  en  el  directorio  de  inicio  de  pi,  pero  no  hay  
detalles  sobre  los  directorios  en  sí.  Para  obtener  más  información  necesitamos  incluir  algunas  opciones.

Opciones

Hay  una  gran  cantidad  de  opciones  disponibles  para  usar  con  el  comando  ls .  Para  obtener  una  lista  completa,  
escriba  man  ls  en  la  línea  de  comando.  Algunos  de  los  más  utilizados  son;

•  ­l  nos  da  una  lista  larga  (como  se  explicó  anteriormente)  
•  ­a  nos  muestra  TODOS  los  archivos  en  el  directorio,  incluidos  los  archivos  
ocultos  •  ­s  nos  muestra  el  tamaño  de  los  archivos  (en  bloques,  
no  en  bytes)  •  ­h  muestra  el  tamaño  en  "formato  legible  por  humanos" (es  decir:  4K,  16M,  1G,  etc.).  (debe  usarse  en
junto  con  la  opción  ­s).  •  ­S  ordena  
por  tamaño  de  archivo  •  
­t  ordena  por  hora  de  modificación  •  
­r  invierte  el  orden  al  ordenar

Una  combinación  útil  de  opciones  podría  ser  una  lista  larga  (­l)  que  muestre  todos  (­a)  los  archivos  con  el  tamaño  
de  archivo  informado  en  tamaño  de  bloque  legible  por  humanos  (­h)  (­s).

ls­látigo

…  producirá  algo  como  lo  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 74

pi@raspberrypi  ~  $ls  ­lash
total  84k
4.0K  drwxr­xr­x  13  pi  pi  4.0K  7  de  mayo  11:46 .
4.0K  drwxr­xr­x  3  raíz  raíz  4.0K  7  de  mayo  10:20 ..
4.0K  ­rw­r­­r­­  1  pi  pi  4.0K  ­rw­­­­­­­   69  7  de  mayo  11:46 .asoundrc  
1  pi  pi  4.0K  ­rw­r­­r­­  1  pi  pi  3.2K  7   854  8  de  julio  12:55 .bash_history
de  mayo  10:20 .  bashrc  4.0K  drwxr­xr­x  4  pi  pi  4.0K  7  de  mayo  11:46 .cache  
4.0K  drwxr­xr­x  7  pi  pi  4.0K  7  de  mayo  11:46 .config  4.0K  drwxr­xr­x  2  pi  
pi  4.0  K  7  de  mayo  11:46  Desktop  4.0K  drwxr­xr­x  2  pi  pi  4.0K  7  de  mayo  
11:46 .fontconfig  4.0K  drwxr­xr­x  2  pi  pi  4.0K  7  de  mayo  
11:46 .gstreamer­0.10  4.0K  drwx  ­­­­­­  3  pi  pi  4.0K  7  de  mayo  11:46 .local  4.0K  
­rw­r­­r­­  1  pi  pi  4.0K  drwxrwxr­x  2  pi  pi  4.0K  27  de  enero  21:34  python_games  4.0K  
drwxr­xr­x  3  pi  pi  4.0K  7  de  mayo  11:46 .themes
675  7  de  mayo  10:20 .perfil

El  tamaño  de  los  archivos  informados  cuando  se  utiliza  la  opción  de  lectura  humana  se  designa  
con  las  siguientes  letras  respectivas;

•  K  =  Kilobyte  •  
M  =  Megabyte  •  G  
=  Gigabyte  •  T  =  
Terabyte  •  P  =  
Petabyte  •  E  =  
Exabyte  •  Z  =  
Zettabyte  •  Y  =  
Yottabyte

Argumentos

El  argumento  predeterminado  (si  no  se  incluye  ninguno)  es  enumerar  el  contenido  del  directorio  en  el  que  se  encuentra  
actualmente  el  usuario.  De  lo  contrario,  podemos  especificar  el  directorio  para  enumerar.  Esto  puede  parecer  una  tarea  
simple,  pero  hay  algunos  trucos  que  pueden  hacer  que  usar  ls  sea  realmente  versátil.

El  ejemplo  más  simple  de  usar  un  directorio  específico  para  un  argumento  es  especificar  la  ubicación  con  
la  dirección  completa.  Por  ejemplo,  si  quisiéramos  listar  el  contenido  del  directorio /var  (y  no  importa  desde  
qué  directorio  ejecutemos  este  comando)  simplemente  escribimos;

ls /var

…  producirá  lo  siguiente;
Machine Translated by Google

Comandos  Linux 75

pi@raspberrypi  ~  $  ls /var  copias  
de  seguridad  caché  lib  bloqueo  local  registro  correo  opt  ejecutar  spool  swap  tmp  www

También  podemos  usar  algunos  de  los  caracteres  de  direccionamiento  relativos  para  abreviar  nuestra  lista.  
Podemos  enumerar  el  directorio  de  inicio  usando  la  tilde  (ls   )  y  el  directorio  principal  usando  dos  puntos  (ls ..).

El  asterisco  (*)  se  puede  utilizar  como  comodín  para  enumerar  archivos  con  nombres  similares.  Por  ejemplo,  para  listar  todos  
los  archivos  png  en  un  directorio  podemos  usar  ls  *.png.

Si  solo  queremos  conocer  los  detalles  de  un  archivo  específico,  podemos  usar  su  nombre  explícitamente.  Por  
ejemplo,  si  quisiéramos  conocer  los  detalles  del  archivo  de  intercambio  en /var,  usaríamos  el  siguiente  comando;

ls  ­l /var/intercambiar

…  que  producirá  lo  siguiente;

pi@raspberrypi  ~  $  ls  ­l /var/swap  ­rw­­­­­­­  1  
raíz  raíz  104857600  7  de  mayo  11:29 /var/swap

Ejemplos

Enumere  todos  los  archivos  de  configuración  (.conf)  en  el  directorio /etc ;

ls /etc/*.conf

…  que  producirá  lo  siguiente;

pi@raspberrypi  ~  $  ls /etc/*.conf /etc/
adduser.conf /etc/ca­ /etc/host.conf /etc/ntp.conf /etc/
certificates.conf /etc/idmapd.conf /etc/debconf.conf /etc/ pam.conf /etc/
deluser.conf /etc/ /etc/insserv.conf /etc/ resolv.conf /etc/
dhcpcd.conf /etc/ ld.so.conf /etc/ resolvconf.conf
fuse.conf /etc/gai.conf / libaudit.conf /etc/rsyslog.conf /etc/logrotate.conf /
etc/gssapi_mech.conf etc/sysctl.conf /etc/mke2fs.conf
/etc/ts.conf
/etc/nsswitch.conf /etc/ucf.conf

Pruébate

1.  Enumere  los  archivos  ordenados  por  la  hora  en  que  se  modificaron  por  última  vez  en  orden  inverso  (los  archivos  modificados  más  
recientemente  son  los  últimos).

www.dbooks.org
Machine Translated by Google

Comandos  Linux 76

2.  Busque  los  permisos  del  archivo /etc/passwd.

3.  Enumere  todos  los  archivos  en  el  directorio /etc  en  formato  largo  y  ordenados  por  extensión.  (tendrá  que  leer  la  página  de  
manual  de  ls).

4.  Enumere  los  archivos  en  el  directorio /etc  de  mayor  a  menor  y  guárdelo  en /tmp/my
archivo  files.txt  (no  es  fácil  para  un  principiante  y  puede  requerir  un  poco  de  búsqueda  en  Google).
Machine Translated by Google

Comandos  Linux 77

mkdir

El  comando  mkdir  crea  directorios.  Es  uno  de  los  comandos  fundamentales  de  gestión  de  archivos  en  Linux.

•  directorio  mkdir  [opciones]:  crear  un  directorio

El  comando  mkdir  se  usa  para  crear  directorios  o  carpetas.  Es  un  comando  bastante  simple  con  algunas  opciones  
de  funcionalidad  adicional  para  permitir  que  se  establezcan  rutas  y  permisos  al  crear.

En  su  forma  más  simple,  el  siguiente  comando  creará  un  directorio  llamado  foobar  en  el  directorio  de  trabajo  actual;

mkdir  foobar

Podemos  verificar  la  creación  enumerando  los  archivos  usando  ls  con  la  opción  ­l  de  la  siguiente  manera;

ls­l

Que  debería  mostrar  algo  como  lo  siguiente;

pi@frambuesapi  ~  $  ls  ­l
total  68
drwxr­xr­x  2  pi  pi  4096  20  de  febrero  08:07  Escritorio  drwxr­
xr­x  2  pi  pi  4096  16  de  agosto  03:47  foobar  ­rw­r­­r­­  1  pi  pi  
drwxrwxr­x  2  pi  pi  4096   5  ago  16  01:27  foo.txt
Ene  27  2015  python_games

Los  descriptores  de  lectura/escritura/ejecución  para  los  permisos  de  los  directorios  van  precedidos  de  una  d  (de  
directorio)  y  en  algunos  terminales  el  color  del  texto  que  muestra  el  directorio  será  diferente  al  de  otros  tipos  de  
archivos  (no  olvidemos  que  mientras  llamamos  directorio  a  un  directorio  debido  a  su  función,  es  realmente  un  tipo  
de  archivo).

El  comando  'mkdir'

El  comando  mkdir  se  usa  para  crear  directorios  que  se  usan  como  contenedores  para  archivos  y  subdirectorios.  
Los  directorios  creados  por  mkdir  se  crean  automáticamente  con  dos  directorios  ocultos,  uno  que  representa  el  
directorio  recién  creado  (y  se  muestra  como  un  solo  punto  (.))  y  el  otro  que  representa  su  directorio  principal  (y  
representado  por  dos  puntos  (..)).  Estos  directorios  ocultos  se  pueden  ver  usando  el  comando  ls  con  la  opción  ­a  
(ls  ­a).

Los  directorios  se  pueden  eliminar  con  los  comandos  rm  y  rmdir .

www.dbooks.org
Machine Translated by Google

Comandos  Linux 78

Opciones

El  comando  mkdir  tiene  una  pequeña  cantidad  de  opciones  y  las  dos  más  probables  de  usar  en  cualquier  cosa  
que  se  acerque  a  una  base  regular  serían;

•  ­p  crea  los  directorios  principales  especificados  para  un  nuevo  directorio  si  aún  no  existen  •  ­m  controla  
el  modo  de  permiso  de  los  nuevos  directorios  (de  la  misma  manera  que  chmod)

Por  ejemplo  para  crear  los  directorios  anidados  foo/bar/foobar  en  el  directorio  de  trabajo  actual  ejecutaríamos  
lo  siguiente;

mkdir  ­p  foo/bar/foobar

Sin  la  opción  ­p  necesitaríamos  crear  cada  capa  por  separado.

Para  crear  un  directorio  con  un  conjunto  específico  de  permisos  de  lectura,  escritura  y  ejecución,  podemos  usar  
la  opción  ­m  con  los  mismos  argumentos  de  modo  que  se  usan  con  el  comando  chmod .  Por  ejemplo,  el  
siguiente  comando  creará  el  directorio  foobar  donde  el  propietario  tiene  permisos  de  lectura  y  escritura,  el  grupo  
tiene  permiso  de  lectura  y  otros  usuarios  no  tienen  permisos,  se  usaría  lo  siguiente;

mkdir  ­m  640  foobar

Si  posteriormente  comprobamos  esos  permisos  con  ls  ­l  veremos  lo  siguiente;

pi@frambuesapi  ~  $  ls  ­l
total  68
drw­r­­­­­  2  pi  pi  4096  16  de  agosto  05:36  foobar

Argumentos

El  conjunto  normal  de  opciones  de  direccionamiento  está  disponible  para  que  el  proceso  de  creación  de  los  
directorios  correctos  sea  más  flexible  y  extensible.

Pruébate

1.  ¿Cómo  usaríamos  el  comando  mkdir  para  crear  varios  directorios  al  mismo  tiempo?
2.  ¿Qué  directorios  se  crean  automáticamente  al  usar  mkdir?
Machine Translated by Google

Comandos  Linux 79

m.v.

El  comando  mv  se  usa  para  cambiar  el  nombre  y  mover  archivos  o  directorios.  Es  uno  de  los  comandos  
básicos  de  Linux  que  permite  la  gestión  de  archivos  desde  la  línea  de  comandos.

•  mv  [opciones]  origen  destino:  Mover  y/o  renombrar  archivos  y  directorios

Por  ejemplo:  para  renombrar  el  archivo  foo.txt  y  llamarlo  foo­2.txt  ingresaríamos  lo  siguiente;

mv  foo.txt  foo­2.txt

Esto  supone  que  estamos  en  el  mismo  directorio  que  el  archivo  foo.txt,  pero  incluso  si  no  lo  estuviéramos,  
podríamos  nombrar  explícitamente  el  archivo  con  la  estructura  del  directorio  y,  por  lo  tanto,  no  solo  cambiar  el  
nombre  del  archivo,  sino  moverlo  a  un  lugar  diferente;

mv /home/pi/foo.txt /home/pi/stuff/foo­2.txt

Para  mover  el  archivo  sin  cambiarle  el  nombre,  simplemente  omitiríamos  el  nuevo  nombre  en  el  destino  como
entonces;

mv /home/pi/foo.txt /home/pi/cosas/

El  comando  mv

El  comando  mv  se  usa  para  mover  o  renombrar  archivos  y  directorios  (mv  es  una  forma  abreviada  de  la  palabra  
mover).  Este  es  un  comando  similar  al  comando  cp  (copiar),  pero  no  crea  un  duplicado  de  los  archivos  sobre  
los  que  está  actuando.

Si  queremos  mover  varios  archivos,  podemos  ponerlos  en  la  misma  línea  separados  por  espacios.

El  conjunto  normal  de  comodines  y  opciones  de  direccionamiento  están  disponibles  para  que  el  proceso  sea  
más  flexible  y  extensible.

Opciones

Si  bien  hay  algunas  opciones  disponibles  para  el  comando  mv ,  las  más  utilizadas  serían  ­u  e  ­i.

•  u  Esto  actualiza  los  archivos  movidos  moviendo  solo  el  archivo  cuando  el  archivo  de  origen  es  más  
nuevo  que  el  archivo  de  destino  o  cuando  el  archivo  de  destino  no  
existe.  •  i  Inicia  un  modo  interactivo  en  el  que  se  nos  pide  confirmación  siempre  que  el  movimiento  
sobrescriba  un  objetivo  existente.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 80

Ejemplos

Para  mover  todos  los  archivos  del  directorio  1  al  directorio  2  (el  directorio  2  debe  existir  inicialmente);

mv  directorio1/*  directorio2/

Para  cambiar  el  nombre  de  un  directorio  de  directorio1  a  directorio2  (el  directorio2  no  debe  existir  aún);

mv  directorio1/directorio2/

Para  mover  los  archivos  foo.txt  y  bar.txt  al  directorio  foobar;

mv  foo.txt  bar.txt  foobar/

Para  mover  todos  los  archivos  'txt'  del  directorio  de  inicio  de  los  usuarios  a  un  directorio  llamado  copia  de  seguridad ,  pero  
solo  si  el  archivo  que  se  está  moviendo  es  más  nuevo  que  el  archivo  de  destino;

mv  ­u  ~/*.txt  copia  de  seguridad/

Pruébate

1.  ¿Cómo  podemos  mover  un  archivo  a  una  nueva  ubicación  cuando  ese  acto  podría  sobrescribir  uno  ya
archivo  existente?

2.  ¿Qué  caracteres  no  se  pueden  usar  al  nombrar  directorios  o  archivos?
Machine Translated by Google

Comandos  Linux 81

personas  con  discapacidad

El  comando  pwd  nos  permite  determinar  en  qué  directorio  nos  encontramos  actualmente.  La  flexibilidad  de  
trabajar  en  Linux  significa  que  a  menudo  no  queda  claro  exactamente  en  qué  directorio  estamos  trabajando.  
Como  resultado,  el  comando  pwd  se  convierte  en  una  forma  sencilla  de  confirmar  el  funcionamiento  actual .  
directorio  que  ayuda  a  garantizar  que  estamos  operando  en  los  archivos  correctos.

•  pwd :  imprime  el  directorio  de  trabajo  actual

El  comando  pwd  es  relativamente  único  en  el  sentido  de  que  generalmente  se  ejecuta  solo  sin  opciones  ni  
argumentos;

personas  con  discapacidad

imprimirá  el  directorio  de  trabajo  actual  en  la  línea  de  comando;

/inicio/pi

Es  un  comando  simple  para  hacer  una  función  simple  (pero  útil).

El  comando  pwd

El  comando  pwd  es  la  abreviatura  de  imprimir  directorio  de  trabajo .  y  hace  precisamente  eso.  A  menudo  se  
toma  como  la  abreviatura  del  directorio  de  trabajo  actual  y,  si  bien  es  una  descripción  igualmente  buena,  el  
nombre  deriva  del  mundo  de  Unix,  donde  la  salida  de  la  computadora  era  comúnmente  en  papel.

La  simplicidad  del  comando  refleja  la  filosofía  Unix  de  pequeños  comandos  especializados  que  son  modulares.  
Es  un  testimonio  de  la  veracidad  de  la  afirmación  de  que  pwd  sigue  siendo  uno  de  los  comandos  más  simples  
y  útiles.

Si  bien  tiene  un  par  de  opciones,  rara  vez  se  usan,  si  es  que  se  usan  alguna  vez,  y  el  comando  se  sostiene  
por  sí  solo  de  forma  aislada.

Pruébate

1.  ¿Qué  directorio  informará  pwd  si  ejecuta  el  comando  cd   ?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 82

rm

El  comando  rm  se  usa  para  eliminar  archivos  o  directorios.  Este  es  un  comando  básico  de  administración  de  
archivos  de  Linux  que  todos  los  usuarios  de  Linux  deben  entender.

•  rm  [opciones]  archivo:  Eliminar  archivos  o  directorios

Por  ejemplo,  si  queremos  eliminar  el  archivo  foo.txt ,  usaríamos  el  comando  de  la  siguiente  manera;

rm  foo.txt

El  comando  rm

El  comando  rm  se  usa  para  eliminar  (por  lo  tanto,  rm  =  eliminar)  archivos.  Cualquier  acto  que  involucre  la  
eliminación  de  archivos  debe  tratarse  con  cierto  grado  de  precaución  y  el  comando  rm  cae  en  la  categoría  de  'tratar  
con  precaución'.  Esto  es  especialmente  cierto  si  se  usan  comodines  o  direccionamiento  relativo  complejo.

No  eliminará  los  directorios  de  forma  predeterminada,  aunque  se  puede  indicar  que  lo  haga  a  través  de  la  opción  
­r  (que  se  explica  más  adelante).  El  comando  devolverá  un  mensaje  de  error  si  un  archivo  no  existe  o  si  el  usuario  
no  tiene  los  permisos  adecuados  para  eliminarlo.  Los  archivos  que  se  encuentran  en  directorios  protegidos  contra  
escritura  no  se  pueden  eliminar,  incluso  si  esos  archivos  no  están  protegidos  contra  escritura  (están  protegidos  por  
el  directorio).

Si  un  archivo  a  eliminar  es  un  enlace  simbólico,  el  enlace  se  eliminará,  pero  el  archivo  o  directorio  al  que  hace  
referencia  ese  enlace  no  se  eliminará.

Lo  crea  o  no,  a  veces  es  posible  recuperar  el  contenido  de  un  archivo  que  ha  sido  
eliminado  usando  rm.  Si  nuestro  objetivo  al  eliminar  el  archivo  es  asegurarnos  de  que  
no  se  pueda  recuperar  (presumiblemente  por  razones  de  seguridad),  se  debe  usar  
otra  opción.  El  comando  triturar  sería  un  comienzo,  explore  sus  opciones  en  este  caso  
según  el  nivel  de  seguridad  que  necesite.

Opciones

Hay  una  pequeña  cantidad  de  opciones  disponibles  para  usar  con  rm.  Lo  siguiente  seria  lo  mas
común;

•  ­r  nos  permite  eliminar  directorios  y  su  contenido  de  forma  recursiva  •  ­f  nos  
permite  forzar  la  eliminación  de  archivos  independientemente  del  estado  de  protección  contra  
escritura  •  ­i  le  dice  al  rm  commend  que  nos  solicite  de  forma  interactiva  la  confirmación  de  cada  eliminación

Entonces,  lo  siguiente  eliminará  el  directorio  foobar  y  todo  su  contenido;
Machine Translated by Google

Comandos  Linux 83

rm  ­r  foobar/

Para  eliminar  todos  los  archivos  txt  en  el  directorio  actual  independientemente  de  su  estado  de  protección  contra  escritura  
(y  sin  pedirnos  que  nos  digan  que  está  sucediendo);

rm  ­f  *.txt

En  serio.  ¡Tenga  en  cuenta  lo  que  está  haciendo  si  usa  las  opciones  ­r  o  ­f  y  
tenga  el  doble  de  cuidado  si  las  usa  juntas!

Para  adoptar  un  enfoque  cuidadoso  y  tener  un  aviso  para  la  eliminación  de  cada  archivo,  podemos  usar  la  opción  ­i .  El  
siguiente  ejemplo  buscará  cada  archivo  txt  y  nos  preguntará  si  queremos  eliminarlo;

rm  ­i  *.txt

La  salida  se  parecerá  a  lo  siguiente;

pi@raspberrypi  ~  $  rm  ­i  *.txt  rm:  
¿eliminar  el  archivo  normal  ̀bar.txt'?  y  rm:  
eliminar  el  archivo  normal  ̀foo.txt'?  y

No  podemos  usar  las  opciones  ­f  y  ­i  simultáneamente.  Cualquiera  que  haya  sido  el  último  en  el  comando  tiene  efecto.

El  comando  rm  admite  el  parámetro  ­­  (dos  guiones  consecutivos)  que  actúa  como  un  delimitador  que  indica  el  final  de  
cualquier  opción.  Esto  se  usa  cuando  el  nombre  de  un  archivo  o  directorio  comienza  con  un  guión.  Por  ejemplo,  lo  
siguiente  elimina  un  directorio  llamado  ­directory1;

rm  ­r  ­­  ­directorio1

Argumentos

El  conjunto  normal  de  comodines  y  opciones  de  direccionamiento  están  disponibles  para  que  el  proceso  de  encontrar  los  
archivos  correctos  sea  más  flexible  y  extensible.

Para  eliminar  más  de  un  archivo  simplemente  podemos  separarlos  con  un  espacio  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 84

rm  archivo1  archivo2  archivo3

Pruébate

1.  ¿La  opción  ­f  eliminará  con  éxito  un  archivo  protegido  contra  escritura  en  un  directorio  protegido  contra  escritura?
Justifica  tu  respuesta.
2.  ¿Cuáles  son  las  implicaciones  de  ejecutar  el  siguiente  comando?

rm  ­si  *.png
Machine Translated by Google

Comandos  Linux 85

rmdir

El  comando  rmdir  se  usa  para  eliminar  directorios  vacíos.  Este  es  un  comando  básico  de  administración  de  archivos  
de  Linux  que  todos  los  usuarios  de  Linux  deben  entender.

•  directorio  rmdir  [opciones]:  eliminar  directorios  vacíos

Por  ejemplo,  si  queremos  eliminar  el  directorio  foobar ,  usaríamos  el  comando  de  la  siguiente  manera;

rmdir  foobar

El  comando  rmdir

El  comando  rmdir  se  usa  para  eliminar  directorios  vacíos  (por  lo  tanto,  rmdir  =  eliminar  directorio).  Puede  parecer  
algo  inusual  poder  eliminar  solo  directorios  vacíos,  pero  esto  actúa  como  una  medida  de  seguridad  que  se  puede  
usar  para  evitar  la  pérdida  involuntaria  de  archivos  que  podría  resultar  al  intentar  eliminar  un  directorio  cuando  no  
estaba  vacío.

No  existe  una  opción  equivalente  a  rm  que  permita  la  eliminación  recursiva  de  directorios,  pero  existe  una  variación  
que  permitirá  la  eliminación  de  directorios  principales  si  se  vacían  posteriormente  (más  adelante).

En  Linux,  los  directorios  no  son  contenedores  de  archivos  reales.  En  cambio,  son  archivos  que  tienen  la  apariencia  
de  contener  archivos  porque  almacenan  un  conjunto  de  estructuras  de  datos  que  describen  archivos  y  subdirectorios  
que  están  asignados  al  'directorio'.  Por  lo  tanto,  eliminar  un  directorio  tiene  el  potencial  de  perder  una  gran  cantidad  
de  datos  y  la  restricción  de  solo  eliminar  directorios  vacíos  es  comprensible.

Opciones

La  única  opción  potencialmente  común  utilizada  con  el  comando  rmdir  es  la  opción  ­p  que  elimina  los  directorios  
especificados  explícitamente  si  se  vacían.  Por  ejemplo,  el  siguiente  comando  eliminará  el  directorio  3,  luego  el  
directorio  2  y  luego  el  directorio  1 ,  ya  que  cada  eliminación  deja  su  padre  vacío;

rmdir  ­p  directorio1/directorio2/directorio3/

Argumentos

El  conjunto  normal  de  comodines  y  opciones  de  direccionamiento  están  disponibles  para  hacer  que  el  proceso  de  
encontrar  los  directorios  correctos  sea  más  flexible  y  extensible.

Para  eliminar  más  de  un  directorio,  simplemente  podemos  separarlos  con  un  espacio  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 86

rmdir  directorio1  directorio2  directorio3

Pruébate

1.  ¿Qué  comando  se  puede  usar  para  eliminar  un  directorio  que  contiene  archivos?
2.  ¿Por  qué  el  comando  rmdir  no  permite  eliminar  directorios  con  contenido?
Machine Translated by Google

Comandos  Linux 87

alquitrán

El  comando  tar  está  diseñado  para  facilitar  la  creación  de  un  archivo  de  archivos  al  combinar  una  variedad  de  archivos  y  
directorios  en  un  solo  archivo  y  brindar  la  capacidad  de  extraer  estos  archivos  nuevamente.  Si  bien  tar  no  incluye  la  
compresión  como  parte  de  su  función  básica,  está  disponible  a  través  de  una  opción.  tar  es  un  programa  útil  para  archivar  
datos  y,  como  tal,  forma  un  comando  importante  para  el  buen  mantenimiento  de  archivos  y  sistemas.

•  tar  [opciones]  nombre  de  archivo  [archivo(s)]:  archivar  o  extraer  archivos

tar  es  conocido  como  un  comando  que  tiene  una  plétora  de  opciones  y  flexibilidad.  Tanto  es  así  que  puede  parecer  un  poco  
arcano  y  (me  atrevo  a  decirlo)  'demasiado  flexible'.  Esto  ha  sido  bien  ilustrado  en  el  excelente  trabajo  de  dibujos  animados  
de  la  tira  cómica  xkcd¹   (¡Compra  sus  cosas² ,  es  increíble!).

Sudo  cortesía  xkcd

Sin  embargo,  el  hecho  de  que  tenga  muchas  opciones  no  significa  que  deba  ser  difícil  de  usar  para  un  conjunto  estándar  
de  tareas  y,  en  su  forma  más  básica,  es  la  creación  de  un  archivo  de  archivos  de  la  siguiente  manera;

tar  ­cvf  foobar.tar  foo.txt  bar.txt

Aquí  estamos  creando  un  archivo  en  un  archivo  llamado  foobar.tar  de  los  archivos  foo.txt  y  bar.txt.

Las  opciones  utilizadas  nos  permiten;

•  c :  crea  un  archivo  nuevo  •  v :  

enumera  detalladamente  los  archivos  que  se  procesan.  •  
f :  especifique  el  siguiente  nombre  como  el  nombre  del  archivo  comprimido

La  salida  del  comando  es  el  eco  de  los  archivos  que  se  colocan  en  el  archivo;

¹ https://xkcd.com/149/  
² http://store.xkcd.com/

www.dbooks.org
Machine Translated by Google

Comandos  Linux 88

foo.txt
barra.txt

El  resultado  adicional  es  la  creación  del  archivo  que  contiene  nuestro  archivo  foobar.tar.

Para  llevar  el  ejemplo  a  su  conclusión  lógica,  nos  gustaría  extraer  los  archivos  del  archivo  de  la  siguiente  manera;

tar  ­xvf  foobar.tar

Las  opciones  utilizadas  nos  permiten;

•  x :  extrae  un  archivo  •  v :  

enumera  detalladamente  los  archivos  que  se  procesan.  
•  f :  especifique  el  siguiente  nombre  como  el  nombre  del  archivo  comprimido

La  salida  del  comando  es  el  eco  de  los  archivos  que  se  extraen  del  archivo;

foo.txt
barra.txt

El  comando  alquitrán

tape  archive,  o  tar  para  abreviar,  es  un  comando  para  convertir  archivos  y  directorios  en  un  solo  archivo  de  datos.  Si  bien  
originalmente  se  escribió  para  leer  y  escribir  desde  dispositivos  secuenciales  como  unidades  de  cinta,  en  la  actualidad  se  
usa  más  comúnmente  como  una  herramienta  de  archivo  de  archivos.  En  este  sentido,  puede  considerarse  similar  a  
herramientas  de  archivo  como  WinZip  o  7zip.  El  archivo  resultante  creado  como  resultado  del  uso  del  comando  tar  se  
denomina  comúnmente  'tarball'.

Tenga  en  cuenta  que  tar  no  proporciona  ninguna  compresión,  por  lo  que  para  reducir  el  tamaño  de  un  tarball  necesitamos  
usar  una  utilidad  de  compresión  externa  como  gzip.  Si  bien  este  es  el  más  común,  se  puede  usar  cualquier  otro  tipo  de  
compresión.  Estos  modificadores  son  el  equivalente  a  canalizar  el  archivo  creado  a  través  de  gzip.

Una  ventaja  de  usar  tar  sobre  otras  herramientas  de  archivado,  como  zip,  es  que  tar  está  diseñado  para  preservar  las  
características  del  sistema  de  archivos  de  Unix,  como  permisos  de  usuarios  y  grupos,  fechas  de  acceso  y  modificación,  y  
estructuras  de  directorios.

Otra  ventaja  de  usar  tar  para  archivos  comprimidos  es  el  hecho  de  que  cualquier  compresión  se  aplica  al  tarball  en  su  
totalidad,  en  lugar  de  archivos  individuales  dentro  del  archivo,  como  es  el  caso  de  los  archivos  zip.  Esto  permite  una  
compresión  más  eficiente  ya  que  el  proceso  puede  aprovechar  la  redundancia  de  datos  en  varios  archivos.
Machine Translated by Google

Comandos  Linux 89

Opciones

•  c :  crea  un  nuevo  archivo  tar.  •  
x :  extrae  un  archivo  tar.  •  f :  
Trabajar  en  un  archivo.  
•  z :  utilice  la  compresión  o  descompresión  Gzip  al  crear  o  extraer.  •  t :  muestra  el  
contenido  de  un  archivo  tar.

Si  bien  ya  hemos  visto  c,  x,  v  y  f  en  acción  en  los  ejemplos  anteriores,  vale  la  pena  
señalar  que  es  necesario  que  la  opción  ­f  sea  la  opción  final  en  la  secuencia  de  
opciones;  de  lo  contrario,  el  comando  no  podrá  especificar  el  nombre  del  archivo  
comprimido  y  puede  usar  la  siguiente  opción  en  la  secuencia  como  nombre.

El  programa  tar  no  comprime  los  archivos,  pero  puede  incorporar  la  compresión  gzip  a  través  de  la  opción  ­z  
de  la  siguiente  manera;

tar  ­cvzf  foobar.tar  foo.txt  bar.txt

Si  queremos  encender  el  contenido  de  un  tarball  sin  desarchivarlo,  podemos  usar  la  opción  ­t  de  la  siguiente  
manera;

tar  ­tf  foobar.tar

Cuando  se  usa  tar  para  distribuir  archivos  a  otros,  se  considera  una  buena  etiqueta  hacer  que  el  tarball  se  
extraiga  en  un  directorio  con  el  mismo  nombre  que  el  propio  archivo  tar.  Esto  evita  que  el  destinatario  tenga  
un  lío  de  archivos  en  sus  manos  cuando  extrae  el  archivo.  Piense  en  ello  de  la  misma  manera  que  le  da  a  
sus  amigos  un  juego  de  libros.  Prefieren  que  les  entregues  una  caja  que  tirar  una  pila  de  libros  sueltos  en  el  
suelo.

Por  ejemplo,  si  desea  distribuir  los  archivos  en  el  directorio  foodir ,  crearíamos  un  tarball  desde  el  directorio  
que  contiene  estos  archivos,  en  lugar  de  los  archivos  en  sí:

tar  ­cf  foodir.tar  foodir

Recuerde  que  tar  funciona  recursivamente  de  forma  predeterminada,  por  lo  que  no  es  necesario  que  especifiquemos  todos  los  archivos  
debajo  de  este  directorio  nosotros  mismos.

Pruébate

1.  ¿Necesita  incluir  la  opción  z  al  descomprimir  un  archivo  tar ?
2.  Ingrese  un  comando  tar  válido  en  el  primer  intento.  Sin  googlear.  Tienes  10  segundos.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 90

Acceso  al  contenido  del  archivo

gato

El  comando  cat  es  un  comando  realmente  versátil  que  normalmente  se  usa  para  llevar  a  cabo  tres  funciones  
diferentes.  Puede  mostrar  un  archivo  en  la  pantalla,  combinar  diferentes  archivos  (concatenarlos )  o  crear  nuevos  
archivos.  Este  es  otro  comando  central  que  es  inmensamente  útil  para  aprender  cuando  se  trabaja  con  Linux  desde  
la  línea  de  comandos.  Es  simple,  flexible  y  versátil.

•  cat  [opciones]  nombre  de  archivo  nombre  de  archivo:  Muestra,  combina  o  crea  nuevos  archivos.

Por  ejemplo:  Para  mostrar  el  archivo  foo.txt  en  la  pantalla  usaríamos;

comida  de  gato.txt

Para  mostrar  los  archivos  foo.txt  y  bar.txt  en  la  pantalla  uno  tras  otro  usaríamos;

gato  foo.txt  bar.txt

O  para  combinar  los  archivos  foo.txt  y  bar.txt  en  un  nuevo  archivo  llamado  foobar.txt  usando  el  símbolo  de  
redirección  >;

gato  foo.txt  bar.txt  >  foobar.txt

El  comando  del  gato

El  comando  cat  es  una  herramienta  vital  para  usar  en  la  línea  de  comandos  de  Linux  porque,  en  última  instancia,  
Linux  es  un  sistema  operativo  controlado  por  archivos.  Sin  una  interfaz  gráfica  de  usuario,  debe  haber  un  mecanismo  
mediante  el  cual  la  creación  y  manipulación  de  archivos  de  texto  se  pueda  lograr  fácilmente.  El  comando  cat  es  uno  
de  los  comandos  que  hace  esto  posible.  El  nombre  'gato'  es  la  abreviatura  de  'catenar'  o  'concatenar' (cualquiera  
de  los  dos  parece  ser  aceptable,  pero  'concatenar'  parece  ser  más  utilizado),  es  decir,  para  conectar  cosas  en  una  
serie.  Este  es  ciertamente  uno  de  sus  usos  comunes,  pero  una  mejor  descripción  general  sería  decir  que  el  
comando  cat  está  acostumbrado  a;

•  Mostrar  archivos  de  texto  en  la  línea  de  
comando  •  Unir  un  archivo  de  texto  al  final  de  otro  archivo  de  texto,  
combinándolos  •  Copiar  archivos  de  texto  en  un  nuevo  documento
Machine Translated by Google

Comandos  Linux 91

Opciones

La  única  opción  que  tiene  algún  grado  de  uso  con  cat  es  la  opción  ­n  que  numera  las  líneas  de  salida.

Argumentos  y  Ejemplos

Para  mostrar  texto

Por  ejemplo,  para  mostrar  un  archivo  de  texto  (foo.txt)  en  la  pantalla  podemos  usar  el  siguiente  comando;

comida  de  gato.txt

La  salida  sería;

pi@raspberrypi  ~  $  gato  foo.txt
Esta  línea  es  el  contenido  de  foo.txt

Como  podemos  ver,  el  contenido  del  archivo  'foo.txt'  se  envía  a  la  pantalla  (tenga  cuidado,  si  el  archivo  es  lo  
suficientemente  grande,  simplemente  volcará  el  contenido  en  una  larga  cascada  de  texto).

Para  unir  más  de  un  archivo

Podríamos  mostrar  fácilmente  dos  archivos  uno  tras  otro  (concatenados)  de  la  siguiente  manera;

gato  foo.txt  bar.txt

La  salida  sería;

pi@raspberrypi  ~  $  cat  foo.txt  bar.txt  Esta  línea  es  
el  contenido  de  foo.txt
Esta  línea  es  el  contenido  de  bar.txt

Para  crear  un  nuevo  archivo

En  lugar  de  enviar  el  archivo  a  la  pantalla,  podemos  especificar  que  cat  envíe  nuestro  archivo  a  un  archivo  nuevo  
(renombrado)  de  la  siguiente  manera;

gato  foo.txt  >  nuevofoo.txt

www.dbooks.org
Machine Translated by Google

Comandos  Linux 92

Esto  podría  pensarse  en  un  equivalente  a  una  acción  de  copia  de  archivo  y  utiliza  el  símbolo  de  redirección  >.

>>  y  >  se  denominan  símbolos  de  adición.  Se  utilizan  para  agregar  la  salida  a  un  archivo  y  no  a  la  pantalla.  >  eliminará  un  

archivo  si  ya  existe  y  creará  un  nuevo  archivo,  por  lo  que,  por  seguridad,  es  recomendable  usar  >>  siempre  que  sea  posible  

para  escribir  la  salida  en  un  archivo  nuevo  sin  sobrescribir  o  eliminar  un  archivo  existente.

Llevando  el  proceso  un  paso  más  allá,  podemos  tomar  nuestros  dos  archivos  originales  y  combinarlos  en  un  solo  
archivo  con;

gato  foo.txt  bar.txt  >  foobar.txt

Luego  podemos  verificar  los  resultados  de  nuestra  combinación  usando  cat  en  el  nuevo  archivo  de  la  siguiente  manera;

gato  foobar.txt

Y  la  salida  sería;

pi@raspberrypi  ~  $  gato  foobar.txt
Esta  línea  es  el  contenido  de  foo.txt
Esta  línea  es  el  contenido  de  bar.txt

Entonces  podríamos  usar  cat  para  agregar  un  archivo  a  un  archivo  ya  existente  usando  el  operador  de  redirección  
>>;

gato  nuevofoo.txt  >>  foobar.txt

Aquí  usamos  el  operador  de  redirección  >>  para  agregar  el  contenido  del  archivo  newfoo.txt  al  archivo  ya  existente  
foobar.txt.

El  contenido  del  archivo  resultante  sería;

pi@raspberrypi  ~  $  gato  foobar.txt
Esta  línea  es  el  contenido  de  foo.txt
Esta  línea  es  el  contenido  de  bar.txt
Y  esto  es  newfoo.txt

Finalmente,  podemos  usar  cat  para  crear  un  archivo  desde  cero.  En  este  escenario,  si  usamos  cat  sin  un  archivo  
fuente  y  redirigimos  a  un  archivo  nuevo  (aquí  llamado  newfile.txt).  Tomará  la  entrada  de  la  línea  de  comando  para  
agregar  al  archivo  hasta  que  se  presione  CONTROL­d.
Machine Translated by Google

Comandos  Linux 93

gato  >>  nuevoarchivo.txt

solo  sigue  escribiendo

e  ingresando  información  hasta...

¡presionamos  ctrl­d  para  terminar  y  el  archivo  se  escribe!

El  contenido  del  archivo  resultante  sería;

pi@raspberrypi  ~  $  cat  newfile.txt  
Simplemente  siga  
escribiendo  e  ingresando  información  hasta  
que...  presionemos  ctrl­d  para  terminar  y  el  archivo  se  escriba.

Pruébate

1.  ¿Cuál  es  el  redirector  más  seguro  de  usar?

2.  Cree  un  nuevo  archivo  usando  cat  e  ingrese  algunas  líneas  de  texto  para  darle  algo  de  contenido.  
3.  Copie  ese  archivo  usando  cat  a  un  nuevo  archivo.
4.  Combine  el  archivo  original  y  la  copia  en  un  nuevo  archivo.
5.  Muestre  ese  nuevo  archivo  en  la  pantalla.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 94

cortar

El  comando  de  corte  se  usa  para  'cortar'  secciones  de  cada  línea  de  un  archivo  o  archivos.  Puede  realizar  el  corte  en  
función  del  byte,  el  carácter  o  la  posición  del  campo  en  una  fila.  Cuando  se  usa  la  posición  del  campo,  el  separador  
predeterminado  es  una  pestaña,  pero  esto  se  puede  especificar  como  una  alternativa  usando  las  opciones.  Este  comando  
nos  permitirá  filtrar  archivos  de  texto  fácilmente  en  situaciones  donde  las  alternativas  serían  la  edición  manual.

•  cortar  [opciones]  archivo:  'cortar'  secciones  de  cada  línea  de  un  archivo  o  archivos.

Por  ejemplo,  supongamos  que  tenemos  un  archivo  llamado  cutme.txt  con  los  siguientes  contenidos;

uno dos tres  cuatro cinco


uno dos tres cuatro  cinco
tahi  rúa toru que rima

Es  importante  tener  en  cuenta  que  cada  línea  tiene  cada  palabra  separada  por  un  carácter  de  tabulación,  no  por  un
espacio  o  espacios.

Usando  el  comando  de  corte  de  la  siguiente  manera,  podemos  cortar  el  tercer  campo  de  cada  línea  donde  un  campo  es  
cualquier  número  de  caracteres  entre  delimitadores;

cortar  ­f  3  cortarme.txt

…  y  los  resultados  son  los  siguientes;

tres
tres
toru

En  el  comando  anterior,  hemos  utilizado  la  opción  ­f  que  especifica  qué  'campo'  numérico  se  debe  cortar  entre  los  
delimitadores  de  tabulación  (predeterminados).

El  comando  de  corte

El  comando  de  corte  no  es  de  uso  diario,  pero  cuando  se  trata  de  la  manipulación  de  información  en  un  archivo  o  incluso  
un  flujo  de  datos  de  entrada  de  STDIN,  puede  ser  invaluable.  Es  uno  de  los  comandos  que  se  pueden  usar  para  filtrar  
información  de  manera  eficiente.

Su  utilidad  se  demuestra  por  la  capacidad  de  'cortar'  información  basada  en  un  esquema  flexible  para  especificar  una  
posición,  carácter(es)  o  campos  para  cortar  y  la  capacidad  de  especificar  los  delimitadores  que  se  utilizarán  para

Usando  nuestro  archivo  de  muestra  cutme.txt  de  arriba,  podemos  especificar  cortar  los  campos  del  2  al  4  de  la  siguiente  
manera;
Machine Translated by Google

Comandos  Linux 95

cortar  ­f  2­4  cortarme.txt

…  y  los  resultados  son  los  siguientes;

dos tres  cuatro
dos tres cuatro
rua toru que

Recordando  que  el  comando  ha  asumido  el  uso  de  tabuladores  como  delimitador  por  defecto.

Opciones

Hay  algunas  opciones  diferentes  de  uso,  pero  las  más  utilizadas  son  las  siguientes:

•  ­c  corte  basado  en  el  número  de  caracteres

•  ­b  corta  según  el  número  de  bytes  •  ­f  corta  
según  el  número  de  campos  que  se  delimitan  •  ­d  usa  un  carácter  específico  

como  delimitador

Cortar  cada  línea  en  función  de  la  posición  del  carácter  o  del  byte  puede  considerarse  casi  lo  mismo  y,  para  la  mayoría  
de  los  propósitos,  puede  considerarse  así.  La  diferencia  es  que,  en  la  mayoría  de  los  casos,  un  carácter  tiene  una  longitud  
de  un  solo  byte,  pero  para  algunos  juegos  de  caracteres  internacionales,  los  caracteres  requieren  más  de  un  byte  para  
codificarlos.  Entonces,  aunque  en  la  gran  mayoría  de  los  casos,  se  puede  considerar  que  el  uso  de  ­c  o  ­b  tiene  el  mismo  
resultado,  siempre  tenga  en  cuenta  la  diferencia  entre  los  dos  y  use  la  opción  que  mejor  se  adapte  a  la  tarea.

Para  nuestro  próximo  conjunto  de  ejemplos,  supongamos  que  tenemos  un  archivo  llamado  cutme2.txt  con  los  siguientes  
contenidos;

uno  dos  tres  CUATRO  CINCO
uno:dos:tres:cuatro:cinco
tahi:rua:toru:wha:rima

Obviamente,  en  este  archivo  de  ejemplo,  hemos  reemplazado  las  pestañas  con  dos  puntos  (:)  que  se  pueden  usar  como  
delimitadores.

Usando  la  opción  ­c  para  cortar  el  carácter,  podríamos  seleccionar  el  rango  de  caracteres  del  segundo  al  sexto  de  la  
siguiente  manera;

cortar  ­c  2­6  cortarme2.txt

…  que  produciría  una  salida  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 96

ne:  tw
no:  hacer

hola:r

Podemos  incluir  más  de  una  sección  de  una  fila  para  recortar  separando  las  secciones  con  una  coma.  Por  ejemplo,  si  
quisiéramos  seleccionar  el  rango  de  caracteres  del  segundo  al  sexto  y  del  octavo  al  décimo  (omitiendo  el  noveno)  
podríamos  hacerlo  de  la  siguiente  manera;

cortar  ­c  2­6,8­9  cortarme2.txt

…  que  produciría  una  salida  de  la  siguiente  manera;

peso  neto
no:  hacer:  t
ahi:ra:

Además,  podemos  usar  el  comando  para  cortar  cada  carácter  desde  una  posición  específica  hasta  el  final  de  la  fila  
omitiendo  el  número  'a'.  Por  ejemplo,  podríamos  seleccionar  el  rango  de  caracteres  desde  el  segundo  carácter  hasta  el  
final  de  la  fila  de  la  siguiente  manera;

cortar  ­c  2­  cortarme2.txt

…  o  podríamos  cortar  todos  los  caracteres  desde  el  comienzo  de  la  fila  hasta  el  segundo  carácter  de  la  siguiente  manera;

cortar  ­c  ­2  cortarme2.txt

Para  establecer  un  delimitador  que  no  sea  la  pestaña  predeterminada,  usamos  la  opción  ­d .  El  siguiente  ejemplo  recorta  
el  segundo  campo  utilizando  dos  puntos  como  delimitador;

cortar  ­f  2  ­d :  cortarme2.txt

La  salida  aparecerá  de  la  siguiente  manera;
Machine Translated by Google

Comandos  Linux 97

dos
dos
rua

El  delimitador  en  el  comando  se  puede  encapsular  con  comillas  o  marcas  de  voz  según  la  
siguiente  lista  de  comandos  equivalentes,  pero  el  delimitador  solo  puede  ser  un  solo  carácter;

cortar  ­f  2  ­d :  cortarme2.txt
cortar  ­f  2  ­d  ':'  cortarme2.txt
cortar  ­f  2  ­d  ":"  cortarme2.txt

Pruébate

1.  Muestre  dos  formas  diferentes  de  usar  el  comando  de  corte  que  cortará  cada  carácter  
desde  el  comienzo  de  una  fila  hasta  el  cuarto  carácter  y  desde  el  sexto  carácter  hasta  el  
final  de  la  fila.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 98

diferencia

El  comando  diff  se  usa  para  comparar  dos  archivos  o  directorios  e  informar  cuáles  son  las  diferencias  entre  
ellos.  Es  una  situación  común  encontrarnos  preguntándonos  cuál  es  la  diferencia  entre  dos  archivos  o  
directorios  casi  idénticos  y  este  comando  determinará  esas  diferencias.

•  diff  [opciones]  de  archivo  a  archivo:  muestra  las  diferencias  entre  dos  archivos

Por  ejemplo,  supongamos  que  tenemos  dos  directorios,  'dir1'  y  'dir2'.  Cada  uno  de  estos  directorios  contiene  
tres  archivos.  'dir1'  contiene  'file_a.txt',  'file_b.txt'  y  'file_c.txt'.  'dir2'  contiene  'file_a.txt',  'file_b.txt'  y  'file_d.txt'.

Para  este  ejemplo  simple,  podemos  ver  que  la  diferencia  entre  los  dos  directorios  es  que  solo  'dir1'  contiene  
'file_c.txt'  y  solo  dir2  contiene  'file_d.txt'.  Podemos  ilustrar  esto  un  poco  mejor  de  la  siguiente  manera;

│  ├──  
dir1  │  ├──  archivo_a.txt  
│  ├──  archivo_b.txt  │  
└──
archivo_c.txt  └──  dir2  
├──  
archivo_a.txt  ├──  
archivo_b.txt  
└── archivo_d.t  xt

Usando  el  comando  diff  de  la  siguiente  manera,  podemos  comparar  los  directorios  'dir1'  y  'dir2';

diferencia  ­q  dir1  dir2

…  y  los  resultados  son  los  siguientes;

pi@raspberrypi  ~  $  diff  ­q  dir1  dir2  Los  archivos  dir1/
file_a.txt  y  dir2/file_a.txt  difieren
Los  archivos  dir1/file_b.txt  y  dir2/file_b.txt  difieren  Solo  en  dir1:  file_c.txt  
Solo  en  dir2:  file_d.txt

El  informe  en  este  caso  está  en  una  forma  bastante  razonable,  descriptiva  y  legible  por  humanos.  Nos  dice  que  
no  solo  hay  archivos  diferentes  en  cada  directorio,  sino  que  donde  hay  archivos  con  el  mismo  nombre,  nos  
avisa  que  son  diferentes  entre  sí.

En  el  comando  anterior,  usamos  la  opción  ­q  que  omite  las  diferencias  individuales  entre  los  archivos  que  tienen  
el  mismo  nombre,  pero  diferentes  contenidos  (de  lo  contrario,  los  resultados  del  comando  pueden  haber  sido  
bastante  confusos).
Machine Translated by Google

Comandos  Linux 99

El  comando  diferencial

Llegan  momentos  en  nuestra  vida  informática  en  los  que  hemos  realizado  cambios  en  archivos  o  directorios  y  en  el  proceso  de  
mover  cosas  o  instalar  diferentes  componentes  perdemos  la  noción  de  los  cambios  que  hemos  realizado.  Esto  puede  ocurrir  en  
la  programación,  la  administración  del  sistema,  la  instalación  de  aplicaciones  o  la  gestión  de  usuarios,  pero  sea  cual  sea  la  
causa,  nos  vemos  en  la  necesidad  de  comparar  dos  cosas,  ya  sean  archivos  o  directorios,  para  intentar  ver  cuáles  son  las  
diferencias  entre  ellas.  Aquí  es  donde  entra  el  comando  diff .

Comparar  dos  objetos  complejos  desde  la  línea  de  comandos  puede  resultar  difícil.  Si  hay  diferencias  sustanciales,  entonces  
usar  una  interfaz  de  texto  sin  formato  para  obtener  un  buen  contexto  para  los  cambios  podría  ser  un  desafío.  Sin  embargo,  si  los  
cambios  que  se  buscan  son  pequeños  o  necesitamos  realizar  muchas  comparaciones,  entonces  poder  comparar  archivos  en  la  
línea  de  comandos  es  un  método  rápido  una  vez  que  nos  acostumbramos.

En  su  forma  más  pura,  diff  analiza  dos  archivos  e  imprime  las  líneas  que  son  diferentes.  Podemos  pensar  en  la  salida  a  la  pantalla  
como  una  dirección  sobre  cómo  hacer  los  cambios  para  que  una  cosa  sea  idéntica  a  la  otra.

En  el  caso  más  simple,  diff  compara  el  contenido  de  los  dos  archivos  from­file  y  to­file.

Si  tanto  el  archivo  de  origen  como  el  archivo  de  destino  son  directorios,  diff  compara  los  archivos  correspondientes  en  ambos  
directorios,  en  orden  alfabético.  Esta  comparación  no  es  recursiva  a  menos  que  se  dé  la  opción  ­r .

Como  ejemplo  de  una  comparación  de  archivos,  podemos  considerar  los  dos  archivos  'file_a.txt'  y  'file_b.txt'  como  se  muestra  a  
continuación;

file_a.txt   file_b.txt  
El  Raspberry  Pi  es  una  máquina  poderosa   La  Raspberry  Pi  es  una  máquina  maravillosa  
Leanpub  tiene  una  gran  variedad  de   Leanpub  tiene  una  gran  variedad  de  
libros  d3.js  es  increíble  para  la   libros  d3.js  es  increíble  para  la  
visualización  Linux  es  una  maravilla  de  colaboración visualización  Linux  es  una  maravilla  de  colaboración

Las  diferencias  entre  los  archivos  se  encuentran  en  la  primera  línea,  donde  describimos  la  Raspberry  Pi  como  una  máquina  
poderosa  o  maravillosa.

Luego  podemos  ejecutar  el  comando  diff  en  esos  dos  archivos  como  en  el  ejemplo  a  continuación;

diferencia  archivo_a.txt  archivo_b.txt

Esto  producirá  una  salida  de  la  siguiente  manera;

pi@raspberrypi  ~/dir1  $  diferencia  archivo_a.txt  archivo_b.txt
1c1
<  La  Raspberry  Pi  es  una  máquina  poderosa
­­­

>  La  Raspberry  Pi  es  una  máquina  maravillosa

La  primera  línea  de  la  salida  que  dice  1c1  nos  dice  que  la  línea  1  ('1c1')  del  archivo  from  necesita

www.dbooks.org
Machine Translated by Google

Comandos  Linux 100

cambiarse  para  que  coincida  con  la  línea  1  ('1c1')  del  archivo  to.  Si  cualquiera  de  los  archivos  tuviera  un  rango  de  líneas,  
se  designarían  como  algo  así  como  2,4 ,  lo  que  indicaría  que  las  líneas  afectadas  fueron  de  2  a  4.

La  salida  restante  son  las  diferentes  líneas.  Para  mostrar  qué  líneas  provienen  de  qué  archivo,  cada  una  tiene  como  
prefijo  un  símbolo  de  mayor  que  (<)  para  mostrar  que  la  línea  es  del  archivo  de  origen  o  un  signo  de  menor  que  (>)  para  
mostrar  que  la  línea  es  de  el  a­archivo.  Los  guiones  entre  líneas  (­­­)  simplemente  están  ahí  para  separar  las  líneas  de  
los  diferentes  archivos.

Opciones

Hay  muchas  opciones  diferentes  para  su  uso,  pero  las  más  utilizadas  son  las  siguientes;

•  ­q  Informe  solo  cuando  los  archivos  difieren,  no  las  diferencias  reales  (según  el  primer  ejemplo)  •  
­c  Formatea  la  salida  con  más  contexto  •  ­i  ignora  las  
diferencias  en  caso  de  que  •  ­r  compare  
recursivamente  los  subdirectorios.

Debido  a  que  el  proceso  de  comparar  las  diferencias  en  archivos  y  directorios  es  algo  difícil  de  hacer  de  una  manera  
simple  con  texto,  existe  una  opción  alternativa  para  proporcionar  un  grado  adicional  de  contexto.  Esta  es  la  opción  ­c .

Si  usamos  esta  opción  en  los  mismos  dos  archivos  que  probamos  anteriormente  (diff  ­c  archivo_a.txt  archivo_­  b.txt)  
veremos  algo  similar  a  esto;

pi@raspberrypi  ~/dir1  $  diferencia  ­c  archivo_a.txt  archivo_b.txt  ***  
archivo_a.txt  2015­09­18  21:10:27.608873625  +0000  ­­­  archivo_b.txt  
2015­09­18  21:29:26.269130682  +0000
***************
***  1,4  **** !  
Raspberry  Pi  es  una  máquina  poderosa  Leanpub  
tiene  una  gran  variedad  de  libros  d3.js  es  
increíble  para  la  visualización
Linux  es  una  maravilla  de  colaboración
\  Sin  nueva  línea  al  final  del  archivo
­­­  1,4  ­­­­ !  
Raspberry  Pi  es  una  máquina  maravillosa  Leanpub  
tiene  una  gran  variedad  de  libros  d3.js  es  
increíble  para  la  visualización
Linux  es  una  maravilla  de  colaboración
\  Sin  nueva  línea  al  final  del  archivo

Las  primeras  dos  líneas  de  salida  nos  brindan  algunos  detalles  de  fecha/hora  de  modificación  sobre  nuestro  archivo  de  
origen  (precedido  por  tres  asteriscos  (***))  y  nuestro  archivo  de  destino  (precedido  por  tres  guiones  (­­­).

Luego  hay  un  separador  compuesto  por  una  fila  de  asteriscos  antes  de  una  línea  con  los  números  1,4  entre  algunos  
asteriscos.  Esto  nos  dice  que  las  siguientes  líneas  son  una  lista  de  las  líneas  1  a  4  del  archivo  de  origen.  Asimismo,  la  
siguiente  sección  con  el  número  1,4  entre  guiones  nos  dice  que  las  siguientes  líneas  son  un  listado  de  las  líneas  1  a  4  
del  archivo  to.
Machine Translated by Google

Comandos  Linux 101

Pruébate

1.  Clasifique  la  facilidad  de  comprensión  de  la  salida  al  ejecutar  el  comando  diff  usando  el
método  predeterminado  sin  opciones,  la  opción  ­c  y  ­q.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 102

grep

El  comando  grep  se  usa  para  buscar  texto  de  archivos  o  entradas  canalizadas  para  líneas  que  contengan  
una  coincidencia  con  un  patrón  dado.  Es  uno  de  los  comandos  más  potentes  y  versátiles  de  Linux  y  el  
dominio  del  comando  grep  es  sinónimo  de  una  buena  comprensión  de  la  interfaz  de  línea  de  comandos.

•  grep  [opciones]  patrón  [archivo]:  buscar  texto  y  combinar  patrones

Por  ejemplo,  el  siguiente  comando  buscará  el  texto  “cpus”  en  el  archivo /var/log/dmesg;

grep  cpus /var/log/dmesg

El  resultado  del  comando  será  similar  al  siguiente;

pi@raspberrypi  ~  $  grep  cpus /var/log/dmesg  [ 0.000000]  
[bcm2709_smp_init_cpus]  ingrese  (8620­>f3003010)  [ 0.000000]  
[bcm2709_smp_init_cpus]  ncores=4  [ 0.053615]  
[bcm2709_smp_pre  pare_cpus]  entrar

Cabe  señalar  que  cada  una  de  las  líneas  anteriores  presenta  el  texto  "cpus".

El  comando  grep

El  comando  grep  se  usa  para  buscar  pruebas  en  archivos  o  entradas  canalizadas  para  líneas  que  contengan  una  
coincidencia  con  un  patrón  dado.  Cuando  encuentra  una  coincidencia,  copia  la  línea  en  la  que  se  encuentra  la  
coincidencia  en  la  salida  estándar  (de  forma  predeterminada),  o  cualquier  otro  tipo  de  salida  que  haya  solicitado  con  
opciones.  El  patrón  puede  ser  un  solo  carácter,  un  grupo  de  caracteres,  una  sola  palabra  o  una  oración.

El  nombre  grep  deriva  del  comando  utilizado  con  el  editor  de  texto  de  Unix/Linux  'ed'  para  realizar  una  
función  de  búsqueda  similar.  El  comando  toma  la  forma  g/re/p,  lo  que  significa  buscar  globalmente  
coincidencias  con  la  expresión  regular  (es  decir,  re)  e  imprimir  las  líneas  que  se  encuentran  en  la  pantalla.

Aunque  grep  anticipa  la  coincidencia  en  el  texto,  puede  coincidir  con  caracteres  arbitrarios  en  una  línea.  Su  
única  limitación  en  la  cantidad  de  información  que  puede  buscar  es  la  memoria  disponible.

Expresiones  regulares

La  parte  de  grep  es  un  indicador  del  uso  de  expresiones  regulares  para  hacer  coincidir  patrones  durante  la  
búsqueda.  Esto  significa  que,  además  de  poder  buscar  patrones  literales  (como  nuestro  texto  de  CPU  del  
ejemplo  inicial),  podemos  usar  un  esquema  que  permite  una  gran  flexibilidad  en  las  coincidencias  devueltas.

Por  ejemplo,  si  quisiéramos  buscar  ocurrencias  del  texto  'CPU'  donde  podría  haber  un  número  del  0  al  3  
después,  podríamos  usar  el  siguiente  comando
Machine Translated by Google

Comandos  Linux 103

grep  CPU[0­3] /var/log/dmesg

…  lo  que  resultará  en;

pi@raspberrypi  ~  $  grep  CPU[0­3] /var/log/dmesg  [0.053503]  
CPU0:  actualizar  cpu_capacity  1024  [0.053577]  CPU0:  
subproceso  ­1,  cpu  0,  socket  15,  mpidr  80000f00  [0.113791]  CPU1:  Booted  
secundario  procesador  [ 0.113851]  CPU1:  actualizar  
cpu_capacity  1024  [ 0.113860]  CPU1:  hilo  ­1,  cpu  1,  socket  
15,  mpidr  80000f01  [ 0.133710]  CPU2:  Procesador  secundario  arrancado  [ 0.133746]  
CPU2:  actualizar  cpu_capacity  1024  [ 0.133755]  CPU2 :  hilo  
­1 ,  cpu  2,  socket  15,  mpidr  80000f02  [ 0.153750]  CPU3:  
Procesador  secundario  arrancado  [ 0.153788]  CPU3:  actualizar  cpu_capacity  1024  
[ 0.153797]  CPU3:  subproceso  ­1,  cpu  3,  socket  15,  mpidr  
80000f03

Aquí ,  grep  ha  usado  los  caracteres  de  texto  'CPU'  como  'literales'  que  deberían  aparecer  exactamente  como  se  indica  y  los  corchetes  
denotan  una  expresión  regular  que  permitiría  cualquier  número  en  el  rango
0  a  3.

Tubería

Debido  a  que  el  comando  grep  puede  actuar  como  un  filtro,  se  emplea  comúnmente  como  un  mecanismo  para  aceptar  una  entrada  
de  un  comando  y  generar  una  salida  que  ha  sido  alterada  por  ese  filtro.  Esa  conexión  de  mando  se  realiza  mediante  tuberías  que  se  
designan  con  el  |  personaje.

Como  sugiere  el  nombre,  podemos  pensar  en  la  función  de  tubería  como  una  representación  de  comandos  vinculados  por  una  tubería  
donde  el  comando  ejecuta  una  función  que  se  genera  en  una  tubería  para  fluir  hacia  el  segundo  comando  y  hacia  la  salida  final  
eventual.

Para  demostrar  con  un  ejemplo,  podemos  considerar  un  conjunto  de  comandos  vinculados  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 104

Ejemplo  de  tubería

Aquí  tenemos  el  comando  ls  que  enumera  los  contenidos  del  directorio /var/log  con  los  listados  ordenados  por  
tiempo.  Esto  luego  se  alimenta  al  comando  principal  que  solo  mostrará  las  primeras  10  de  esas  líneas.  Luego  
ingresamos  esas  10  líneas  en  un  comando  grep  que  filtra  el  resultado  para  mostrar  solo  aquellas  líneas  que  tienen  
la  palabra  'raíz'  en  ellas.

El  comando  como  se  ejecutaría  desde  la  línea  de  comando  sería  el  siguiente;

ls  ­lt /var/registro  |  cabeza  |  raíz  de  grep

…  y  el  resultado  sería  algo  como  lo  siguiente;

pi@raspberrypi  ~  $ls  ­lt /var/log  |  cabeza  |  grep  root  ­rw­r­­­­­  1  root  adm  
133637  13  de  septiembre  04:01  auth.log  ­rw­r­­­­­  1  root  adm  16794  13  
de  septiembre  04:01  syslog  ­rw­rw­r­­  1  raíz  utmp  292292  12  de  
septiembre  18:58  lastlog  ­rw­rw­r­­  1  raíz  utmp  2688  12  de  septiembre  
18:58  wtmp
­rw­r­­­­­  1  administrador  raíz 1050  12  de  septiembre  06:25  
mensajes  ­rw­r­­­­­  1  root  adm  18986  12  de  septiembre  06:25  syslog.1  
­rw­r­­­­­  1  administrador  raíz 1357  11  de  septiembre  06:25  syslog.2.gz

Opciones

Hay  una  gran  cantidad  de  opciones  disponibles  para  usar  con  el  comando  grep .  Para  obtener  una  lista  completa,  
escriba  man  grep  en  la  línea  de  comando.  Algunos  de  los  más  utilizados  son;

•  ­c  Imprime  un  recuento  de  líneas  coincidentes  para  cada  archivo  
de  entrada  •  ­E  Interpreta  el  patrón  como  una  expresión  regular  extendida  
•  ­n  Prefija  cada  línea  de  salida  con  el  número  de  línea  dentro  de  su  archivo  de  entrada
Machine Translated by Google

Comandos  Linux 105

•  ­i  Hace  que  la  búsqueda  no  distinga  entre  mayúsculas  y  minúsculas  (por  lo  que  las  letras  pueden  ser  mayúsculas  

o  minúsculas)  •  ­o  Muestra  solo  la  parte  de  una  línea  coincidente  que  coincide  con  el  patrón

Si  quisiéramos  averiguar  cuántas  líneas  en  la  entrada  que  estamos  probando  tienen  instancias  del  patrón  que  
estamos  tratando  de  hacer  coincidir,  podemos  usar  la  opción  ­c .

Por  ejemplo,  si  quisiéramos  averiguar  cuántas  veces  aparece  el  texto  'CPU2'  en  el  archivo /var/lod/dmesg,  
ejecutaríamos  el  siguiente  comando;

grep  ­c  CPU2 /var/log/dmesg

…  y  el  resultado  sería  algo  como  lo  siguiente;

pi@raspberrypi  ~  $  grep  ­c  CPU2 /var/log/dmesg  3

Por  lo  tanto,  podemos  estar  seguros  de  que  el  número  de  líneas  donde  aparece  'CPU2'  es  3.

El  shell  bash  donde  podríamos  estar  ejecutando  nuestro  comando  grep  considera  los  siguientes  caracteres  como  
'especiales'; ?,  +,  {,  |,  ( y ).  Como  tal,  cuando  se  usan  en  una  expresión  regular,  deben  tratarse  de  manera  
ligeramente  diferente  para  permitir  que  se  procesen  correctamente.  Hay  dos  maneras  de  lograr  esto.  Ya  sea  para  
ejecutar  el  comando  grep  como  egrep  o  usar  la  opción  ­E ,  las  cuales  permiten  el  uso  de  expresiones  regulares  
extendidas.

Si  intentamos  ejecutar  un  comando  grep  sin  la  opción  ­E,  obtendremos  un  error  que  básicamente  nos  dice  que  el  
comando  no  reconoce  parte  de  nuestro  comando.  Por  ejemplo  el  siguiente  comando

grep  (CPU1)|(CPU2) /var/log/dmesg

…  dará  como  resultado  un  error  similar  al  siguiente;

pi@raspberrypi  ~  $  grep  (CPU1)|(CPU2) /var/log/dmesg  ­bash:  error  
de  sintaxis  cerca  del  token  inesperado  ̀('

Pero  si  usamos  la  opción  ­E  y  luego  ponemos  nuestro  patrón  de  búsqueda  entre  comillas  (ya  sean  marcas  de  voz  
o  comillas  simples)  aprovecharemos  los  caracteres  especiales  y  ejecutaremos  el  comando  correctamente.  Por  
ejemplo,  el  siguiente  comando  busca  instancias  de  CPU1  o  CPU2  en  el  archivo  '/var/log/dmesg';

www.dbooks.org
Machine Translated by Google

Comandos  Linux 106

grep  ­E  "(CPU1)|(CPU2)" /var/log/dmesg

La  salida  se  verá  un  poco  como  la  siguiente;

pi@raspberrypi  ~  $  grep  ­E  "(CPU1)|(CPU2)" /var/log/dmesg  [ 0.113791]  
CPU1:  Procesador  secundario  arrancado  [ 0.113851]  CPU1:  
actualizar  cpu_capacity  1024  [ 0.113860]  CPU1:  subproceso  
­1,  cpu  1 ,  socket  15,  mpidr  80000f01  [ 0.133710]  CPU2:  Procesador  secundario  
arrancado  [ 0.133746]  CPU2:  actualizar  cpu_capacity  1024  
[ 0.133755]  CPU2:  subproceso  ­1,  cpu  2,  socket  15,  mpidr  
80000f02

Como  alternativa,  podríamos  'escapar'  de  los  caracteres  especiales  colocando  un  carácter  de  'barra  negra'  delante  
de  ellos  de  esta  manera;

grep  ­E  \(CPU1\)\|\(CPU2\) /var/log/dmesg

O,  alternativamente,  podríamos  usar  el  comando  'egrep  para  cualquiera  de  las  opciones;

egrep  \(CPU1\)\|\(CPU2\) /var/log/dmesg

…  o  …

egrep  "(CPU1)|(CPU2)" /var/log/dmesg

Si  queremos  saber  de  qué  línea  numérica  proviene  la  salida  devuelta,  podemos  usar  la  opción  ­n .
El  siguiente  comando  enumerará  el  número  de  la  línea  del  archivo /var/log/dmesg  que  coincide  con  el  patrón  CPU2;

grep  ­n  CPU2 /var/log/dmesg

Como  resultado,  la  salida  debería  ser  similar  a  la  siguiente;
Machine Translated by Google

Comandos  Linux 107

pi@raspberrypi  ~  $  grep  ­n  CPU2 /var/log/dmesg  65:[ 67:[ 68:[
0.133710]  CPU2:  Procesador  secundario  arrancado  0.133746]  
CPU2:  actualizar  cpu_capacity  1024  0.133755]  CPU2:  
subproceso  ­1,  cpu  2,  socket  15,  mpidr  80000f02

La  última  opción  que  consideraremos  devolverá  las  partes  de  la  línea  coincidente  que  coincida  con  el  
patrón  proporcionado.  Entonces,  por  ejemplo,  si  buscamos  el  rango  de  números  de  CPU  con  el  patrón  
CPU[0­4]  en  el  archivo /var/log/dmesg  usando  el  siguiente  comando;

grep  ­o  CPU[0­4] /var/log/dmesg

…  obtendremos  una  lista  de  coincidencias  similar  a  la  siguiente;

pi@raspberrypi  ~  $  grep  ­o  CPU[0­4] /var/log/dmesg
CPU0
CPU0
CPU1
CPU1
CPU1
CPU2
CPU2
CPU2
CPU3
CPU3
CPU3

Pruébate

1.  Elabore  un  comando  grep  que  devuelva  las  coincidencias  y  los  números  de  línea  para  todas  las  instancias  de  'usb'
en /var/log/dmesg  2.  
Elabore  un  comando  grep  que  devolverá  todos  los  números  de  'idVendor'.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 108

cabeza

El  comando  head  está  diseñado  para  imprimir  la  primera  parte  de  un  archivo  en  la  pantalla.  Por  defecto  imprimirá  las  
primeras  10  líneas.  Es  un  programa  muy  útil  para  verificar  rápidamente  el  inicio  de  un  archivo.

•  head  [opciones]  nombre(s)  de  archivo:  muestra  la  primera  parte  de  un  archivo  específico.

Por  ejemplo,  si  queremos  enumerar  las  primeras  10  líneas  del  archivo /var/log/dmesg,  podemos  hacerlo  de  la  siguiente  
manera;

cabeza /var/log/dmesg

Esto  dará  como  resultado  una  salida  similar  a  la  siguiente;

pi@raspberrypi  ~  $  head /var/log/dmesg  
[ 0.000000]  Arrancando  Linux  en  CPU  física  0xf00  [ 0.000000]  
Inicializando  cgroup  subsys  cpu  [ 0.000000]  Inicializando  
cgroup  subsys  cpuacct  [ 0.000000]  Linux  versión  3.18.7­v7+  
(dc4@dc4­  XPS13­9333)  (gcc  versión  4.8  [ 0.000000]  CPU:  Procesador  ARMv7  [410fc075]  revisión  
5  (ARMv7),  cr=10c5387d  [ 0.000000]  CPU:  PIPT /  VIPT  caché  de  datos  sin  aliasing,  VIPT  aliasing  
[ 0.000000]  Modelo  de  máquina:  Raspberry  Pi  2  Modelo  B  [ 0.000000]  cma:  Reservado  8  
MiB  en  0x3a800000  [ 0.000000]  Política  de  memoria:  Data  cache  
writealloc  [ 0.000000]  En  el  nodo  0  totalpages:  241664

El  mando  de  la  cabeza

El  comando  head  está  diseñado  para  llevar  a  cabo  la  simple  tarea  de  leer  las  primeras  líneas  de  un  archivo  y  
presentarlas  a  una  salida  (por  defecto,  la  pantalla).  El  número  predeterminado  de  líneas  que  imprimirá  el  comando  es  
10,  pero  eso  se  puede  cambiar  usando  la  opción  de  guión  (­) .

Se  complementa  con  el  comando  tail  que  imprimirá  las  últimas  líneas  de  un  archivo.

Opciones

Hay  un  pequeño  número  de  opciones  disponibles  para  la  cabeza.  Hay  dos  que  se  usan  más  comúnmente  que  otros;

•  ­c[num]  imprime  el  primer  número  de  bytes  del  archivo  (donde  8  bytes  es  un  carácter)  •  ­n[num]  imprime  el  
primer  número  de  líneas  del  archivo

A  primera  vista,  la  opción  ­c  puede  parecer  un  poco  inusual,  pero  lo  que  hace  es  proporcionar  un  método  muy  exacto  
para  imprimir  un  número  específico  de  letras  de  un  archivo.  Por  ejemplo,  si  quisiéramos  imprimir  los  primeros  50  
caracteres  del  archivo /var/log/dmesg,  usaríamos  lo  siguiente;
Machine Translated by Google

Comandos  Linux 109

cabeza  ­c50 /var/log/dmesg

La  salida  posterior  se  vería  de  la  siguiente  manera;

pi@raspberrypi  ~  $  head  ­c41 /var/log/dmesg  [ 0.000000]  
Arrancando  Linux  en  físico  pi@raspberrypi  ~  $

Podemos  ver  que  el  mensaje  de  la  consola  en  realidad  se  ha  colocado  en  los  extremos  del  texto  impreso  y  
que  el  texto  devuelto  tiene  41  caracteres.

Con  la  opción  ­n ,  hay  un  atajo  con  encabezado  donde  podemos  omitir  la  n  y  automáticamente  asumirá  que  
si  ponemos  un  guión  y  un  número  queremos  que  se  devuelva  ese  número  de  líneas.
Por  lo  tanto,  un  comando  como  el  siguiente  imprimirá  las  primeras  5  líneas  del  archivo /var/log/dmesg ;

cabeza  ­5 /var/log/dmesg

Con  un  resultado  que  queda  de  la  siguiente  manera;

pi@raspberrypi  ~  $  head  ­5 /var/log/dmesg  [ 0.000000]  
Arrancando  Linux  en  CPU  física  0xf00  [ 0.000000]  Inicializando  
cgroup  subsys  cpu  [ 0.000000]  Inicializando  cgroup  subsys  
cpuacct  [ 0.000000]  Linux  versión  3.18.7­v7+  (dc4@  dc4­
XPS13­9333)  (gcc  versión  4.8  [ 0.000000]  CPU:  Procesador  ARMv7  [410fc075]  revisión  5  (ARMv7),  
cr=10c5387d  pi@raspberrypi  ~  $

Para  las  opciones  ­c  o  ­n ,  podemos  especificar  un  multiplicador  adyacente  al  número  num  que  aumentará  
el  número  de  caracteres  o  líneas  devueltos.  Por  ejemplo ,  b  =  512,  kB  =  1000,  K  =  1024,  MB  =  1000x1000,  
M  =  1024x1024,  GB  =  1000x1000x1000,  G  =  1024x1024x1024,  etc.  para  T,  P,  E,  Z  e  Y.

Por  lo  tanto,  el  siguiente  ejemplo  imprimirá  los  primeros  5000  caracteres  del  archivo /var/log/dmesg .

cabeza  ­c5kB /var/log/dmesg

www.dbooks.org
Machine Translated by Google

Comandos  Linux 110

Argumentos

Si  queremos  mostrar  el  inicio  de  más  de  un  archivo,  simplemente  podemos  enumerar  sus  nombres  de  
archivo  uno  tras  otro.  Por  ejemplo,  para  listar  las  primeras  5  líneas  de  los  archivos  dmesg  y  syslog  (ambos  
están  en /var/log)  podemos  usar  el  siguiente  comando;

cabeza  ­5  dmesg  syslog

Los  resultados  se  verán  un  poco  como  los  siguientes;

pi@raspberrypi /var/log  $  cabeza  ­5  dmesg  syslog  ==>  dmesg  
<==  [ [ [ [ [
0.000000]  Arrancando  Linux  en  CPU  física  0xf00  0.000000]  
Inicializando  cgroup  subsys  cpu  0.000000]  Inicializando  
cgroup  subsys  cpuacct  0.000000]  Linux  versión  3.18.7­v7+  
(dc4@dc4­XPS13­9333)  (gcc  versión  4.8  0.000000]  CPU:  Procesador  ARMv7  [410fc075 ]  revisión  
5  (ARMv7),  cr=10c5387d

==>  registro  del  sistema  <==

28  de  agosto  06:25:03  raspberrypi  rsyslogd:  [software  de  origen="rsyslogd"]
28  de  agosto  06:39:01  raspberrypi /USR/SBIN/CRON[1490]:  (raíz)  CMD
28  de  agosto  07:00:01  raspberrypi /USR/SBIN/CRON[1505]:  (pi)  CMD  (/usr/bin/php)
28  de  agosto  07:00:41  raspberrypi /USR/SBIN/CRON[1504]:  (CRON)  información
28  de  agosto  07:09:01  raspberrypi /USR/SBIN/CRON[1516]:  (raíz)  CMD  (/maxlifetime)  pi@raspberrypi /
var/log  $

¡Podemos  ver  que  al  comienzo  de  cada  archivo  se  imprime  el  nombre  del  archivo  y  de  hecho  hay  5  líneas  
de  texto  cada  uno!

Pruébate

1.  ¿Cuál  es  la  diferencia  entre  los  siguientes  comandos  head  ­5  foo.txt,  head  ­n5
foo.txt  y  cabeza  ­  5  foo.txt?
Machine Translated by Google

Comandos  Linux 111

menos

El  comando  less  se  usa  para  mostrar  archivos  de  texto  en  la  pantalla  una  página  a  la  vez.  Este  es  un  comando  
útil  que  hasta  cierto  punto  ha  reemplazado  al  comando  more  en  el  sentido  de  que  proporciona  una  
funcionalidad  similar  pero  ampliada  (¿entendido?  menos  es  más).

•  Menos  [opciones]  nombre  de  archivo:  Mostrar  archivos  de  texto

Por  ejemplo,  para  mostrar  la  primera  página  en  el  archivo  de  texto  var/log/dmesg  que  contiene  el  texto  'cpu_­
capacity'  podríamos  usar  el  siguiente  comando;

menos  +/"capacidad_cpu" /var/log/dmesg

Esto  produciría  una  salida  similar  a  la  siguiente;

0.053503]  CPU0:  actualice  cpu_capacity  1024  
0.053577]  CPU0:  subproceso  ­1,  cpu  0,  socket  15,  mpidr  80000f00  0.053615]  
[bcm2709_smp_prepare_cpus]  ingrese  0.053779]  
Configuración  del  mapa  de  identidad  estático  para  0x536c78  ­  0x5  36cd0  0.113483]  
[bcm2709_boot_secondary]  cpu:1  iniciado  ( 0)  17  0.113791]  CPU1:  
Procesador  secundario  arrancado  0.113799]  
[bcm2709_secondary_init]  ingrese  cpu:1  0.113851]  CPU1:  
actualice  cpu_capacity  1024  0.113860]  CPU1:  
subproceso  ­1,  cpu  1,  socket  15,  mpidr  80000f01  0.1334  51]  
[bcm2709_boot_secundario]  CPU:2  iniciado  (0)  18  0.133710]  CPU2:  
Procesador  secundario  arrancado  0.133716]  
[bcm2709_secondary_init]  ingrese  cpu:2  0.133746]  CPU2:  
actualice  cpu_capacity  1024  0.133755]  CPU2:  
subproceso  ­1,  cpu  2,  socket  15,  mpidr  80000f02  0.153  508]  
[bcm2709_boot_secundario]  CPU  :3  iniciado  (0)  17  0.153750]  CPU3:  
Procesador  secundario  arrancado  0.153757]  
[bcm2709_secondary_init]  ingrese  cpu:3  0.153788]  CPU3:  
actualice  cpu_capacity  1024  0.153797]  CPU3:  
subproceso  ­1,  cpu  3,  socket  15,  mpidr  80000f03  0.  153891]  criado  4  CPU  
0.154012]  SMP:  Total  de  4  
procesadores  activados  (153.60  BogoMIPS).
0.154045]  CPU:  todas  las  CPU  se  iniciaron  en  modo  SVC.  
0.155051]  devtmpfs:  inicializado
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ /var/log/dmesg

Si  bien  el  comando  anterior  es  idéntico  al  comando  inicial  invocado  en  el  ejemplo  más ,  la  salida  difiere  en  
que  el  texto  buscado  se  resalta  en  el  texto  de  salida  (aunque  esto  no  se  muestra  en  la  página  impresa  anterior).

www.dbooks.org
Machine Translated by Google

Comandos  Linux 112

La  otra  gran  diferencia  está  en  la  interacción  de  la  página  mientras  se  muestra.  Donde  más  es  un  'localizador'  en  el  sentido  de  que  
está  diseñado  desde  el  principio  para  trabajar  con  un  archivo  una  página  a  la  vez,  si  usamos  las  teclas  de  flecha  hacia  arriba  y  
hacia  abajo  nos  encontraremos  capaces  de  desplazarnos  hacia  arriba  y  hacia  abajo  en  el  archivo  en  la  pantalla.  De  hecho,  si  
algunas  de  nuestras  líneas  son  lo  suficientemente  largas,  podemos  presionar  las  teclas  de  flecha  hacia  la  derecha  o  hacia  la  
izquierda  para  movernos  hacia  la  izquierda  y  hacia  la  derecha  en  el  contenido  del  archivo.

Cuanto  menos  mando

Podría  decirse  que  el  comando  less  es  mejor  conocido  por  el  hecho  de  que  es  un  método  mejorado  para  ver  un  
archivo  en  comparación  con  el  comando  more .  La  mejora  más  notable  es  la  capacidad  de  desplazarse  hacia  
adelante  y  hacia  atrás  por  el  archivo,  aunque  hay  una  gran  variedad  de  características  adicionales  además  de  las  
que  se  encuentran  en  más.  A  pesar  de  lo  que  podría  parecer  razones  obvias  para  usar  el  comando  más  moderno  y  
con  más  funciones,  todavía  hay  distribuciones  de  Linux  que  incluirán  una  sobre  la  otra  (en  lugar  de  ambas)  como  el  
tamaño  más  pequeño  de  más  sobre  menos  (aproximadamente  2000  líneas  de  código  comparado  con  27.000  líneas  
respectivamente)  hace  más  atractivo  para  sistemas  integrados  más  ligeros  o  similares.

El  comando  less  se  usa  para  mostrar  archivos  de  texto  de  una  página  a  la  vez  y,  como  tal,  puede  considerarse  un  
miembro  de  la  familia  de  'buscapersonas'.  Es  un  programa  diseñado  para  emular  y  mejorar  en  más  y,  como  tal,  si  
conoce  los  conceptos  básicos  de  más ,  conocerá  los  conceptos  básicos  de  menos.  El  nombre  es  un  guiño  a  la  frase  
"menos  es  más".

La  función  principal  que  proporciona  less  es  mostrar  tanto  texto  como  quepa  en  una  pantalla  a  la  vez  y,  posteriormente,  
avanzar  y  retroceder  en  el  archivo.  El  archivo  también  puede  desplazarse  una  línea  a  la  vez  usando  las  teclas  de  
flecha  hacia  arriba  y  hacia  abajo.

Comandos

less  incluye  una  gran  cantidad  de  comandos  que  nos  permitirán  controlar  la  navegación  a  través  de  un  archivo  de  
texto.  Para  los  siguientes  comandos,  donde  vemos  [k],  k  representa  un  número  (opcional)  que  escribimos  como  
argumento  antes  del  comando  (el  siguiente  es  un  subconjunto  que  muestra  solo  los  comandos  de  uso  común,  hay  
MUCHOS  más ).

•  h  o  H :  Ayuda.  Muestre  un  resumen  de  estos  comandos.  Si  olvida  todos  los  demás  comandos,
recuerda  este

•  [k]  <espacio>  o  f :  muestra  las  siguientes  k  líneas  de  texto  [predeterminado  =  tamaño  de  pantalla  actual]  •  
[k]  b :  muestra  las  k  líneas  de  texto  anteriores  [predeterminado  =  tamaño  de  pantalla  actual]  •  [k]  z :  
Mostrar  las  siguientes  k  líneas  de  texto  [predeterminado  =  tamaño  de  pantalla  actual  =  k]  •  
flecha  hacia  abajo:  Desplazarse  hacia  abajo  en  el  archivo  una  línea  a  la  vez

•  flecha  arriba :  Desplazarse  hacia  arriba  en  el  archivo  una  
línea  a  la  vez  •  [k]  <return> :  Mostrar  las  siguientes  k  líneas  de  texto  
[predeterminado  =  1]  •  q  o  Q :  
Salir  de  más  •  F :  Desplazarse  hacia  adelante  hasta  el  final  del  file  (equivalente  
a  tail  ­f)  •  [k]  b  o  <ctrl>B :  salta  hacia  atrás  k  pantallas  completas  de  texto  
[predeterminado  =  1]  •  = :  muestra  el  archivo  actual,  las  líneas  mostradas,  la  posición  del  byte  y  el  
porcentaje  mostrados  •  [k] /  <patrón>:  busca  hacia  adelante  la  k­ésima  aparición  del  patrón  
[predeterminado  =  1]  •  [k] ?<patrón>:  busca  hacia  atrás  la  k­ésima  aparición  del  patrón  [predeterminado  =  1]
Machine Translated by Google

Comandos  Linux 113

•  [k]  n :  busca  hacia  adelante  la  k­ésima  aparición  del  último  patrón  [predeterminado  
=  1]  •  [k]  N :  busca  hacia  atrás  la  k­ésima  aparición  del  último  patrón  [predeterminado  
=  1]  •  &<patrón>:  busca  y  muestra  solo  las  líneas  coincidentes  del  patrón  •  
[k]  g  o  < :  Ir  a  la  primera  línea  del  archivo  (o  línea  k)  
•  [k]  G  o  > :  Ir  a  la  última  línea  del  archivo  (o  línea  
k)  •  [k]  p  o  % :  Ir  a  comienzo  del  archivo  (o  k  por  ciento  en  el  archivo)

Por  ejemplo,  ejecutar  el  siguiente  comando  comenzará  a  buscar  en  el  archivo /var/log/dmesg

menos /var/log/dmesg

Mientras  se  muestra  el  archivo  a  mitad  de  camino,  presionar  el  carácter  =  mostrará  una  variedad  de  información  
sobre  el  archivo  similar  a  la  siguiente;

[ 0.000000]  Zona  normal:  780799  páginas,  lote  LIFO:  31  [ 0.000000]  ACPI:  PM­
Timer  IO  Port:  0x408  [ 0.000000]  ACPI:  Dirección  APIC  local  
0xfee00000  [ 0.000000]  ACPI:  LAPIC  (acpi_id[0x01]  lapic_id[0x00]  
habilitado )  [ 0.000000]  ACPI:  LAPIC  (acpi_id[0x02]  lapic_id[0x01]  habilitado)  [ 0.000000]  
ACPI:  LAPIC  (acpi_id[0x03]  lapic_id[0x02]  habilitado)  [ 0.000000]  ACPI:  LAPIC  (acpi_id[0x04]  
lapic_id[0x03]  habilitado) /var/log/dmesg  líneas  117­139/938  byte  9130/64465  14%  (presione  
RETURN)

Aquí  podemos  ver  el  nombre  del  archivo /var/log/dmesg,  las  líneas  que  se  muestran  117­139,  el  número  total  
de  líneas  938,  la  posición  del  byte  en  el  archivo  en  relación  con  el  número  total  de  bytes  9130/64465  y  el  
porcentaje  a  través  del  archivo  14%.

Mientras  se  muestra  el  archivo  a  mitad  de  camino,  presionar  el  carácter  &  seguido  de  un  patrón  en  el  que  
queremos  buscar  mostrará  solo  líneas  con  el  patrón  coincidente.  Entonces,  si  presionamos  &cpu,  se  desplegará  
algo  similar  a  lo  siguiente;

0.053615]  [bcm2709_smp_prepare_cpus]  ingrese  0.113483]  
[bcm2709_boot_secondary]  cpu:1  iniciado  (0)  17  0.113799]  
[bcm2709_secondary_init]  ingrese  cpu:1  0.113851]  CPU1:  
actualice  cpu_capacity  1024  0.1138  60]  CPU1:  subproceso  
­1,  CPU  1,  zócalo  15,  mpidr  80000f01  0.133451]  [bcm2709_boot_secondary]  cpu:2  
iniciado  (0)  18  0.133716]  [bcm2709_secondary_init]  ingrese  cpu:2  0.133746]  
CPU2:  actualice  cpu_capacity  1024  0.133755]  CPU2:  subproceso  
­1,  cpu  2,  socket  15 ,  mpidr  80000f02  0.153508]  
[bcm2709_boot_secundario ]  cpu:3  iniciado  (0)  17  0.153757]  [bcm2709_secondary_init]  
ingrese  cpu:3
[ [ [ [ [ [ [ [ [ [ [

www.dbooks.org
Machine Translated by Google

Comandos  Linux 114

0.153788]  CPU3:  actualice  cpu_capacity  1024  0.153797]  
[ [ CPU3:  subproceso  ­1,  cpu  3,  zócalo  15,  mpidr  80000f03
& :

En  el  ejemplo  en  vivo,  se  resalta  cada  instancia  de  la  CPU  patrón.

Opciones

Hay  varias  opciones  disponibles  para  usar  con  el  comando  less .  Algunos  de  los  más  utilizados  son;

•  ­I  ignorará  mayúsculas  y  minúsculas  en  búsquedas  que  no  contengan  
mayúsculas.  •  ­Ignoraré  mayúsculas  y  
minúsculas  en  todas  las  búsquedas.  •  ­s  comprimirá  varias  
líneas  en  blanco  en  una  sola  •  ­p  cadena  especifica  una  cadena  que  se  buscará  en  
el  archivo.  •  +num  comenzará  a  mostrar  el  archivo  en  el  número  de  línea  
num  •  ­N  mostrará  los  números  de  línea  al  lado  de  las  líneas

Por  ejemplo,  podemos  decirle  al  comando  que  busque  el  texto  'cpu'  al  ejecutar  el  comando  less  de  la  siguiente  manera;

menos  ­p  cpu /var/log/dmesg

La  salida  presentará  la  primera  instancia  de  la  cadena  'cpu'  y  la  resaltará  junto  con  cualquier  otra  instancia  en  la  pantalla  de  
la  siguiente  manera;

0.000000]  Zona  normal:  241664  páginas,  lote  LIFO:  31  0.000000]  
[bcm2709_smp_init_cpus]  ingrese  (8620­>f3003010)  0.000000]  
[bcm2709_smp_init_cpus]  ncores=4  0.000000]  PERCPU:  
integrado  11  páginas/cpu  @ba05d000  s12864  r8192  d24000  0.000000]  pcpu­  asignación:  
s12864  r8192  d24000  u45056  asignación=11*4096  0.000000]  asignación  pcpu:  [0]  0  
[0]  1  [0]  2  [0]  3
[ [ [ [ [ [ /var/log/dmesg

Para  tener  una  idea  más  clara  de  los  números  de  línea  en  un  archivo  mostrado,  podemos  usar  el  comando  menos  con  la  
opción  ­N  de  la  siguiente  manera;

menos  ­N /var/log/dmesg

La  salida  mostrará  un  archivo  similar  al  siguiente;
Machine Translated by Google

Comandos  Linux 115

12   0.000000]  Zona  normal:  1888  páginas  utilizadas  para  memmap  
[ 13   0.000000]  Zona  normal:  0  páginas  reservadas  
[ 14   0.000000]  Zona  normal:  241664  páginas,  lote  LIFO:  31  0.000000]  
[ 15   [bcm2709_smp_init_cpus]  ingrese  (8620­>f3003010)  0.000000 ]  
[ 16   [bcm2709_smp_init_cpus]  ncores=4  0.000000]  
[ 17   PERCPU:  11  páginas/cpu  integradas  @ba05d000  s12864
[ /var/log/dmesg

Pruébate

1.  Mostrar  una  página  al  azar.  Presione  h  para  mostrar  la  pantalla  de  ayuda  y  cuente  la  cantidad  de  
comandos  y  opciones  disponibles  con  menos.  Vea  si  puede  adivinar  cuántos  hay  para  cada  
primero.
2.  ¿Qué  tres  formas  podrían  usarse  para  buscar  y  mostrar  una  cadena  de  texto  en  particular?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 116

más

El  comando  more  se  usa  para  mostrar  archivos  de  texto  en  la  pantalla  una  página  a  la  vez.  Este  es  un  comando  útil  que  hasta  cierto  
punto  ha  sido  reemplazado  por  el  comando  less  que  proporciona  una  funcionalidad  similar  pero  ampliada.

•  más  [opciones]  nombre  de  archivo:  Mostrar  archivos  de  texto

Por  ejemplo,  para  mostrar  la  primera  página  en  el  archivo  de  texto  var/log/dmesg  que  contiene  el  texto  'cpu_­capacity'  podríamos  
usar  el  siguiente  comando;

más  +/"capacidad_cpu" /var/log/dmesg

Esto  produciría  una  salida  similar  a  la  siguiente;

0.004116]  CPU:  Probando  la  coherencia  del  búfer  de  escritura:  ok  
0.004231]  ftrace:  asignación  de  19969  entradas  en  59  páginas  0.053503]  
CPU0:  actualizar  cpu_capacity  1024  0.053577]  CPU0:  
subproceso  ­1,  cpu  0,  socket  15,  mpidr  80000f00  0.05361  5]  
[bcm2709_smp_prepare_cpus]  ingrese  0.053779 ]  
Configuración  del  mapa  de  identidad  estático  para  0x536c78  ­  0x536cd0  0.113483]  
[bcm2709_boot_secondary]  cpu:1  iniciado  (0)  17  0.113791]  CPU1:  Procesador  
secundario  arrancado  0.113799]  [bcm2709_secondary_init]  
ingrese  cpu:1  0.113851]  CPU1:  actualización  c  capacidad_pu  
1024  0.113860]  CPU1:  hilo  ­1,  cpu  1,  socket  15,  mpidr  
80000f01  0.133451]  [bcm2709_boot_secondary]  cpu:2  iniciado  (0)  18  0.133710]  
CPU2:  Procesador  secundario  arrancado  0.133716]  [bcm2709_secondary_init]  
ingrese  cpu:2  0.133746]  CPU2:  actualizar  cpu  _capacidad  
1024  0.133755]  CPU2:  hilo  ­1,  cpu  2,  socket  15,  mpidr  80000f02  
0.153508]  [bcm2709_boot_secondary]  cpu:3  iniciado  (0)  
17  0.153750]  CPU3:  Procesador  secundario  iniciado  0.153757]  
[bcm2709_secondary_init]  ingrese  cpu:3  0.153788]  CPU3:  actualizar  
cpu_capacity  1024  0.153797]  CPU3:  subproceso  ­1,  cpu  3,  
socket  15,  mpidr  80000f03  0.153891]  Trajo  4  CPU  0.154012]  
SMP:  Total  de  4  procesadores  activados  (153.60  
BogoMIPS).

[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [

­­Más­­(35%)

Tenga  en  cuenta  que  el  porcentaje  que  se  muestra  en  la  parte  inferior  de  la  pantalla  es  una  indicación  de  qué  tan  avanzado  está  el  
contenido  del  archivo  que  se  muestra.
Machine Translated by Google

Comandos  Linux 117

Cuanto  más  comando

El  comando  more  se  usa  para  mostrar  archivos  de  texto  de  una  página  a  la  vez  y,  como  tal,  puede  considerarse  un  
miembro  de  la  familia  de  'buscapersonas'.  Es  un  programa  bastante  maduro  y,  como  tal,  ha  habido  mejoras  que  se  han  
identificado  como  deseables  y  posteriormente  incluidas  en  el  programa  less  (en  un  inteligente  guiño  a  la  frase  "menos  es  
más").  más  solo  se  moverá  hacia  adelante  a  través  de  un  archivo  (menos  también  se  moverá  hacia  atrás).

La  función  principal  que  proporciona  more  es  mostrar  todo  el  texto  que  quepa  en  una  pantalla  a  la  vez  y  luego  pasar  a  la  
siguiente  página  cuando  se  presiona  la  barra  espaciadora  o  avanzar  una  línea  a  la  vez  cuando  se  presiona  la  tecla  de  
retorno.

Comandos

more  incluye  una  serie  de  comandos  que  nos  permitirán  controlar  la  navegación  a  través  de  un  archivo  de  texto.
Esto  significa  que  mientras  estamos  mostrando  nuestro  archivo,  podemos  controlar  cómo  se  desplaza  (cuántas  líneas  a  
la  vez,  por  ejemplo)  o  qué  texto  buscar.  Para  los  siguientes  comandos,  donde  vemos  [k],  k  representa  un  número  
(opcional)  que  escribimos  como  argumento  antes  del  comando  (el  siguiente  es  un  subconjunto  que  muestra  solo  los  
comandos  de  uso  común).

•  h  o ? :  Ayuda.  Muestre  un  resumen  de  estos  comandos.  Si  olvida  todos  los  demás  comandos,
recuerda  este

•  [k]  <espacio>:  muestra  las  siguientes  k  líneas  de  texto  [predeterminado  =  tamaño  de  pantalla  
actual]  •  [k]  z :  muestra  las  siguientes  k  líneas  de  texto  [predeterminado  =  tamaño  
de  pantalla  actual]  •  [k]  <retorno>:  muestra  siguientes  k  líneas  de  texto  
[predeterminado  =  1]  •  [k]  d  o  <ctrl>D :  Desplazar  k  líneas  [tamaño  de  
desplazamiento  actual,  
inicialmente  11]  •  q  o  Q :  Salir  de  más  •  [k]  s :  Saltar  k  líneas  
hacia  adelante  de  texto  [predeterminado  =  1]  •  [k]  f :  Saltar  hacia  
adelante  k  pantallas  completas  de  texto  [predeterminado  =  1]  •  [k]  b  o  <ctrl>B :  Saltar  
hacia  atrás  k  pantallas  completas  de  texto  
[predeterminado  =  1]  •  = :  Pantalla  número  de  línea  actual  •  [k] /<expresión  regular> :  Buscar  la  k­ésima  aparición  
de  la  expresión  regular  [predeterminado  =  1]  •  [k]  n :  Buscar  la  k­ésima  aparición  de  la  última  
expresión  regular  [predeterminado  =  1]  •  v :  
Iniciar /  usr/bin/vi  en  la  línea  

actual  •  <ctrl>L :  Redibujar  pantalla  •  [k] :n :  Ir  al  
késimo  archivo  siguiente  [predeterminado  =  1]  •  [k] :p :  Ir  
al  késimo  archivo  anterior  [predeterminado  =  1]  • :f :  muestra  el  nombre  del  archivo  actual  y  el  número  de  línea
• . :  Repetir  el  comando  anterior

Para  explicar  más,  si  ejecutamos  el  siguiente  comando  para  comenzar  a  buscar  en  nuestro  archivo...

más /var/log/dmesg

…  y  luego  (durante  la  visualización  del  archivo)  presione  6z,  la  pantalla  mostrará  las  siguientes  6  líneas  del  archivo.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 118

Opciones

Hay  varias  opciones  disponibles  para  usar  con  el  comando  more .  Algunos  de  los  más  utilizados  son;

•  ­num  establecerá  el  número  de  líneas  a  las  que  corresponde  el  tamaño  de  la  pantalla.  
•  ­s  comprimirá  varias  líneas  en  blanco  en  una  sola  •  
+/"cadena"  especifica  una  cadena  que  se  buscará  en  el  archivo.  •  +num  
comenzará  a  mostrar  el  archivo  en  el  número  de  línea  num

Por  ejemplo,  si  establecemos  el  número  de  líneas  de  la  pantalla  en  3  usando  la  opción  ­num  de  la  siguiente  manera;

más  ­3 /var/log/dmesg

La  salida  supondrá  que  la  pantalla  tiene  3  líneas  de  profundidad  y,  por  lo  tanto,  mostrará  3  líneas  por  cada  página  
adicional  que  se  muestre  con  la  barra  <space>.  La  primera  'página  mostrada  será  similar  a  la  siguiente;

pi@raspberrypi  ~  $  más  ­3 /var/log/dmesg  [ 0.000000]  
Arrancando  Linux  en  CPU  física  0xf00  [ 0.000000]  Inicializando  
cgroup  subsys  cpu  [ 0.000000]  Inicializando  cgroup  subsys  
cpuacct  ­­Más­­(1%)

Pruébate

1.  ¿Qué  comando  se  usaría  para  mostrar  la  primera  instancia  del  texto  'hola  mundo'  de  un
archivo  y  luego  mostrar  5  líneas  a  la  vez  cada  vez  que  se  presiona  la  barra  espaciadora?
2.  ¿Cuál  es  el  comando  alternativo  (más  moderno)  que  se  usa  comúnmente  en  lugar  de  más?
3.  Use  más  para  listar  el  archivo /var/log/dmesg.  Presione  la  tecla  s  para  avanzar  un  número  aleatorio  de  líneas.  
use  un  comando  para  encontrar  la  línea  que  se  muestra,  luego  salga  del  comando  y  ejecútelo  nuevamente,  
pero  con  una  opción  que  lo  lleve  directamente  al  mismo  número  de  línea  aleatorio.
Machine Translated by Google

Comandos  Linux 119

cola

El  comando  tail  está  diseñado  para  imprimir  la  última  parte  de  un  archivo  en  la  pantalla.  Por  defecto  imprimirá  
las  últimas  10  líneas.  Es  un  programa  muy  útil  para  verificar  rápidamente  el  final  de  un  archivo.

•  tail  [opciones]  nombre(s)  de  archivo:  muestra  la  última  parte  de  un  archivo  específico.

Por  ejemplo,  si  queremos  listar  las  últimas  10  líneas  del  archivo /var/log/dmesg,  podemos  hacerlo  de  la  siguiente  
manera;

cola /var/log/dmesg

Esto  dará  como  resultado  una  salida  similar  a  la  siguiente;

pi@raspberrypi /var/log  $  tail /var/log/dmesg  [ 4.723858]  
EXT4­fs  (mmcblk0p2):  sistema  de  archivos  montado  con  modo  de  datos  ordenados.  [4.735464]  VFS:  
raíz  montada  (sistema  de  archivos  ext4)  de  solo  lectura  en  el  dispositivo  179:2.  [ 4.745366]  
devtmpfs:  montado  [ 4.750800]  Liberando  
memoria  del  kernel  no  utilizada:  396K  (80767000  ­  807ca000)  [ 5.896875]  udevd[175]:  
versión  inicial  175  [ 8.192851]  EXT4­fs  (mmcblk0p2):  re­
montado.  Opciones:  (nulo)  [8.447207]  EXT4­fs  (mmcblk0p2):  remontado.  
Opciones:  (nulo)  [ 11.411899]  aleatorio:  se  inicializa  el  grupo  sin  bloqueo  
[ 12.843008]  smsc95xx  1­1.1:1.0  eth0:  el  hardware  no  es  capaz  de  
realizar  operaciones  remotas  [ 14.455026]  smsc95xx  1­1.1:1.0  eth0:  conexión,  100  Mbps,  full­  
dúplex,  lpa

El  comando  de  la  cola

El  comando  tail  está  diseñado  para  llevar  a  cabo  la  simple  tarea  de  leer  las  últimas  líneas  de  un  archivo  y  
presentarlas  en  una  salida  (por  defecto,  la  pantalla).  El  número  predeterminado  de  líneas  que  imprimirá  el  
comando  es  10,  pero  eso  se  puede  cambiar  usando  la  opción  de  guión  (­n) .

Se  complementa  con  el  comando  principal  que  imprimirá  las  primeras  líneas  de  un  archivo.

Opciones

Hay  un  pequeño  número  de  opciones  disponibles  para  la  cola.  Hay  tres  que  se  usan  más  comúnmente  que  otros;

•  ­c[num]  imprime  el  último  número  de  bytes  del  archivo  (donde  8  bytes  es  un  carácter)  •  ­n[num]  
imprime  el  último  número  de  líneas  del  archivo  •  ­f  imprime  las  
últimas  10  líneas  del  archivo  y  si  se  agregan  nuevas  líneas,  también  las  generará

A  primera  vista,  la  opción  ­c  puede  parecer  un  poco  inusual,  pero  lo  que  hace  es  proporcionar  un  método  muy  
exacto  para  imprimir  un  número  específico  de  letras  de  un  archivo.  Por  ejemplo,  si  quisiéramos  imprimir  los  
últimos  50  caracteres  del  archivo /var/log/dmesg,  usaríamos  lo  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 120

cola  ­c50 /var/log/dmesg

La  salida  posterior  se  vería  de  la  siguiente  manera;

pi@raspberrypi /var/log  $  tail  ­c50 /var/log/dmesg  0  eth0:  enlace,  
100  Mbps,  dúplex  completo,  lpa  0xC5E1

Podemos  ver  que  el  texto  devuelto  tiene  41  caracteres.

Con  la  opción  ­n  podemos  imprimir  un  número  específico  de  líneas.  Entonces,  lo  siguiente  imprimirá  las  
últimas  5  líneas  del  archivo /var/log/dmesg ;

cola  ­n5 /var/log/dmesg

Con  un  resultado  que  queda  de  la  siguiente  manera;

pi@raspberrypi /var/log  $  tail  ­n5 /var/log/dmesg  [ [ [ 11.411899]  
8.192851]  EXT4­fs  (mmcblk0p2):  remontado.  Opciones:  (nulo)
8.447207]  EXT4­fs  (mmcblk0p2):  remontado.  Opciones:  (nulo)
aleatorio:  el  grupo  sin  bloqueo  se  inicializa  [ 12.843008]  smsc95xx  
1­1.1:1.0  eth0:  el  hardware  no  es  capaz  de  controlar  remotamente  [ 14.455026]  smsc95xx  
1­1.1:1.0  eth0:  enlace,  100  Mbps,  dúplex  completo,  lpa

Para  las  opciones  ­c  o  ­n ,  podemos  especificar  un  multiplicador  adyacente  al  número  num  que  aumentará  el  
número  de  caracteres  o  líneas  devueltos.  Por  ejemplo ,  b  =  512,  kB  =  1000,  K  =  1024,  MB  =  1000x1000,  M  =  
1024x1024,  GB  =  1000x1000x1000,  G  =  1024x1024x1024,  etc.  para  T,  P,  E,  Z  e  Y.

Por  lo  tanto,  el  siguiente  ejemplo  imprimirá  los  últimos  5000  caracteres  del  archivo /var/log/dmesg .

cola  ­c5kB /var/log/dmesg

La  opción  ­f  para  la  cola  proporciona  una  poderosa  herramienta  para  monitorear  en  tiempo  real  la  actividad  en  
un  archivo  cambiante.  Usando  ­f  en  un  archivo,  mantendrá  una  vigilancia  en  el  archivo  y  si  se  agregan  líneas  
adicionales  al  archivo,  se  imprimirán  en  la  pantalla.
Machine Translated by Google

Comandos  Linux 121

Argumentos

Si  queremos  mostrar  el  final  de  más  de  un  archivo,  simplemente  podemos  enumerar  sus  nombres  de  archivo  
uno  tras  otro.  Por  ejemplo,  para  listar  las  últimas  5  líneas  de  los  archivos  dmesg  y  syslog  (ambos  están  en /var/
log)  podemos  usar  el  siguiente  comando;

cola  ­n5  dmesg  syslog

Los  resultados  se  verán  un  poco  como  los  siguientes;

pi@raspberrypi /var/log  $  tail  ­n5  dmesg  syslog  ==>  dmesg  
<==  [ [ [ 11.411899]  
8.192851]  EXT4­fs  (mmcblk0p2):  remontado.  Opciones:  (nulo)
8.447207]  EXT4­fs  (mmcblk0p2):  remontado.  Opciones:  (nulo)
aleatorio:  se  inicializa  el  grupo  sin  bloqueo  [ 12.843008]  smsc95xx  
1­1.1:1.0  eth0:  el  hardware  no  es  capaz  de  [ 14.455026]  smsc95xx  1­1.1:1.0  eth0:  enlace,  100  
Mbps,  dúplex  completo,  lpa

==>  registro  del  sistema  <==

29  de  agosto  02:17:01  raspberrypi /USR/SBIN/CRON[2856]:  (raíz)  CMD  (piezas  de  ejecución)
29  de  agosto  02:39:02  raspberrypi /USR/SBIN/CRON[2870]:  (raíz)  CMD  (maxlifetime)
29  de  agosto  03:00:01  raspberrypi /USR/SBIN/CRON[2900]:  (pi)  CMD  (/usr/bin/php)
29  de  agosto  03:00:39  raspberrypi /USR/SBIN/CRON[2899]:  (CRON)  información  (sin  MTA)
29  de  agosto  03:09:01  raspberrypi /USR/SBIN/CRON[2917]:  (raíz)  CMD  (sesión  limpia)

¡Podemos  ver  que  al  comienzo  de  cada  archivo  enumerado  se  imprime  el  nombre  del  archivo  y  de  hecho  hay  5  
líneas  de  texto  cada  uno!

Pruébate

1.  ¿Por  qué  los  multiplicadores  K  y  kB  son  diferentes?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 122

Sistemas  de  archivos

fdisco

fdisk  es  un  comando  diseñado  para  administrar  particiones  de  disco.  Esto  quiere  decir  que  nos  permite  ver,  
crear,  redimensionar,  borrar,  cambiar,  copiar  y  mover  particiones  en  un  disco  duro.

Comencemos  esto  con  un  poco  de  advertencia.  fdisk  es  un  comando  que  reorganizará  su  
almacenamiento  y,  como  tal,  conlleva  un  riesgo  significativo  si  se  realiza  incorrectamente.  
fdisk  requerirá  que  lo  ejecute  un  usuario  con  permisos  de  administrador  y  por  una  buena  razón.
¡No  cree,  elimine  ni  modifique  particiones  a  menos  que  sepa  lo  que  está  haciendo!  el  uso  
incorrecto  de  fdisk  puede  provocar  la  pérdida  de  datos  o  destruir  el  sistema.

Si  bien  describiremos  algunas  de  las  funciones  de  fdisk  aquí,  restringiremos  la  descripción  para  permitir  una  
comprensión  de  lo  que  fdisk  puede  mostrarnos  y  si  desea  cambiar  sus  particiones,  le  recomiendo  que  busque  
asesoramiento  específico  antes  de  hacerlo.

•  fdisk  [opciones]  [dispositivo]:  manipula  las  tablas  de  particiones.

La  única  combinación  de  comando/opción  que  veremos  en  profundidad  incorpora  la  opción  ­l  para  listar  las  
tablas  de  particiones  del  disco.

sudo  fdisk  ­l

El  programa  presentará  entonces  la  información  que  tiene  sobre  las  particiones  existentes;

Disco /dev/mmcblk0:  7,4  GiB,  7948206080  bytes,  15523840  sectores  Unidades:  sectores  de  1  *  
512  =  512  bytes  Tamaño  del  sector  (lógico/físico):  512  
bytes /  512  bytes  Tamaño  de  E/S  (mínimo/óptimo):  512  bytes /  512  bytes  Tipo  de  
etiqueta  de  disco:  dos

Identificador  de  disco:  0xa3a4d77a

Dispositivo Inicio  de  arranque Tipo  de  ID  de  tamaño  de  sectores  finales


/dev/mmcblk0p1 /dev/ 8192  131071  122880  60M  c  W95  FAT32  (LBA)
mmcblk0p2 131072  15523839  15392768  7.3G  83  Linux

Disco /dev/sda:  29,5  GiB,  31614566400  bytes,  61747200  sectores  Unidades:  sectores  de  1  *  
512  =  512  bytes  Tamaño  del  sector  (lógico/físico):  512  
bytes /  512  bytes  Tamaño  de  E/S  (mínimo/óptimo):  512  bytes /  512  bytes  Tipo  de  
etiqueta  de  disco:  dos
Machine Translated by Google

Comandos  Linux 123

Identificador  de  disco:  0xb1832c48

Dispositivo Inicio  de  arranque Sectores  finales  Tamaño  Id  Tipo  96  


/dev/sda1 61747199  61747104  29.5G  c  W95  FAT32  (LBA)

La  información  anterior  muestra  que  tenemos  dos  dispositivos  de  almacenamiento  diferentes  conectados  al  
sistema. /dev/mmcblk0  y /dev/sda.  Se  presenta  una  gran  cantidad  de  información  sobre  los  discos  en  sí,  
además  de  información  sobre  cómo  están  particionados.

Podemos  ver  que  el  dispositivo  (disco) /dev/mmcblk0  tiene  dos  particiones  configuradas.  Se  nos  dice  que  el  
disco  tiene  7,4  GiB  de  almacenamiento  (la  'i'  en  GiB  es  una  indicación  de  que  el  tamaño  de  almacenamiento  
se  informa  utilizando  factores  de  1024  en  lugar  de  1000  (que  sería  un  GB).  No  entre  en  pánico,  esto  es  
normal .).  La  información  sobre  sectores  es  una  forma  de  representar  la  capacidad  de  almacenamiento  y  es  
una  especie  de  remanente  de  cuando  el  almacenamiento  siempre  era  un  disco  giratorio  de  algo  (hasta  hace  
poco  también  estaríamos  hablando  de  cilindros  y  bloques).

Se  informa  que /dev/mmcblk0  está  dividido  en  dos  particiones  (/dev/mmcblk0p1  y /dev/mm  cblk0p2).  El  
almacenamiento  asignado  a  cada  partición  se  asigna  a  sectores  específicos  que  corresponden  a  un  tamaño  
particular.  El  Id  de  la  partición  corresponde  a  los  indicadores  del  sistema  o  'tipos'  para  las  particiones.  El  tipo  
también  está  representado  por  un  nombre  legible  por  humanos.  Los  diversos  tipos  incluyen  (pero  no  se  limitan  
a);

0  Vacío 24  NEC  DOS 81  Minix /  viejo  Lin  bf  Solaris


1  FAT12 39  Plano  9 82  Intercambio  de  Linux /  So  c1  DRDOS/seg  (FAT  c4  
2  raíz  XENIX PartitionMagic  83  Linux DRDOS/seg  (FAT  3c  
3  XENIX  usuario 40  Venix  80286 84  OS/2  oculto  C:  c6  DRDOS/seg  (FAT
4  FAT16  <32M 41  Arranque  PPC  PReP  85  Linux  c7  extendido  Syrinx
5  Extendido 42  SFS 86  Volumen  NTFS  establecido  da  Datos  no  FS
6  FAT16 4d  QNX4.x  4e   87  Conjunto  de  volumen  NTFS  db  CP/M /  CTOS /
7  HPFS/NTFS QNX4.x  2ª  parte  88  Linux  texto  plano  de  Dell  Utility  4f  QNX4.x  3ª  parte  8e  Linux  
8  AIX LVM df  arranque
9  AIX  arrancable 50  En  camino  DM 93  Ameba acceso  DOS  e1
a  Gestión  de  arranque  de  OS/2  51  OnTrack  DM6  Aux  94  Amoeba  BBT e3  DOS  O/I
b  W95  FAT32 52  CP/M  9f  BSD/OS e4  SpeedStor
c  W95  FAT32  (LBA)  53  OnTrack  DM6  Aux  a0  IBM  Thinkpad  hi  eb  BeOS  fs  e  W95  FAT16  (LBA)  54  
OnTrackDM6  f  W95  Ext'd  (LBA)  55  EZ­Drive a5  FreeBSD ee  GPT
a6  OpenBSD EFI  (FAT­12/16  f0  Linux/
10  OPUS 56  Arco  Dorado a7  SIGUIENTE  PASO PA­RISC
11  FAT12  oculto 5c  Príamo  Edisk a8  Darwin  UFS f1  SpeedStor  f4  
12  Diagnóstico  de  Compaq  61  SpeedStor a9  NetBSD SpeedStor  f2  DOS  
14  Oculto  FAT16  <3  63  GNU  HURD  o  Sys  ab  Arranque  Darwin secundario
16  FAT16  oculto 64  Novell  Netware  de  HFS /  HFS+ fb  VMware  VMFS
17  HPFS/NTF  oculto  65  Novell  Netware  b7  BSDI  fs fc  VMware  VMKCORE
18  AST  SmartSleep  70  DiskSecure  Mult  b8  BSDI  swap  1b  Oculto  W95  FAT3   fd  Linux  incursión  aut.
75  PC/IX bb  Boot  Wizard  hid  fe  LANstep
1c  Oculto  W95  FAT3  80  Viejo  Minix ser  arranque  de  Solaris FF  BBT
1e  oculto  W95  FAT1

www.dbooks.org
Machine Translated by Google

Comandos  Linux 124

Sí,  hay  conservadoramente  una  gran  cantidad  de  tipos  métricos  allí.  Para  nuestra  descripción  general  muy  simplista  de  fdisk,  no  
deberíamos  preocuparnos  demasiado  por  la  variedad.  Hay  bastantes  tipos  especializados  y  algunos  semihistóricos  allí,  por  lo  
que  en  la  forma  de  pensar  'Just  Enough'  podemos  esperar  ver  algunos  Tipo  '7',  'b'  y  'c'  en  medios  extraíbles  y  '82' /  '  83'  para  
almacenamiento  estándar  (esté  preparado  para  cierta  flexibilidad  allí).

El  comando  fdisk

Los  discos  duros  (o  más  comúnmente  hoy  en  día  con  una  amplia  gama  de  opciones  disponibles,  dispositivos  de  'almacenamiento')  
se  pueden  dividir  en  uno  o  más  discos  lógicos  llamados  particiones.  Estas  divisiones  se  describen  en  la  'tabla  de  particiones'  que  
se  encuentra  en  el  sector  0  de  un  disco.  La  tabla  enumera  información  sobre  el  inicio  y  el  final  de  cada  partición,  información  
sobre  su  tipo  y  si  está  marcada  como  de  arranque  o  no.  el  comando  fdisk  nos  permite  editar  la  tabla  de  particiones  y,  como  tal,  
tiene  el  potencial  de  afectar  significativamente  el  funcionamiento  del  medio  de  almacenamiento.  Como  resultado,  el  comando  
fdisk  solo  lo  puede  ejecutar  un  usuario  con  privilegios  de  administrador  y  corremos  el  riesgo  de  perder  datos  en  el  disco  si  
ejecutamos  el  comando  incorrectamente.

Las  particiones  pueden  tener  diferentes  tamaños  y  diferentes  particiones  pueden  tener  diferentes  sistemas  de  archivos,  por  lo  
que  un  solo  disco  se  puede  usar  para  muchos  propósitos.  Los  discos  duros  tradicionales  tienen  una  estructura  definida  por  los  
términos  de  cilindros,  cabezales  y  sectores.  Las  unidades  modernas  utilizan  el  direccionamiento  de  bloques  lógicos  (LBA),  lo  que  
hace  que  esta  estructura  sea  en  gran  medida  irrelevante;  sin  embargo,  la  unidad  de  asignación  estándar  para  fines  de  partición  
suele  ser  el  cilindro.

Linux  necesita  un  mínimo  de  una  partición  para  admitir  su  sistema  de  archivos  raíz.  También  puede  aprovechar  los  archivos  de  
intercambio  y/o  las  particiones  de  intercambio,  pero  como  una  partición  de  intercambio  es  más  eficiente,  generalmente  tendremos  
una  segunda  partición  de  Linux  dedicada  para  el  intercambio.

En  el  hardware  compatible  con  Intel,  el  sistema  básico  de  entrada/  salida  (BIOS)  que  arranca  la  computadora  a  menudo  solo  
puede  acceder  a  los  primeros  1024  cilindros  del  disco.  Como  resultado,  a  menudo  puede  haber  una  tercera  partición  de  unos  
pocos  MB  (generalmente  montada  en /boot),  para  almacenar  la  imagen  del  kernel  y  algunos  archivos  auxiliares  utilizados  durante  
el  arranque.

fdisk  nos  permite  ver,  crear,  redimensionar,  borrar,  cambiar,  copiar  y  mover  particiones  en  un  disco  duro.
Es  una  herramienta  esencial  para  crear  espacio  para  nuevas  particiones,  organizar  espacio  para  nuevas  unidades,  reorganizar  
unidades  antiguas  y  copiar  o  mover  datos  a  nuevos  discos.  Si  bien  fdisk  puede  manipular  la  tabla  de  particiones,  esto  no  hace  
que  el  espacio  esté  disponible  para  su  uso.  Para  hacer  esto,  debemos  formatear  la  partición  con  un  sistema  de  archivos  específico  
usando  mkfs.

Como  ya  se  describió  en  el  ejemplo  original,  podemos  ver  los  detalles  de  nuestra  partición  con  la  opción  ­l .

Ir  más  allá  de  la  madriguera  del  conejo  de  la  manipulación  de  particiones  es  algo  que  dudo  en  describir  porque  puede  dar  la  
impresión  de  que  es  una  tarea  trivial  que  cualquiera  debería  intentar.  No  es  algo  que  deba  evitarse,  pero  es  algo  que  debemos  
aprender  y  practicar  en  un  entorno  seguro  antes  de  intentarlo  por  primera  vez.  Esto  se  puede  hacer  de  forma  controlada  usando  
los  comandos  interactivos  pero  sin  guardar  los  cambios.

Una  vez  que  hayamos  identificado  el  dispositivo  que  queremos  particionar,  podemos  iniciar  fdisk  como  una  utilidad  interactiva  
controlada  por  comandos  con  el  comando  fdisk  y  el  dispositivo;
Machine Translated by Google

Comandos  Linux 125

sudo  fdisk /dev/sda

La  respuesta  es  un  mensaje  de  bienvenida  y  una  advertencia;

Bienvenido  a  fdisk  (util­linux  2.25.2).
Los  cambios  permanecerán  solo  en  la  memoria,  hasta  que  decida  escribirlos.
Tenga  cuidado  antes  de  usar  el  comando  de  escritura.

Comando  (m  para  ayuda):

Debemos  tener  en  cuenta  que  podemos  hacer  muchos  cambios  potenciales  usando  los  comandos  
de  fdisk ,  pero  estos  no  se  vuelven  operativos  hasta  que  los  guardamos  usando  'w'.  Esta  es  una  
buena  manera  de  practicar  el  uso  de  los  comandos  sin  preocuparse  por  cómo  pueden  afectar  el  
almacenamiento  (siempre  y  cuando  no  promulguemos  los  cambios).

Presionando  'm'  se  mostrará  el  rango  de  posibles  comandos;

Ayuda:

DOS  (MBR)
a  alternar  una  bandera  de  arranque  b  
editar  la  etiqueta  de  disco  BSD  anidada

c  alternar  la  bandera  de  compatibilidad  con  DOS

Genérico

d  eliminar  una  partición  l  enumerar  
los  tipos  de  partición  conocidos  n  agregar  una  
nueva  partición  p  imprimir  la  tabla  
de  particiones  t  cambiar  un  tipo  de  partición  
v  verificar  la  tabla  de  particiones

Varios

m  imprimir  este  menú  u  
cambiar  las  unidades  de  visualización/entrada  
x  funcionalidad  adicional  (solo  para  expertos)

Guardar  la  salida
w  escribe  la  tabla  en  el  disco  y  sale

q  salir  sin  guardar  los  cambios

Crear  una  nueva  etiqueta

www.dbooks.org
Machine Translated by Google

Comandos  Linux 126

g  crear  una  nueva  tabla  de  particiones  GPT  vacía
G  crear  una  nueva  tabla  de  particiones  SGI  (IRIX)  vacía  o  crear  una  
nueva  tabla  de  particiones  DOS  vacía  s  crear  una  nueva  tabla  
de  particiones  Sun  vacía

Para  agregar  una  nueva  partición,  presionaríamos  'n',  que  preguntará  qué  tipo  de  partición  queremos  configurar;

Tipo  de  partición  p  
primaria  (0  primaria,  0  extendida,  4  libres)  e  extendida  
(contenedor  para  particiones  lógicas)
Seleccione  (predeterminado  p):

La  tabla  de  particiones  se  encuentra  en  el  registro  de  arranque  maestro  (MBR)  de  un  disco.  El  
MBR  es  el  primer  sector  del  disco,  por  lo  que  la  tabla  de  particiones  es  bastante  pequeña.  Esto  
limita  el  número  de  particiones  primarias  en  un  disco  a  cuatro.  Cuando  se  requieren  más  de  
cuatro  particiones  (lo  cual  es  bastante  normal),  una  de  las  particiones  primarias  debe  convertirse  
en  una  partición  extendida.  Una  partición  extendida  es  un  contenedor  para  una  o  más  particiones  
lógicas.  De  esta  forma,  puede  tener  más  de  cuatro  particiones  en  una  unidad  utilizando  el  diseño  MBR.

Suponiendo  (en  este  caso)  que  agregaremos  una  partición  primaria,  podemos  ingresar  'p'  y  se  nos  pregunta  
qué  número  de  partición  queremos  crear;

Número  de  partición  (1­4,  predeterminado  1):

Luego  se  nos  pregunta  de  dónde  debe  partir  el  primer  sector  de  nuestra  partición;

Primer  sector  (2048­61747199,  predeterminado  2048):

Luego  se  nos  pregunta  cuál  será  el  último  sector;

Último  sector,  +sectores  o  +tamaño{K,M,G,T,P}  (2048­61747199,  predeterminado  61747199):

Una  vez  completado,  fdisk  nos  dirá  los  detalles  de  la  partición  que  ha  configurado;

Creó  una  nueva  partición  1  de  tipo  'Linux'  y  de  tamaño  29,5  GiB.

Si  este  fuera  nuestro  resultado  deseado,  podríamos  escribir  los  cambios  y  la  configuración  se  almacenaría  en  
la  tabla  de  particiones.  Nuevamente,  esto  es  algo  que  debe  estudiarse  y  comprenderse  antes  de  intentarlo  de  
verdad.

Pruébate

1.  ¿Cuántas  particiones  primarias  se  pueden  crear  en  un  dispositivo?
2.  ¿Qué  'tipo'  de  partición  es  83?
3.  ¿Cómo  puede  practicar  el  uso  del  comando  fdisk  sin  implementar  los  cambios?
Machine Translated by Google

Comandos  Linux 127

mkfs

El  comando  mkfs  se  usa  para  crear  un  sistema  de  archivos  en  una  partición  de  Linux.  Es  el  proceso  de  aplicar  formato  de  
alto  nivel  a  una  partición  de  manera  que  se  configure  un  sistema  de  archivos  en  particular  y  el  almacenamiento  esté  listo  
para  su  uso.  Este  es  un  paso  importante  para  agregar  almacenamiento,  pero  conlleva  cierto  grado  de  precaución  que  debe  
acompañar  a  cualquier  comando  que  realice  cambios  en  el  almacenamiento.  El  uso  incorrecto  podría  resultar  en  la  pérdida  
de  datos.  Como  era  de  esperar  con  este  tipo  de  comando  necesitaríamos  ser  un  usuario  administrativo  para  ejecutarlo.

•  dispositivo  mkfs  [opciones]:  formatear  una  partición  con  un  sistema  de  archivos

La  indicación  de  uso  anterior  está  ligeramente  simplificada  con  respecto  a  la  que  se  muestra  en  las  páginas  man ,  pero  
representa  los  escenarios  de  uso  esperados  para  'Just  Enough'.

Habiendo  identificado  o  creado  una  partición  usando  fdisk ,  podemos  crear  una  partición  formateada  de  la  siguiente  manera  
(asumiendo  que  la  partición  que  queremos  formatear  es /dev/sda1  y  usará  el  sistema  de  archivos  predeterminado  'ext2');

sudo  mkfs /dev/sda1

En  nuestro  caso  de  uso,  ya  tenemos  una  partición  formateada  en /dev/sda1  y  recibimos  la  siguiente  notificación;

mke2fs  1.42.12  (29  de  agosto  de  
2014) /dev/sda1  contiene  un  sistema  de  archivos  vfat  etiquetado  como  'SP  UFD  U2'
¿Procede  de  todas  maneras?  (s,  n)

¡Una  vez  que  superemos  este  punto,  realizaremos  algunos  cambios  serios  en  nuestro  almacenamiento!

Habiendo  hecho  la  debida  deliberación,  si  decidimos  continuar  y  presionar  'y',  el  proceso  comienza  imprimiendo  los  detalles  
del  sistema  de  archivos  y  luego  escribiendo  las  tablas  de  inodos;

Creando  un  sistema  de  archivos  con  7718388  bloques  4k  y  1933312  inodos
UUID  del  sistema  de  archivos:  5d930bad­3024­476b­8673­4b450855f537
Copias  de  seguridad  de  superbloques  almacenadas  en  bloques:

32768,  98304,  163840,  229376,  294912,  819200,  884736,  1605632,  2654208,
4096000

Asignación  de  tablas  de  grupo:  hecho
Escritura  de  tablas  de  inodos:  177/236

Una  vez  completado,  comenzará  a  escribir  la  información  del  superbloque  y  del  sistema  de  archivos;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 128

Escribir  superbloques  e  información  de  contabilidad  del  sistema  de  archivos:  10/236

Tenga  cuidado,  esta  salida  a  veces  puede  parecer  que  se  ha  congelado.  Ciertamente  hay  informes  de  ello  en  línea  y  lo  he  
visto  yo  mismo.  Sin  embargo,  tenga  un  poco  de  paciencia  (quizás  10  minutos  más  o  menos)  y  debería  completarse.

Una  vez  completado  todo  lo  que  queda  es  montar  la  partición  y  podemos  usar  el  almacenamiento  recién  formateado.

El  comando  mkfs

Los  sistemas  de  archivos  se  utilizan  para  controlar  cómo  se  almacenan  los  datos  en  nuestras  unidades  y  particiones,  qué  
otra  información  se  adjunta  a  los  datos  en  sí  y  cómo  se  controla  el  acceso  a  los  datos.  Los  sistemas  de  archivos  se  mejoran  
todo  el  tiempo  para  incluir  más  funcionalidad  y  eficiencia.

El  comando  mkfs  se  usa  para  formatear  particiones  como  un  tipo  de  sistema  de  archivos  particular.  El  comando  es  la  
abreviatura  de  make  file  system.  El  comando  mkfs  es  en  realidad  una  interfaz  para  varios  comandos  específicos  del  
sistema  de  archivos.  No  todos  los  comandos  para  todos  los  sistemas  de  archivos  son  compatibles  con  todas  las  
distribuciones.  Podemos  encontrar  qué  sistemas  de  archivos  están  disponibles  en  nuestro  sistema  revisando  nuestro  
directorio /sbin  usando  ls  de  la  siguiente  manera;

ls /sbin/mk*  ­l

Esto  debería  mostrar  algo  similar  a  lo  siguiente;

lrwxrwxrwx  1  raíz  raíz 8  de  noviembre  de  2014 /sbin/mkdosfs  ­>  mkfs.fat
­rwxr­xr­x  1  raíz  raíz  100688  2  de  marzo  de  2015 /sbin/mke2fs  ­rwxr­xr­x  1  
raíz  raíz  9704  5  de  abril  de  2015 /sbin/mkfs  ­rwxr­xr­x  1  raíz  raíz  22084  5  
de  abril  de  2015 /sbin/  mkfs.bfs  ­rwxr­xr­x  1  raíz  raíz  30316  5  de  abril  de  2015 /
sbin/mkfs.cramfs
lrwxrwxrwx  1  raíz  raíz 6  de  marzo  de  2015 /sbin/mkfs.ext2  ­>  mke2fs  6  de  
lrwxrwxrwx  1  raíz  raíz marzo  de  2015 /sbin/mkfs.ext3  ­>  mke2fs
lrwxrwxrwx  1  raíz  raíz 2  de  marzo  de  2015 /sbin/mkfs.ext4  ­>  mke2fs  2  de  
lrwxrwxrwx  1  raíz  raíz marzo  de  2015 /sbin/mkfs.ext4dev  ­>  mke2fs  ­rwxr­xr­x  1  
root  root  30648  21  de  noviembre  de  2014 /sbin/mkfs.fat
­rwxr­xr­x  1  raíz  raíz  30364  5  de  abril  de  2015 /sbin/mkfs.minix
lrwxrwxrwx  1  raíz  raíz 8  de  noviembre  de  2014 /sbin/mkfs.msdos  ­>  mkfs.fat
lrwxrwxrwx  1  raíz  raíz 8  21  de  noviembre  de  2014 /sbin/mkfs.vfat  ­>  mkfs.fat  
­rwxr­xr­x  1  raíz  raíz  17912  24  de  enero  11:30 /sbin/mkhomedir_helper  ­rwxr­xr­x  1  raíz  
raíz  55164  5  de  abril  de  2015 /sbin/  mkswap

Aquí  podemos  ver  que  hay  una  gama  de  diferentes  tipos  de  sistemas  de  archivos  admitidos  y,  en  algunos  casos,  hay  
enlaces  establecidos  para  garantizar  que  un  comando  específico  se  dirija  a  un  programa  apropiado.
Machine Translated by Google

Comandos  Linux 129

Por  lo  tanto,  la  opción  principal  que  debemos  tener  en  cuenta  al  usar  mkfs  es  la  opción  ­t  que  nos  permite  especificar  el  'tipo'  
del  sistema  de  archivos.

Si  bien  el  uso  predeterminado  de  mkfs  implementará  el  sistema  de  archivos  ext2,  podemos  especificar  otros  de  la  siguiente  
manera;

•  etx3 :  sudo  mkfs  ­t  ext3  dispositivo  •  
etx4 :  sudo  mkfs  ­t  ext4  dispositivo  •  
msdos :  sudo  mkfs  ­t  msdos  dispositivo
•  bfs :  sudo  mkfs  ­t  bfs  dispositivo

Algunos  puntos  de  interés  rápidos  sobre  los  tres  reproductores  principales  del  sistema  de  archivos  que  se  utilizan  en  Linux;

•  ext2 :

–  puede  manejar  hasta  4  TB  –  
la  función  de  superbloque  aumenta  el  rendimiento  del  sistema  de  archivos  
–  ext2  reserva  el  5  %  del  espacio  en  disco  para  root  
–  ext2  es  popular  en  USB  y  otros  dispositivos  de  estado  sólido  porque  no  tiene  una  función  de  registro  en  diario,  
por  lo  que  generalmente  hace  menos  lecturas  y  escribe  en  la  unidad  extendiendo  la  vida  útil  del  dispositivo.

•  ext3 :

–  proporciona  todas  las  funciones  de  ext  2  pero  incluye  registro  en  diario  y  compatibilidad  con  versiones  
anteriores  –  puede  actualizar  ext2  a  ext3  sin  pérdida  de  datos.  
–  la  función  de  diario  acelera  el  sistema  para  recuperar  el  estado  después  de  un  corte  de  energía  o
montaje  incorrecto,  desmontaje,  etc.
•  ext4:

–  admite  sistemas  de  archivos  más  grandes,  verificación  más  rápida,  marcas  de  tiempo  de  nanosegundos  y  verificación
del  diario  a  través  de  sumas  de  verificación.
–  Compatible  hacia  atrás  y  adelante  con  las  versiones  2  y  3  –  Sellado  de  tiempo  
más  rápido  –  Comprobación  
más  rápida  del  sistema  de  archivos  –  
Registro  de  sumas  de  
comprobación  –  Asignación  automática  de  espacio  para  evitar  la  fragmentación

Pruébate

1.  ¿Cómo  puede  averiguar  qué  sistemas  de  archivos  son  compatibles  con  su  sistema  operativo?
2.  ¿Cuál  es  el  sistema  de  archivos  predeterminado  que  se  usa  con  mkfs?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 130

montar

Una  vez  que  un  dispositivo  de  almacenamiento  (CD  Rom,  disco  duro,  memoria  USB,  etc.)  se  ha  particionado  para  su  uso,  necesitamos  
usar  el  comando  de  montaje  para  montarlo  en  un  sistema  de  archivos,  hacerlo  accesible  y  adjuntarlo  a  una  estructura  de  directorio  
existente.  El  comando  rara  vez  se  requiere  para  los  sistemas  basados  en  GUI  que  automatizan  el  proceso,  pero  para  configurar  
manualmente  los  sistemas  de  archivos  o  solucionar  problemas,  es  muy  útil  comprender  el  comando  de  montaje .

•  Montar  [opciones]  escriba  el  directorio  del  dispositivo:  monte  el  almacenamiento  en  el  sistema  de  archivos

Por  ejemplo,  después  de  conectar  una  memoria  USB,  podemos  ejecutar  los  siguientes  comandos  para  montar  el  almacenamiento;

sudo  mkdir /mnt/usbdata
sudo  mount /dev/sda1 /mnt/usbdata

El  proceso  se  ha  desarrollado  en  dos  pasos.

1.  Primero  creamos  un  directorio  vacío  usando  mkdir  llamado  usbdata  que  nos  da  un  lugar  para
montar  el  almacenamiento

2.  Luego  montamos  el  almacenamiento  que  se  representa  como  un  dispositivo  en /dev/sda1  en  nuestro  nuevo  directorio  (/mnt/
usbdata).

Desde  aquí  podemos  acceder  al  directorio  con  un  CD  y  utilizar  el  almacenamiento  a  nuestro  gusto.

Cosas  a  tener  en  cuenta:

Esto  no  es  almacenamiento  persistente.  En  otras  palabras,  no  volverá  a  aparecer  automáticamente  si  la  computadora  se  apaga  y  se  reinicia  (o  

se  reinicia).  Este  es  un  ejemplo  bastante  simple  y  hay  una  amplia  gama  de  diferentes  tipos  de  almacenamiento  que  se  pueden  montar  en  una  

amplia  gama  de

maneras.

El  comando  de  montaje

El  comando  de  montaje  es  uno  de  esos  que  cuando  comienza  a  usarlo  con  confianza  de  manera  regular,  probablemente  se  sienta  
bastante  cómodo  administrando  Linux.

El  sistema  de  archivos  de  Linux  es  una  jerarquía  de  directorios  que  se  utiliza  para  organizar  nuestros  archivos  en  un  orden  lógico  
similar  al  siguiente;
Machine Translated by Google

Comandos  Linux 131

Jerarquía  de  directorios

Cuando  montamos  nuestro  nuevo  almacenamiento,  creamos  un  directorio  para  asociarlo  con  su  punto  de  montaje.
La  convención  nos  obliga  a  poner  esto  en  el  directorio  '/mnt',  pero  podemos  enlazar  a  esa  posición  desde  otro  punto  si  
queremos.  De  esta  forma  podemos  hacer  que  el  almacenamiento  aparezca  de  una  forma  muy  flexible.

Para  montar  nuevo  almacenamiento  debemos  saber  qué  tipo  de  almacenamiento  es,  dónde  se  presenta  al  sistema  operativo  
como  dispositivo  y  dónde  lo  vamos  a  montar.

Hay  una  larga  lista  de  tipos  de  almacenamiento  que  pueden  admitirse.  Estos  se  pueden  encontrar  en  la  página  del  manual  de  
montaje .  Podrían  incluir;  adfs,  affs,  autofs,  btrfs,  cifs,  coda,  coherente,  cramfs,  debugfs,  devpts,  efs,  ext,  ext2,  ext3,  ext4,  hfs,  
hfsplus,  hpfs,  iso9660,  jfs,  minix,  msdos,  ncpfs,  nfs,  nfs4,  ntfs,  proc,  qnx4,  ramfs,  reiserfs,  romfs,  squashfs,  smbfs,  sysv,  tmpfs,  
ubifs,  udf,  ufs,  umsdos,  usbfs,  vfat,  xenix,  xfs  o  xiafs.  El  rango  depende  del  soporte  para  el  tipo  en  el  kernel  de  Linux  que  se  está  
ejecutando  (en  otras  palabras,  varía).

Tenga  en  cuenta  que  no  estamos  decidiendo  qué  tipo  usar  cuando  implementamos  el  comando  de  montaje .
El  tipo  lo  establece  la  configuración  del  medio  de  almacenamiento.

El  ejemplo  que  usamos  anteriormente  en  esta  sección  no  especificaba  un  tipo.  La  buena  noticia  es  que  el  montaje  a  menudo  
puede  detectar  automáticamente  el  tipo,  lo  que  nos  facilita  la  vida.  Algunos  de  los  más  comunes  y  con  mayor  probabilidad  de  
ser  detectados  automáticamente  son;

•  ext4:  este  es  probablemente  el  tipo  de  sistema  de  archivos  de  Linux  más  común  y  reciente  •  
ext3:  el  tipo  de  sistema  de  archivos  de  Linux  anterior  más  común  •  ntfs:  un  
sistema  de  archivos  de  Windows  común  para  discos  duros  externos  más  grandes  •  vfat:  un  
sistema  de  archivos  de  Windows  común  para  discos  duros  externos  más  pequeños

Si  un  tipo  de  sistema  de  archivos  no  se  detecta  automáticamente,  esto  podría  deberse  a;

•  No  tener  herramientas  de  sistema  de  archivos  instaladas  para  el  sistema  de  archivos  elegido.  Por  ejemplo,  para  montar  
unidades  ntfs  en  versiones  anteriores  de  Ubuntu,  habríamos  tenido  que  instalar  el  paquete  ntfs­3g .

www.dbooks.org
Machine Translated by Google

Comandos  Linux 132

•  Puede  que  hayamos  seleccionado  la  partición  
equivocada.  •  La  partición  de  almacenamiento  puede  estar  corrupta  o  sin  formato.

Cuando  se  introduce  un  nuevo  almacenamiento  en  la  computadora,  debería  aparecer  en  el  directorio /dev .  Para  los  no  
iniciados,  no  será  inmediatamente  obvio  qué  dispositivo  usar,  ya  que  habrá  bastantes  allí.

Es  más  probable  que  las  unidades  extraíbles  y  las  unidades  de  disco  duro  estándar  se  representen  como  "discos  SCSI",  
que  se  abrevia  como  "sd".  El  primer  dispositivo  que  cumpla  con  los  criterios  de  'disco  SCSI'  se  designará  como  'sda',  el  
segundo  como  'sdb'  y  así  sucesivamente.  La  unidad  debe  particionarse  para  su  uso  como  parte  del  proceso  de  formateo  y,  
como  tal,  tendrá  al  menos  una  partición.  Esta  primera  partición  se  designa  con  un  valor  numérico  por  lo  que  nuestro  
dispositivo  podría  ser  'sda1'.  Las  particiones  adicionales  serían  'sda2',  'sda3'
etc.

Sería  posible  enumerar  (ls)  el  contenido  del  directorio /dev  antes  de  agregar  el  almacenamiento  y  después  de  agregarlo,  lo  
que  podría  indicar  el  nombre  del  dispositivo,  pero  un  método  mucho  más  confiable  es  usar  el  comando  fdisk  para  enumerar  
las  particiones  disponibles.  Esto  lo  podemos  hacer  con  el  siguiente  comando;

sudo  fdisk  ­l

La  salida  puede  ser  relativamente  larga  según  el  almacenamiento  instalado,  pero  aquí  podemos  ver  la  información  
resultante  al  conectar  una  memoria  USB  de  32  GB  (solo  se  muestra  la  información  de  la  memoria  USB);

Disco /dev/sda:  29,5  GiB,  31614566400  bytes,  61747200  sectores  Unidades:  
sectores  de  1  *  512  =  512  bytes  Tamaño  del  sector  
(lógico/físico):  512  bytes /  512  bytes  Tamaño  de  E/S  (mínimo/óptimo):  
512  bytes /  512  bytes  Tipo  de  etiqueta  de  disco:  dos

Identificador  de  disco:  0xc3072e18

Dispositivo Inicio  de  arranque Sectores  finales  Tamaño  Id  Tipo  96  


/dev/sda1 61747199  61747104  29.5G  c  W95  FAT32  (LBA)

Efectivamente,  podemos  ver  el  identificador /dev/sda1  que  es  específico  para  el  dispositivo.

El  último  paso  antes  del  montaje  es  crear  un  punto  de  montaje  para  el  almacenamiento.  Hacemos  esto  simplemente  
creando  un  directorio  vacío.  Por  convención,  el  directorio /mnt  se  usa  para  montar  dispositivos  de  almacenamiento  como  
CDROM  y  unidades  USB,  y  la  ubicación  final  del  punto  de  montaje  deberá  dejarse  a  las  necesidades  de  los  usuarios.

Mirando  de  nuevo  nuestro  ejemplo  anterior;
Machine Translated by Google

Comandos  Linux 133

sudo  mkdir /mnt/usbdata
sudo  mount /dev/sda1 /mnt/usbdata

Creamos  un  directorio  que  servirá  como  punto  de  montaje  de  salida  en  el  directorio /mnt  llamado  usbdata.  Luego  le  
indicamos  a  la  computadora  que  monte  el  dispositivo  en /dev/sda1  en  el  directorio /mnt/usbdata.
El  comando  no  especifica  un  tipo  y,  por  lo  tanto,  usaremos  el  predeterminado.

Una  vez  hecho  esto  podemos  navegar  hasta  el  directorio  para  explorarlo.  También  podemos  confirmar  su  existencia  
usando  el  comando  de  montaje  por  sí  solo.  Si  solo  ejecutamos  el  comando  mount  de  la  siguiente  manera;

montar

Se  nos  presentará  una  lista  de  monturas  presentes  en  el  sistema.  La  respuesta  que  es  específica  para  nuestra  unidad  
montada  recientemente  será  similar  a  la  siguiente;

/dev/sda1  en /mnt/tipo  de  datos  vfat

Esto  nos  dice  el  dispositivo,  el  punto  de  montaje  y  el  tipo  (vfat).  Puede  haber  información  adicional  que  describa  cómo  
se  configura  el  almacenamiento  montado.  Si  bien  es  interesante,  nos  negaremos  a  explorar  esto  ya  que  el  libro  se  
llama  'Just  Enough  Linux',  no  'In  Depth  Linux'.

Ninguna  descripción  del  comando  de  montaje  podría  dejar  de  mencionar  el  archivo /etc/fstab .  fstab  significa  tabla  de  
sistema  de  archivos  y  el  archivo  fstab  contiene  la  información  que  automatiza  el  proceso  de  montaje  de  particiones.  
Por  lo  general,  este  archivo  contendrá  entradas  para  dispositivos  internos,  como  CDROM  o  recursos  compartidos  de  
red.  Los  que  tienen  la  expectativa  de  montarse  en  el  maletero.  Sin  embargo,  puede  contener  información  que  describa  
cómo  se  debe  realizar  un  montaje,  pero  especifique  'noauto'  para  evitar  que  ocurra  automáticamente  en  el  arranque.  
Esto  permite  el  uso  del  comando  de  montaje  con  la  opción  ­a  que  montará  todos  los  sistemas  de  archivos  
especificados  en  fstab.  (suponiendo  que  exista  el  punto  de  montaje  del  directorio).

montar  ­a

Pruébate

1.  Si  conectó  dos  unidades  USB  externas,  ¿cuáles  podrían  ser  las  designaciones  probables  de  sus  dispositivos?
y  donde  se  puede  comprobar  esto?

2.  Si  utiliza  el  comando  de  montaje  para  montar  una  unidad,  ¿aparecerá  montada  de  nuevo  después  de  un
¿reiniciar?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 134

desmontar

Una  vez  que  se  ha  montado  un  dispositivo  de  almacenamiento  (CD  Rom,  disco  duro,  memoria  USB,  etc.),  necesitamos  
usar  el  comando  umount  para  desmontarlo  de  un  sistema  de  archivos.  Desmontar  un  sistema  de  archivos  de  forma  
limpia  es  una  buena  práctica  y  posiblemente  podría  reducir  la  posibilidad  de  que  los  datos  no  se  guarden  correctamente  
en  el  almacenamiento  si  un  proceso  no  se  ha  completado.  Normalmente,  el  comando  solo  sería  necesario  después  de  
montar  una  unidad  mediante  mount.

•  umount  [opciones]  dispositivo  y/o  directorio:  desmontar  el  almacenamiento  del  sistema  de  archivos

Por  ejemplo,  después  de  conectar  una  memoria  USB  y  montarla  desde  el  dispositivo /dev/sda1  en /mnt/usbdata,  
podemos  ejecutar  el  siguiente  comando  para  desmontar  el  almacenamiento;

sudo  umount /mnt/usbdata

El  comando  desmontar

El  comando  umount  se  usa  para  desmontar  manualmente  sistemas  de  archivos  en  sistemas  operativos  Linux.
Este  es  el  proceso  inverso  al  realizado  con  el  comando  de  montaje .

Si  recordamos  el  comando  de  montaje ,  especificamos  el  tipo  de  almacenamiento,  el  nombre  del  dispositivo  (en  el  
directorio /dev )  y  dónde  queríamos  montarlo.

Un  uso  típico  podría  ser  el  siguiente;

sudo  mkdir /mnt/usbdata
sudo  mount /dev/sda1 /mnt/usbdata

Aquí  hemos  creado  un  directorio  que  servirá  como  punto  de  montaje  en  el  directorio /mnt  llamado  usbdata.  Luego  le  
indicamos  a  la  computadora  que  monte  el  dispositivo  en /dev/sda1  en /mnt/usbdata.
No  hemos  proporcionado  un  tipo  ya  que,  por  lo  general,  la  montura  puede  resolverlo  automáticamente  por  nosotros.

Desmontar  un  sistema  de  archivos  puede  ser  sustancialmente  más  fácil  ya  que  el  proceso  de  montar  un  dispositivo  ha  
hecho  el  trabajo  duro  en  términos  de  especificar  los  detalles  de  configuración.  Eso  significa  que  solo  necesitamos  
proporcionar  el  nombre  del  dispositivo  (/dev/sda1  en  este  caso)  o  el  punto  de  montaje  (/mnt/usbdata).  Podemos  ejecutar  
el  comando  con  esta  pequeña  información,  ya  que  tanto  el  nombre  del  dispositivo  como  el  punto  de  montaje  son  
exclusivos  del  almacenamiento  montado.

Por  lo  tanto,  los  tres  comandos  siguientes  son  equivalentes  entre  sí;

sudo  umount /dev/sda1
sudo  umount /mnt/usbdata
Machine Translated by Google

Comandos  Linux 135

sudo  umount /dev/sda1 /mnt/usbdata

Los  sistemas  de  archivos  montados  se  desmontan  automáticamente  cuando  una  computadora  se  apaga  de  manera  
normal.  Sin  embargo,  hay  ocasiones  en  las  que  es  necesario  desmontar  un  sistema  de  archivos  individual  mientras  la  
computadora  aún  está  en  funcionamiento.  Un  ejemplo  típico  es  cuando  se  extrae  un  dispositivo  externo,  como  una  
memoria  USB.  Si  eliminamos  este  tipo  de  almacenamiento  antes  de  que  el  sistema  de  archivos  se  desmonte  
correctamente,  es  posible  que  los  datos  escritos  recientemente  en  él  no  se  guarden  correctamente.

Desmontar  un  sistema  de  archivos  a  veces  puede  provocar  que  se  presenten  errores  en  la  pantalla.  El  informe  más  
común  es  que  el  sistema  de  archivos  está  ocupado.  Esto  sería  una  indicación  de  que  actualmente  está  siendo  utilizado  
por  algún  proceso.  Esto  podría  ocurrir  si  un  archivo  que  estaba  en  el  sistema  de  archivos  estaba  abierto  o  incluso  algo  
tan  simple  como  una  ventana  en  una  GUI  de  escritorio  que  muestra  los  archivos  que  se  muestran.  Esto  se  puede  
remediar  cerrando  cualquier  archivo  o  ventana  abierta.

Pruébate

1.  ¿Permanecerá  en  su  lugar  el  directorio  en  el  que  se  montó  el  sistema  de  archivos  si  el  sistema  de  archivos  está
¿desmontado?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 136

Información  del  sistema

fecha

El  comando  de  fecha  se  puede  usar  para  mostrar  la  fecha/hora  en  que  está  configurada  la  computadora  o  para  
configurar  la  fecha/hora  del  sistema.  Este  comando  puede  ser  útil  simplemente  para  indicar  la  fecha  o  la  hora  o  para  
un  propósito  más  serio  para  establecer  la  configuración  del  sistema.

•  fecha  [opciones]  +formato:  mostrar  o  establecer  la  fecha /  hora

El  uso  más  simple  del  comando  de  fecha  se  encuentra  ejecutando  el  comando  por  sí  mismo;

fecha

Esto  dará  como  resultado  algo  como  lo  siguiente:

sábado  23  de  enero  15:26:14  NZDT  2016

En  el  fondo,  el  comando  de  fecha  tiene  un  modelo  de  uso  simple,  pero  va  acompañado  de  algunas  opciones  de  
formato  considerables.

El  comando  de  fecha

El  comando  de  fecha  se  llama  así  debido  a  su  asociación  con  la  fecha  y  la  hora.  Como  tal,  su  uso  se  centra  en  un  par  
de  funciones  principales.  La  primera  es  que  se  puede  invocar  para  informar  la  hora.  Esto  se  puede  formatear  de  una  
manera  especificada  por  el  usuario.  La  segunda  función  importante  es  permitir  al  usuario  configurar  la  fecha/hora  del  
sistema.

Asociado  con  el  informe  y  la  fecha /  hora  de  configuración  está  el  formato  de  cada  uno  en  el  comando.
El  formato  de  visualización  puede  verse  afectado  por  el  uso  del  símbolo  más  (+)  y  luego  algunas  instrucciones  de  
formato  en  forma  de  una  cadena  de  opciones.  Por  ejemplo,  para  imprimir  solo  el  mes  actual  usando  su  nombre  
completo,  podemos  usar  el  control  de  formato  %B  de  la  siguiente  manera;

fecha  +"%B"

Esto  dará  como  resultado  algo  como  lo  siguiente:

Enero

Estas  opciones  de  visualización  se  pueden  combinar  para  crear  un  contexto  significativo.  Por  ejemplo;
Machine Translated by Google

Comandos  Linux 137

fecha  +"Esta  es  la  semana  %U  de  %Y"

Mostrará  el  texto  "Esta  es  la  semana  "  seguido  del  número  de  la  semana  del  año  y  luego  el  ""  y  luego  el  año  completo.  Similar  a  

texto de lo  siguiente;

Esta  es  la  semana  04  de  2016

La  lista  de  controles  de  formato  es  la  siguiente;

•  %%  un  %  literal

•  El  nombre  abreviado  del  día  de  la  semana  de  %a  localidad  (p.  ej.,  

Sun)  •  El  nombre  completo  del  día  de  la  semana  de  %A  

localidad  (p.  ej.,  domingo)  •  El  nombre  abreviado  del  mes  de  %b  

localidad  (p.  ej.,  enero)  •  El  nombre  completo  del  mes  de  %B  

localidad  (p.  ej.,  enero)  •  %  c  fecha  y  hora  del  entorno  local  (p.  ej.,  jueves  3  de  

marzo  23:05:25  2005)  •  siglo  %C ;  como  %Y,  excepto  que  omite  los  dos  

últimos  dígitos  (p.  ej.,  20)  •  %d  día  
del  mes  (p.  ej.,  01)  •  %D  fecha;  igual  

que  %m/%d/%y  •  %e  día  del  mes,  relleno  con  espacios;  igual  
que  %_d  •  %F  fecha  completa;  igual  que  

%Y­%m­%d  •  %g  últimos  dos  dígitos  del  año  del  número  de  semana  ISO  

(ver  %G)  •  %G  año  del  número  de  semana  ISO  (ver  %V);  normalmente  útil  solo  con  %V
•  %h  igual  que  %b

•  %H  hora  (00..23)  •  %I  

hora  (01..12)  •  %j  día  

del  año  (001..366)  •  %k  hora,  

espacio  rellenado  ( 0..23);  igual  que  %_H  •  %l  hora,  relleno  

con  espacio  ( 1..12);  igual  que  %_I  •  %m  mes  (01..12)  •  %M  
minuto  (00..59)  •  %n  una  

nueva  línea  •  %N  
nanosegundos  

(000000000..999999999)  •  %p  equivalente  local  de  AM  o  

PM;  en  blanco  si  no  se  conoce  •  %P  como  %p,  pero  en  minúsculas  •  %r  hora  del  reloj  
de  12  horas  de  la  localidad  (p.  ej.,  

11:11:04  p.  m.)  •  %R  hora  y  minuto  de  24  horas;  igual  que  %H:%M  •  
%s  segundos  desde  1970­01­01  00:00:00  UTC

•  %S  segundo  (00..60)  •  
%t  una  pestaña

•  %T  tiempo;  igual  que  %H:%M:%S

www.dbooks.org
Machine Translated by Google

Comandos  Linux 138

•  %u  día  de  la  semana  (1..7);  1  es  lunes  •  %U  
número  de  semana  del  año,  con  el  domingo  como  primer  día  de  la  semana  (00..53)  •  
%V  Número  de  semana  ISO,  con  el  lunes  como  primer  día  de  la  semana  (01..53)  •  
%w  día  de  la  semana  (0..6);  0  es  domingo  •  
%W  número  de  semana  del  año,  con  el  lunes  como  primer  día  de  la  semana  (00..53)  •  
Representación  de  fecha  de  %x  localidad  (p.  ej.,  31/12/99)  •  
Representación  de  hora  de  %X  localidad  (p.  ej.,  23:  13:48)  •  
%y  últimos  dos  dígitos  del  año  (00..99)  •  %Y  
año  •  %z  
+hhmm  zona  horaria  numérica  (p.  ej.,  ­0400)  •  %:z  
+hh:mm  zona  horaria  numérica  (p.  ej.,  ­04:00)  •  %::z  
+hh:mm:ss  zona  horaria  numérica  (p.  ej.,  ­04:00:00)  •  %:::z  zona  
horaria  numérica  con :  con  la  precisión  necesaria  (p.  ej.,  ­04,  +  05:30)  •  %Z  abreviatura  de  zona  
horaria  alfabética  (p.  ej.,  EDT)

Debido  a  que  la  acción  predeterminada  de  la  fecha  es  rellenar  los  campos  numéricos  con  ceros,  también  tenemos  un  rango  
de  banderas  opcionales  que  pueden  seguir  al  signo  %  para  modificar  los  controles  de  formato.  Esas  banderas  opcionales
son;

•  ­  (guión)  no  rellenar  el  campo  _  (guion  

bajo)  rellenar  con  espacios  •  0  (cero)  
rellenar  con  ceros

ˆ use  mayúsculas  si  es  posible  #  

• use  mayúsculas  si  es  posible

Por  ejemplo,  en  la  salida  anterior,  el  número  de  semana  del  año  se  devolvió  como  04.  Si  quisiéramos  eliminar  cualquier  
cero  inicial  en  esa  cifra,  podríamos  usar  el  comando  de  la  siguiente  manera;

fecha  +"Esta  es  la  semana  %­U  de  %Y"

Que  mostrará  lo  siguiente;

Esta  es  la  semana  4  de  2016

Opciones

Si  bien  hay  algunas  opciones  disponibles,  la  opción  más  útil  cuando  se  usa  la  fecha  es;

•  ­d  muestra  la  hora  especificada  por  una  cadena  adjunta  •  ­s  establece  
la  hora

•  ­u  establece  o  imprime  la  hora  universal  coordinada  (UTC)
Machine Translated by Google

Comandos  Linux 139

De  forma  predeterminada,  el  uso  de  la  fecha  sin  opciones  informará  sobre  la  hora  actual.  Sin  embargo,  la  
opción  ­d  nos  permite  solicitar  que  la  computadora  muestre  una  fecha  especificada  por  una  cadena  definida  
por  el  usuario.  Por  ejemplo,  para  mostrar  la  fecha  del  cuatro  de  julio  de  2001,  podríamos  ingresar  el  comando;

fecha  ­d  "4  DE  JULIO  DE  2001"

Que  mostrará  lo  siguiente;

miércoles  4  de  julio  00:00:00  NZST  2001

Podríamos  ser  perdonados  por  pensar  que  este  es  un  buen  truco,  pero  a  menos  que  realmente  quisiéramos  
saber  que  el  4  de  julio  de  2001  era  miércoles,  tenía  poca  utilidad.  Sin  embargo,  la  cadena  definida  por  el  
usuario  puede  incluir  más  descripciones  legibles  por  humanos  que  podrían  ser  útiles.  Por  ejemplo,  podríamos  
ingresar  cualquiera  de  las  siguientes  cadenas  y  obtener  una  salida  válida;

fecha  ­d  "ahora"
fecha  ­d  "el  próximo  jueves"
fecha  ­d  "ayer"
fecha  ­d  "año  pasado"
fecha  ­d  "hace  4  días"
fecha  ­d  "hoy  ­  1  año"  fecha  ­d  
"ayer  ­  1  año"

La  configuración  de  la  hora  se  realiza  con  la  opción  ­s .  Debido  a  que  esta  es  una  función  que  puede  tener  
consecuencias  de  gran  alcance  para  el  sistema  en  su  conjunto,  está  restringida  a  aquellos  con  privilegios  de  
administrador.  Por  lo  tanto,  debemos  anteponer  el  comando  de  fecha  con  sudo  o  ejecutar  el  comando  como  
usuario  raíz.

El  siguiente  comando  establecerá  la  fecha  y  hora  del  24  de  enero  de  2016  a  las  7:12;

fecha  sudo  ­s  "24  de  enero  de  2016  07:12:00"

Hay  bastante  flexibilidad  en  el  formato  de  la  hora  que  se  especifica,  pero  debido  a  que  el  comando  puede  ser  
lo  suficientemente  inteligente  como  para  ajustar  algunas  cosas  y  no  otras  o  para  tomar  el  comando  en  su  valor  
nominal  literal,  es  mejor  ser  tan  preciso  como  sea  posible.

El  tiempo  universal  coordinado  (que  se  abrevia  como  UTC)  es  el  estándar  de  tiempo  principal  por  el  cual  el  
mundo  regula  los  relojes  y  el  tiempo.  Anteriormente  se  conocía  como  hora  media  de  Greenwich  (GMT)  y,  
aunque  se  considera  que  UTC  es  intercambiable  con  GMT,  la  comunidad  científica  ya  no  la  define  con  
precisión.  Del  mismo  modo,  la  hora  'zulú'  es  una  descripción  de  GMT  que  utiliza  la  representación  fonética  de  
'Z'.  El  uso  de  UTC  es  común  en  los  círculos  militares  y  de  aviación,  ya  que  representa  un  punto  de  referencia  
común  para  el  tiempo  a  escala  global.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 140

También  es  posible  mostrar  la  hora  UTC  usando  la  opción  ­u .  (Aunque  también  se  puede  configurar  
usando  esta  opción,  esto  no  sería  algo  que  probablemente  debería  hacer  alguien  que  lea  un  libro  llamado  
'Just  Enough  Linux').

Pruébate

1.  Dar  formato  a  un  comando  de  fecha  para  informar  la  fecha  y  la  hora  mostrando  el  nombre  completo  
del  día  de  la  semana,  el  número  de  la  semana  en  el  año  (sin  ceros  a  la  izquierda)  y  el  año  en  el  
formato  "Domingo  de  la  semana  4  de  2016"
2.  Use  el  comando  de  fecha  para  informar  el  tiempo  Zulu  en  segundos  desde  la  época  de  Unix  (usted
probablemente  necesite  buscar  esto  en  Google  para  averiguar  qué  es).
Machine Translated by Google

Comandos  Linux 141

d.f.

El  comando  df  se  usa  para  informar  la  cantidad  de  espacio  libre  disponible  en  los  sistemas  de  archivos.  Este  es  un  comando  
vital  para  conocer  los  recursos  disponibles  en  un  sistema  y  uno  de  los  comandos  de  'ir  a'  para  solucionar  problemas  de  
sistemas  donde  el  volumen  de  almacenamiento  puede  ser  limitado.

•  Archivo  df  [opciones]:  muestra  la  cantidad  de  espacio  libre  en  los  sistemas  de  archivos.

Por  ejemplo,  usar  el  comando  df  solo  (sin  ninguna  opción)  podría  producir  algo  como  lo  siguiente;

d.f.

Produce…

Sistema  de   1K­bloques Usado  Disponible  Uso  %  Montado  en

archivos /dev/ 7549084  1055236  6159348  15% /

root  devtmpfs   469748 0 469748  0  % /desarrollo  

tmpfs   474052 0 474052  0  % /desarrollo/shm

tmpfs   474052 6356 467696  2% /ejecutar  5116  

tmpfs   5120 4 1% /ejecutar/bloquear

tmpfs / 474052 0 474052  0  % /sys/fs/cgroup  41088  34  % /


dev/mmcblk0p1 61384  20296 arranque

La  primera  columna  muestra  el  nombre  de  la  partición  del  disco  tal  como  aparece  en  el  directorio /dev .  Las  siguientes  
columnas  muestran  el  espacio  total,  los  bloques  asignados  y  los  bloques  disponibles.  La  columna  de  capacidad  indica  la  
cantidad  utilizada  como  porcentaje  de  la  capacidad  total  del  sistema  de  archivos.

La  última  columna  muestra  el  punto  de  montaje  del  sistema  de  archivos.  Este  es  el  directorio  donde  se  monta  el  sistema  de  
archivos  dentro  del  árbol  del  sistema  de  archivos .  Tenga  en  cuenta  que  la  partición  raíz  siempre  mostrará  un  punto  de  
montaje  de /.

El  comando  DF

El  comando  df  lleva  el  nombre  de  la  abreviatura  de  las  palabras  'disk  free'  y  lleva  a  cabo  esta  función  exacta  al  informar  la  

cantidad  de  espacio  utilizado  y  disponible  en  los  sistemas  de  archivos  montados .

Es  una  perogrullada  de  la  informática  que  las  necesidades  de  almacenamiento  aumentan  para  adaptarse  al  espacio  
disponible,  por  lo  que  vale  la  pena  tener  un  conjunto  de  herramientas  disponibles  que  puedan  determinar  la  cantidad  de  
volumen  que  tenemos  en  cualquier  pieza  particular  de  almacenamiento  conectado.  Solo  por  esta  razón,  se  recomienda  
encarecidamente  tener  un  buen  conocimiento  práctico  de  df  y  su  antiguo  compañero  du .

Si  bien  hay  varias  opciones  disponibles,  la  opción  más  útil  cuando  se  usa  df  es  ­h ,  que  informará  el  espacio  en  un  formato  
legible  por  humanos  para  que...

www.dbooks.org
Machine Translated by Google

Comandos  Linux 142

df­h

…  Producirá  …

Sistema  de   Tamaño  utilizado  %  de  uso  disponible  Montado  en

archivos /dev/root 7.2G  1.1G  5.9G  15% /
devtmpfs   459M 0  459M  0% /desv.
tmpfs   463M 0  463M  0% /desv/shm
tmpfs  463M  6.3M  457M  2% /ejecutar  tmpfs  5.0M  4.0K  5.0M  
1% /ejecutar/bloquear  0  463M  0% /sys/fs/cgroup  tmpfs /dev/
463M mmcblk0p1  60M  20M  41M  34% /
arranque

Aquí  podemos  ver  que  los  tamaños  de  los  sistemas  de  archivos  se  informan  en  kilobytes  (K),  megabytes  
(M)  y  gigabytes  (G).

También  podemos  ser  específicos  al  informar  el  espacio  libre  en  un  dispositivo  en  particular  proporcionando  
la  ruta  al  directorio  en  el  comando;

df /

…  Producirá  …

Sistema  de   1K­bloques Usado  Disponible  Uso  %  Montado  en

archivos /dev/root 7549084  1055592  6158992  15% /

También  podemos  determinar  el  espacio  disponible  en  un  sistema  de  archivos  especificando  un  directorio  
en  particular  y  el  comando  informará  el  espacio  restante  en  el  dispositivo  que  contiene  el  directorio  en  
particular;

df /casa

…  por  lo  tanto  producirá  …

Sistema  de   1K­bloques Usado  Disponible  Uso  %  Montado  en

archivos /dev/root 7549084  1055592  6158992  15% /

Tenga  en  cuenta  que  los  valores  devueltos  para  este  comando  son  los  mismos  que  para  df /.  Eso  es  
porque  el  directorio /  y /home  existen  en  el  mismo  dispositivo  montado  (/dev/root)
Machine Translated by Google

Comandos  Linux 143

df  obtiene  la  mayor  parte  de  su  información  del  superbloque  de  un  sistema  de  archivos  (que  es  un  registro  de  las  
características  de  un  sistema  de  archivos)  y,  como  resultado,  toma  esta  información  al  pie  de  la  letra  y  no  incluye  
archivos  abiertos  en  el  disco,  pero  incluirá  archivos  abiertos  en  la  memoria  y  archivos  de  datos/índice  utilizados  
para  la  gestión  de  datos.  Como  resultado,  no  se  puede  confiar  en  que  df  muestre  una  indicación  totalmente  precisa  
del  espacio  libre.

Pruébate

1.  ¿Cuál  sería  un  valor  de  espacio  disponible  dado  como  659348  (usando  el  comando  df  estándar )
sería  si  se  usara  el  modificador  ­h ?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 144

du

El  comando  du  se  usa  para  informar  la  cantidad  de  espacio  utilizado  por  archivos  y  directorios.  Este  es  un  comando  
vital  para  conocer  los  recursos  disponibles  en  un  sistema  y  uno  de  los  comandos  de  'ir  a'  para  solucionar  problemas  
de  sistemas  donde  el  volumen  de  almacenamiento  puede  ser  limitado.

•  archivo  du  [opciones]:  muestra  la  cantidad  de  espacio  utilizado  en  archivos  y  directorios

Por  ejemplo,  usando  el  comando  du  para  examinar  el  espacio  usado  en  el  directorio /var/log  y  sus  subdirectorios  de  
la  siguiente  manera...

du /var/registro

…  produce  …

12 /var/log/fsck /var/
4 log/ntpstats /var/log/
48 apt /var/log/
4 samba /var/log
2932

La  primera  columna  muestra  el  número  de  bloques  de  disco  utilizados  en  cada  directorio  (recordando  por  supuesto  
que /var/log  es  el  directorio  más  bajo  y  los  demás  son  subdirectorios  del  mismo).  La  segunda  columna  es  el  directorio  
sobre  el  que  se  informa.

el  comando  du

El  comando  du  lleva  el  nombre  de  la  abreviatura  de  las  palabras  "  uso  del  disco"  e  informa  los  tamaños  de  directorios,  
árboles  de  directorios  y  archivos.

Es  una  perogrullada  de  la  informática  que  las  necesidades  de  almacenamiento  aumentan  para  adaptarse  al  espacio  
disponible,  por  lo  que  vale  la  pena  tener  un  conjunto  de  herramientas  disponibles  que  puedan  determinar  la  cantidad  
de  volumen  que  tenemos  en  cualquier  pieza  particular  de  almacenamiento  conectado.  Solo  por  esta  razón,  se  
recomienda  encarecidamente  tener  un  buen  conocimiento  práctico  de  du  y  su  antiguo  compañero  df .

Si  bien  hay  varias  opciones  disponibles,  la  opción  más  útil  cuando  se  usa  du  son;

•  ­h  proporciona  un  formato  de  volumen  legible  por  humanos  
•  ­s  proporciona  un  total  resumido  del  uso  del  disco  •  ­­
time  incluye  la  hora  de  la  última  modificación  en  la  salida

Ingresando  el  mismo  comando  que  ejecutamos  para  el  directorio /var/log ,  pero  con  la  opción  ­h  se  nos  presenta  un  
reporte  diferente  de  los  tamaños  de  los  directorios;
Machine Translated by Google

Comandos  Linux 145

du  ­h /var/registro

…  produce  …

12K /var/log/fsck /var/
4.0K log/ntpstats /var/log/apt /
48K var/log/samba /
4.0K var/log
3,1  millones

Aquí  podemos  ver  que  los  tamaños  de  los  directorios  se  informan  como  kilobytes  (K),  megabytes  (M).
También  se  pueden  representar  como  gigabytes  (G),  terabytes  (T),  petabytes  (P),  exabytes  (E),  zettabytes  
(Z)  y  yottabytes  (Y).

A  modo  ilustrativo,  parece  poco  probable  que  los  yottabytes  se  utilicen  comúnmente  
en  el  futuro  inmediato  dado  que  equivalen  a  1 000 000 000 000 000 000 000 000  
bytes.  Aunque  me  sentiría  cómodo  estando  equivocado  en  este  punto.

Producir  una  lectura  resumida  del  disco  utilizado  con  la  opción  ­s  nos  permite  devolver  solo  una  lectura  
específica.  Por  ejemplo;

du  ­s /var/log

…  produce  …

3152 /var/registro

Dado  que  este  comando  es  enormemente  útil  para  encontrar  fallas,  también  es  útil  para  obtener  una  
indicación  de  la  hora  de  la  última  modificación  de  un  directorio.  Esto  ayuda  porque  si  tenemos  un  proceso  
que  está  escribiendo  en  un  directorio  y  llenándolo,  a  veces  el  directorio  más  grande  no  será  la  escena  
del  crimen,  pero  sí  lo  será  el  directorio  más  reciente.  Esta  comprobación  se  puede  realizar  con  la  opción  ­­time ;

df  ­­tiempo /var/registro

…  Producirá  …

www.dbooks.org
Machine Translated by Google

Comandos  Linux 146

pi@raspberrypi:~  $  du  ­­time /var/log
12 2015­11­22  07:51 /var/log/fsck /var/
4 2015­11­02  17:31 log/ntpstats /var/log/
48 2016­01­16  16:41 apt /var/log/
4 2015­03­08  01:13 samba /var/log
3152 2016­01­23  07:52

Una  restricción  de  du  es  que  los  tamaños  de  directorios  y  archivos  que  informa  no  son  números  exactos  y  son  
solo  aproximaciones.  Sin  embargo,  esto  no  resta  valor  a  su  función  de  determinar  dónde  podrían  estar  
ocurriendo  los  problemas.  La  otra  restricción  es  que  du  solo  se  puede  usar  para  estimar  el  espacio  utilizado  
para  directorios  y  archivos  para  los  que  el  usuario  tiene  permiso  de  lectura.  Es  posible  que  en  algunos  casos  
necesitemos  usar  sudo  o  ser  un  usuario  con  privilegios  de  administrador  del  sistema  para  ejecutar  el  comando  
con  éxito  (en  algunos  casos).

Pruébate

1.  ¿Qué  opciones  se  utilizarían  con  du  para  devolver  una  indicación  resumida  del  espacio  utilizado  con  
la  hora  de  modificación  mostrada?
Machine Translated by Google

Comandos  Linux 147

gratis

El  comando  free  muestra  la  cantidad  total  de  memoria  física  y  de  intercambio  libre  y  utilizada  en  el  sistema,  así  como  
los  búferes  utilizados  por  el  kernel  y  la  memoria  compartida.  De  la  misma  manera  que  df  y  du  pueden  informar  cómo  se  
utiliza  el  espacio  de  almacenamiento  en  los  medios  de  almacenamiento  físicos,  el  comando  free  puede  mostrar  cómo  
se  utiliza  la  memoria  (ram).  Este  es  otro  comando  útil  para  solucionar  problemas  y  comprender  el  rendimiento  del  
sistema.

•  libre  [opciones]:  muestra  información  sobre  la  memoria  libre  y  utilizada  en  el  sistema

Por  ejemplo,  si  escribimos  el  comando  de  la  siguiente  manera,  veremos  una  interesante  variedad  de  información;

gratis

…  produce  …

total usado gratis compartido tampones en  caché


Memoria: 948108 104116 843992 6364 9720 56040

­/+  búfer/caché: 38356 909752

Intercambio: 102396 0 102396

Esto  muestra  la  cantidad  total  de  memoria  física  y  de  intercambio  libre  y  utilizada  en  el  sistema,  así  como  los  búferes  
utilizados  por  el  kernel.  La  fila  etiquetada  como  'Mem'  también  muestra  la  cantidad  de  memoria  asignada  a  los  búferes,  
cachés  y  cuánta  memoria  se  comparte.

La  salida  del  comando  libre  puede  malinterpretarse  fácilmente,  ya  que  no  es  inmediatamente  obvio  sobre  qué  'actividad'  
de  la  memoria  se  informa,  por  lo  que  es  útil  tomarse  un  poco  de  tiempo  para  obtener  una  buena  base  en  los  términos  
para  formar  una  mejor  comprensión.

El  comando  libre

El  comando  free  se  llama  así  por  su  capacidad  para  informar  sobre  la  cantidad  de  memoria  libre  disponible  en  un  
sistema.  Pero  lo  que  debería  ser  obvio  del  resultado  del  ejemplo  anterior  es  que  la  memoria  se  usa  de  muchas  maneras  
diferentes.

En  primer  lugar,  seamos  claros  a  qué  nos  referimos  cuando  hablamos  de  memoria.  Específicamente,  esta  es  la  memoria  
utilizada  cuando  la  computadora  está  ejecutando  aplicaciones/sistema  operativo  y,  en  general,  procesa  datos.  Se  ocupa  
principalmente  de  la  asignación  de  memoria  de  acceso  aleatorio  (RAM)  en  contraposición  a  la  memoria  en  forma  de  
discos  duros  o  similares  que  almacenarán  información  de  manera  persistente.
Sin  embargo,  incluye  algo  de  memoria  que  existirá  en  los  discos  duros  para  complementar  la  memoria  RAM.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 148

Memoria  RAM

Para  comprender  mejor  la  salida,  debemos  considerarla  línea  por  línea  y  examinar  las  diversas  combinaciones  de  filas  y  
columnas.

Memoria

La  línea  Mem  se  refiere  a  la  memoria  física  disponible  en  el  sistema

Búferes/caché

Un  búfer,  también  llamado  memoria  intermedia,  generalmente  se  define  como  una  parte  de  la  memoria  que  se  reserva  
como  un  lugar  de  almacenamiento  temporal  para  los  datos  que  se  envían  o  reciben  desde  un  dispositivo  externo,  como  
un  disco  duro,  un  teclado,  una  impresora  o  una  red.  El  caché  es  una  ubicación  de  memoria  para  almacenar  datos  de  uso  
frecuente  para  un  acceso  más  rápido.  Los  datos  de  caché  se  pueden  usar  varias  veces,  mientras  que  la  memoria  
intermedia  se  usa  solo  una  vez.  Y  ambos  son  almacenes  temporales  para  su  procesamiento  de  datos.

Esta  línea  es  especialmente  relevante  con  respecto  a  las  aplicaciones,  ya  que  los  datos  a  los  que  se  accede  desde  los  
archivos  pasan  por  la  memoria  caché.  Por  lo  tanto,  el  caché  puede  acelerar  el  acceso  a  los  datos  al  reducir  el  requisito  
de  leer/escribir  desde/hacia  el  disco  duro  u  otro  almacenamiento  (dado  que  el  acceso  a  los  discos  duros  y  similares  es  
más  lento  que  la  RAM).

Intercambio

El  intercambio  se  refiere  a  la  memoria  que  se  ha  asignado  en  un  disco  duro  o  almacenamiento  similar  para  ayudar  al  
sistema  a  hacer  frente  a  situaciones  en  las  que  se  ha  quedado  sin  RAM.  El  uso  de  espacio  de  intercambio  puede  ser  una  
indicación  de  que  un  sistema  podría  requerir  más  recursos,  aunque  a  veces  esta  necesidad  puede  ser  extremadamente  
infrecuente  y  el  uso  podría  considerarse  una  compensación  aceptable  para  agregar  más  RAM  que  podría  no  usarse  con  
mucha  frecuencia.

Tenga  en  cuenta  que  cuando  se  usa  la  memoria  de  intercambio,  la  cantidad  que  se  muestra  como  
libre  aumentará,  pero  incluso  cuando  termine,  la  cantidad  'usada'  seguirá  mostrando  ese  valor  más  
alto  (ya  que  el  espacio  al  que  se  refiere  la  memoria  técnicamente  ha  sido  utilizado ).  Esto  puede  
ser  confuso  y  posiblemente  podría  llevarnos  a  pensar  que  hay  un  uso  constante  de  la  memoria  de  
intercambio  cuando  en  realidad  fue  momentáneo.

Total

La  columna  total  se  refiere  a  la  cantidad  total  de  memoria  disponible  en  la  RAM  o  en  el  disco  duro  (o  similar)  como  
memoria  compartida.

Usado
Machine Translated by Google

Comandos  Linux 149

La  columna  'usado'  es  potencialmente  la  más  confusa.  Esta  es  una  combinación  de  memoria  en  uso  para  aplicaciones  y  otra  
memoria  utilizada  'temporalmente' (búfer  +  caché)  que  está  disponible  si  es  necesario.  Entonces,  mientras  la  memoria  se  
usa  para  el  área  de  búfer /  caché,  gran  parte  de  esta  memoria  está  disponible  si  una  aplicación  lo  requiere.  La  memoria  
utilizada  'temporalmente'  se  toma  prestada  si  está  disponible  para  ayudar  a  mejorar  el  rendimiento;  de  lo  contrario,  el  sistema  
tendría  que  leer  del  disco  con  más  frecuencia.  Gran  parte  de  este  tipo  de  memoria  se  muestra  en  la  columna  "en  caché".

Gratis

Esta  es  memoria  libre  lista  para  ser  utilizada  cuando  sea  necesario.

Compartido

La  memoria  compartida  es  un  método  de  comunicación  entre  procesos  mediante  el  cual  varios  procesos  comparten  una  sola  
porción  de  memoria  para  comunicarse.  La  columna  compartida  enumera  la  cantidad  de  memoria  compartida  entre  esos  
múltiples  procesos.  A  menudo  aparece  como  obsoleto,  pero  la  columna  de  memoria  compartida  representa  el  valor  de  
MemShared  (en  los  núcleos  de  la  serie  2.4)  o  el  valor  de  Shmem  (en  los  núcleos  de  la  serie  2.6  y  posteriores)  tomados  del  
archivo /proc/meminfo.  El  valor  es  cero  si  el  núcleo  no  exporta  ninguna  de  las  entradas.

tampones

La  columna  de  búferes  muestra  la  cantidad  de  memoria  utilizada  por  la  memoria  caché  del  búfer  del  kernel.  La  memoria  
caché  del  búfer  se  utiliza  para  acelerar  las  operaciones  del  disco,  al  permitir  que  las  lecturas  y  escrituras  del  disco  se  realicen  
directamente  desde  la  memoria.  El  tamaño  de  la  memoria  caché  del  búfer  aumentará  o  disminuirá  a  medida  que  cambie  el  
uso  de  la  memoria  en  el  sistema.  Esta  memoria  se  reclama  si  las  aplicaciones  la  necesitan.

en  caché

La  columna  de  caché  nos  dice  cuántas  páginas  de  memoria  ha  almacenado  el  núcleo  para  un  acceso  más  rápido  más  tarde.
Dado  que  la  memoria  utilizada  para  los  búferes  y  la  caché  se  puede  recuperar  fácilmente  para  que  la  usen  las  aplicaciones,  
la  fila  ­/+  búferes/caché  proporciona  una  indicación  de  la  memoria  que  realmente  usan  las  aplicaciones  (la  columna  utilizada )  
o  disponible  para  las  aplicaciones  (la  columna  libre ).  La  suma  de  la  memoria  utilizada  por  los  búferes  y  la  caché  que  se  
informa  en  la  fila  Mem  se  resta  de  la  memoria  utilizada  total  y  se  suma  a  la  memoria  libre  total  para  dar  los  valores  usados  y  
libres  en  las  dos  cifras  de  la  fila  ­/+  búferes/caché .

Cálculo  de  búferes  usados/memoria  en  caché

www.dbooks.org
Machine Translated by Google

Comandos  Linux 150

Cálculo  de  búferes  libres/memoria  en  caché

Opciones

Si  bien  hay  varias  opciones  disponibles,  la  opción  más  útil  cuando  se  usa  gratis  es  ­h ,  que  informará  el  espacio  
en  un  formato  legible  por  humanos  para  que...

libre  ­h

…  Producirá  …

total usado gratis compartido tampones en  caché


Memoria: 925M 101M 823M 6,2  millones 10M 54M

­/+  búfer/caché: 36M 888M

Intercambio: 99M 0B 99M

Aquí  podemos  ver  que  los  tamaños  de  la  cantidad  de  memoria  libre  se  informan  en  megabytes  (M).  También  se  
pueden  representar  como  bytes  (B),  kilobytes  (K),  gigabytes  (G)  y  terabytes  (T).

libre  informará  que  hay  un  poco  menos  de  memoria  en  una  computadora  que  el  total  real.  Esto  se  debe  
principalmente  a  que  el  kernel  siempre  permanece  en  la  memoria  principal  mientras  la  computadora  está  en  
funcionamiento  y,  por  lo  tanto,  la  memoria  que  ocupa  nunca  se  puede  liberar.  También  puede  haber  regiones  
de  memoria  que  se  reservan  para  otros  fines,  según  la  arquitectura  específica  del  sistema.

Pruébate

1.  La  cantidad  total  de  intercambio  usado  es  alta  con  muy  poco  libre.  ¿Es  esto  malo?  ¿Qué  pasaría  si  vieras
exactamente  la  misma  figura  24  horas  después  de  notarlo  por  primera  vez?

2.  ¿La  memoria  'compartida'  es  relevante  hoy  en  día?
Machine Translated by Google

Comandos  Linux 151

Procesos

crontab
El  comando  crontab  le  da  al  usuario  la  capacidad  de  programar  tareas  para  que  se  ejecuten  en  un  momento  específico  o  con  
un  intervalo  específico.  Si  desea  ir  más  allá  del  uso  de  Linux  desde  una  interfaz  gráfica  de  usuario,  lo  más  probable  es  que  
desee  programar  una  tarea  para  que  se  ejecute  en  un  momento  o  intervalo  determinado.  Incluso  el  simple  hecho  de  aprender  
sobre  esto  podría  darle  ideas  de  lo  que  podría  hacer.

•  crontab  [­u  usuario]  [­l  |  ­r  |  ­e]:  programe  una  tarea  para  que  se  ejecute  en  un  momento  o  intervalo  determinado

Por  ejemplo,  puede  programar  una  secuencia  de  comandos  para  que  se  ejecute  todos  los  días  para  llevar  a  cabo  un  proceso  de  copia  de  
seguridad  en  medio  de  la  noche.  o  capturar  algunos  datos  cada  hora  para  almacenarlos  en  una  base  de  datos.

El  comando  crontab

El  comando  crontab  es  una  concatenación  de  'tabla  cron'  porque  utiliza  el  programador  de  trabajos  cron  para  ejecutar  tareas  
que  se  almacenan  en  una  especie  de  'tabla'  en  el  archivo  crontab  de  los  usuarios.  cron  lleva  el  nombre  de  'Khronos',  la  

personificación  griega  del  tiempo.

Si  bien  cada  usuario  que  configura  un  trabajo  para  que  se  ejecute  con  crontab  crea  un  archivo  crontab,  el  archivo  no  está  
diseñado  para  ser  editado  a  mano.  Se  encuentra  en  diferentes  ubicaciones  en  diferentes  tipos  de  distribuciones  de  Linux  y  el  
mecanismo  más  confiable  para  editarlo  es  ejecutar  el  comando  crontab  ­e .  Cada  usuario  tiene  su  propio  archivo  crontab  y  el  
usuario  root  puede  editar  el  archivo  crontab  de  otro  usuario.  Esto  sería

Sea  la  situación  en  la  que  usaríamos  la  opción  ­u ,  pero  honestamente,  una  vez  que  lleguemos  a  esa  etapa,  probablemente  
se  puede  asumir  que  sabemos  bastante  sobre  Linux.

Solo  hay  tres  opciones  principales  que  se  usan  con  crontab.

Opciones

La  primera  opción  que  debemos  examinar  es  la  opción  ­l  que  nos  permite  listar  el  archivo  crontab;

crontab­l

Una  vez  ejecutado,  mostrará  una  lista  del  contenido  del  archivo  crontab  directamente  en  la  pantalla.  La  salida  se  verá  algo  
así  como;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 152

#  Edite  este  archivo  para  introducir  tareas  que  ejecutará  cron.
#

#  Cada  tarea  a  ejecutar  debe  definirse  a  través  de  una  sola  línea  #  indicando  con  diferentes  campos  

cuándo  se  ejecutará  la  tarea
#  y  qué  comando  ejecutar  para  la  tarea
#

#  Para  definir  el  tiempo,  puede  proporcionar  valores  concretos  para  #  minuto  (m),  hora  (h),  día  

del  mes  (dom),  mes  (mon),  #  y  día  de  la  semana  (dow)  o  use  '*'  en  estos  campos  (para  

'cualquiera').#  #  Tenga  en  cuenta  que  las  tareas  se  iniciarán  según  el  sistema  del  cron

#  La  noción  de  daemon  de  tiempo  y  zonas  horarias.
#

#  La  salida  de  los  trabajos  crontab  (incluidos  los  errores)  se  envía  por  #  correo  electrónico  al  usuario  al  que  

pertenece  el  archivo  crontab  (a  menos  que  se  redirija).
#

#  Por  ejemplo,  puede  ejecutar  una  copia  de  seguridad  de  todas  sus  cuentas  de  usuario  #  a  las  5  am  cada  

semana  con:  #  0  5  *  *  1  tar  ­zcf /var/backups/

home.tgz /home/
#

#  Para  obtener  más  información,  consulte  las  páginas  de  manual  de  crontab(5)  y  cron(8)
#

#  mh  dom  mon  dow  comando

*/10  *  *  *  * /usr/bin/php /home/pi/scrape­books.php

Aquí  podemos  ver  que  la  parte  principal  del  archivo  (de  hecho,  todo  excepto  la  línea  final)  son  comentarios  que  explican  
cómo  incluir  una  entrada  en  el  archivo  crontab.

La  entrada  en  este  caso  está  especificada  para  ejecutarse  cada  10  minutos  y,  cuando  lo  haga,  ejecutará  el  script  PHP  
scrape­books.php  (explicaremos  cómo  se  codifica  esto  más  adelante  en  la  sección  de  ejemplos).

Si  queremos  eliminar  el  crontab  actual  podemos  usar  la  opción  ­r .  Probablemente  no  sea  algo  que  haríamos  regularmente,  
ya  que  sería  más  probable  editar  el  contenido  en  lugar  de  simplemente  eliminarlo  al  por  mayor.

Por  último,  existe  la  opción  de  editar  el  archivo  crontab  que  se  inicia  con  ­e.  Esta  es  la  opción  principal  que  se  usaría  y  la  
que  cubriremos  en  detalle  en  los  ejemplos  a  continuación.

Ejemplos

Como  ejemplo,  considere  que  deseamos  ejecutar  un  script  de  Python  todos  los  días  a  las  6  am.  El  siguiente  comando  nos  
permitirá  editar  el  crontab;

crontab  ­e

Una  vez  ejecutado,  se  abrirá  crontab  en  el  editor  predeterminado  de  su  sistema  (lo  más  probable  es  que  sea  'vi',  'vim'  o  
'nano').  El  archivo  se  verá  de  la  siguiente  manera;
Machine Translated by Google

Comandos  Linux 153

#  Edite  este  archivo  para  introducir  tareas  que  ejecutará  cron.
#

#  Cada  tarea  a  ejecutar  debe  definirse  a  través  de  una  sola  línea  #  indicando  con  diferentes  campos  

cuándo  se  ejecutará  la  tarea
#  y  qué  comando  ejecutar  para  la  tarea
#

#  Para  definir  el  tiempo,  puede  proporcionar  valores  concretos  para  #  minuto  (m),  hora  (h),  día  

del  mes  (dom),  mes  (mon),  #  y  día  de  la  semana  (dow)  o  use  '*'  en  estos  campos  (para  

'cualquiera').#  #  Tenga  en  cuenta  que  las  tareas  se  iniciarán  según  el  sistema  del  cron

#  La  noción  de  daemon  de  tiempo  y  zonas  horarias.
#

#  La  salida  de  los  trabajos  crontab  (incluidos  los  errores)  se  envía  por  #  correo  electrónico  al  usuario  al  que  

pertenece  el  archivo  crontab  (a  menos  que  se  redirija).
#

#  Por  ejemplo,  puede  ejecutar  una  copia  de  seguridad  de  todas  sus  cuentas  de  usuario  #  a  las  5  am  cada  

semana  con:  #  0  5  *  *  1  tar  ­zcf /var/backups/

home.tgz /home/
#

#  Para  obtener  más  información,  consulte  las  páginas  de  manual  de  crontab(5)  y  cron(8)
#

#  mh  dom  mon  dow  comando

Como  se  indicó  anteriormente,  el  archivo  predeterminado  obviamente  incluye  alguna  explicación  de  cómo  formatear  una  
entrada  en  el  crontab.  En  nuestro  caso,  deseamos  agregar  una  entrada  que  le  indique  al  script  que  comience  a  las  6  
horas  y  0  minutos  cada  día.  El  crontab  acepta  seis  piezas  de  información  que  permitirán  realizar  esa  acción.  cada  una  de  
esas  piezas  está  separada  por  un  espacio.

1.  Un  número  (o  rango  de  números),  m,  que  representa  el  minuto  de  la  hora  (valores  válidos
0­59);
2.  Un  número  (o  rango  de  números),  h,  que  representa  la  hora  del  día  (valores  válidos  0­23);  3.  Un  número  (o  rango  
de  números),  dom,  que  representa  el  día  del  mes  (valores  válidos
0­31);
4.  Un  número  (o  lista,  o  rango),  o  nombre  (o  lista  de  nombres),  mon,  que  representa  el  mes  del  año  (valores  válidos  
1­12  o  Ene­Dic);  5.  Un  número  (o  lista,  o  rango),  
o  nombre  (o  lista  de  nombres),  dow,  que  representa  el  día  de  la  semana  (valores  válidos  0­6  o  Dom­Sat);  y  6.  
comando,  que  es  el  comando  a  ejecutar,  
exactamente  como  aparecería  en  el  comando
línea.

Por  lo  tanto,  el  diseño  es  el  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 154

Permisos  de  Linux  como  rwx

Suponiendo  que  queremos  ejecutar  un  script  de  Python  llamado  'm_temp.py'  que  estaba  en  el  directorio  de  inicio  'pi',  la  
línea  que  querríamos  agregar  sería  la  siguiente;

0  6  *  *  * /usr/bin/python /home/pi/m_temp.py

Entonces,  en  el  minuto  0,  hora  6,  todos  los  días  del  mes  (donde  el  asterisco  indica  "todo"),  todos  los  meses,  todos  los  días  
de  la  semana,  ejecutamos  el  comando /usr/bin/python /home/pi/m_temp.py  ( lo  cual,  si  estuviéramos  en  la  línea  de  comando  
en  el  directorio  de  inicio  de  pi,  lo  ejecutaríamos  como  python  m_temp.py,  pero  dado  que  no  podemos  garantizar  dónde  
estaremos  cuando  ejecutemos  el  script,  proporcionamos  la  ruta  completa  al  comando  python  y  la  secuencia  de  comandos  
m_temp.py .

Si  quisiéramos  ejecutar  el  comando  dos  veces  al  día  (6  a.  m.  y  6  p.  m.  (1800  horas)),  podemos  proporcionar  un  valor  
separado  por  comas  en  el  campo  de  horas  (h)  de  la  siguiente  manera;

0  6,18  *  *  * /usr/bin/python /home/pi/m_temp.py

Si  quisiéramos  ejecutar  el  comando  a  las  6  a.m.  pero  solo  entre  semana  (de  lunes  a  viernes),  podemos  proporcionar  un  
rango  en  el  campo  dow  de  la  siguiente  manera  (recordando  que  0  =  domingo);

0  6  *  *  1­5 /usr/bin/python /home/pi/m_temp.py

Si  queremos  ejecutar  el  mismo  comando  cada  2  horas,  podemos  usar  la  notación  */2 ,  de  modo  que  nuestra  línea  en  el  
crontab  se  vería  de  la  siguiente  manera;

0  */2  *  *  * /usr/bin/python /home/pi/m_temp.py

Es  importante  tener  en  cuenta  que  debemos  incluir  el  0  al  principio  (en  lugar  del  *)  para  que  no  se  ejecute  cada  minuto  
cada  2  horas  (cada  minuto  en  otras  palabras)

Pruébate

1.  ¿Cómo  podría  configurar  un  trabajo  programado  en  crontab  que  se  ejecutara  cada  segundo?
2.  Cree  una  línea  crontab  para  ejecutar  un  comando  el  20  de  julio  de  cada  año  a  los  2  minutos
medianoche.
Machine Translated by Google

Comandos  Linux 155

matar

El  comando  kill  nos  permite  terminar  un  proceso  enviándole  una  señal.  Puede  enviar  diferentes  señales  
dependiendo  de  cuán  difícil  sea  detener  el  proceso.  Se  basa  en  conocer  el  número  de  identificación  del  
proceso  (PID)  del  proceso.  El  comando  kill  es  una  herramienta  administrativa  importante  para  garantizar  que  
un  sistema  funcione  correctamente.

•  matar  [opciones]  PID(s):  envía  una  señal  para  terminar  un  proceso  o  procesos  por  PID

Suponiendo  que  ya  hemos  establecido  que  el  PID  que  deseamos  terminar  es  el  798,  todo  lo  que  debemos  
hacer  es  ejecutar  el  siguiente  comando;

matar  798

No  hay  retroalimentación  en  la  línea  de  comandos  para  indicar  el  éxito  o  el  fracaso,  pero  esto  se  puede  lograr  
usando  un  comando  separado  como  ps.

El  comando  'matar'

El  objetivo  declarado  del  comando  de  matar  está  justo  ahí  en  el  nombre.  El  objetivo  es  matar  un  proceso  para  
detener  su  ejecución.  Esto  podría  deberse  a  que  debe  apagarse  de  manera  ordenada  como  una  función  
natural  de  lo  que  sea  que  esté  realizando  la  computadora,  o  podría  ser  necesario  para  intentar  detener  un  
programa  que  no  responde.  En  este  sentido,  es  muy  similar  al  comando  killall  que  matará  un  proceso  basado  
en  el  comando  de  origen  que  lo  ejecutó.

Uno  de  los  grandes  malentendidos  con  los  comandos  kill  y  killall  es  que  su  función  no  es  simplemente  
desconectar  un  proceso.  Su  trabajo  es  enviar  una  señal  a  un  proceso  pidiéndole  que  se  apague.  A  veces,  un  
proceso  se  resiste  a  la  instrucción  y  es  necesario  enviar  una  señal  más  seria.  El  comando  matar  puede  
manejar  eso.

Uno  de  los  aspectos  más  importantes  del  uso  del  comando  kill  es  que  necesitaremos  determinar  el  número  
de  identificación  del  proceso  (PID)  del  proceso  que  se  terminará  antes  de  ejecutar  el  comando  kill .  Para  ello  
un  par  de  buenas  opciones  son  los  comandos  ps  y/o  top .  Cualquiera  de  estos  se  puede  usar  con  sus  diversas  
opciones  para  determinar  el  PID  apropiado  y  armado  con  eso,  podemos  ver  el  uso  de  matar.

Como  se  mencionó,  la  función  del  comando  kill  es  enviar  una  señal  a  un  proceso.  El  rango  de  posibles  
señales  que  se  pueden  enviar  se  puede  encontrar  ejecutando  el  comando  kill  con  la  opción  ­l  (solo  para  
mayor  claridad,  es  una  L  minúscula ,  no  el  número  1).  Por  lo  tanto,  podemos  ejecutar  el  comando  de  la  
siguiente  manera;

matar  ­l

…  lo  que  dará  como  resultado  la  siguiente  lista  de  posibles  señales;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 156

1)  SUSCRÍBETE 2)  SEÑAL 3)  SEGUIR 4)  SEÑAL 5)  TRAMPA  DE  SEÑALES

6)  SIGABRT 7)  SIGBUS 8)  SIGFPE 9)  SIGA  MATA 10)  SIGUSR1


11)  SIGSEGV 12)  SIGUSR2 13)  TUBO  SIGNO 14)  SIGALRM 15)  SIGTERM
16)  SIGSTKFLT  17)  SIGCHLD 18)  SIGCONT 19)  SEÑAL  DE  PARADA 20)  SIGTSTP
21)  SEGUIR 22)  SÍGUETE 23)  SIGURG 24)  CPU  SIGX 25)  SIGXFSZ
26)  SIGVTALRM  27)  SIGPROF 28)  CABRESTANTE 29)  SIGIO 30)  SIGPWR
31)  SIGSYS 34)  SIGRTMIN 35)  SIGRTMIN+1  36)  SIGRTMIN+2  37)  SIGRTMIN+3
38)  SIGRTMIN+4  39)  SIGRTMIN+5  40)  SIGRTMIN+6  41)  SIGRTMIN+7  42)  SIGRTMIN+8
43)  SIGRTMIN+9  44)  SIGRTMIN+10  45)  SIGRTMIN+11  46)  SIGRTMIN+12  47)  SIGRTMIN+\  13

48)  SIGRTMIN+14  49)  SIGRTMIN+15  50)  SIGRTMAX­14  51)  SIGRTMAX­13  52)  SIGRTMAX­\
12
53)  SIGRTMAX­11  54)  SIGRTMAX­10  55)  SIGRTMAX­9  56)  SIGRTMAX­8  57)  SIGRTMAX­7
58)  SIGRTMAX­6  59)  SIGRTMAX­5  60)  SIGRTMAX­4  61)  SIGRTMAX­3  62)  SIGRTMAX­2
63)  SIGRTMAX­1  64)  SIGRTMAX

De  forma  predeterminada  (sin  especificar  una  señal),  el  comando  de  eliminación  utilizará  la  señal  
15  'SIGTERM'.  Si  un  proceso  resiste  este  esfuerzo  por  cerrarlo,  es  una  práctica  común  recurrir  a  la  
señal  9  que  es  'SIGKILL'.  Esto  se  lograría  de  la  siguiente  manera  (asumiendo  que  ya  habíamos  
establecido  que  el  PID  que  queríamos  terminar  era  798);

matar  ­9  798

Es  una  situación  inusual  encontrar  un  proceso  que  no  se  puede  terminar  con  un  comando  
kill  ­9 .  La  única  vez  que  esto  no  debería  ser  efectivo  es  si  el  proceso  realiza  una  solicitud  
al  núcleo  del  sistema  operativo  (el  núcleo).  Incluso  entonces,  cuando  haya  completado  la  
solicitud,  debería  morir.

Si  queremos  terminar  más  de  un  proceso,  simplemente  podemos  separarlos  con  un  espacio  de  la  siguiente  
manera;

matar  798  1234  666  999

Pruébate

1.  ¿Qué  señal  debe  usarse  primero  al  ejecutar  el  comando  de  eliminación ,  ­9  o  ­15?
Machine Translated by Google

Comandos  Linux 157

Mátalos  a  todos

El  comando  killall  nos  permite  terminar  un  proceso  o  procesos  enviándole  una  señal.  Puede  enviar  diferentes  
señales  dependiendo  de  cuán  difícil  sea  detener  el  proceso.  Es  extremadamente  similar  al  comando  kill  en  
su  función,  pero  no  se  basa  en  conocer  el  número  de  identificación  del  proceso  (PID)  del  proceso.  En  su  
lugar,  puede  usar  el  nombre  del  comando  del  proceso  de  origen  y,  como  resultado,  cuando  se  ejecuta,  
puede  terminar  todos  los  procesos  iniciados  con  ese  comando.  El  comando  killall  es  una  herramienta  
administrativa  importante  para  garantizar  que  un  sistema  funcione  correctamente.

•  nombre  del  comando  killall  [opciones]:  envía  una  señal  para  terminar  un  proceso  o  procesos
nombre

Suponiendo  que  ya  tenemos  un  proceso  llamado  top  ejecutándose,  todo  lo  que  tenemos  que  hacer  es  
ejecutar  el  siguiente  comando;

top  asesino

No  hay  retroalimentación  en  la  línea  de  comandos  para  indicar  el  éxito  o  el  fracaso,  pero  esto  se  puede  
lograr  usando  un  comando  separado  como  ps.

El  comando  'matar'

El  objetivo  declarado  del  comando  killall  está  en  el  nombre.  El  objetivo  es  matar  todos  los  procesos  con  un  
nombre  específico  para  detener  su  ejecución.  Eso  podría  deberse  a  que  deben  apagarse  de  manera  
ordenada  como  una  función  natural  de  lo  que  sea  que  esté  realizando  la  computadora,  o  podría  ser  
necesario  para  tratar  de  detener  los  programas  que  no  responden.

Uno  de  los  grandes  malentendidos  con  los  comandos  kill  y  killall  es  que  su  función  no  es  simplemente  
desconectar  un  proceso.  Su  trabajo  es  enviar  una  señal  a  un  proceso  o  procesos  pidiéndoles  que  se  
apaguen.  A  veces,  un  proceso  se  resiste  a  la  instrucción  y  es  necesario  enviar  una  señal  más  seria.  El  
comando  killall  puede  manejar  eso.

Puede  parecer  obvio,  pero  uno  de  los  aspectos  más  importantes  del  uso  del  comando  killall  es  que  
necesitaremos  determinar  el  nombre  del  proceso  que  se  terminará  antes  de  ejecutar  el  comando.  Para  ello  
un  par  de  buenas  opciones  son  los  comandos  ps  y/o  top .  Cualquiera  de  estos  se  puede  usar  con  sus  
diversas  opciones  para  determinar  el  nombre  apropiado  y  armado  con  eso,  podemos  ver  el  uso  de  killall.

Como  se  mencionó,  la  función  del  comando  killall  es  enviar  una  señal  a  un  proceso.  El  rango  de  posibles  
señales  que  se  pueden  enviar  se  puede  encontrar  ejecutando  el  comando  killall  con  la  opción  ­l  (solo  para  
mayor  claridad,  es  una  L  minúscula ,  no  el  número  1).  Por  lo  tanto,  podemos  ejecutar  el  comando  de  la  
siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 158

matar  todo  ­l

…  lo  que  dará  como  resultado  la  siguiente  lista  de  posibles  señales;

HUP  INT  SALIR  ILL  TRAP  ABRT  IOT  BUS  FPE  KILL  USR1  SEGV  USR2  TUBO  ALARMA  TÉRMINO
STKFLT  CHLD  CONT  STOP  TSTP  TTIN  TTOU  URG  XCPU  XFSZ  VTALRM  PROF  WINCH  IO  PWR  S\
YS
NO  USADO

De  forma  predeterminada  (sin  especificar  una  señal),  el  comando  de  eliminación  utilizará  la  señal  'SIGTERM'.  
Debemos  notar  en  esta  etapa  que  esta  señal  no  está  en  la  lista  de  señales  enumeradas  al  emitir  el  comando  
killall  con  la  opción  ­l .  Esto  se  debe  a  que  las  señales  enumeradas  allí  no  tienen  las  letras  'SIG'  delante  de  
ellas.  Entonces  si  quisiéramos  enviar  una  señal  'SIGKILL' ,  tendríamos  que  ejecutar  el  comando  con  la  opción  
­s  y  el  nombre  completo  de  la  señal  así  (asumiendo  que  ya  habíamos  establecido  que  el  proceso  top  era  el  
que  queríamos  para  terminar);

killall  ­s  SIGKILL  parte  superior

Es  una  situación  inusual  encontrar  procesos  que  no  se  pueden  terminar  con  un  comando  
killall  ­s  SIGKILL .  La  única  vez  que  esto  no  debería  ser  efectivo  es  si  los  procesos  
realizan  una  solicitud  al  núcleo  del  sistema  operativo  (el  kernel).  Incluso  entonces,  
cuando  hayan  completado  la  solicitud,  deberían  morir.

Si  queremos  terminar  más  de  un  proceso  con  nombre,  simplemente  podemos  separarlos  con  un  espacio  de  la  
siguiente  manera;

matar  todo  superior  nano

Esto  debería  terminar  los  procesos  top  y  nano.

Pruébate

1.  ¿Cuáles  son  las  diferencias  entre  el  comando  kill  y  el  comando  killall ?
Machine Translated by Google

Comandos  Linux 159

PD

El  comando  ps  muestra  una  instantánea  de  los  procesos  en  ejecución.  Al  igual  que  el  comando  top ,  el  
comando  ps  informará  sobre  procesos  con  características  asociadas  y  existe  una  amplia  gama  de  formas  
diferentes  en  las  que  se  pueden  presentar.  Sin  embargo,  donde  top  se  actualizará  continuamente,  ps  
proporciona  un  informe  fijo.  Este  es  otro  comando  útil  para  solucionar  problemas  y  comprender  el  
funcionamiento  del  sistema.

•  ps  [opciones]:  muestra  una  instantánea  de  los  procesos  actuales

Para  ver  una  lista  de  procesos  en  ejecución  podemos  ejecutar  el  siguiente  comando;

ps­aux  |  menos

En  realidad,  son  dos  comandos  en  los  que  la  salida  de  ps  se  canaliza  al  comando  less  para  que  la  larga  lista  
resultante  pueda  examinarse  una  página  a  la  vez.  La  primera  página  de  la  salida  se  verá  un  poco  así;

USUARIO PID  %CPU  %MEM VSZ  RSS  TTY COMANDO  DE  TIEMPO  DE  INICIO  STAT


raíz 1  0.0  0.4  5376  3944 ? Ss  06:08  0:07 /sbin/init  06:08  0:00  [kthreadd]  
raíz 2  0.0  0.0 0 0? S 06:08  0:01  [ksoftirqd/0]
raíz 3  0.0  0.0 0 0? S
raíz 5  0,0  0,0 0 0? S<  06:08  0:00  [kworker/0:0H]  06:08  0:03  [kworker/
raíz 6  0.0  0.0 0 0? S u8:0]  06:08  0:04  [rcu_preempt]  06:08  0:00  
raíz 7  0.0  0.0 0 0? S [rcu_sched]  06:08  0  :00  [rcu_bh]  06:08  
raíz 8  0,0  0,0 0 0? S 0:00  [migración/0]  06:08  0:00  
raíz 9  0,0  0,0 0 0? S [migración/1]  06:08  0:00  [ksoftirqd/
raíz 10  0,0  0,0 0 0? S 1]
raíz 11  0,0  0,0 0 0? S
raíz 12  0,0  0,0 0 0? S
raíz 14  0,0  0,0 0 0? S<  06:08  0:00  [kworker/1:0H]  06:08  0:00  [migración/
raíz 15  0,0  0,0 0 0? S 2]  06:08  0:00  [ksoftirqd/2]
raíz 16  0,0  0,0 0 0? S

El  resultado  muestra  una  sensación  similar  al  comando  superior  en  el  sentido  de  que  vemos  una  lista  de  
procesos  y  alguna  información  sobre  ellos,  pero  la  información  presentada  aquí  es  ligeramente  diferente.  
Las  opciones  utilizadas  con  el  comando  le  indicaron  que  enumerara  los  procesos  de  todos  los  usuarios  (­a),  
proporcionara  algunos  detalles  sobre  los  procesos  (u)  e  incluyera  procesos  que  no  tienen  un  terminal  de  
control  (x).  Este  es  un  comando  muy  común  para  administrar  un  sistema  Linux.

El  comando  ps

El  comando  ps  está  destinado  a  informar  el  estado  del  proceso  de  los  procesos  que  se  están  ejecutando  actualmente.

Si  se  ejecuta  sin  opciones,  devuelve  solo  cuatro  datos  sobre  al  menos  los  dos  procesos  que  se  ejecutarán.  
El  shell  y  el  ps  se  ordenan  a  sí  mismos.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 160

PD

…  produce  …

PID  TTY HORA  CMD

788  puntos/0   00:00:01  golpe

1642  puntos/0 00:00:00  p.d.

Aquí  podemos  ver  lo  siguiente;

•  El  ID  de  proceso  del  proceso  (788)  •  El  
TIPO  de  terminal  o  el  nombre  del  terminal  en  el  que  el  usuario  inició  sesión  (pts/0)  •  El  TIEMPO  
total  de  CPU  que  el  proceso  ha  utilizado  desde  que  comenzó  (00:00.01)  •  El  Comando  
que  se  utilizó  para  iniciar  el  proceso  (bash)

Obviamente,  esta  cantidad  de  información  es  un  poco  limitada,  por  lo  que  el  comando  ps  se  usa  normalmente  con  
una  combinación  de  opciones.

Opciones

Si  bien  hay  varias  opciones  disponibles,  se  usan  con  mayor  frecuencia  en  combinación  y  se  canalizan  a  less  o  grep  
para  controlar  la  información  devuelta.  Las  opciones  más  utilizadas  son;

•  ­a :  enumera  los  procesos  de  todos  los  
usuarios  •  ­u :  muestra  los  resultados  en  un  formato  
orientado  al  usuario  •  ­x :  incluye  procesos  sin  terminales  de  
control  •  ­e :  incluye  todos  los  procesos  que  se  están  ejecutando  
actualmente  •  ­f :  hace  una  lista  completa  de  detalles  de  los  procesos

Revisando  el  ejemplo  inicial  que  mostramos  anteriormente;

ps­aux  |  menos

Con  la  salida  (abreviada);
Machine Translated by Google

Comandos  Linux 161

USUARIO PID  %CPU  %MEM VSZ  RSS  TTY COMANDO  DE  TIEMPO  DE  INICIO  STAT


raíz 1  0.0  0.4  5376  3944 ? Ss  06:08  0:07 /sbin/init  06:08  0:00  [kthreadd]  
raíz 2  0.0  0.0 0 0? S 06:08  0:01  [ksoftirqd/0]
raíz 3  0.0  0.0 0 0? S
raíz 5  0,0  0,0 0 0? S<  06:08  0:00  [ktrabajador/0:0H]

Cuando  se  hace  en  la  terminal,  la  opción  ­a  asegurará  que  se  enumeren  todos  los  procesos  (aunque  menos  controlarán  
su  liberación).  La  opción  ­x  incluye  aquellos  procesos  que  no  tienen  terminales  de  control  y  la  opción  ­u  ha  presentado  la  
información  en  un  formato  más  detallado.  Las  distintas  columnas  en  el  formato  más  detallado  corresponden  a;

•  USUARIO :  El  usuario  bajo  el  cual  se  ejecuta  el  proceso.  •  
%CPU :  el  porcentaje  de  tiempo  que  el  proceso  ha  utilizado  la  CPU  desde  que  se  inició  el  proceso.  •  %MEM :  
el  porcentaje  de  memoria  real  utilizada  por  este  proceso.  •  VSZ :  El  tamaño  
(en  kilobytes)  del  proceso  en  la  memoria  virtual.  •  RSS :  El  tamaño  de  memoria  
real  del  proceso  (en  kilobytes).  •  STAT :  El  estado  del  proceso.  •  INICIO :  
Cuando  se  inició  el  proceso.  •  TIEMPO :  El  
tiempo  que  el  proceso  ha  estado  ejecutándose  •  
COMANDO :  El  comando  que  inició  el  proceso

La  columna  STAT  incluye  un  conjunto  de  códigos  para  describir  el  estado  de  los  procesos.  Estos  se  pueden  interpretar  
con  los  siguientes  caracteres;

•  D  suspensión  ininterrumpida  (generalmente  
IO)  •  R  en  ejecución  o  ejecutable  (en  cola  de  
ejecución)  •  S  suspensión  interrumpible  (esperando  que  se  complete  un  
evento)  •  T  detenido,  ya  sea  por  una  señal  de  control  de  trabajo  o  porque  se  está  
rastreando  •  W  paginación  ( no  es  válido  desde  el  kernel  
2.6.xx)  •  X  inactivo  (nunca  debe  verse)  
•  Z  proceso  difunto  (“zombie”),  terminado  pero  no  cosechado  por  su  padre  •  <  alta  prioridad  
(no  agradable  para  otros  usuarios)  •  N  bajo  ­prioridad  
(agradable  para  otros  usuarios)  •  L  tiene  
páginas  bloqueadas  en  la  memoria  (para  E/S  personalizadas  y  en  tiempo  real)  •  s  
es  un  líder  de  sesión
•  l  es  de  subprocesos  múltiples

•  +  está  en  el  grupo  de  procesos  de  primer  plano

La  otra  combinación  de  opciones  comúnmente  utilizada  es  la  siguiente;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 162

ps­ef  |  menos

Con  la  salida  (ligeramente  editada  para  mayor  claridad);

avahi 354 1  0  06:22 ? 00:00:00  avahi­daemon:  ejecutando  


ntp   627 1  0  06:22 ? 00:00:00 /usr/sbin/ntpd  ­p /var/run/ntpd  00:00:00  
pi   646 1  0  06:22 ? Xtightvnc  :1  ­desktop  X  ­auth  00:00:00 /bin/  sh /home/
pi   730 1  0  06:22 ? pi/.vnc/xstartup
pi   750 1  0  06:22 ? 00:00:00  autocutsel­tenedor
pi   753  730  0  06:22 ? 00:00:00 /bin/sh /etc/X11/Xsession  00:00:00  
pi  pi 773  753  0  06:22 ? xmessage  ­center  ­file  ­  00:00:00  sshd:  pi  
raíz 774  615  0  06:23 ? [priv]  00:00:00  sshd:  pi@pts/0
pi   784  774  0  06:23 ?
pi   787  784  0  06:23  ptos/0  980  787   00:00:00  ­bash
pi   0  06:56  ptos/0  981  787  0  06:56   00:00:00  ps­ef  
pi  pi ptos/0 00:00:00  grep  ­­color=auto  pi

Aquí  incluimos  todos  los  procesos  en  ejecución  con  la  opción  ­e  y  ­f  para  mostrar  detalles  adicionales.  Además  de  esto,  
hemos  canalizado  la  salida  a  grep ,  que  solo  devuelve  líneas  que  incluyen  'pi'  en  ellas  (con  la  idea  de  que  estamos  
buscando  procesos  asociados  con  el  usuario  'pi'.  Hay  una  pequeña  mosca  en  este  ungüento  en  el  forma  que  la  línea  
superior  que  normalmente  se  incluye  con  la  opción  ­f  forma  los  encabezados  de  columna  para  cada  columna  Entonces,  
para  explicar  las  columnas,  la  siguiente  es  la  salida  (resumida)  con  los  encabezados  de  columna  incluidos;

UID PID  PPID  C  STIME  TTY HORA  CMD


avahi 354 1  0  06:22 ? 00:00:00  avahi­daemon:  ejecutando  
ntp   627 1  0  06:22 ? 00:00:00 /usr/sbin/ntpd  ­p /var/run/ntpd  00:00:00  
pi   646 1  0  06:22 ? Xtightvnc  :1  ­desktop  X  ­auth  00:00:00 /bin/  sh /home/
pi   730 1  0  06:22 ? pi/.vnc/xstartup
pi   750 1  0  06:22 ? 00:00:00  autocutsel­tenedor
pi   753  730  0  06:22 ? 00:00:00 /bin/sh /etc/X11/Xsesión
pi  pi 773  753  0  06:22 ? 00:00:00  xmensaje  ­centro  ­archivo  ­  00:00:00  
raíz 774  615  0  06:23 ? sshd:  pi  [priv]

Las  columnas  se  relacionan  con;

•  UID :  ID  de  

usuario  •  PID :  ID  de  
proceso  •  PPID :  ID  de  proceso  
principal.  •  C :  utilización  del  procesador.  (el  valor  entero  del  porcentaje  de  uso  durante  la  vida  útil  del
proceso)  
•  STIME :  la  hora  de  inicio  del  proceso  •  TTY :  
tty  de  control  (terminal).  •  TIME :  tiempo  
de  CPU  acumulado,  formato  '[DD­]HH:MM:SS'  •  CMD :  el  comando  que  
se  ha  ejecutado
Machine Translated by Google

Comandos  Linux 163

Pruébate

1.  ¿Es  mejor  canalizar  la  salida  de  ps  a  less  o  grep?
2.  ¿Cuál  de  las  opciones  ­f  o  ­u  muestra  el  uso  de  memoria?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 164

arriba

El  comando  superior  se  usa  para  mostrar  un  resumen  en  tiempo  real  de  la  información  del  sistema  y  los  procesos  que  se  ejecutan  
en  la  computadora.  top  es  interactivo  y  puede  controlarse  y  configurarse  mientras  está  en  funcionamiento  para  ayudar  a  determinar  
diferentes  aspectos  del  funcionamiento  del  sistema.  Este  es  un  comando  extremadamente  útil  para  realizar  un  seguimiento  de  las  
demandas  cambiantes  en  el  sistema  y  los  cambios  a  medida  que  los  procesos  llevan  a  cabo  sus  tareas.

•  arriba  [opciones]:  sistema  de  visualización  e  información  del  proceso  en  tiempo  real

Por  ejemplo,  simplemente  ejecutando  top  desde  la  línea  de  comando  de  la  siguiente  manera;

arriba

…  producirá  una  salida  que  se  parece  a  esto;

superior  ­  08:50:22  hasta  2:41,  1  usuario,  promedio  de  carga:  0,00,  0,01,  0,05  Tareas:  86  en  total,  1  
en  ejecución,  85  en  reposo,  0  detenido,  0  zombi  %Cpu(s):  0,1  us,  0,2  sy ,  0.0  ni,  99.7  id,  0.0  wa,  0.0  hi,  
0.1  si,  0.0  st
Memoria  KiB: 948108  en  total,  139600  usados,  808508  gratis,  KiB  Swap:   14908  tampones

102396  en  total,  0  usados,  102396  gratis. 82084  memoria  caché

USUARIO  PID PR  NI VIRTUAL RES SHR  S  %CPU  %MEM TIEMPO+  COMANDO

1231pi 20  0 5092  2480  2148  R  0,7  0,3  0:00,15  superior


1026  raíz 20  0 0 0 0  S  0.3  0.0  0:02.66  ktrabajador/0:0
1  raíz 20  0 5376  3944  2792  S  0.0  0.4  0:05.79  sistemad
2  raíces 20  0 0 0 0  S  0.0  0.0  0:00.00  khilo
3  raíz 20  0 0 0 0  S  0.0  0.0  0:00.18  ksoftirqd/0  0  S  0.0  0.0  0:00.00  
5  raíz 0  ­20 0 0 ktrabajador/0:+
6  raíz 20  0 0 0 0  S  0.0  0.0  0:00.77  ktrabajador/u8+  0  S  0.0  0.0  0:00.32  
7  raíz 20  0 0 0 rcu_preempt
8  raíz 20  0 0 0 0  S  0.0  0.0  0:00.00  rcu_sched
9  raíz 20  0 0 0 0  S  0.0  0.0  0:00.00  rcu_bh
10  raíz rt  0 0 0 0  S  0.0  0.0  0:00.00  migración/0  0  S  0.0  0.0  0:00.00  
11  raíz rt  0 0 0 migración/1  0  S  0.0  0.0  0:00.01  ksoftirqd/1  0  S  0.0  0.0  
12  raíz 20  0 0 0 0:00.00  kworker/1:+  0  S  0.0  0.0  0:00.01  migración /2  0  
14  raíz 0  ­20 0 0 S  0.0  0.0  0:00.00  ksoftirqd/2  0  S  0.0  0.0  0:00.00  
15  raíz rt  0 0 0 ktrabajador/2:+
16  raíz 20  0 0 0
18  raíz 0  ­20 0 0

La  parte  superior  de  la  línea  superior  muestra  una  salida  que  nos  dice  cuánto  tiempo  ha  estado  funcionando  el  sistema  para  cuántos  
usuarios  hay  y  cuál  es  nuestra  carga.  La  segunda  línea  muestra  un  resumen  de  tareas  o
Machine Translated by Google

Comandos  Linux 165

procesos.  La  tercera  línea  da  una  indicación  del  estado  de  las  CPU.  Las  líneas  cuarta  y  quinta  muestran  una  
indicación  del  uso  de  la  memoria  similar  a  la  notificada  con  el  comando  libre .  Debajo  hay  una  tabla  que  
muestra  los  procesos,  sus  propiedades  y  estados.

La  información  que  se  muestra  se  actualizará  a  intervalos  regulares  (los  valores  predeterminados  pueden  variar,  pero  
aproximadamente  cada  3  segundos).  El  comando  superior  se  puede  detener  presionando  q  (para  salir).

El  comando  superior

El  comando  superior  es  uno  de  los  comandos  más  utilizados  para  monitorear  el  rendimiento  del  sistema  
principalmente  debido  a  la  amplia  gama  de  parámetros  que  se  pueden  ver  y  las  opciones  disponibles  para  
configurar  la  información  visualizada.  Se  llama  'superior'  ya  que  es  útil  para  identificar  a  los  principales  
usuarios  (procesos)  de  recursos  en  un  sistema.

Deberíamos  comenzar  con  una  descripción  de  los  diversos  parámetros  mostrados  en  la  vista  predeterminada  
y  luego  trabajar  con  los  comandos  interactivos  disponibles.

la  primera  línea

La  primera  línea  de  nuestro  ejemplo  se  ve  así;

arriba  ­  08:50:22  hasta  2:41,  1  usuario,  promedio  de  carga:  0.00,  0.01,  0.05

La  información  presentada  aquí  (en  orden)  es;

•  La  hora  actual  (08:50:22)  •  La  
cantidad  de  tiempo  que  el  sistema  ha  estado  'activo' (operando)  (2  horas  y  41  minutos)  •  El  
número  de  usuarios  conectados  (1)  •  La  
carga  promedio  en  el  sistema  en  el  último  minuto  (0,00),  cinco  minutos  (0,01)  y  15
minutos  (0.05)

la  segunda  linea

La  segunda  línea  de  nuestro  ejemplo  se  ve  así;

Tareas:  86  en  total,  1  corriendo,  85  durmiendo,  0  detenido,  0  zombi

La  información  presentada  aquí  (en  orden)  es;

•  La  cantidad  total  de  procesos  que  se  han  iniciado  en  el  sistema  (86)  •  La  cantidad  
de  procesos  en  ejecución  (1)  •  La  cantidad  
de  procesos  inactivos  (85)  •  La  cantidad  de  
procesos  zombie  (0)

Un  proceso  zombie  es  un  proceso  que  ha  completado  la  ejecución  pero  aún  tiene  una  entrada  
en  la  tabla  de  procesos:  es  un  proceso  en  el  'estado  Terminado'.  Tener  un  proceso  zombie  no  
es  necesariamente  algo  malo.  Por  lo  general,  aparece  porque  el  proceso  principal  aún  puede  
necesitar  leer  el  estado  de  salida  del  proceso  secundario  zombi/difunto

www.dbooks.org
Machine Translated by Google

Comandos  Linux 166

la  3ra  línea

La  tercera  línea  de  nuestro  ejemplo  se  ve  así;

%Cpu(s):  0.1  us,  0.2  sy,  0.0  ni,  99.7  id,  0.0  wa,  0.0  hi,  0.1  si,  0.0  st

La  información  presentada  aquí  (en  orden)  es;

•  El  porcentaje  de  CPU  asignado  a  los  procesos  de  usuario  (0,1)  •  El  
porcentaje  de  CPU  asignado  a  los  procesos  del  sistema  (0,2)  •  El  
porcentaje  de  procesos  de  CPU  con  una  actualización  prioritaria  (agradable)  (0,0)  •  El  
porcentaje  de  CPU  no  utilizado  (inactivo)  (99,7)  •  El  
porcentaje  de  procesos  de  CPU  en  espera  de  operaciones  de  E/S  (0,0)  •  El  
porcentaje  de  CPU  que  atiende  interrupciones  de  hardware  (0,0)  •  El  
porcentaje  de  CPU  que  atiende  interrupciones  de  software  (0,1)  •  El  
porcentaje  de  CPU  robado  por  el  hipervisor  para  otras  tareas  (0.0)

Las  líneas  4  y  5

Las  líneas  cuarta  y  quinta  de  nuestro  ejemplo  se  ven  así;

Memoria  KiB: 948108  en  total,  139600  usados,  808508  gratis,  KiB  Swap:  102396  en   14908  tampones

total,  0  usados,  102396  gratis. 82084  memoria  caché

La  cuarta  fila  muestra  cómo  se  utiliza  la  memoria  física  (RAM)  y  la  quinta  fila  muestra  el  mismo  tipo  de  utilización  
para  la  memoria  de  intercambio.

Memoria

La  línea  Mem  se  refiere  a  la  memoria  física  disponible  en  el  sistema.  Específicamente,  esta  es  la  memoria  utilizada  
cuando  la  computadora  está  ejecutando  aplicaciones/sistema  operativo  y,  en  general,  procesa  datos.  Es  la  
asignación  de  memoria  de  acceso  aleatorio  (RAM)  a  diferencia  de  la  memoria  en  forma  de  discos  duros  o  similar  
que  almacenará  información  de  manera  persistente.

Intercambio

El  intercambio  se  refiere  a  la  memoria  que  se  ha  asignado  en  un  disco  duro  o  almacenamiento  similar  para  ayudar  
al  sistema  a  hacer  frente  a  situaciones  en  las  que  se  ha  quedado  sin  RAM.  El  uso  de  espacio  de  intercambio  puede  
ser  una  indicación  de  que  un  sistema  podría  requerir  más  recursos,  aunque  a  veces  esta  necesidad  puede  ser  
extremadamente  infrecuente  y  el  uso  podría  considerarse  una  compensación  aceptable  para  agregar  más  RAM  
que  podría  no  usarse  con  mucha  frecuencia.

Tenga  en  cuenta  que  cuando  se  usa  la  memoria  de  intercambio,  la  cantidad  que  se  muestra  como  
usada  aumentará,  pero  incluso  cuando  termine,  la  cantidad  'usada'  seguirá  mostrando  ese  valor  más  
alto  (ya  que  el  espacio  al  que  se  refiere  la  memoria  técnicamente  se  ha  usado ).  Esto  puede  ser  
confuso  y  posiblemente  podría  llevarnos  a  pensar  que  hay  un  uso  constante  de  la  memoria  de  
intercambio  cuando  en  realidad  fue  momentáneo.
Machine Translated by Google

Comandos  Linux 167

Búferes/caché

Un  búfer,  también  llamado  memoria  intermedia,  generalmente  se  define  como  una  parte  de  la  memoria  que  se  reserva  
como  un  lugar  de  almacenamiento  temporal  para  los  datos  que  se  envían  o  reciben  desde  un  dispositivo  externo,  como  
un  disco  duro,  un  teclado,  una  impresora  o  una  red.  El  caché  es  una  ubicación  de  memoria  para  almacenar  datos  de  uso  
frecuente  para  un  acceso  más  rápido.  Los  datos  de  caché  se  pueden  usar  varias  veces,  mientras  que  la  memoria  
intermedia  se  usa  solo  una  vez.  Y  ambos  son  almacenes  temporales  para  su  procesamiento  de  datos.

Las  filas  cuarta  y  quinta  muestran  sus  respectivas  propiedades  de;

•  Memoria  total  disponible  •  
Cantidad  de  memoria  utilizada  •  
Cantidad  de  memoria  libre  •  
Cantidad  de  memoria  utilizada  como  búfer  de  memoria  para  almacenamiento  temporal  (14908)  •  
Cantidad  de  memoria  utilizada  como  caché  de  memoria  para  datos  de  uso  frecuente  (82084)

La  tabla  de  procesos

La  tabla  de  procesos  de  nuestro  ejemplo  se  parece  un  poco  a  la  siguiente  (ligeramente  truncada);

USUARIO  PID PR  NI VIRTUAL RES SHR  S  %CPU  %MEM TIEMPO+  COMANDO

1231pi 20  0 5092  2480  2148  R  0,7  0,3  0:00,15  superior


1026  raíz 20  0 0 0 0  S  0.3  0.0  0:02.66  ktrabajador/0:0
1  raíz 20  0 5376  3944  2792  S  0.0  0.4  0:05.79  sistemad
2  raíces 20  0 0 0 0  S  0.0  0.0  0:00.00  khilo

Esta  tabla  muestra  las  siguientes  propiedades  de  los  procesos;

•  El  ID  de  proceso  del  proceso  (1231)  •  El  
USUARIO  que  es  el  propietario  del  proceso  (pi)  •  La  
PRIoridad  del  proceso  (20)  •  El  valor  NIce  
del  proceso  (0)  •  La  memoria  VIRtual  
utilizada  por  el  proceso  (5092)  •  La  memoria  física  (o  
RESIDENTE)  utilizada  del  proceso  (2480)  •  La  memoria  COMPARTIDA  que  utiliza  el  
proceso  (2148)  •  El  estado  del  proceso  (S=dormido  R=ejecutando  
Z=zombie)  (R)  •  El  porcentaje  de  CPU  usado  por  el  proceso  (0.7)  •  El  porcentaje  
de  MEMORIA  de  acceso  aleatorio  usado  por  el  proceso  (0.3)  •  El  
TIEMPO  total  de  CPU  que  el  proceso  ha  usado  desde  que  comenzó  (0:00.15)  •  El  
COMANDO  que  se  usó  para  comenzar  el  proceso  (arriba)

Comandos  interactivos

Una  vez  que  se  ejecuta,  además  de  'q'  para  salir,  el  comando  más  útil  es  'h'  para  mostrar  la  pantalla  de  ayuda.
Esto  luego  mostrará  los  comandos  disponibles  para  arriba;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 168

Ayuda  para  comandos  interactivos  ­  procps­ng  versión  3.3.9  Ventana  1:Def:  modo  
acumulativo  desactivado.  Sistema:  Retraso  3.0  segundos;  Modo  seguro  Desactivado.

Z,B,E,e  Global:  colores  'Z';  'B'  en  negrita;  Resumen  'E'/'e'/escala  de  memoria  de  tareas  l,t,m
Alternar  resumen:  'l'  load  avg;  't'  estadísticas  de  tarea/cpu;  información  de  la  memoria  'm'
0,1,2,3,I  Alternar:  '0'  ceros;  '1/2/3'  cpus  o  vistas  de  nodo  numa;  'I'  Modo  Irix  f,F,X
Campos:  'f'/'F'  agregar/eliminar/ordenar/clasificar;  'X'  aumenta  el  ancho  fijo

L,&,<,> .  Ubicar:  'L'/'&'  buscar/de  nuevo;  Mover  columna  de  clasificación:  '<'/'>'  izquierda/derecha  R,H,V,J .  
Alternar:  Ordenar  'R';  Roscas  'H';  vista  al  bosque  en  'V';  'J'  Num  justifica  c,i,S,j .  Alternar:  'c'  Cmd  nombre/
línea;  'i'  inactivo;  Tiempo  'S';  'j'  Str  justificar
x,y .  Alternar  resaltados:  campo  de  clasificación  'x';  'y'  ejecutando  tareas.  Alternar:  
'z'  color/monocromo;  'b'  negrita/reversa  (solo  si  'x'  o  'y')  z,bu,U,o,O .  Filtrar  por:  'u'/'U'  efectivo/
cualquier  usuario;  'o'/'O'  otros  criterios  n,#,^O .  Establecer:  'n'/'#'  tareas  máximas  mostradas;  Mostrar:  
Ctrl+'O'  otro(s)  filtro(s)
C,... .  Alternar  el  mensaje  de  coordenadas  de  desplazamiento  para:  arriba,  abajo,  izquierda,  derecha,  inicio,  final

k,  r Manipular  tareas:  'k'  matar;  'r'  renice
d  o  s Establecer  intervalo  de  actualización

W,Y Escribir  el  archivo  de  configuración  'W';  Inspeccionar  otra  salida  'Y'
q Abandonar

(los  comandos  que  se  muestran  con  '.'  requieren  una  ventana  de  visualización  de  tareas  visible)
Presione  'h'  o  '?'  para  obtener  ayuda  con  Windows,  
escriba  'q'  o  <Esc>  para  continuar

¿Hay  muchas  opciones  allí?  Sí  hay.  No  vamos  a  trabajar  con  ellos  ya  que  creo  que  podría  haber  otro  libro  
que  los  describa  a  todos.  Sin  embargo,  puede  valer  la  pena  mencionar  uno  que  no  está  allí.  ¡'A'  alternará  
otra  pantalla  que  muestra  aún  más  información!  Sí.  top  es  el  regalo  que  sigue  dando.  Esto  mostrará  algo  
que  se  parece  un  poco  a  esto;

2:Trabajo  ­  17:26:58  hasta  11:18,  1  usuario,  promedio  de  carga:  0,00,  0,01,  0,05  Tareas:  88  en  
total,  1  en  ejecución,  87  en  reposo,  0  detenido,  0  zombi  %Cpu(s):  0,4  us,  0.6  sy,  0.0  ni,  99.0  id,  0.0  
wa,  0.0  hi,  0.0  si,  0.0  st
Memoria  KiB: 948108  en  total,  140676  usados,  807432  gratis,  KiB  Swap:   15740  tampones

102396  en  total,  0  usados,  102396  gratis. Memoria  caché  82108

1  USUARIO  PID PR  NI VIRTUAL RES SHR  S  %CPU  %MEM TIEMPO+  COMANDO


1  raíz 20  0 5376  3944  2792  S  0.0  0.4  0:06.71  sistemad
2  raíces 20  0 0 0 0  S  0.0  0.0  0:00.01  khilo
5  raíz 0  ­20 0 0 0  S  0.0  0.0  0:00.00  ktrabajador/0+
2  PID  PID TIEMPO+  %CPU  %MEM  PR  NI  S  VIRT  SWAP COMANDO  RES  UID
1530 2  0:00.00  0.0  0.0  20  0  S 0 0 0 0  kworke+
1529 2  0:00.00  0.0  0.0  20  0  S 0 0 0 0  kworke+
1528 2  0:00.00  0.0  0.0  20  0  S 0 0 0 0  kworke+
3  PID  %MEM INTERCAMBIO  VIRTUAL CÓDIGO  RES DATOS SHR  nMaj  nDRT  S  PR  NI
646  0.7 8772 0  6916  1212 4960  2428  10  0  S  20  0
Machine Translated by Google

Comandos  Linux 169

775  0.5  11072 0  4804 724 640  4180 0 0  S  20  0


614  0.5 7808 0  4288 724 592  3832  13 0  S  20  0
774  0.4 6888 0  4136 12 916  3272 1 0  S  20  0
4  PID  PPID  UID  USUARIO RUSUARIO TTY TIEMPO+  %CPU  %MEM  S  COMANDO
1 0 0  raíz raíz ? 0:06.71  0.0  0.4  S  sistemad
2 0 0  raíz raíz ? 0:00.01  0.0  0.0  S  kthreadd
3 2 0  raíz raíz ? 0:01.09  0.8  0.0  S  ksoftirqd+  0:00.00  0.0  
5 2 0  raíz raíz ? 0.0  S  kworker/0+

Sí...  Hay  aún  más  información  y  parámetros  para  explicar.  Pero  no  ahora.  Mientras  tanto,  
disfrute  de  la  maravilla  que  es  la  pantalla  superior  inicial  y  busque  el  próximo  libro  'Just  
Enough  top'.

Pruébate

1.  ¿En  qué  está  ordenada  la  tabla  de  procesos  en  la  parte  superior ?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 170

Red
rizo

El  comando  curl  está  diseñado  para  enviar  o  recibir  archivos  hacia  o  desde  un  servidor  remoto.  Funciona  
con  una  variedad  de  protocolos  y  se  ejecuta  de  forma  no  interactiva.  Tiene  una  función  similar  a  wget  pero  
admite  una  gama  más  amplia  de  protocolos  y  tiene  una  mayor  variedad  de  opciones  de  uso.  Sin  embargo,  
no  admite  descargas  recursivas.

•  curl  [opciones]  [URL]:  descargar  o  cargar  archivos  a  servidores  remotos.

Usando  un  ejemplo  de  descarga  de  un  archivo  de  la  web,  solo  es  necesario  usar  la  opción  ­O  y  proporcionar  
la  URL  del  archivo  que  se  requiere  y  comenzará  la  descarga;

enrollamiento  ­O  https://d3js.org/preview.png

El  programa  luego  se  conectará  al  servidor  remoto  y  comenzará  a  descargar  el  archivo  preview.png;

%  Total  %  Recibido  %  Xferd  Promedio  Velocidad  Tiempo Tiempo Tiempo  Actual

Descargar  Subir  Gasto  total Velocidad  izquierda
100  288k  100  288k 0 0  148k 0  0:00:01  0:00:01  ­­:­­:­­  148k

Hay  una  pantalla  de  progreso  de  actualización  mientras  continúa  la  descarga  y  luego  el  programa  finaliza  y  
nos  queda  una  indicación  de  las  estadísticas  involucradas  en  la  descarga.

El  archivo  se  descarga  en  el  directorio  de  trabajo  actual.

El  comando  de  rizo

curl  es  una  utilidad  que  nos  permite  descargar  y  subir  archivos  a  través  de  una  red.  Si  bien  es  similar  en  
función  a  wget,  hay  suficientes  diferencias  para  permitir  que  ambos  coexistan.  Para  el  95%  de  las  tareas  de  
descarga  realizadas  por  un  usuario  normal,  cualquier  opción  será  suficiente.  El  nombre  se  originó  a  partir  
de  la  frase  "Ver  URL" ,  donde  la  fonética  "Ver"  se  reemplazó  con  el  carácter  'c'.  El  motivo  del  nombre  es  
inherente  al  uso  del  programa.  Sin  ninguna  opción,  curl  hará  eco  del  contenido  de  una  página  web  en  la  
consola.  Solo  comienza  a  poder  escribir  archivos  en  el  almacenamiento  con  el  uso  de  opciones.

curl  es  conocido  por  tener  una  gama  extremadamente  amplia  de  opciones  y  flexibilidad  de  uso.  No  todos  
estos  van  a  ser  útiles  para  alguien  que  solo  quiere  mover  un  archivo,  pero  cuando  nos  enfrentamos  a  una  
tarea  de  carga/descarga  más  compleja,  curl  es  una  opción  viable.

La  gama  de  protocolos  compatibles  es  amplia  e  incluye  DICT,  FILE,  FTP,  FTPS,  GOPHER,  HTTP,  HTTPS,  
IMAP,  IMAPS,  LDAP,  LDAPS,  POP3,  POP3S,  RTMP,  RTSP,  SCP,  SFTP,  SMTP,  SMTPS,  TELNET  y  
TFTP .  Los  diferentes  protocolos  utilizados  están  especificados  por  la  URL  que  pasamos  como  parte
Machine Translated by Google

Comandos  Linux 171

del  comando  Utiliza  estos  protocolos  en  el  sentido  de  que  si  pudiera  pegar  una  URL  en  un  navegador  y  luego  descargar  
un  archivo,  el  mismo  archivo  podría  descargarse  desde  la  línea  de  comando  usando  curl.  curl  no  es  la  única  utilidad  de  
descarga  de  archivos  que  se  usa  comúnmente  en  Linux.  wget  también  se  usa  ampliamente  para  funciones  similares.  Sin  
embargo,  ambos  programas  tienen  diferentes  fortalezas  y,  en  el  caso  de  curl ,  esa  fortaleza  respalda  una  gama  más  
amplia  de  protocolos  y  opciones/flexibilidad.  También  hay  otras  diferencias,  pero  estas  serían  las  principales.

Existe  una  amplia  gama  de  opciones  que  se  pueden  utilizar  para  garantizar  que  las  descargas  se  configuren  correctamente.  
Examinaremos  algunos  de  los  ejemplos  más  básicos  a  continuación.

•  ­­limit­rate :  limita  la  velocidad  de  descarga /  tasa  de  descarga.  •  ­o :  descarga  
y  almacena  con  un  nombre  de  archivo  diferente

•  ­u :  especifica  la  autenticación  de  nombre  de  usuario  y  contraseña

Tasa  de  limitar  el  ancho  de  banda

Habrá  momentos  en  los  que  estaremos  en  algún  lugar  donde  el  ancho  de  banda  sea  limitado  o  queramos  priorizar  el  

ancho  de  banda  de  alguna  manera.  Podemos  restringir  la  velocidad  de  descarga  con  la  opción  ­­limit­rate  de  la  siguiente  
manera;

curl  ­O  ­­limit­rate  5k  https://d3js.org/preview.png

Aquí  hemos  limitado  la  velocidad  de  descarga  a  5  kilobytes  por  segundo.  La  cantidad  puede  expresarse  en  bytes,  kilobytes  
con  el  sufijo  k  o  megabytes  con  el  sufijo  m .

%  Total  %  Recibido  %  Xferd  Promedio  Velocidad  Tiempo  Tiempo Tiempo  Actual

Descargar  Subir  Gasto  total Velocidad  izquierda
100  288k  100  288k 0 0  5142 0  0:00:57  0:00:57  ­­:­­:­­  5425

La  tarifa  asignada  es  la  velocidad  promedio  experimentada  durante  la  transferencia.  curl  puede  usar  velocidades  mayores  
en  ráfagas,  pero  con  el  tiempo  se  aproxima  a  la  tasa  dada.  En  el  ejemplo  de  salida  anterior,  la  velocidad  de  descarga  
general  estuvo  justo  por  encima  de  la  velocidad  deseada  a  5142  bps.

Cambiar  el  nombre  del  archivo  descargado

Si  intentamos  descargar  un  archivo  con  el  mismo  nombre  en  el  directorio  de  trabajo,  sobrescribirá  el  archivo  
correspondiente.  Sin  embargo,  podemos  darle  al  archivo  un  nombre  diferente  cuando  lo  descargamos  usando  la  opción  
­o  (esa  es  una  'o'  minúscula  por  cierto).  Por  ejemplo  para  guardar  el  archivo  con  el  nombre  newpreview.png  haríamos  lo  
siguiente;

curl  ­o  nueva  vista  previa.png  https://d3js.org/preview.png

Descargar  varios  archivos

Podemos  descargar  varios  archivos  simplemente  incluyéndolos  uno  tras  otro  en  el  comando  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 172

curl  ­O  https://d3js.org/forkme.png  ­O  https://d3js.org/preview.png

Si  bien  eso  es  bueno,  puede  comenzar  a  ser  un  poco  confuso  si  se  incluye  una  gran  cantidad  de  URL.
La  salida  proporciona  una  pantalla  de  progreso  y  luego  un  resumen  de  las  transferencias  de  la  siguiente  manera;

%  Total  %  Recibido  %  Xferd  Promedio  Velocidad  Tiempo Tiempo Tiempo  Actual

Descargar  Subir  Gasto  total Velocidad  izquierda
100  9267  100  9267 0 0 930 0  0:00:09  0:00:09  ­­:­­:­­  2103
100  288k  100  288k 0 0  36503 0  0:00:08  0:00:08  ­­:­­:­­  47431

Descargar  archivos  que  requieren  un  nombre  de  usuario  y  contraseña  Los  

ejemplos  mostrados  hasta  ahora  se  pueden  descargar  sin  proporcionar  ningún  tipo  de  autenticación  (sin  usuario/contraseña).  
Sin  embargo,  esto  será  un  requisito  para  algunas  descargas.
Para  incluir  un  nombre  de  usuario  y  contraseña  en  el  comando  incluimos  la  opción  ­u .  Por  ejemplo,  si  necesitáramos  usar  
el  nombre  de  usuario  'adam'  y  la  contraseña  '1234',  hay  un  par  de  formas  en  las  que  podemos  proceder.  Podríamos  formar  
o  mandar  de  la  siguiente  manera;

curl  ­u  adam:1234  ftp://website.org/file.zip

Usted  puede  estar  pensando  para  sí  mismo  "¿Es  esto  seguro?".  A  lo  que  la  respuesta  probablemente  debería  ser  "No".  
Está  un  paso  por  encima  del  acceso  anónimo,  pero  no  mucho  más.  Este  no  es  un  método  por  el  cual  las  cosas  que  deben  
permanecer  privadas  deben  protegerse,  pero  proporciona  un  método  para  restringir  el  anonimato.
acceso.

Alternativamente  (siempre  y  cuando  no  se  ejecute  como  parte  de  un  script),  simplemente  podemos  incluir  el  nombre  de  
usuario  de  la  siguiente  manera  y  curl  solicitará  una  contraseña;

curl  ­u  adam  ftp://website.org/file.zip

Todavía  no  debemos  pretender  que  esto  es  completamente  seguro,  ya  que  si  bien  hemos  evitado  poner  la  contraseña  en  
el  historial  de  comandos  (es  decir,  podríamos  encontrarla  comprando  flechas  hacia  arriba),  todavía  hay  problemas  que  
resolver  en  numerosos  y  en  algunos  casos.  a  esotérico  para  mencionar.  En  caso  de  duda,  manténgase  alejado  de  Internet.

Pruébate

1.  Cree  un  comando  curl  que  descargue  un  archivo  con  un  nombre  diferente,  limitando  la  descarga
tasa  de  10  kilobytes  por  segundo.
2.  Una  vez  realizada  la  pregunta  1  anterior,  ¿dónde  encontramos  la  salida  de  las  descargas?
¿progreso?
Machine Translated by Google

Comandos  Linux 173

anfitrión

El  comando  host  se  usa  para  determinar  la  dirección  IP  de  una  computadora  a  partir  de  su  nombre  de  host  o  
viceversa.  El  comando  host  es  fácil  de  usar  y  proporciona  una  herramienta  útil  para  comprender  los  detalles  de  una  
red.

•  servidor  host  [opciones]:  verifica  la  dirección  IP  de  una  computadora  a  partir  de  su  nombre  de  host  o  viceversa
viceversa

El  ejemplo  más  simple  emplea  solo  el  comando  y  un  nombre  de  host  similar  al  siguiente;

anfitrión  nasa.org

Esto  producirá  el(los)  servidor(es)  cuyas  direcciones  IP  se  resuelven  a  partir  del  nombre  de  host  dado;

nasa.org  tiene  la  dirección  173.244.177.114

El  comando  anfitrión

El  comando  host  se  nombró  porque  está  buscando  efectivamente  información  sobre  un  'host'  donde  el  término  se  
refiere  a  un  servidor  en  red  que  está  conectado  y  al  que  se  hace  referencia  mediante  una  dirección  IP  y  un  nombre  
de  dominio.

Podríamos  preguntarnos  por  qué  necesitamos  poder  llevar  a  cabo  esta  función,  pero  la  respuesta  simple  a  esto  es  
que  Internet  es  un  lugar  complicado  y  las  redes  son  cosas  complicadas.  Para  poder  ir  a  lugares  en  Internet,  
confiamos  en  un  Sistema  de  Nombres  de  Dominio  (DNS)  que  puede  garantizar  que  cuando  nos  referimos  a  un  
servidor  en  Internet  por  su  nombre,  puede  encontrar  la  dirección  IP  correcta  a  la  que  deben  ir  los  datos.  Entonces,  
cuando  descubrimos  que  tenemos  problemas  para  resolver  la  dirección  correcta  de  un  servidor,  necesitamos  tener  
un  mecanismo  mediante  el  cual  podamos  probar  la  configuración  de  DNS  para  asegurarnos  de  que  todo  esté  
configurado  como  debe  ser.

Opciones

Existe  una  amplia  gama  de  opciones  que  se  pueden  mostrar  fácilmente  ejecutando  el  comando  de  host  sin  opciones  
ni  nombres  de  host;

•  ­a  es  equivalente  a  ­v  ­t  ANY  •  ­c  
especifica  la  clase  de  consulta  para  datos  que  no  
son  IN  •  ­C  compara  registros  SOA  en  servidores  de  nombres  
autorizados  •  ­d  es  
equivalente  a  ­v  •  ­l  enumera  todos  los  hosts  en  un  
dominio,  usando  AXFR  •  ­i  
Búsquedas  inversas  de  IP6.INT  •  ­N  cambia  el  número  de  puntos  permitidos  antes  de  realizar  la  búsqueda  raíz

www.dbooks.org
Machine Translated by Google

Comandos  Linux 174

•  ­r  deshabilita  el  procesamiento  recursivo  
•  ­R  especifica  el  número  de  reintentos  para  paquetes  UDP  •  
­s  una  respuesta  SERVFAIL  debe  detener  la  consulta  •  ­t  
especifica  el  tipo  de  consulta  •  ­T  
habilita  el  modo  TCP/IP  •  ­v  

habilita  la  salida  detallada  •  ­w  
especifica  esperar  eternamente  una  respuesta  •  ­W  
especifica  cuánto  tiempo  esperar  una  respuesta  •  ­4  
usar  solo  el  transporte  de  consultas  IPv4  •  
­6  usar  solo  el  transporte  de  consultas  IPv6  
•  ­m  establece  el  indicador  de  depuración  de  memoria  (rastreo|registro|uso)

Esta  es  una  gran  lista  y  para  los  administradores  e  ingenieros  de  redes,  brindan  una  gran  cantidad  de  funciones  de  prueba.  
Para  los  simples  mortales,  sugeriría  que  el  requisito  es  comprender  el  comando  sin  usar  opciones  y  quizás  la  opción  ­t .

La  opción  ­t  nos  permite  ser  selectivos  en  cuanto  al  tipo  de  registros  DNS  que  recibimos.  Hay  varios  tipos  de  recursos  
diferentes  que  se  pueden  especificar;

•  una  dirección  IP  IPv4
•  aaa  Dirección  IP  IPv6  •  

cname  registro  de  nombre  canónico  (Alias)  •  mx  
nombres  de  host  del  servidor  de  intercambio  de  
correo  electrónico  •  ns  nombre  (DNS)  
nombres  de  servidor  •  ptr  puntero  a  un  
nombre  canónico  •  soa  Información  autorizada  sobre  una  zona  DNS
•  registro  de  texto  txt

Por  ejemplo,  para  mostrar  solo  los  servidores  de  correo  de  google.com  podríamos  ejecutar  lo  siguiente;

anfitrión  ­t  mx  google.com

Esto  informará  los  servidores  responsables  de  administrar  el  correo  electrónico  para  google.com;

El  correo  de  google.com  es  manejado  por  40  alt3.aspmx.l.google.com.  El  
correo  de  google.com  es  manejado  por  20  alt1.aspmx.l.google.com.  El  correo  
de  google.com  está  a  cargo  de  10  aspmx.l.google.com.  El  correo  de  
google.com  es  manejado  por  50  alt4.aspmx.l.google.com.  El  correo  de  
google.com  es  manejado  por  30  alt2.aspmx.l.google.com.
Machine Translated by Google

Comandos  Linux 175

Pruébate

1.  ¿Qué  sucedería  si  ingresara  la  URL  www.google.com  en  un  navegador  si  no  hubiera
un  servicio  de  DNS  disponible?

2.  Está  ejecutando  el  comando  host  nasa.org  o  host  173.244.177.114  denominado  como
búsqueda  'inversa'?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 176

ifconfig

El  comando  ifconfig  se  puede  utilizar  para  ver  la  configuración  o  para  configurar  una  interfaz  de  red.  
La  creación  de  redes  es  una  función  fundamental  de  las  computadoras  modernas.  ifconfig  nos  permite  
configurar  las  interfaces  de  red  para  permitir  esa  conexión.

•  ifconfig  [argumentos]  [interfaz]

•  ifconfig  [argumentos]  interfaz  [opciones]

Usado  sin  'interfaz'  declarada,  ifconfig  mostrará  información  sobre  todas  las  interfaces  de  red  
operativas.  Por  ejemplo  correr;

ifconfig

…  produce  algo  similar  a  lo  siguiente  en  una  Raspberry  Pi  simple.

eth0 Enlace  encapsulado:  Ethernet  HWaddr  76:12:45:56:47:53
UP  BROADCAST  MULTICAST  MTU:1500  Métrica:1
Paquetes  RX:0  errores:0  descartados:0  desbordamientos:0  marco:0  
Paquetes  TX:0  errores:0  descartados:0  desbordamientos:0  portadora:0  
colisiones:0  txqueuelen:1000  Bytes  
RX:0  (0.0  B)  Bytes  TX :  0  (0,0  B)

hola Enlace  encapsulado:  bucle  invertido  local
dirección  inet:  127.0.0.1  Máscara:  255.0.0.0
UP  LOOPBACK  EJECUTANDO  MTU:65536  Métrica:1
Paquetes  RX:0  errores:0  descartados:0  desbordamientos:0  marco:0  
Paquetes  TX:0  errores:0  descartados:0  desbordamientos:0  portadora:0  
colisiones:0  txqueuelen:0  Bytes  
RX:0  (0.0  B)  Bytes  TX :  0  (0,0  B)

wlan0 Enlace  encapsulado:Ethernet  HWaddr  09:87:65:54:43:32
dirección  inet:  10.1.1.8  Bcast:  10.1.1.255  Máscara:  255.255.255.0
UP  BROADCAST  EJECUTANDO  MULTICAST  MTU:1500  Métrica:1
Paquetes  RX:  3978  errores:  0  descartados:  898  desbordamientos:  0  marco:  
0  Paquetes  TX:  347  errores:  0  descartados:  0  desbordamientos:  0  
operador:  0  colisiones:  0  txqueuelen:  
1000  Bytes  RX:  859773  (839.6  KiB)  Bytes  TX :  39625  (38,6  KiB)

El  resultado  anterior  se  divide  en  tres  secciones;  eth0,  lo  y  wlan0.
Machine Translated by Google

Comandos  Linux 177

•  eth0  es  la  primera  interfaz  Ethernet  y  en  nuestro  caso  representa  el  puerto  de  red  RJ45  en  la  Raspberry  Pi  (en  
este  caso  específico  en  un  modelo  B+).  Si  tuviéramos  más  de  una  interfaz  Ethernet,  se  llamarían  eth1,  eth2,  etc.

•  lo  es  la  interfaz  de  bucle  invertido.  Esta  es  una  interfaz  de  red  especial  que  el  sistema  usa  para  comunicarse  
consigo  mismo.  Puede  notar  que  tiene  asignada  la  dirección  IP  127.0.0.1.
Esto  se  describe  como  la  designación  del  'localhost'.
•  wlan0  es  el  nombre  de  la  primera  interfaz  de  red  inalámbrica  en  la  computadora.  Esto  refleja  una  interfaz  
inalámbrica  (si  está  instalada).  Cualquier  interfaz  inalámbrica  adicional  se  llamaría  wlan1,  wlan2,  etc.

El  comando  ifconfig

El  comando  ifconfig  se  usa  para  leer  y  administrar  la  configuración  de  la  interfaz  de  red  de  un  servidor  (por  lo  tanto,  
ifconfig  =  configuración  de  interfaz ).

Podemos  usar  el  comando  ifconfig  para  mostrar  la  información  de  configuración  de  red  actual,  configurar  una  dirección  
IP,  una  máscara  de  red  o  una  dirección  de  transmisión  en  una  interfaz  de  red,  crear  un  alias  para  la  interfaz  de  red,  
configurar  direcciones  de  hardware  y  habilitar  o  deshabilitar  interfaces  de  red.

ifconfig  ha  quedado  'obsoleto'  en  algunas  distribuciones  de  Linux,  lo  que  significa  que  el  software  ha  
sido  reemplazado  y,  donde  sea  práctico,  se  ha  utilizado  una  alternativa.  Aunque  está  obsoleto,  el  
comando  todavía  está  disponible,  aunque  su  uso  puede  generar  mensajes  de  advertencia  que  
recomiendan  prácticas  alternativas,  y  la  obsolescencia  puede  indicar  que  la  función  se  eliminará  en  
el  futuro.  Las  características  están  obsoletas  en  lugar  de  eliminarse  inmediatamente  para  proporcionar  
compatibilidad  con  versiones  anteriores.  En  el  caso  de  ifconfig,  la  alternativa  (que  discutiremos  en  
una  sección  aparte)  es  ip.

Para  ver  los  detalles  de  una  interfaz  específica,  podemos  especificar  esa  interfaz  como  argumento;

ifconfig  eth0

Lo  que  producirá  algo  similar  a  lo  siguiente;

eth0 Enlace  encap:Ethernet  HWaddr  b8:27:eb:2c:bc:62
dirección  inet:  10.1.1.8  Bcast:  10.1.1.255  Máscara:  255.255.255.0
UP  BROADCAST  EJECUTANDO  MULTICAST  MTU:1500  Métrica:1
Paquetes  RX:  119833  errores:  0  descartados:  0  desbordamientos:  0  marco:  
0  Paquetes  TX:  8279  errores:  0  descartados:  0  desbordados:  0  operador:  0  
colisiones:  0  txqueuelen:  1000  Bytes  
de  RX:  8895891  (8,4  MiB)  Bytes  de  TX :  879127  (858,5  KiB)

Los  detalles  de  configuración  que  se  muestran  arriba  se  pueden  interpretar  de  la  siguiente  manera;

•  Link  encap:Ethernet :  esto  nos  dice  que  la  interfaz  es  un  dispositivo  relacionado  con  Ethernet.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 178

•  HWaddr  b8:27:eb:2c:bc:62 :  esta  es  la  dirección  de  hardware  o  dirección  de  control  de  acceso  
a  medios  (MAC)  que  es  única  para  cada  tarjeta  Ethernet.  Algo  así  como  un  número  de  
serie.  •  inet  addr:10.1.1.8 :  indica  la  dirección  IP  de  la  interfaz.  
•  Bcast:10.1.1.255 :  indica  la  dirección  de  transmisión  de  las  
interfaces  •  Mask:255.255.255.0 :  es  la  máscara  de  red  para  esa  
interfaz.  •  ARRIBA :  indica  que  se  han  cargado  los  módulos  del  kernel  para  la  interfaz  
Ethernet.  •  BROADCAST :  nos  dice  que  el  dispositivo  Ethernet  admite  la  transmisión  (utilizado  
para  obtener  la  
dirección  IP  a  través  de  DHCP).  •  EN  EJECUCIÓN :  nos  permite  saber  
que  la  interfaz  está  lista  para  aceptar  datos.  •  MULTICAST :  indica  que  la  
interfaz  Ethernet  admite  multidifusión.  •  MTU:1500 :  la  abreviatura  de  Unidad  de  transmisión  
máxima  es  el  tamaño  
de  cada  paquete  recibido  por  la  tarjeta  Ethernet.  •  Métrica:  1 :  el  valor  de  la  métrica  de  una  
interfaz  decide  la  prioridad  del  dispositivo  (para  designar  cuál  de  más  de  un  
dispositivo  debe  usarse  para  enrutar  paquetes).  •  Paquetes  RX:  119833  errores:  0  descartados:  
0  overruns:  0  marco:  0  y  paquetes  TX:  8279  er  rs:  0  descartados:  0  overruns:  0  carrier:  0  ­  
Muestra  el  número  total  de  paquetes  recibidos  y  transmitidos  con  sus  respectivos  errores,  
número  de  paquetes  caídos  y  overruns  respectivamente.
•  colisiones:  0 :  muestra  el  número  de  paquetes  que  colisionan  al  atravesar  el
red.
•  txqueuelen:1000  ­  Nos  dice  la  longitud  de  la  cola  de  transmisión  del  dispositivo.  
•  Bytes  RX:  8895891  (8,4  MiB)  y  bytes  TX:  879127  (858,5  KiB) :  indica  la  cantidad  total  de  datos  
que  han  pasado  a  través  de  la  interfaz  Ethernet  en  transmisión  y  recepción.

Opciones

La  opción  principal  que  se  usaría  con  ifconfig  es  ­a ,  que  mostrará  todas  las  interfaces  en  las  
interfaces  disponibles  (las  que  están  'activas' (activas)  y  'inactivas' (apagadas).  El  uso  predeterminado  
del  comando  ifconfig  sin  ningún  argumento  u  opción  mostrará  solo  las  interfaces  activas.

ifconfig  ­a

Argumentos

Podemos  deshabilitar  una  interfaz  (bajarla)  especificando  el  nombre  de  la  interfaz  y  usando  el  sufijo  'abajo'  de  
la  siguiente  manera;

ifconfig  eth0  abajo

O  podemos  activarlo  (abrirlo)  especificando  el  nombre  de  la  interfaz  y  usando  el  sufijo  'arriba'  de  la  
siguiente  manera;
Machine Translated by Google

Comandos  Linux 179

ifconfig  eth0  arriba

Para  asignar  una  dirección  IP  a  una  interfaz  específica,  podemos  especificar  el  nombre  de  la  interfaz  y  usar  la  
dirección  IP  como  sufijo;

ifconfig  eth0  10.1.1.8

Para  agregar  una  máscara  de  red  a  una  interfaz  específica,  podemos  especificar  el  nombre  de  la  interfaz  y  usar  el  argumento  
de  máscara  de  red  seguido  del  valor  de  máscara  de  red;

ifconfig  eth0  máscara  de  red  255.255.255.0

Para  asignar  una  dirección  IP  y  una  máscara  de  red  al  mismo  tiempo  podemos  combinar  los  argumentos  en  el  
mismo  comando;

ifconfig  eth0  10.1.1.8  máscara  de  red  255.255.255.0

Pruébate

1.  Enumere  todas  las  interfaces  de  red  en  su  servidor.
2.  ¿Por  qué  podría  ser  una  mala  idea  rechazar  una  interfaz  de  red  mientras  se  trabaja  en  un  servidor?
remotamente?

3.  Muestre  la  información  sobre  una  interfaz  específica,  bájela,  vuelva  a  mostrar  la  información  y  luego  
súbala.  ¿Qué  diferencias  ves?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 180

ip

El  comando  ip  es  un  comando  de  configuración  de  red  relativamente  reciente  que  está  interviniendo  para  
reemplazar  el  comando  ifconfig  que  ha  quedado  obsoleto  (pero  aún  es  ampliamente  compatible).  Al  igual  
que  ifconfig,  se  puede  usar  para  ver  la  configuración  o  para  configurar  una  interfaz  de  red,  pero  tiene  una  
variedad  importante  de  funciones  adicionales  que  se  pueden  implementar  usando  su  arquitectura  de  
comando  flexible.  La  creación  de  redes  es  una  función  fundamental  de  las  computadoras  modernas.  ip  nos  
permite  configurar  interfaces  de  red  para  permitir  esa  conexión.

•  subcomando  de  objeto  ip  [opciones]  [parámetros]:  herramienta  de  configuración  de  red

Para  mostrar  la  información  sobre  todas  las  interfaces  de  red  operativas  en  el  sistema  actual,  podemos  
ejecutar  el  comando  de  la  siguiente  manera;

Mostrar  dirección  IP

…  produce  algo  similar  a  lo  siguiente  en  una  Raspberry  Pi  simple.

1:  lo:  <LOOPBACK,UP,LOWER_UP>  
mtu  65536  qdisc  noqueue  state  DESCONOCIDO  grupo  predeterminado  
enlace/bucle  invertido  00:00:00:00:00:00  brd  00:00:00:00:00:00  inet  
127.0.0.1/  8  host  de  ámbito  lo  valid_lft  
para  siempre  preferido_lft  para  siempre
inet6 ::  host  de  alcance  1/128
válido_lft  para  siempre  preferido_lft  para  siempre
2:  eth0:  <DIFUSIÓN,  MULTIDIFUSIÓN,  ARRIBA,  INFERIOR_ARRIBA>
mtu  1500  qdisc  pfifo_fast  state  UP  grupo  predeterminado  qlen  1000
link/ether  b8:45:e6:8c:9c:61  brd  ff:ff:ff:ff:ff:ff  inet  10.1.1.33/24  brd  
10.1.1.255  alcance  global  eth0  valid_lft  foreverferred_lft  forever  inet6  
fa80::1627:9266 :d35e:705f/64  enlace  de  alcance  
valid_lft  para  siempre  preferido_lft  para  siempre

3:  wlan0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  
mtu  1500  qdisc  mq  state  UP  group  default  qlen  1000
enlace/éter  83:2f:62:e4:d4:64  brd  ff:ff:ff:ff:ff:ff  inet  192.168.1.199/24  
brd  192.168.1.255  alcance  global  wlan0
valid_lft  para  siempre  preferido_lft  para  siempre  inet6  
fe80::44cc:e626:be2b:62a4/64  enlace  de  alcance  válido_lft  
para  siempre  preferido_lft  para  siempre

El  resultado  anterior  se  divide  en  tres  secciones;  lo,  eth0  y  wlan0.

•  lo  es  la  interfaz  de  bucle  invertido.  Esta  es  una  interfaz  de  red  especial  que  el  sistema  usa  para  
comunicarse  consigo  mismo.  Podemos  ver  que  tiene  asignada  la  dirección  IP  127.0.0.1.  Esto  se  
describe  como  la  designación  del  'localhost'.
Machine Translated by Google

Comandos  Linux 181

•  eth0  es  la  primera  interfaz  Ethernet  y  en  nuestro  caso  representa  el  puerto  de  red  RJ45  en  la  Raspberry  
Pi  (en  este  caso  específico  en  un  modelo  B+).  Si  tuviéramos  más  de  una  interfaz  Ethernet,  se  llamarían  
eth1,  eth2,  etc.
•  wlan0  es  el  nombre  de  la  primera  interfaz  de  red  inalámbrica  en  la  computadora.  Esto  refleja  un  adaptador  
USB  inalámbrico  (si  está  instalado).  Cualquier  interfaz  inalámbrica  adicional  se  llamaría  wlan1,  wlan2,  
etc.

Hay  una  cantidad  considerable  de  información  empaquetada  en  la  respuesta  al  comando.  No  lo  explicaremos  
todo,  pero  las  partes  que  podrían  considerarse  importantes  desde  un  punto  de  vista  básico  podrían  serlo;

•  ARRIBA :  indica  que  se  han  cargado  los  módulos  del  kernel  para  la  interfaz  Ethernet.  •  
LOWER_UP  nos  dice  el  estado  del  enlace  Ethernet.  En  este  contexto,  es  una  indicación  de  que  está  
conectado  (el  cable  está  enchufado  o  el  sistema  inalámbrico  está  configurado  correctamente)  y  puede  
ver  un  dispositivo  en  el  otro  extremo  de  la  conexión.
•  BROADCAST :  nos  dice  que  el  dispositivo  Ethernet  admite  la  transmisión  (utilizado  para  obtener  la  
dirección  IP  a  través  
de  DHCP).  •  MULTICAST :  indica  que  la  interfaz  Ethernet  admite  multidifusión.  •  mtu  
1500 :  la  abreviatura  de  unidad  de  transmisión  máxima  es  el  tamaño  máximo  de  los  paquetes  utilizados  
por  la  tarjeta  Ethernet.  •  
El  enlace/ether  es  la  dirección  de  hardware  o  la  dirección  de  control  de  acceso  a  medios  (MAC)  que  es  
única  para  cada  tarjeta  Ethernet.  Algo  así  como  un  número  de  serie.  En  el  caso  de  eth0  se  informa
como  b8:45:e6:8c:9c:61.
•  La  sección  inet  nos  muestra  la  dirección  IP  de  nuestra  interfaz  combinada  con  la  máscara  de  red  en  lo  
que  se  conoce  como  notación  CIDR.  En  el  caso  de  eth0  con  10.1.1.33/24  esto  nos  dice  que  es  la  
dirección  10.1.1.33  con  una  máscara  de  red  255.255.255.0.  •  en  la  
misma  línea  que  la  sección  inet ,  brd  denota  la  dirección  de  transmisión  de  las  interfaces  como
10.1.1.255

Una  alternativa  a  especificar  una  máscara  de  red  en  el  formato  '255.255.255.0'  es  usar  un  sistema  
llamado  Enrutamiento  entre  dominios  sin  clase  o  CIDR.  El  concepto  es  que  puede  agregar  una  
especificación  en  la  propia  dirección  IP  que  indica  la  cantidad  de  bits  significativos  que  componen  
la  máscara  de  red.

Por  ejemplo,  podríamos  designar  la  dirección  IP  10.1.1.33  como  asociada  con  la  máscara  de  red  
255.255.255.0  usando  la  notación  CIDR  de  10.1.1.33/24.  Esto  significa  que  los  primeros  24  bits  
de  la  dirección  IP  proporcionada  se  consideran  significativos  para  el  enrutamiento  de  la  red.

El  uso  de  la  notación  CIDR  nos  permite  hacer  algunas  cosas  muy  inteligentes  para  organizar  
nuestra  red,  pero  al  mismo  tiempo  puede  tener  el  efecto  de  asustar  a  la  gente  al  presentar  un  
tema  bastante  complejo  cuando  todo  lo  que  quieren  hacer  es  poner  en  marcha  su  red :­) .  
Entonces,  por  el  bien  de  esta  explicación,  podemos  suponer  que  si  quisiéramos  especificar  una  
dirección  IP  y  una  máscara  de  red,  podría  lograrse  especificando  cada  uno  por  separado  (dirección  
IP  =  10.1.1.33  y  máscara  de  red  =  255.255.255.0)  o  en  formato  CIDR  (10.1.1.33/24)

Cabe  señalar  que  el  comando  ip  tiene  una  variedad  de  opciones  de  abreviatura  para  sus  objetos,  comandos  y  
parámetros.  Esto  significa  que  el  ejemplo  anterior  podría  llevarse  a  cabo  fácilmente  con;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 182

Mostrar  dirección  IP

…  o  incluso  más  agresivamente  …

ip  como

el  comando  ip

El  comando  ifconfig  ha  quedado  obsoleto  y  su  función  ha  sido  reemplazada  por  varios  comandos  diferentes.  Uno  de  esos  comandos  
es  ip.  Ha  sido  nombrado  como  resultado  de  su  asociación  con  el  enrutamiento  de  red  y  la  subsiguiente  asociación  con  el  protocolo  

de  Internet ,  que  es  el  principal  protocolo  de  comunicaciones  en  el  conjunto  de  protocolos  de  Internet  para  retransmitir  datagramas  
a  través  de  los  límites  de  la  red.

El  comando  ip  está  diseñado  para  ser  lo  suficientemente  flexible  como  para  realizar  una  amplia  gama  de  tareas  de  red.  Obtiene  esta  
flexibilidad  a  través  del  diseño  de  la  sintaxis  que  emplea  donde  puede  combinar  un  objeto,  un  subcomando  y  parámetros.

Por  ejemplo,  objetos  a  los  que  se  puede  aplicar  para  incluir;

•  dirección :  una  dirección  de  protocolo  (IP  o  IPv6)  en  un  dispositivo.  •  
enlace :  un  dispositivo  de  red.  •  

maddress :  una  dirección  de  multidifusión.  •  

mroute :  una  entrada  de  caché  de  enrutamiento  de  

multidifusión.  •  ruta :  una  entrada  de  la  

tabla  de  enrutamiento.  •  regla :  una  regla  en  la  base  de  
datos  de  políticas  de  enrutamiento.  •  túnel :  un  túnel  sobre  IP.

Los  subcomandos  que  se  solicitan  incluyen  (sus  acciones  son  relativamente  autoexplicativas);

•  añadir

•  cambiar
•  borrar

•  al  ras

•  obtener

•  mostrar

•  guardar

•  establecer

•  actualizar
Machine Translated by Google

Comandos  Linux 183

Y  los  parámetros  que  se  pueden  configurar  incluyen;

•  dev  interface_name :  una  interfaz  de  red  (la  palabra  clave  dev  suele  ser  opcional)  •  up :  para  
encender  algo  •  down :  para  
apagar  algo  •  primario :  para  
establecer  una  prioridad  en  el  número  1  •  
secundario :  para  establecer  una  prioridad  en  el  
número  2  •  type :  un  tipo  de  
ruta  •  via :  una  puerta  de  enlace  a  
la  que  enrutar  •  default :  una  ruta  predeterminada

Por  lo  tanto,  ip  puede  usar  esta  combinación  de  objetos,  subcomandos  y  parámetros  para  formar  una  especie  de  
"lenguaje"  flexible  a  partir  de  su  combinación.

Ejemplos  de  uso

Los  siguientes  comandos  son  una  simple  instantánea  de  las  posibles  combinaciones,  pero  sirven  para  reforzar  
las  posibilidades  y  proporcionar  una  referencia  para  algún  uso  común.

Algunos  de  los  siguientes  ejemplos  requerirán  privilegios  de  administrador  y  es  posible  que  
deba  agregarles  el  prefijo  sudo  para  ejecutarlos  correctamente.

Para  mostrar  una  interfaz  de  red  específica  (wlan0);

Mostrar  dirección  IP  wlan0

Esto  mostrará  los  detalles  de  la  interfaz  wlan0  en  la  pantalla;

3:  wlan0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  
mtu  1500  qdisc  mq  state  UP  group  default  qlen  1000
enlace/éter  80:1f:02:f4:54:68  brd  ff:ff:ff:ff:ff:ff
inet  192.168.1.199/24  brd  192.168.1.255  alcance  global  wlan0
valid_lft  para  siempre  preferido_lft  para  siempre  inet6  
fe80::257f:586d:65c3:b83b/64  enlace  de  ámbito  valid_lft  para  
siempre  preferido_lft  para  siempre

Deshabilitar  la  interfaz  wlan0  (bajarla)  y  luego  mostrar  los  detalles;

enlace  ip  configurado  wlan0  inactivo
Mostrar  dirección  IP  wlan0

www.dbooks.org
Machine Translated by Google

Comandos  Linux 184

3:  wlan0:  <TRANSMISIÓN,  MULTITRANSMISIÓN>
mtu  1500  qdisc  mq  estado  ABAJO  grupo  predeterminado  qlen  1000
enlace/éter  80:1f:02:f4:54:68  brd  ff:ff:ff:ff:ff:ff

Para  habilitar  la  interfaz  wlan0  (para  subirla)  y  luego  mostrar  los  detalles;

enlace  ip  configurar  wlan0  
mostrar  dirección  ip  wlan0

3:  wlan0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  
mtu  1500  qdisc  mq  state  UP  group  default  qlen  1000
enlace/éter  80:1f:02:f4:54:68  brd  ff:ff:ff:ff:ff:ff
inet6  fe80::257f:586d:65c3:b83b/64  alcance  enlace  tentativo  valid_lft  para  
siempre  preferido_lft  para  siempre

Para  reemplazar  una  dirección  IP  y  una  máscara  de  red  en  formato  CIDR,  debemos  realizar  dos  pasos  
para  lograr  nuestro  objetivo.  En  primer  lugar,  debemos  agregar  nuestra  nueva  dirección,  que  agregará  
una  nueva  dirección  a  la  interfaz  como  dirección  secundaria  y  luego  debemos  eliminar  la  dirección  original.  
Esto  puede  parecer  un  paso  demasiado,  y  se  ha  hecho  la  pregunta  "¿Por  qué  no  usar  los  subcomandos  
de  reemplazar  o  cambiar ?".  Son  preguntas  válidas  y  la  respuesta  que  creo  que  es  la  más  lógica  es  que  
ya  podría  haber  más  de  una  dirección  para  la  interfaz,  en  cuyo  caso,  ¿cuál  sería  reemplazada/cambiada?  
Cualquiera  que  sea  el  caso  para  reemplazar  una  dirección  y  una  máscara  de  red  en  una  interfaz,  primero  
debemos  agregar  una  nueva  (y  aquí  también  la  hacemos  eco  en  la  pantalla  para  ver  la  dirección  
secundaria  resultante);

dirección  IP  agregar  192.168.1.198/24  dev  wlan0  
dirección  IP  mostrar  wlan0
Machine Translated by Google

Comandos  Linux 185

3:  wlan0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  
mtu  1500  qdisc  mq  state  UP  group  default  qlen  1000
enlace/éter  80:1f:02:f4:54:68  brd  ff:ff:ff:ff:ff:ff
inet  192.168.1.199/24  brd  192.168.1.255  alcance  global  wlan0
valid_lft  para  siempre  lft_preferido  para  siempre  inet  
192.168.1.198/24  alcance  secundario  global  wlan0  lft  válido  para  
siempre  lft_preferido  para  siempre  inet6  
fe80::257f:586d:65c3:b83b/64  enlace  de  alcance  lft  válido  
para  siempre  lft_preferido  para  siempre

…  Luego  quitamos  el  original  y  mostramos  los  detalles  de  la  interfaz;

eliminar  dirección  IP  192.168.1.199/24  dev  wlan0  
mostrar  dirección  IP  wlan0

3:  wlan0:  <BROADCAST,MULTICAST,UP,LOWER_UP>  
mtu  1500  qdisc  mq  state  UP  group  default  qlen  1000
enlace/éter  80:1f:02:f4:54:68  brd  ff:ff:ff:ff:ff:ff
inet  192.168.1.198/24  alcance  global  wlan0
valid_lft  para  siempre  prefered_lft  para  siempre  inet6  
fe80::257f:586d:65c3:b83b/64  enlace  de  alcance  valid_lft  
para  siempre  prefered_lft  para  siempre

El  comando  ip  es  un  comando  muy  poderoso  con  una  amplia  gama  de  opciones  y  una  sintaxis  flexible.
Hay  elementos  en  el  comando  que  se  enfocan  más  directamente  en  los  usuarios  avanzados,  pero  hay  
usos  que  un  principiante  encontrará  esenciales.

Pruébate

1.  Muestre  cómo  se  puede  usar  el  subcomando  replace  para  cambiar  la  dirección  de  una  red
interfaz.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 186

netstat

El  comando  netstat  nos  permite  mostrar  información  de  conexión  de  red,  incluido  el  tráfico  entrante  y  
saliente  y  una  variedad  de  estadísticas  de  interfaz  de  red.  Es  una  herramienta  de  uso  común  para  
administrar  y  solucionar  problemas  de  conexión  de  red  y  es  una  gran  fuente  de  información  sobre  cómo  
nuestra  computadora  está  conectada  con  el  mundo  exterior.

•  netstat  [opciones]:  herramienta  de  monitoreo  de  conexión  de  red

La  clave  para  usar  netstat  está  en  el  uso  de  las  opciones  para  controlar  la  salida.  Hay  mucha  información  
que  se  puede  mostrar  usando  el  comando  y  comprender  las  opciones  es  importante  para  filtrar  los  datos  
que  nos  interesan  o  para  mostrar  el  tipo  de  información  que  queremos.  En  el  siguiente  ejemplo,  usando  la  
opción  ­a ,  mostraremos  todas  las  conexiones  a  Internet  y  los  sockets  de  dominio  que  están  asociados  con  
las  conexiones  de  red  que  hemos  configurado  (esta  es  una  versión  abreviada  para  ahorrar  papel);

netstat­a

Conexiones  a  Internet  activas  (servidores  y  establecidas)
Proto  Recv­Q  Send­Q  Dirección  local  Dirección  externa  tcp  tcp  tcp  tcp  tcp6  udp   Estado
udp   0 0  *:5901 *:* ESCUCHAR

0   0 0  *:  ssh *:* ESCUCHAR

0 64  10.1.1.33:ssh 10.1.1.225:52535 ESTABLECIDO


0 0  10.1.1.33:ssh 10.1.1.225:53168 ESTABLECIDO
0 0  [::]:  ssh [::]:* ESCUCHAR

0 0  *:56800 *:*
0 0  192.168.1.199:ntp  udp  0  
10.1.1.33:ntp  udp   *:*
0 0  *:ntp  0  [::]:mdns  udp6  Activo  
localhost:ntp  udp   *:*
0
Sockets  de  dominio  
UNIX  (servidores  y   *:*
establecidos) 0 *:*
0 [::]:*

Proto  RefCnt  Flags  Tipo  unix  2   Estado Ruta  de  nodo  I


[ DGRAM  [ [ ACC ]  STREAM   6919 /var/ejecutar/wpa_supplicant/wlan0  4720 /
unix  2 ] ] DGRAM ejecutar/systemd/notificar
unix  2 [ [ [ ACC ]   ESCUCHANDO  4722 /run/systemd/private
unix  2 DGRAM 4738 /ejecutar/systemd/apagar  4740 /
unix  8 ] ] DGRAM ejecutar/systemd/diario/dev­log
unix  2 SEQPACKET  LISTENING  4744 /run/udev/control  [ ACC ]  STREAM  
unix  2 [ [ ACC ]  STREAM   ESCUCHA  4748 /run/systemd/diario/stdout  4750 /run/systemd/
unix  5 [ ] DGRAM diario/socket
unix  2 ESCUCHA  5775 /var/run/avahi­daemon/socket
unix  2 ] DGRAM 1447 /ejecutar/systemd/diario/syslog
Machine Translated by Google

Comandos  Linux 187

unix  2 [ ] DGRAM 5800 /var/run/thd.socket


unix  2 [ ACC ]  CORRIENTE   ESCUCHANDO  7338 /var/run/dhcpcd.sock
unix  2 DGRAM 7342
unix  3 [ [ ] ] ARROYO CONECTADO  7995

Obviamente,  esto  es  mucha  información  (y  la  he  reducido  a  la  mitad  para  reproducirla  aquí).
La  clave  es  saber  cómo  analizar  la  información  que  estamos  buscando.

La  salida  se  divide  en  dos  partes.  En  primer  lugar  las  conexiones  a  Internet  a  las  que  se  refieren  las  respectivas  columnas;

•  Proto :  el  nombre  del  protocolo  •  
Recv­Q :  el  recuento  de  bytes  no  copiados  por  el  programa  de  usuario  conectado  a  este  socket  •  Send­Q :  el  
recuento  de  bytes  no  reconocidos  por  el  host  remoto  •  Dirección  local :  dirección  y  número  
de  puerto  del  extremo  local  del  zócalo.  •  Dirección  Extranjera :  Dirección  y  número  de  puerto  del  
extremo  remoto  del  socket.  •  Estado :  El  estado  del  socket.  Normalmente,  este  puede  ser  uno  de  varios  
valores:  –  ESTABLECIDO :  El  socket  tiene  una  conexión  establecida.

–  SYN_SENT :  el  socket  está  intentando  activamente  establecer  una  conexión.
–  SYN_RECV :  Se  ha  recibido  una  solicitud  de  conexión  de  la  red.
–  FIN_WAIT1 :  el  socket  está  cerrado  y  la  conexión  se  está  cerrando.
–  FIN_WAIT2 :  la  conexión  está  cerrada  y  el  socket  está  esperando  un  apagado  del
extremo  remoto.

–  TIME_WAIT :  el  socket  está  esperando  después  de  cerrar  para  manejar  los  paquetes  que  aún  están  en  la  red.
–  CERRAR :  El  zócalo  no  está  siendo  utilizado.
–  CLOSE_WAIT :  el  extremo  remoto  se  ha  apagado,  esperando  que  se  cierre  el  socket.
–  LAST_ACK :  el  extremo  remoto  se  ha  apagado  y  el  socket  está  cerrado.  Esperando  reconocimiento.

–  LISTEN :  El  socket  está  escuchando  las  conexiones  entrantes.  Estos  conectores  no  se  incluyen  en  la  salida  a  
menos  que  especifiquemos  la  opción  –escuchar  (­l)  o  –todos  (­a).
–  CIERRE :  Ambos  sockets  están  cerrados  pero  todavía  no  tenemos  todos  nuestros  datos  enviados.
–  DESCONOCIDO :  El  estado  del  socket  es  desconocido.

En  segundo  lugar,  los  sockets  de  dominio  activos  a  los  que  se  refieren  las  columnas;

•  Proto :  El  protocolo  (usualmente  Unix)  usado  por  el  socket.  •  RefCnt :  el  
recuento  de  referencia  (es  decir,  los  procesos  adjuntos  a  través  de  este  socket)  •  Banderas :  
la  bandera  que  normalmente  se  muestra  es  ACC  (rara  vez  también  W  para  datos  de  espera  o  N  para  sin  espacio).  ACC  
se  usa  en  sockets  no  conectados  si  sus  procesos  correspondientes  están  esperando  una  solicitud  de  conexión.

•  Tipo :  Hay  varios  tipos  de  acceso  a  socket,  incluidos;
–  DGRAM :  el  socket  se  utiliza  en  el  modo  Datagram  (sin  conexión).
–  STREAM :  Este  es  un  socket  de  flujo  (conexión).
–  RAW :  el  zócalo  se  utiliza  como  un  zócalo  sin  formato.

–  RDM :  este  sirve  mensajes  entregados  de  manera  confiable.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 188

–  SEQPACKET:  Este  es  un  socket  de  paquete  secuencial.
–  PAQUETE :  socket  de  acceso  de  interfaz  sin  formato.

–  DESCONOCIDO :  para  tipos  desconocidos  o  
futuros  •  Estado :  este  campo  contendrá  una  de  las  siguientes  palabras  clave;  
–  FREE :  el  socket  no  está  asignado  –  
LISTENING :  el  socket  está  escuchando  una  solicitud  de  conexión.  (solo  se  incluye  en  la  salida  si  
especificamos  la  opción  ­l  o  ­a) .
–  CONECTANDO :  El  enchufe  está  a  punto  de  establecer  una  conexión.
–  CONECTADO :  La  toma  está  conectada.
–  DESCONECTANDO :  La  toma  se  está  desconectando.  
–  (vacío) :  El  enchufe  no  está  conectado  a  otro.  •  I­Node :  el  número  
de  inodo  único.  •  Path :  este  es  el  nombre  de  
la  ruta  por  la  cual  los  procesos  correspondientes  se  adjuntaron  al  socket.

Como  ya  hemos  observado,  hay  mucha  información  aquí  y  la  clave  es  comprender  los  métodos  de  uso  de  netstat  
para  filtrar  y  descubrir  esa  información.  Ejemplos  de  esto  siguen.

El  comando  netstat

netstat  es  un  comando  que  se  puede  usar  para  monitorear  una  variedad  de  información  sobre  el  subsistema  de  red  
de  Linux.  El  tipo  de  información  que  se  muestra  está  controlado  por  la  primera  opción,  de  la  siguiente  manera:

•  (ninguno):  de  forma  predeterminada,  netstat  muestra  una  lista  de  sockets  
abiertos.  •  ­a :  muestra  las  conexiones  a  Internet  y  los  sockets  de  dominio  asociados  con  la  red
conexiones

•  ­i :  muestra  una  tabla  de  todas  las  interfaces  de  red.  •  
­M :  muestra  una  lista  de  conexiones  enmascaradas.  •  ­s :  
Mostrar  estadísticas  de  resumen  para  cada  protocolo.

Al  mostrar  las  conexiones  a  Internet  y  los  sockets  de  dominio  con  la  opción  ­a ,  podemos  modificar  aún  más  la  
información  devuelta  especificando  el  protocolo  con  ­t  para  TCP  y  ­u  para  conexiones  UDP.  Por  lo  tanto,  el  siguiente  
comando  con  las  opciones  ­at  mostrará  todas  las  conexiones  a  Internet  y  los  sockets  de  dominio  que  usan  el  
protocolo  TCP  de  la  siguiente  manera;

netstat  ­en
Machine Translated by Google

Comandos  Linux 189

Conexiones  a  Internet  activas  (servidores  y  establecidas)
Proto  Recv­Q  Send­Q  Dirección  local  Dirección  extranjera  tcp  0  *:5901  *:*  tcp  tcp  tcp   Estado

tcp  tcp6 0 ESCUCHAR

0 0  *:x11­1 *:* ESCUCHAR

0 0  *:  ssh *:* ESCUCHAR

0 0  10.1.1.8:ssh 10.1.1.25:52535 ESTABLECIDO


0 256  10.1.1.8:ssh 10.1.1.25:53168 ESTABLECIDO
0 0  [::]:  ssh [::]:* ESCUCHAR

De  la  misma  manera  podemos  mostrar  un  resumen  de  las  estadísticas  de  red  solo  para  el  protocolo  UDP  con  el  siguiente  comando;

netstat­su

UDP:
738  paquetes  recibidos  0  paquetes  
a  puerto  desconocido  recibidos.  0  errores  de  recepción  de  
paquetes  617  paquetes  enviados  
IgnoredMulti:  9610

UdpLite:
IpExt:
Paquetes  InMcast:  159
OutMcastPaquetes:  22
InBcastPkts:  9610
En  octetos:  3576306
OutOctets:  543235
InMcastOctetos:  17183
OutMcastOctetos:  5198
InBcastOctetos:  1712994
InNoECTPkts:  17471

Cuando  queramos  mostrar  un  resumen  de  las  interfaces  de  red  podemos  usar  la  opción  ­i  de  la  siguiente  manera;

netstat  ­i

…  para  producir  una  salida  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 190

Iface  MTU  Met  RX­OK  RX­ERR  RX­DRP  RX­OVR  TX­OK  TX­ERR  TX­DRP  TX­OVR  Flg
eth0  1500  0  18296 0 0 0  3222 0 0 0  BMRU
hola 65536  0 0 0 0 0 0 0 0 0  LRU
wifi0  1500  0  6561 0 1 0 108 0 0 0  BMRU

Pero  para  obtener  un  informe  extenso  sobre  las  interfaces,  podemos  combinar  la  opción  ­i  con  e  de  la  siguiente  manera;

netstat  ­es  decir

…  para  producir;

Tabla  de  interfaz  del  núcleo
eth0 Enlace  encap:Ethernet  HWaddr  bd:37:a1:8c:8c:22
dirección  inet:  10.1.1.33  Bcast:  10.1.1.255  Máscara:  255.255.255.0
dirección  inet6:  feb0::1627:9566:445e:907f/64  Alcance:  Enlace
UP  BROADCAST  EJECUTANDO  MULTICAST  MTU:1500  Métrica:1
Paquetes  RX:  18412  errores:  0  descartados:  0  desbordamientos:  0  marco:  
0  Paquetes  TX:  3296  errores:  0  descartados:  0  desbordados:  0  operador:  0  
colisiones:  0  txqueuelen:  1000  Bytes  
RX:  2265470  (2,1  MiB)  Bytes  TX:  688861  (672,7  KiB)

hola Enlace  encapsulado:  bucle  invertido  local
dirección  inet:  127.0.0.1  Máscara:  255.0.0.0
dirección  inet6: ::1/128  Ámbito:Host
UP  LOOPBACK  EJECUTANDO  MTU:65536  Métrica:1
Paquetes  RX:0  errores:0  descartados:0  desbordamientos:0  marco:0  
Paquetes  TX:0  errores:0  descartados:0  desbordamientos:0  portadora:0  
colisiones:0  txqueuelen:0  Bytes  
RX:0  (0.0  B)  Bytes  TX:0  (0,0  B)

wlan0 Enlace  encap:Ethernet  HWaddr  45:12:05:54:27:88
dirección  inet:  192.168.1.199  Bcast:  192.168.1.255  Máscara:  255.255.255.0
dirección  inet6:  fe80::2c3c:7626:232b:67a8/64  Alcance:  Enlace
UP  BROADCAST  EJECUTANDO  MULTICAST  MTU:1500  Métrica:1
Paquetes  RX:  6576  errores:  0  descartados:  1  desbordamientos:  0  trama:  0  
Paquetes  TX:  108  errores:  0  descartados:  0  desbordamientos:  0  operador:  
0  colisiones:  0  txqueuelen:  1000  Bytes  
RX:  2208189  (2,1  MiB)  Bytes  TX:  16428  (16,0  KiB)

También  vale  la  pena  mencionar  que  para  un  comando  como  este  con  una  salida  relativamente  detallada,  canalizar  el  
comando  a  grep  sería  un  mecanismo  eficiente  para  reducir  la  salida  si  es  necesario.  Por  ejemplo  para  mostrar  las  
direcciones  de  hardware  para  las  interfaces  podríamos  ejecutar  el  siguiente  comando;
Machine Translated by Google

Comandos  Linux 191

netstat  ­es  decir  |  grep  HWaddr

…  que  produciría;

eth0 Enlace  encap:Ethernet  HWaddr  bd:37:a1:8c:8c:22
wlan0 Enlace  encap:Ethernet  HWaddr  45:12:05:54:27:88

Pruébate

1.  ¿Cuáles  serían  las  opciones  a  utilizar  para  mostrar  un  resumen  de  las  estadísticas  para  el  TCP?
protocolo.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 192

silbido

El  comando  ping  nos  permite  verificar  la  conexión  de  red  entre  la  computadora  local  y  un  servidor  remoto.  Lo  hace  
enviando  una  solicitud  al  servidor  remoto  para  responder  a  un  mensaje  (algo  así  como  una  solicitud  de  lectura  en  un  
correo  electrónico).  Esto  nos  permite  probar  la  conectividad  de  la  red  con  el  servidor  remoto  y  ver  si  el  servidor  está  
funcionando.  El  comando  ping  es  una  herramienta  de  solución  de  problemas  de  red  simple  y  de  uso  común.

•  ping  [opciones]  servidor  remoto:  comprueba  la  conexión  a  un  servidor  remoto.

Para  verificar  la  conexión  al  servidor  en  CNN,  por  ejemplo,  podemos  simplemente  ejecutar  el  siguiente  comando  
(suponiendo  que  tenemos  una  conexión  a  Internet);

hacer  ping  a  cnn.com

Lo  cual  devolverá  algo  como  lo  siguiente;

PING  cnn.com  (157.166.226.25)  56(84)  bytes  de  datos.  64  bytes  de  
www.cnn.com  (157.166.226.25):  icmp_seq=1  ttl=111  time=265  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  
icmp_seq=2  ttl=111  time=257  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=3  ttl=111  time=257  
ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=4  ttl=111  time=258  ms  64  bytes  de  www. .cnn.com  
(157.166.226.25):  icmp_seq=5  ttl=111  tiempo=257  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=6  
ttl=111  tiempo=257  ms

^C
­­­  Estadísticas  de  ping  de  cnn.com  ­­­  14  
paquetes  transmitidos,  13  recibidos,  7%  de  pérdida  de  paquetes,  tiempo  13016ms  rtt  min/avg/max/
mdev  =  257.199/267.169/351.320/24.502  ms

Lo  primero  que  debe  tener  en  cuenta  es  que,  de  forma  predeterminada,  el  comando  ping  seguirá  ejecutándose.  Cuando  
queramos  detenerlo,  debemos  presionar  CTRL­c  para  que  se  detenga.

La  información  presentada  es  extremadamente  útil  y  nos  dice  que  la  dirección  IP  de  www.cnn.com  es  157.166.226.25  y  
que  el  tiempo  que  se  tarda  en  enviar  y  devolver  un  mensaje  de  ping  es  de  unos  250  milisegundos.
Machine Translated by Google

Comandos  Linux 193

Aparte,  el  comando  ping  es  uno  de  esos  comandos  que  me  ha  ilustrado  muy  bien  la  necesidad  de  
escribir  un  libro  que  tenga  un  lenguaje  más  simple  para  explicar  las  cosas.
Por  ejemplo,  la  siguiente  es  la  descripción  del  comando  ping  de  las  páginas  man ;

“ping  utiliza  el  datagrama  ECHO_REQUEST  obligatorio  del  protocolo  ICMP  para  
obtener  un  ICMP  ECHO_RESPONSE  de  un  host  o  puerta  de  enlace.  Los  datagramas  
ECHO_­  REQUEST  ('pings')  tienen  un  encabezado  IP  e  ICMP,  seguido  de  una  
estructura  temporal  y  luego  un  número  arbitrario  de  bytes  de  'relleno'  que  se  usan  
para  completar  el  paquete".

No  me  malinterpretes.  Es  una  excelente  descripción  y  no  estoy  sugiriendo  que  se  cambie,  pero  no  
es  del  todo  amigable  para  un  nuevo  usuario.

El  comando  ping

El  comando  ping  es  una  herramienta  de  verificación  de  red/conectividad  muy  simple  que  es  uno  de  los  
comandos  "ir  a"  predeterminados  para  los  administradores  de  sistemas.  Quizás  se  pregunte  cómo  surgió  el  
nombre.  Es  una  reminiscencia  de  la  técnica  de  localización  por  eco  utilizada  por  delfines,  ballenas  y  
murciélagos  para  enviar  un  sonido  y  juzgar  su  entorno  por  el  eco  devuelto.  En  el  mundo  dramatizado  del  
submarinista,  un  ping  es  el  sonido  emitido  por  un  submarino  de  la  misma  manera  para  juzgar  la  distancia  y  
dirección  a  un  objeto.  Se  ilustró  de  la  mejor  manera  en  el  libro  de  Tom  Clancy  y  la  película  posterior  "La  caza  
del  Octubre  Rojo²¹" ,  donde  el  comandante  del  submarino  hace  la  solicitud  de  "Solo  un  ping".

Solo  un  ping

Funciona  enviando  un  mensaje  llamado  'Solicitud  de  eco'  a  una  ubicación  de  red  específica  (que  
especificamos  como  parte  del  comando).  Cuando  (o  si)  el  servidor  recibe  la  solicitud,  envía  una  'Respuesta  
de  eco'  al  originador  que  incluye  la  carga  útil  exacta  recibida  en  la  solicitud.  El  comando  continuará  enviando  
y  (con  suerte)  recibiendo  estos  ecos  hasta  que  el  comando  complete  el  número  requerido  de  intentos  o  el  
usuario  detenga  el  comando  (con  CTRL­c).  Una  vez  completado,  el  comando  resume  el  esfuerzo.

²¹https://en.wikipedia.org/wiki/The_Hunt_for_Red_October

www.dbooks.org
Machine Translated by Google

Comandos  Linux 194

Del  ejemplo  usado  arriba  podemos  ver  la  salida  de  la  siguiente  manera;

PING  cnn.com  (157.166.226.25)  56(84)  bytes  de  datos.  64  bytes  de  
www.cnn.com  (157.166.226.25):  icmp_seq=1  ttl=111  time=265  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  
icmp_seq=2  ttl=111  time=257  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=3  ttl=111  time=257  
ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=4  ttl=111  time=258  ms  64  bytes  de  www. .cnn.com  
(157.166.226.25):  icmp_seq=5  ttl=111  tiempo=257  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=6  
ttl=111  tiempo=257  ms

^C
­­­  Estadísticas  de  ping  de  cnn.com  ­­­  14  
paquetes  transmitidos,  13  recibidos,  7%  de  pérdida  de  paquetes,  tiempo  13016ms  rtt  min/avg/max/
mdev  =  257.199/267.169/351.320/24.502  ms

Podemos  ver  en  los  pings  devueltos  que  la  dirección  IP  del  servidor  designado  como  'www.cnn.com'  es  
'157.166.226.25'  La  resolución  de  la  dirección  IP  sería  posible  mediante  DNS,  pero  usando  una  dirección  IP  
directa  está  perfectamente  bien).  La  columna  icmp_seq=  nos  dice  la  secuencia  de  las  respuestas  devueltas  y  
ttl  indica  por  cuántos  enrutadores  IP  puede  pasar  el  paquete  antes  de  desecharlo.  El  tiempo  proporciona  el  
viaje  de  regreso  medido  de  la  solicitud  y  la  respuesta.

El  resumen  al  finalizar  nos  dice  cuántos  paquetes  se  enviaron  y  cuántos  se  recibieron  de  vuelta.
Esto  forma  un  porcentaje  de  paquetes  perdidos  que  se  establece  durante  el  tiempo  especificado.  La  línea  final  
proporciona  un  mínimo,  un  máximo  promedio  y  una  desviación  estándar  de  la  media.

Opciones

Hay  algunas  opciones  diferentes  de  uso,  pero  las  más  útiles  son  las  siguientes;

•  ­c  solo  hacer  ping  a  la  conexión  un  cierto  número  (recuento)  de  veces  •  
­i  cambio  el  intervalo  de  tiempo  entre  pings

Es  realmente  útil  tener  ping  ejecutándose  continuamente  para  que  podamos  realizar  cambios  en  la  red  
mientras  observamos  los  resultados,  pero  también  es  útil  ejecutar  el  comando  durante  un  período  de  tiempo  limitado.
Aquí  es  donde  entra  la  opción  ­c .  Esto  simplemente  restringirá  la  cantidad  de  pings  que  se  envían  y  luego  
cesará  y  resumirá  el  esfuerzo.  Esto  se  puede  utilizar  de  la  siguiente  manera;

ping  ­c  4  cnn.com

Lo  cual  devolverá  algo  como  lo  siguiente;
Machine Translated by Google

Comandos  Linux 195

PING  cnn.com  (157.166.226.25)  56(84)  bytes  de  datos.  64  bytes  de  
www.cnn.com  (157.166.226.25):  icmp_seq=1  ttl=111  time=266  ms  64  bytes  de  www.cnn.com  
(157.166.226.25):  icmp_seq=2  ttl=111  time=263  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  
icmp_seq=3  ttl=111  time=288  ms  64  bytes  de  www.cnn.com  (157.166.226.25):  icmp_seq=4  ttl=111  
time=280  ms

­­­  Estadísticas  de  ping  de  cnn.com  ­­­  4  
paquetes  transmitidos,  4  recibidos,  0%  de  pérdida  de  paquetes,  tiempo  3003ms  rtt  
min/avg/max/mdev  =  263.283/274.586/288.637/10.386  ms

A  veces  puede  ser  conveniente  establecer  nuestro  propio  intervalo  de  tiempo  entre  pings.  Esto  se  puede  
lograr  con  la  opción  ­i  que  nos  permitirá  variar  el  tiempo  de  repetición.  El  valor  predeterminado  es  1  
segundo,  sin  embargo,  el  valor  no  se  puede  establecer  por  debajo  de  0,2  segundos  sin  hacerlo  como  superusuario.
Curiosamente,  existe  una  opción  para  inundar  la  red  con  pings  (modo  de  inundación)  para  probar  la  infraestructura  
de  la  red.  Sin  embargo,  esto  sería  algo  que  generalmente  se  deja  para  investigar  cuidadosamente  cuando  
realmente  lo  necesita.

Pruébate

1.  ¿Cómo  sabe  el  comando  ping  a  un  nombre  de  servidor  cómo  devolver  una  dirección  IP?
2.  ¿Qué  significa  'ttl'?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 196

scp

El  comando  scp  se  usa  para  copiar  archivos  de  forma  segura  mediante  una  conexión  ssh  entre  dos  computadoras.
El  proceso  de  copia  es  muy  flexible  y  se  puede  realizar  desde  una  máquina  local  a  una  máquina  remota  o  viceversa.  
También  se  puede  usar  para  copiar  de  una  computadora  remota  a  otra  computadora  remota.  El  comando  scp  es  fácil  de  
usar  y  es  una  herramienta  vital  para  transferir  archivos  entre  computadoras  que  están  conectadas  en  una  red.

•  scp  [opciones]  usuario1@hostorigen:directorio/nombre  de  archivo  usuario2@hostdestino:directorio/nombre  de  archivo:  
copia  segura  de  archivos  entre  computadoras.

Por  ejemplo,  si  tuviéramos  un  archivo  llamado  'foo.txt'  en  nuestro  directorio  actual  (fuente)  y  quisiéramos  transferirlo  al  
directorio  de  inicio  del  usuario  'pi'  en  la  computadora  de  destino  con  la  dirección  IP  10.1.1.33,  podríamos  ejecuta  el  
siguiente  comando;

scp  foo.txt  [email protected]:~/

Si  nunca  antes  hemos  intentado  iniciar  sesión  de  forma  segura  (o  archivos  scp )  en  esa  computadora,  se  nos  presenta  
una  advertencia  que  nos  pregunta  si  estamos  seguros  y  si  esta  es  realmente  la  computadora  a  la  que  pretendemos  
conectarnos;

No  se  puede  establecer  la  autenticidad  del  host  '10.1.1.33  (10.1.1.33)'.
La  huella  dactilar  de  la  clave  ECDSA  es  35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está  seguro  de  que  desea  continuar  conectándose  (sí/no)?  Sí

Suponiendo  que  esto  sea  correcto,  podemos  responder  con  'y'  y  el  proceso  continuará  y  pedirá  la  contraseña  para  el  
usuario  'pi';

Advertencia:  se  agregó  permanentemente  '10.1.1.33' (ECDSA)  a  la  lista  de  hosts  conocidos.  contraseña  
de  [email protected]:

Dado  que  hemos  confirmado  que  este  es  el  host  correcto,  se  agrega  a  una  lista  maestra  de  hosts  conocidos  para  que  no  
se  nos  pregunte  si  lo  sabemos  en  el  futuro.  Luego  se  nos  solicita  la  contraseña  de  los  usuarios  'pi'  en  el  host  de  destino.  
Una  vez  ingresado,  se  realiza  la  transferencia  y  se  nos  presentan  los  detalles  del  proceso;

foo.txt 100%  129 0.1KB/s  00:00

En  este  punto,  el  host  remoto  tiene  una  copia  del  archivo  'foo.txt'  en  el  directorio  de  inicio  del  usuario  'pi'.
Como  no  especificamos  el  nombre  del  archivo  en  la  computadora  de  destino,  el  nombre  siguió  siendo  el
mismo.

El  comando  que  usamos  en  el  ejemplo  empleó  algunos  atajos  y  se  basó  en  los  valores  predeterminados  para  acortar  la  
cantidad  que  necesitábamos  escribir,  pero  también  podríamos  haber  escrito  el  comando  completo  especificando  toda  la  
información  como  tal;
Machine Translated by Google

Comandos  Linux 197

scp  [email protected]:/inicio/pi/foo.txt  [email protected]:/inicio/pi/foo.txt

La  próxima  vez  que  realicemos  un  scp  (o  ssh)  a  la  misma  máquina  (desde  la  misma  máquina  local)  no  se  nos  
preguntará  si  estamos  seguros  de  la  conexión  y  se  nos  dirigirá  directamente  a  la  solicitud  de  contraseña.

el  comando  scp

El  comando  scp  está  diseñado  para  proporcionar  al  usuario  un  mecanismo  para  copiar  archivos  de  forma  
segura  entre  computadoras.  Existen  mecanismos  alternativos  para  copiar  archivos,  pero  scp  fue  diseñado  para  
garantizar  que  se  mantenga  la  seguridad  de  la  información  a  medida  que  se  transfiere.

Uno  de  los  temas  que  prevalece  cada  vez  más  en  los  tiempos  modernos  es  la  necesidad  de  brindar  seguridad  a  los  datos.
Si  bien  en  muchos  casos  parece  aceptable  tener  transparencia  al  copiar  archivos,  las  situaciones  en  las  que  se  
garantiza  la  privacidad  y/o  la  seguridad  (registros  médicos,  legales  o  financieros)  exigen  una  mayor  protección  
contra  el  uso  indebido.  Sin  entrar  en  la  mecánica  del  mismo  (esto  sería  un  libro  en  sí  mismo),  el  comando  scp  
proporciona  una  conexión  entre  el  usuario  y  un  host  remoto  que  tiene  un  alto  grado  de  seguridad  contra  alguien  
que  intercepta  la  información  que  se  transmite.  Proporciona  esta  seguridad  al  utilizar  el  comando  ssh  como  
línea  de  base  para  la  conexión,  por  lo  que  también  sería  útil  comprender  este  comando.

La  mejor  manera  de  ilustrar  la  utilidad  de  scp  es  proporcionar  ejemplos  de  uso  común.  Por  lo  tanto,  
demostraremos  los  comandos  scp  para  copiar  un  archivo  (/home/pi/foo.txt)  en  las  siguientes  circunstancias;

•  De  un  host  remoto  a  un  host  local
•  De  un  host  local  a  un  host  remoto
•  De  un  host  remoto  a  otro

Supondremos  una  configuración  similar  a  la  que  se  muestra  a  continuación  con  dos  hosts  remotos  ('remote1'  y  
'remote2')  y  un  host  local  llamado  'local'.  Asimismo,  supondremos  que  el  usuario  'pi'  tiene  cuentas  en  las  tres  
máquinas.

Los  hosts  conectados  para  scp

De  un  host  remoto  a  un  host  local

www.dbooks.org
Machine Translated by Google

Comandos  Linux 198

scp  pi@remoto1:/inicio/pi/foo.txt  pi@local:/inicio/pi/foo.txt

De  un  host  local  a  un  host  remoto

scp  pi@local:/inicio/pi/foo.txt  pi@remoto1:/inicio/pi/foo.txt

De  un  host  remoto  (remote1)  a  un  host  remoto  (remote2)

scp  pi@remoto1:/inicio/pi/foo.txt  pi@remoto2:/inicio/pi/foo.txt

Podemos  copiar  varios  archivos  a  la  vez  separándolos  con  un  espacio.  El  siguiente  comando  copia  foo.txt  y  bar.txt  del  
directorio  actual  (local)  al  directorio /home/pi  en  el
servidor  remoto1

scp  foo.txt  bar.txt  pi@remote1:/home/pi/

Podemos  copiar  varios  archivos  del  mismo  tipo  usando  comodines.  El  siguiente  comando  copia  todos  los  archivos  
que  terminan  en .txt  desde  el  directorio  actual  (local)  al  directorio /home/pi  en  el  servidor
remoto1

scp  *.txt  pi@remoto1:/inicio/pi/

Opciones

Hay  algunas  opciones  que  se  pueden  usar  con  scp.  Los  siguientes  son  particularmente  útiles;

•  ­r  copiará  recursivamente  archivos/directorios  •  
­p  conservará  las  propiedades  del  archivo

Para  copiar  directorios  necesitamos  emplear  la  opción  ­r  que  copiará  directorios  recursivamente.

La  palabra  'recursivamente'  nos  dice  que  el  comando  buscará  en  un  directorio  y  también  
copiará  cualquier  subdirectorio  de  ese  directorio  y  cualquier  subdirectorio  de  ese  subdirectorio  
hasta  el  infinito….  (por  lo  que  obtendrá  todos  los  archivos  y  subdirectorios  en  el  directorio  
especificado.
Machine Translated by Google

Comandos  Linux 199

Entonces,  para  copiar  el  directorio  foodir  desde  una  máquina  remota  a  nuestro  directorio  local  (actual)

scp  ­r  pi@remote1:/home/pi/foodir.

Observe  que  en  el  comando  anterior  hemos  usado  el  símbolo  de  punto  (.)  para  decirle  al  comando  que  use  la  
ubicación  del  directorio  actual  en  la  máquina  local.

Cuando  copiamos  un  archivo,  no  transferimos  las  propiedades  del  archivo  con  él.  Para  conservar  el  tiempo  de  
modificación,  el  tiempo  de  acceso  y  los  modos  del  archivo  de  origen,  debemos  incluir  la  opción  ­p .

Pruébate

1.  ¿Cuántos  niveles  de  subdirectorios  admite  la  opción  ­r ?
2.  ¿El  comando  scp  admite  el  uso  de  comodines?
3.  ¿Se  podría  usar  el  comando  scp  para  copiar  archivos  entre  diferentes  directorios  en  el  mismo
¿computadora  remota?
4.  ¿Se  podría  usar  el  comando  scp  para  copiar  archivos  entre  diferentes  usuarios  en  el  mismo  control  remoto?
¿computadora?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 200

sftp

El  comando  sftp  se  usa  para  iniciar  un  programa  interactivo  diseñado  para  proporcionar  una  forma  segura  de  
transferir  archivos  entre  dos  computadoras.  El  comando  se  basa  en  una  conexión  ssh .  La  característica  que  
distingue  a  sftp  de  scp  es  su  capacidad  para  proporcionar  una  opción  interactiva  para  mover  archivos  entre  dos  
hosts.  El  comando  sftp  es  un  reemplazo  seguro  del  comando  ftp  y  es  una  herramienta  útil  para  transferir  archivos  
de  forma  interactiva  entre  computadoras  que  están  conectadas  a  una  red.

•  sftp  [opciones]  [usuario@]nombre­host[:directorio]:  copia  interactiva  de  archivos  entre  computadoras
de  forma  segura

Para  iniciar  el  programa,  podemos  hacerlo  simplemente  usando  el  nombre  de  usuario  y  host  que  queremos  en  el  
host  remoto.  El  ejemplo  que  usaremos  es  muy  simple  y  asume  que  lo  ejecutamos  como  el  usuario  'pi'  y  que  hay  
una  cuenta  para  el  usuario  'pi'  en  la  computadora  remota;

ftp  10.1.1.33

Si  nunca  antes  hemos  intentado  sftp,  ssh  o  scp  a  esa  computadora,  se  nos  presenta  una  advertencia  que  nos  
pregunta  si  estamos  seguros  y  si  esta  es  realmente  la  computadora  a  la  que  intentamos  conectarnos;

No  se  puede  establecer  la  autenticidad  del  host  '10.1.1.33  (10.1.1.33)'.
La  huella  dactilar  de  la  clave  ECDSA  es  35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está  seguro  de  que  desea  continuar  conectándose  (sí/no)?  Sí

Suponiendo  que  esto  sea  correcto,  podemos  responder  con  'y'  y  el  proceso  continuará  y  pedirá  la  contraseña  
para  el  usuario  'pi';

Advertencia:  se  agregó  permanentemente  '10.1.1.33' (ECDSA)  a  la  lista  de  hosts  conocidos.  
contraseña  de  [email protected]:

Dado  que  hemos  confirmado  que  este  es  el  host  correcto,  se  agrega  a  una  lista  maestra  de  hosts  conocidos  para  
que  no  se  nos  pregunte  si  lo  sabemos  en  el  futuro.  Luego  se  nos  solicita  la  contraseña  de  los  usuarios  'pi'  en  el  
host  de  destino.  Una  vez  ingresado,  se  realiza  la  conexión,  se  inicia  la  sesión  interactiva  y  se  nos  presenta  un  
símbolo  del  sistema  sftp ;

Conectado  a  10.1.1.33
sftp>

El  símbolo  del  sistema  nos  permite  navegar  de  forma  interactiva  por  la  estructura  del  directorio  utilizando  
comandos  comunes  como  pwd,  cd  y  ls.

Así  que  desde  aquí  podemos  listar  el  contenido  del  directorio  en  el  que  estamos  usando  el  comando  ls ;
Machine Translated by Google

Comandos  Linux 201

sftp>ls
Escritorio dir1
dir2 barra.txt
foo.txt Foobar
gastronomia temperatura

Puede  que  no  sea  obvio  de  inmediato,  pero  estamos  en  el  directorio  de  inicio  de  usuarios  'pi'  en  10.1.1.33.
Suponiendo  que  estamos  interesados  en  recuperar  el  archivo  'foo.txt',  podemos  usar  el  comando  get  para  recuperarlo  y  
volver  a  copiarlo  en  nuestro  directorio  de  trabajo  local  (el  directorio  donde  primero  ejecutamos  el  comando  sftp );

sftp>  get  foo.txt  
Recuperando /home/pi/foo.txt  a  foo.txt /home/pi/
foo.txt 100%  129 0.1KB/s  00:00

Habiendo  completado  lo  que  queríamos  hacer,  ahora  podemos  salir  del  programa  sftp  interactivo  usando  el  comando  
bye ;

sftp>adiós  
pi@raspberrypi:~  $

La  próxima  vez  que  realicemos  un  sftp,  scp  o  ssh  a  la  misma  máquina  (desde  la  misma  máquina  local)  no  se  nos  
preguntará  si  estamos  seguros  de  la  conexión  y  se  nos  dirigirá  directamente  a  la  solicitud  de  contraseña.

El  ejemplo  que  usamos  supuso  comenzar  como  el  usuario  'pi',  tener  una  cuenta  para  el  usuario  'pi'  en  el  host  remoto  y  
querer  comenzar  en  el  directorio  de  inicio  de  los  usuarios  'pi'.  Por  supuesto,  este  no  siempre  será  el  caso  y  podríamos  
haber  ejecutado  el  comando  con  instrucciones  más  explícitas  sobre  el  usuario  para  iniciar  sesión  y  el  directorio  al  que  ir  
de  la  siguiente  manera;

sftp  [email protected]:/inicio/pi

el  comando  scp

El  Protocolo  de  Transferencia  de  Archivos  (FTP)  fue  un  protocolo  ampliamente  utilizado  para  transferir  archivos  entre  
computadoras.  Sin  embargo,  con  un  énfasis  cada  vez  mayor  en  la  seguridad  y  debido  a  que  FTP  envía  información  de  
autenticación  y  contenido  de  archivos  a  través  de  la  red  sin  cifrar,  se  reconoció  que  se  necesitaba  una  mejor  manera  de  
realizar  el  mismo  trabajo.  El  comando  sftp  fue  desarrollado  para  proporcionar  una  alternativa  segura  a  FTP.  Como  tal,  
mitiga  las  preocupaciones  de  seguridad  al  proporcionar  la  transferencia  de  datos  a  través  de  un  canal  totalmente  
encriptado.

sftp  es  un  protocolo  de  transferencia  de  archivos  que  implementa  todas  las  operaciones  que  se  encuentran  en  FTP  e  
incluye  algunas  que  scp  no  maneja,  como  cambiar  el  nombre  y  eliminar  archivos  remotos.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 202

Como  se  muestra  en  el  ejemplo  anterior,  una  vez  que  se  inicia  el  programa,  se  controla  mediante  una  variedad  de  comandos  
que  permiten  la  navegación  a  través  de  la  estructura  de  directorios  y  el  movimiento  de  los  archivos.  La  lista  de  comandos  
disponibles  se  puede  encontrar  escribiendo  ayuda  o ?  en  el  símbolo  del  sistema  de  sftp .  La  lista  de  comandos  disponibles  
se  muestra  a  continuación;

Comandos  disponibles:

•  bye :  salir  de  sftp  •  
cd  path:  cambiar  el  directorio  remoto  a  'path'  •  chgrp  grp  
path:  cambiar  el  grupo  del  archivo  'path'  a  'grp'  •  chmod  mode  path:  
cambiar  los  permisos  del  archivo  'path'  a  'mode'  •  chown  propia  ruta:  cambia  el  
propietario  del  archivo  'ruta'  a  'propio'  •  df  [­hi]  [ruta]:  muestra  estadísticas  
para  el  directorio  actual  o  el  sistema  de  archivos  que  contiene  'ruta'  •  exit :  sale  de  sftp  •  obtiene  [­Ppr]  remoto  
[local] :  Descargar  
archivo  •  reget  remoto  [local] :  Reanudar  archivo  de  
descarga  •  reput  [local]  remoto :  Reanudar  archivo  de  carga  
•  ayuda :  Muestra  este  texto  de  ayuda  •  ruta  lcd :  Cambia  
el  directorio  local  a  'ruta'  •  lls  [ls­options  
[ruta] ] :  muestra  la  lista  del  directorio  local  •  lmkdir  ruta :  
crea  el  directorio  local  •  ln  [­s]  ruta  antigua  nueva  ruta :  vincula  el  archivo  
remoto  (­s  para  enlace  simbólico)  •  lpwd :  
imprime  el  directorio  de  trabajo  local  •  ls  [­1afhlnrSt]  [ruta] :  muestra  el  control  
remoto  lista  de  directorios  •  lumask  umask :  
establecer  umask  local  en  'umask'  •  mkdir  ruta :  crear  directorio  remoto  •  
progreso :  alternar  la  visualización  del  medidor  de  

progreso  •  poner  [­Ppr]  local  [remoto] :  cargar  
archivo  •  pwd :  mostrar  directorio  de  trabajo  remoto  •  salir :  
Salir  de  sftp  •  renombrar  oldpath  newpath :  
Renombrar  archivo  remoto  •  rm  path :  Eliminar  archivo  
remoto  •  rmdir  path :  
Eliminar  directorio  remoto  •  symlink  oldpath  newpath :  Symlink  
archivo  remoto  •  version :  Mostrar  
versión  sftp  • !command :  Ejecutar  'comando'  en  
shell  local

• ! :  Escape  al  caparazón  local
• ? :  sinónimo  de  ayuda

No  es  difícil  usar  estos  comandos  para  asegurarse  de  que  puede  navegar  y  mover  archivos  correctamente  en  el  servidor  
remoto,  pero  cuando  necesitamos  realizar  funciones  en  la  computadora  local,  el !  El  comando  es  muy  útil  para  volver  al  
shell  local  donde  podemos  ejecutar  comandos  normales  y  luego  podemos  escribir  exit  para  volver  a  la  sesión  de  sftp .
Machine Translated by Google

Comandos  Linux 203

Pruébate

1.  ¿Cuál  es  la  principal  ventaja  de  usar  sftp  sobre  ftp?
2.  ¿Cuál  es  la  principal  ventaja  de  usar  sftp  sobre  scp?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 204

ssh

El  comando  ssh  se  usa  para  acceder  de  forma  segura  a  una  máquina  remota  para  que  un  usuario  pueda  iniciar  sesión  y  ejecutar  
comandos.  A  pesar  de  su  importancia,  el  comando  ssh  es  simple  de  usar  y  es  una  herramienta  vital  para  administrar  las  
computadoras  que  están  conectadas  en  una  red.  En  situaciones  en  las  que  una  computadora  funciona  'sin  cabeza' (sin  pantalla  ni  
teclado),  es  especialmente  útil.

•  servidor  ssh  [opciones]  [nombre  de  inicio  de  sesión]:  acceda  de  forma  segura  a  un  equipo  remoto.

Por  ejemplo,  operando  como  el  usuario  'pi'  queremos  iniciar  sesión  en  la  computadora  en  la  dirección  de  red
10.1.1.33

Iniciamos  el  proceso  ejecutando  el  comando;

ssh  10.1.1.33

Si  nunca  antes  hemos  intentado  iniciar  sesión  de  forma  segura  en  esa  computadora,  se  nos  presenta  una  advertencia  que  nos  
pregunta  si  estamos  seguros  y  si  esta  es  realmente  la  computadora  en  la  que  pretendemos  iniciar  sesión;

No  se  puede  establecer  la  autenticidad  del  host  '10.1.1.33  (10.1.1.33)'.
La  huella  dactilar  de  la  clave  ECDSA  es  35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está  seguro  de  que  desea  continuar  conectándose  (sí/no)?  Sí

Suponiendo  que  esto  sea  correcto,  podemos  responder  con  'y'  y  el  proceso  continuará  y  solicitará  la  contraseña  para  el  usuario  
'pi' (dado  que  ejecutamos  el  comando  como  'pi',  la  acción  predeterminada  es  asumir  que  estamos  intentando  para  iniciar  sesión  
en  la  computadora  remota  como  el  usuario  'pi');

Advertencia:  se  agregó  permanentemente  '10.1.1.33' (ECDSA)  a  la  lista  de  hosts  conocidos.  
contraseña  de  [email protected]:

Dado  que  hemos  confirmado  que  este  es  el  host  correcto,  se  agrega  a  una  lista  maestra  de  hosts  conocidos  para  que  no  se  nos  
pregunte  si  lo  sabemos  en  el  futuro.  Luego  se  nos  solicita  la  contraseña  de  usuario  'pi'  en  el  host  remoto.  Una  vez  que  ingresamos,  
iniciamos  sesión  y  se  nos  presentan  algunos  detalles  de  la  máquina  a  la  que  nos  estamos  conectando;
Machine Translated by Google

Comandos  Linux 205

Linux  raspberrypi  3.18.11­v7+  #781  SMP  PREEMPT  martes  21  de  abril  18:07:59  BST  2015  a\
rmv7l

Los  programas  incluidos  con  el  sistema  Debian  GNU/Linux  son  software  libre;  los  términos  de  distribución  exactos  
para  cada  programa  se  describen  en  los  archivos  individuales  en /usr/share/doc/*/copyright.

Debian  GNU/Linux  viene  SIN  GARANTÍA  EN  ABSOLUTO,  en  la  medida  permitida  por  la  ley  aplicable.

Último  inicio  de  sesión:  dom  10  de  enero  a  las  18:36:26  de  2016  desde  10.1.1.100

En  este  punto,  iniciamos  sesión  en  la  computadora  en  10.1.1.33  y  podemos  ejecutar  comandos  como  el  usuario  
'pi'  en  esa  máquina.

Para  cerrar  esta  conexión  simplemente  podemos  presionar  la  combinación  de  teclas  CTRL­d  y  la  conexión  se  
cerrará  con  el  siguiente  mensaje;

pi@raspberrypi  ~  $  cerrar  sesión
Conexión  a  10.1.1.33  cerrada.

La  próxima  vez  que  iniciemos  sesión  en  la  misma  máquina,  no  se  nos  preguntará  si  estamos  seguros  de  la  
conexión  y  se  nos  dirigirá  directamente  a  la  solicitud  de  contraseña.

El  comando  ssh

El  comando  ssh  está  diseñado  para  proporcionar  a  un  usuario  acceso  seguro  a  un  shell  en  una  computadora  
remota.  Hay  varias  formas  diferentes  en  que  los  usuarios  pueden  interactuar  con  las  computadoras  en  red,  pero  
una  de  las  funciones  clave  que  debe  habilitarse  es  la  capacidad  de  ejecutar  comandos  como  si  estuviera  
sentado  en  una  terminal  con  un  teclado  conectado  directamente  a  la  máquina.

A  menudo,  esto  no  es  posible  porque  la  computadora  está  ubicada  en  otra  habitación  o  incluso  en  otro  país.
A  veces,  la  máquina  no  tiene  un  teclado  o  un  monitor  conectado  y  se  encuentra  en  un  estante  o  en  un  estante.  
A  veces,  el  servidor  será  una  máquina  virtual  sin  hardware  "real"  en  absoluto.  Para  estos  casos,  todavía  
queremos  poder  conectarnos  a  la  máquina  de  alguna  manera  y  ejecutar  comandos.

Hay  diferentes  comandos  y  programas  que  proporcionarán  este  acceso  remoto,  pero  uno  de  los  temas  que  
prevalece  cada  vez  más  es  la  necesidad  de  proporcionar  una  conexión  segura  entre  el  host  remoto  y  el  usuario.  
Esto  se  debe  a  que  el  control  de  esas  máquinas  remotas  debe  limitarse  a  aquellos  que  están  autorizados  para  
realizar  trabajos  en  las  máquinas  para  la  operación  segura  de  las  funciones  que  están  realizando  (piense  en  el  
control  remoto  de  un  suministro  de  electricidad  o  computadoras  de  control  de  tráfico).
Sin  entrar  en  la  mecánica  del  mismo  (esto  sería  un  libro  en  sí  mismo),  el  comando  ssh  proporciona  una  conexión  
entre  el  usuario  y  un  host  remoto  que  tiene  un  alto  grado  de  seguridad  contra  alguien  que  intercepta  la  
información  que  se  transmite.

El  ejemplo  anterior  demostró  la  conexión  a  un  servidor  remoto  como  el  usuario  actualmente  conectado.  Sin  
embargo,  si  quisiéramos  iniciar  sesión  como  un  usuario  diferente  (llamemos  al  usuario  'newpi')  ejecutaríamos  el  
comando  de  la  siguiente  manera;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 206

ssh  [email protected]

Los  dos  ejemplos  hasta  ahora  han  usado  direcciones  IP  para  designar  el  nombre  del  host,  sin  embargo,  si  el  
host  remoto  tuviera  un  nombre  designado  'pinode',  el  mismo  comando  podría  ingresarse  de  la  siguiente  manera;

ssh  nuevopi@pinode

Hay  una  gran  cantidad  de  usos  que  hace  posible  el  comando  ssh,  pero  para  un  nuevo  usuario,  la  conclusión  
debe  ser  que  el  acceso  entre  dos  servidores  se  puede  realizar  fácilmente  y  la  información  que  se  transfiere  se  
puede  hacer  de  manera  segura  usando  el  comando  ssh .

Pruébate

1.  ¿Cuáles  son  las  dos  funciones  principales  del  comando  ssh ?
Machine Translated by Google

Comandos  Linux 207

trazar  ruta

El  comando  traceroute  se  utiliza  para  determinar  la  ruta  que  siguen  los  paquetes  IP  que  se  originan  en  nuestro  
sistema  para  llegar  a  un  host  de  destino.  Una  red  grande  incluirá  enrutadores  para  dirigir  paquetes  de  un  destino  a  
otro.  traceroute  nos  permitirá  ver  el  camino  que  toman  los  paquetes  como  un  rastro  de  migas  de  pan.  traceroute  
es  un  programa  de  diagnóstico  de  red  que  ha  sido  desarrollado  para  solucionar  problemas  donde  las  conexiones  
están  rotas  o  para  identificar  enrutadores  y/o  dispositivos  en  la  ruta  de  la  red.

•  traceroute  [opciones]  host­name:  rastrea  la  ruta  que  toman  los  paquetes  al  host  de  la  red

En  su  forma  más  simple,  traceroute  solo  requiere  el  comando  y  el  nombre  o  la  dirección  IP  del  host  de  destino;

rastrear  ruta  8.8.8.8

La  dirección  IP  8.8.8.8  es  la  dirección  del  sistema  de  nombres  de  dominio  (DNS)  público  de  Google.

La  información  devuelta  muestra  una  lista  de  los  diferentes  'saltos'  que  dieron  los  paquetes  para  llegar  al
servidor  8.8.8.8.

traceroute  a  8.8.8.8  (8.8.8.8),  30  saltos  máx.,  paquetes  de  60  bytes  1  10.1.1.201  
(10.1.1.201)  8,421  ms  8,243  ms  8,140  ms  2  jetstream.xtra.co.nz  (125.239.10.1)  
41,724  ms  42,742  Sra.  43.633ms
3  *  *  *
4  ae8­10.gateway.net.nz  (122.56.116.5)  57.666  ms  58.964  ms  59.604  ms  5  ae5­2.gateway.net.nz  
(210.55.202.213)  60.572  ms  61.427  ms  63.133  ms  6  xe7­0­9.gateway .net.nz  (202.50.232.182)  
87.727  ms  76.504  ms  76.583  ms  7  ae2­10.gateway.net.nz  (202.50.232.246)  77.858  ms  75.211  ms  
75.970  ms  8  google.gateway.net.nz  (202.50.237  .198)  78.081  ms  77.741  ms  79.743  ms  9  72.14.237.11  
(72.14.237.11)  81.398  ms  81.768  ms  82.599  ms  10  216.239.41.81  (216.239.41.81)  82.984  ms  83.978  
ms  75.  562  ms  11  google­public­dns­a.google.com  (8.8.  8.8)  76.806ms  76.423ms  
75.224ms

Cada  línea  muestra  el  tiempo  de  vida  (también  conocido  como  TTL  o  el  'límite  de  salto')  que  se  incrementa  a  
medida  que  avanza  la  ruta,  la  dirección  IP  y,  si  está  disponible,  el  nombre  de  host  del  enrutador  que  encuentra  
junto  con  el  tiempo  de  ida  y  vuelta  (RTT )  para  ese  enrutador  en  particular.  Hay  tres  RTT  por  enrutador,  ya  que  
traceroute  envía  tres  paquetes  por  enrutador.

La  tercera  posición  muestra  tres  asteriscos  (*  *  *)  que  nos  indican  que  no  se  pudo  devolver  una  lectura  en  particular.  
Esto  podría  deberse  a  varias  razones,  pero  en  este  caso  podemos  ver  que  la  omisión  no  impidió  que  los  paquetes  
completaran  su  viaje.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 208

El  comando  rastrear  ruta

El  programa  traceroute  se  llama  así  porque  intenta  rastrear  la  ruta  de  los  paquetes  a  medida  que  fluyen  a  través  
de  una  red.

Algunas  redes,  e  Internet  en  particular,  son  combinaciones  grandes  y  complejas  de  hardware  de  red,  conectadas  
entre  sí  mediante  puertas  de  enlace,  enrutadores  y  conmutadores.  Rastrear  la  ruta  de  nuestros  paquetes  de  red  
(o  encontrar  la  puerta  de  enlace  que  está  dejando  caer  nuestro  tráfico)  puede  ser  difícil.  traceroute  usa  un  campo  
de  'tiempo  de  vida'  en  el  protocolo  IP  para  intentar  generar  una  respuesta  ICMP  TIME_EXCEEDED  desde  cada  
puerta  de  enlace  en  la  cadena  a  un  host  remoto.

En  nuestros  entornos  de  red  modernos,  a  veces  es  posible  que  traceroute  no  funcione  como  se  esperaba.  Esto  se  
debe  al  uso  generalizado  de  cortafuegos.  Algunos  cortafuegos  filtrarán  los  puertos  UDP  'poco  probables',  o  incluso  
las  respuestas  ICMP  TIME_EXCEEDED.  Para  evitar  esto,  se  pueden  usar  algunos  métodos  adicionales  de  
traceroute .

Cada  uno  de  ellos  funciona  de  forma  ligeramente  diferente.  Pero  el  concepto  general  detrás  de  cada  uno  de  ellos  es  el  mismo.
Todos  ellos  utilizan  el  valor  TTL.

•  U :  el  método  predeterminado  que  utiliza  
UDP.  •  I :  Utiliza  ICMP  ECHO  para  las  
sondas.  •  T :  utiliza  TCP  SYN  para  las  sondas

Es  posible  que  ejecutar  traceroute  con  las  opciones  ­I  o  ­T  requiera  permisos  sudo .
En  cuyo  caso,  el  comando  se  vería  así;

sudo  ­I  traceroute  8.8.8.8

Pruébate

1.  ¿Qué  tipo  de  problemas  puede  resaltar  traceroute ?
2.  ¿Qué  podría  intentar  si  parece  que  la  prueba  predeterminada  de  traceroute  no  funciona  en  algún  momento?
Machine Translated by Google

Comandos  Linux 209

wget

El  comando  wget  (o  quizás  una  mejor  descripción  es  'utilidad')  es  un  programa  diseñado  para  facilitar  la  
descarga  de  archivos  de  Internet  usando  la  línea  de  comandos.  Es  compatible  con  los  protocolos  HTTP,  
HTTPS  y  FTP  y  está  diseñado  para  ser  robusto  para  realizar  su  trabajo  incluso  en  una  conexión  de  red  que  es  
lenta  o  inestable.  Tiene  una  función  similar  a  curl  para  recuperar  archivos,  pero  existen  algunas  diferencias  
clave  entre  los  dos,  siendo  la  principal  para  wget  que  es  capaz  de  descargar  archivos  de  forma  recursiva  
(donde  los  recursos  están  vinculados  desde  páginas  web).

•  wget  [opciones]  [URL]:  descarga  o  carga  archivos  de  la  web  de  forma  no  interactiva.

En  su  ejemplo  más  simple  de  uso  solo  es  necesario  proporcionar  la  URL  del  archivo  que  se  requiere  y  
comenzará  la  descarga;

wget  https://github.com/mbostock/d3/archive/master.zip

El  programa  luego  se  conectará  al  servidor  remoto,  confirmará  los  detalles  del  archivo  y  comenzará  a  
descargar  el  archivo;

­­2016­02­07  09:08:47­­  https://github.com/mbostock/d3/archive/master.zip  Resolviendo  github.com  
(github.com)...  192.30.252.131  Conectando  a  github.  com  (github.com)|
192.30.252.131|:443...  conectado.
Solicitud  HTTP  enviada,  esperando  respuesta...  302  Ubicación  
encontrada:  https://codeload.github.com/mbostock/d3/zip/master  [siguiente]  ­­2016­02­07  09:09:07­­  
https:/ /codeload.github.com/mbostock/d3/zip/master  Resolviendo  codeload.github.com  
(codeload.github.com)...  192.30.252.161  Conectando  a  codeload.github.com  |
192.30.252.161|:443...  conectado.
Solicitud  HTTP  enviada,  esperando  respuesta...  200  OK  
Longitud:  sin  especificar  [aplicación/zip]
Guardando  en:  'master.zip.1

A  medida  que  avanza  el  proceso  de  descarga,  una  animación  de  texto  simple  informa  sobre  el  progreso  con  
una  indicación  de  la  cantidad  descargada  y  la  tasa

maestro.zip.1 [ <=> ]  990.35K  53.6KB/s

Una  vez  completada,  se  informará  la  descarga  exitosa  acompañada  de  algunas  estadísticas  de  la  transferencia;

2016­02­07  09:10:27  (50,3  KB/s)  ­  'master.zip.1'  guardado  [3204673]

El  archivo  se  descarga  en  el  directorio  de  trabajo  actual.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 210

El  comando  wget

wget  es  una  utilidad  que  existe  un  poco  fuera  del  alcance  de  un  comando  puro  en  el  sentido  de  que  es  un  programa  de  
código  abierto  que  se  ha  compilado  para  funcionar  en  una  variedad  de  sistemas  operativos.  El  nombre  es  una  derivación  
de  web  get  donde  la  función  del  programa  es  'obtener'  archivos  de  la  red  mundial.

Lo  hace  a  través  de  la  compatibilidad  con  los  protocolos  HTTP,  HTTPS  y  FTP,  de  modo  que  si  pudiera  pegar  una  URL  en  
un  navegador  y  luego  descargar  un  archivo,  el  mismo  archivo  podría  descargarse  desde  la  línea  de  comando  usando  
wget .  wget  no  es  la  única  utilidad  de  descarga  de  archivos  que  se  usa  comúnmente  en  Linux.  curl  también  se  usa  
ampliamente  para  funciones  similares.  Sin  embargo,  ambos  programas  tienen  diferentes  fortalezas  y,  en  el  caso  de  wget ,  
esa  fortaleza  es  compatible  con  la  descarga  recursiva,  donde  se  puede  descargar  un  sitio  web  completo  manteniendo  su  
estructura  de  directorios  y  enlaces.  También  hay  otras  diferencias,  pero  esta  sería  la  principal.

Existe  una  amplia  gama  de  opciones  que  se  pueden  utilizar  para  garantizar  que  las  descargas  se  configuren  correctamente.  
Examinaremos  algunos  de  los  ejemplos  más  básicos  a  continuación  y  luego  revisaremos  la  función  recursiva  de  wget.

•  ­­limit­rate :  limita  la  velocidad  de  descarga /  tasa  de  descarga.  •  ­O :  
descarga  y  almacena  con  un  nombre  de  archivo  diferente  •  ­b :  

descarga  en  segundo  plano  •  ­i :  descarga  
múltiples  archivos/URL  •  ­­ftp­user  y  ­­ftp­
password :  Descarga  FTP  usando  wget  con  nombre  de  usuario  y  contraseña
autenticación

Tasa  de  limitar  el  ancho  de  banda

Habrá  momentos  en  los  que  estaremos  en  algún  lugar  donde  el  ancho  de  banda  sea  limitado  o  queramos  priorizar  el  

ancho  de  banda  de  alguna  manera.  Podemos  restringir  la  velocidad  de  descarga  con  la  opción  ­­limit­rate  de  la  siguiente  
manera;

wget  ­­limit­rate=20k  https://github.com/mbostock/d3/archive/master.zip

Aquí  hemos  limitado  la  velocidad  de  descarga  a  20  kilobytes  por  segundo.  La  cantidad  puede  expresarse  en  bytes,  
kilobytes  con  el  sufijo  k  o  megabytes  con  el  sufijo  m .

Cambiar  el  nombre  del  archivo  descargado

Si  intentamos  descargar  un  archivo  con  el  mismo  nombre  en  el  directorio  de  trabajo,  se  guardará  con  un  sufijo  numérico  
incremental  (es  decir,  .1,  .2 ,  etc.).  Sin  embargo,  podemos  darle  al  archivo  un  nombre  diferente  cuando  lo  descargamos  
usando  la  opción  ­O  (esa  es  una  'o'  mayúscula  por  cierto).  Por  ejemplo  para  guardar  el  archivo  con  el  nombre  alpha.zip  
haríamos  lo  siguiente;
Machine Translated by Google

Comandos  Linux 211

wget  ­O  alfa.zip  https://github.com/mbostock/d3/archive/master.zip

Descargar  en  segundo  plano

Debido  a  que  la  descarga  de  un  archivo  puede  llevar  un  tiempo  considerable,  podemos  indicarle  al  proceso  que  se  
ejecute  en  segundo  plano,  lo  que  liberará  al  terminal  para  que  siga  funcionando.  Esto  se  logra  con  la  opción  ­b  de  la  
siguiente  manera;

wget  ­b  https://github.com/mbostock/d3/archive/master.zip

Mientras  continúa  la  descarga,  el  progreso  que  normalmente  se  reflejaría  en  la  pantalla  se  pasa  al  archivo  wget­log  que  
estará  en  el  directorio  de  trabajo.  Podemos  verificar  este  archivo  para  determinar  el  progreso  según  sea  necesario.

Descargar  varios  archivos

Si  bien  podemos  descargar  varios  archivos  simplemente  incluyéndolos  uno  tras  otro  en  el  comando  de  la  siguiente  
manera;

wget  https://website.org/file1.zip  https://website.org/file2.zip

Si  bien  eso  es  bueno,  puede  comenzar  a  ser  un  poco  confuso  si  se  incluye  una  gran  cantidad  de  URL.
Para  facilitar  las  cosas,  podemos  crear  un  archivo  de  texto  con  las  URL/nombres  de  los  archivos  que  queremos  
descargar  y  luego  especificamos  el  archivo  con  la  opción  ­i .

Por  ejemplo,  si  tenemos  un  archivo  llamado  archivos.txt  en  el  directorio  de  trabajo  actual  que  tiene  los  siguientes  
contenidos;

https://github.com/d3/d3­dispatch/blob/master/src/dispatch.js  https://github.com/d3/
d3­selection/blob/master/src/select.js  https://  github.com/d3/d3­dsv/blob/master/
src/csv.js  https://github.com/d3/d3­scale/blob/master/src/time.js  
https://github.com/  d3/d3­color/blob/master/src/color.js  https://github.com/
d3/d3­axis/blob/master/src/axis.js  https://github.com/d3/d3­  tiempo/blob/
maestro/src/intervalo.js

Entonces  podemos  ejecutar  el  comando...

wget  ­i  archivos.txt

www.dbooks.org
Machine Translated by Google

Comandos  Linux 212

…  y  trabajará  a  través  de  cada  archivo  y  lo  descargará.

Descargar  archivos  que  requieren  un  nombre  de  usuario  y  contraseña

Los  ejemplos  mostrados  hasta  ahora  se  han  podido  descargar  sin  proporcionar  ningún  tipo  de  autenticación  (sin  
usuario/contraseña).  Sin  embargo,  esto  será  un  requisito  para  algunas  descargas.
Para  incluir  un  nombre  de  usuario  y  una  contraseña  en  el  comando,  incluimos  las  opciones  ­­ftp­user  y  ­­ftp  
password .  Por  ejemplo  si  necesitáramos  usar  el  nombre  de  usuario  'adam'  y  la  contraseña  '1234'  formaríamos  o  
mandaríamos  de  la  siguiente  manera;

wget  ­­ftp­user=adam  ­­ftp­password=1234  ftp://website.org/file.zip

Usted  puede  estar  pensando  para  sí  mismo  "¿Es  esto  seguro?".  A  lo  que  la  respuesta  probablemente  debería  ser  
"No".  Está  un  paso  por  encima  del  acceso  anónimo,  pero  no  mucho  más.  Este  no  es  un  método  por  el  cual  las  cosas  
que  deben  permanecer  privadas  deben  protegerse,  pero  proporciona  un  método  para  restringir  el  anonimato.
acceso.

Descargar  archivos  recursivamente

Una  de  las  características  principales  de  wget  es  su  capacidad  para  descargar  una  gran  estructura  de  directorios  
compleja  que  existe  en  muchos  niveles.  El  mejor  ejemplo  de  esto  sería  la  estructura  de  archivos  y  directorios  que  
existen  para  conformar  un  sitio  web.  Si  bien  existe  una  amplia  gama  de  opciones  que  se  pueden  pasar  para  que  el  
proceso  funcione  correctamente  en  una  amplia  variedad  de  situaciones,  aún  es  posible  usar  un  conjunto  bastante  
genérico  para  comenzar.

Por  ejemplo,  para  descargar  los  contenidos  del  sitio  web  en  dnoob.runkite.com  podemos  ejecutar  el  siguiente  
comando;

wget  ­e  robots=off  ­r  ­np  ­c  ­nc  http://dnoob.runkite.com/

Las  opciones  utilizadas  aquí  hacen  lo  siguiente;

•  ­e  robots=off :  la  opción  de  ejecución  nos  permite  ejecutar  un  comando  separado  y  en  este  caso  es  el  comando  
robots=off  el  que  le  dice  al  sitio  web  que  estamos  visitando  que  debe  ignorar  el  hecho  de  que  estamos  
ejecutando  un  comando  que  actúa  como  un  robot  y  nos  permite  descargar  los  archivos.

•  ­r :  la  opción  recursiva  habilita  la  descarga  recursiva.  •  ­np :  la  opción  
sin  padres  asegura  que  una  recuperación  recursiva  solo  funcione  en  páginas  que
están  debajo  del  directorio  especificado.
•  ­c :  la  opción  continuar  asegura  que  cualquier  archivo  descargado  parcialmente  continúe  desde  el
lugar  que  dejó.
•  ­nc :  la  opción  no­clobber  garantiza  que  los  archivos  duplicados  no  se  anulen

Una  vez  ingresado,  el  programa  mostrará  una  lista  continua  del  progreso  y  un  resumen  que  nos  indica  cuántos  
archivos  y  el  tiempo  que  tomó  al  final.  El  resultado  final  es  un  directorio  llamado
Machine Translated by Google

Comandos  Linux 213

dnoob.runkite.com  en  el  directorio  de  trabajo  que  tiene  todo  el  sitio  web,  incluidas  todas  las  páginas  vinculadas  
y  los  archivos  que  contiene.  Si  examinamos  la  estructura  del  directorio,  se  parecerá  un  poco  a  lo  siguiente;

dnoob.runkite.com/  ├──  

activos  │  ├──  
css  │  │  └──  
screen.css?v=bb61fe2  │  ├──  fuentes  │  │  ├──  
icons.svg  │  │  └  ──  
iconos.woff  │  │  │  ├──  contenido  
│  imágenes  │  └──  2015  │  ├──  
└──
js  
├──  index.js?v=bb61fe2
└──
jquery.fitvids.js?v=bb61fe2
09  │  │  ├──  
└──
BplusandB2.png  │  │  
├──  piblog­01.png  │  │  
│  └──  10  │  ├──  placa­02.  
png  │  ├──  terminal.png  │  ├──  todo­es­un­archivo­en­
linux  │  └──  index.html  ├──  favicon.ico  ├──  
└──
index.html  ├──   RPiAlpha­1.png
linux­files­and  ­inodes  │  └──  
index.html  ├──  public  │  jquery.min.js?v=bb61fe2  
├──  expresiones­regulares­en­linux  │  └──  
└──
wheezy­raspbian­archivo.png
index.html  ├──  un  │  └──  index.  html

└──

└──
bienvenido  a  raspbian­debian­wheezy  └──  index.html

El  uso  de  wget  para  la  descarga  recursiva  debe  usarse  de  manera  adecuada.  Se  consideraría  de  mala  
educación  saquear  un  sitio  web  por  cualquier  otra  razón  que  no  sea  una  buena  razón.  En  caso  de  duda,  
comuníquese  con  la  persona  responsable  de  un  sitio  o  un  repositorio  solo  para  asegurarse  de  que  no  haya  
una  forma  más  simple  de  realizar  su  tarea  si  se  trata  de  algo  'raro'.

Pruébate

1.  Cree  un  comando  wget  que  descargue  un  archivo  con  un  nombre  diferente,  limitando  la  descarga

www.dbooks.org
Machine Translated by Google

Comandos  Linux 214

velocidad  a  10  kilobytes  por  segundo  y  que  opera  en  segundo  plano.
2.  Una  vez  realizada  la  pregunta  1  anterior,  ¿dónde  encontramos  la  salida  de  las  descargas?
¿progreso?
Machine Translated by Google

Comandos  Linux 215

Misceláneas
apt­get

El  comando  apt­get  es  un  programa  que  se  utiliza  con  las  distribuciones  de  Linux  basadas  en  Debian  para  instalar,  
eliminar  o  actualizar  paquetes  de  software.  Es  una  herramienta  vital  para  instalar  y  administrar  software  y  debe  usarse  
regularmente  para  garantizar  que  el  software  esté  actualizado  y  que  se  cumplan  los  requisitos  de  parches  de  seguridad.

Hay  una  gran  cantidad  de  usos  para  apt­get,  pero  consideraremos  los  conceptos  básicos  que  nos  permitirán  salir  
adelante.  Estos  incluirán;

•  Actualización  de  la  base  de  datos  de  aplicaciones  disponibles  (apt­get  update)  •  
Actualización  de  las  aplicaciones  en  el  sistema  (apt­get  upgrade)  •  Instalación  
de  una  aplicación  (apt­get  install  *package­name*)  •  Desinstalación  de  una  
aplicación  (apt­  obtener  eliminar  *nombre­paquete*)

El  comando  apt­get

La  parte  apt  de  apt­get  significa  '  herramienta  de  empaquetado  avanzada  '.  El  programa  es  un  proceso  para  administrar  
paquetes  de  software  instalados  en  máquinas  Linux,  o  más  específicamente  en  máquinas  Linux  basadas  en  Debian²²  
(ya  que  aquellas  basadas  en  'redhat²³'  generalmente  usan  su  rpm  ( administración  de  paquetes  red  hat  (o  más  
recientemente,  la  '  administración  de  paquetes  rpm  ') ))  Como  Raspbian  se  basa  en  Debian,  los  ejemplos  que  
usaremos  se  basan  en  apt­get.

APT  simplifica  el  proceso  de  administración  de  software  en  sistemas  informáticos  similares  a  Unix  al  automatizar  la  
recuperación,  configuración  e  instalación  de  paquetes  de  software.  Históricamente,  este  fue  un  proceso  mejor  descrito  
como  "infierno  de  dependencia",  donde  los  requisitos  para  diferentes  paquetes  podrían  significar  que  una  instalación  
manual  de  una  aplicación  de  software  simple  podría  llevar  al  usuario  a  un  sumidero  de  desesperación.

En  el  uso  común  de  apt­get,  agregaremos  el  prefijo  sudo  al  comando  para  darnos  los  permisos  apropiados;

apt­obtener  actualización

sudo  apt­obtener  actualización

Esto  volverá  a  sincronizar  nuestra  lista  local  de  archivos  de  paquetes,  actualizando  la  información  sobre  paquetes  
nuevos  y  modificados  recientemente.  Si  se  planea  una  actualización  de  apt­get  (ver  a  continuación),  siempre  se  debe  
realizar  primero  una  actualización  de  apt­get .

Una  vez  que  se  ejecuta  el  comando,  la  computadora  se  adentrará  en  Internet  para  obtener  las  listas  de  paquetes  
actuales  y  descargarlos  para  que  veamos  aparecer  una  lista  de  fuentes  de  software  similar  a  la  siguiente;

²²https://www.debian.org/  
²³http://www.redhat.com/

www.dbooks.org
Machine Translated by Google

Comandos  Linux 216

pi@raspberrypi  ~  $  sudo  apt­get  update  Presione  
http://raspberrypi.collabora.com  wheezy  Release.gpg  Obtenga:  1  http://
mirrordirector.raspbian.org  wheezy  Release.gpg  [490  B]
Obtener:  2  http://archive.raspberrypi.org  wheezy  Release.gpg  [473  B]
Presione  http://raspberrypi.collabora.com  Wheezy  Release  Get:3  
http://mirrordirector.raspbian.org  Wheezy  Release  [14.4  kB]
Obtener:4  http://archive.raspberrypi.org  Wheezy  Versión  [17,6  kB]
Pulse  http://raspberrypi.collabora.com  Paquetes  wheezy/rpi  armhf  Obtenga:  5  http://
mirrordirector.raspbian.org  Paquetes  wheezy/main  armhf  [6,904  kB]
Obtener:  6  paquetes  http://archive.raspberrypi.org  wheezy/main  armhf  [130  kB]
Ign  http://raspberrypi.collabora.com  wheezy/rpi  Translation­en  Ign  http://
mirrordirector.raspbian.org  wheezy/contrib  Translation­en  Ign  http://mirrordirector.raspbian.org  
wheezy/main  Translation­en  Ign  http ://mirrordirector.raspbian.org  wheezy/non­free  
Translation­en  Ign  http://mirrordirector.raspbian.org  wheezy/rpi  Translation­en  Recuperado  
7140  kB  en  35  s  (200  kB/s)

Leyendo  listas  de  paquetes...  Listo

apt­obtener  actualización

sudo  apt­obtener  actualización

El  comando  apt­get  upgrade  instalará  las  versiones  más  recientes  de  todos  los  paquetes  actualmente  instalados  en  
el  sistema.  Si  un  paquete  está  instalado  actualmente  y  hay  una  nueva  versión  disponible,  se  recuperará  y  actualizará.  
Las  nuevas  versiones  de  los  paquetes  actuales  que  no  se  puedan  actualizar  sin  cambiar  el  estado  de  instalación  de  
otro  paquete  se  dejarán  como  están.

Como  se  mencionó  anteriormente,  siempre  se  debe  realizar  primero  una  actualización  de  apt­get  para  que  la  
actualización  de  apt­get  sepa  qué  nuevas  versiones  de  paquetes  están  disponibles.

Una  vez  que  se  ejecuta  el  comando,  la  computadora  considerará  sus  aplicaciones  instaladas  contra  la  lista  de  bases  
de  datos  de  los  paquetes  más  actualizados  y  nos  mostrará  un  mensaje  que  nos  permitirá  saber  cuántos  paquetes  
están  disponibles  para  actualizar,  cuántos  datos  se  necesitarán.  que  se  descargará  y  qué  impacto  tendrá  esto  en  
nuestro  almacenamiento  local.  En  este  punto  podemos  decidir  si  queremos  continuar  o  no;

pi@raspberrypi  ~  $  sudo  apt­get  upgrade  Leyendo  
listas  de  paquetes...  Listo  Construyendo  
árbol  de  dependencias  Leyendo  
información  de  estado...  Listo  Se  actualizarán  
los  siguientes  paquetes:  bind9­host  cups­bsd  cups­
client  cups­common  libapache2­mod­  php5  libbind9­80  libisccc80  libisccfg82  liblwres80  libsdl1.2debian  
libsqlite3­0  libssl1.0.0  php5­mcrypt  php5­mysql  raspi­config

6  actualizados,  0  recién  instalados,  0  para  eliminar  y  0  no  actualizados.
Machine Translated by Google

Comandos  Linux 217

Necesita  obtener  10,7  MB  de  archivos.
Después  de  esta  operación,  se  liberarán  556  kB  de  espacio  en  disco.
¿Quieres  continuar  [S/n]?

Una  vez  que  decimos  que  sí  ('Y'),  la  actualización  comienza  y  veremos  una  lista  de  los  paquetes  a  medida  que  
se  descargan,  desempaquetan  e  instalan  (lo  que  sigue  es  un  ejemplo  editado);

¿Quieres  continuar  [S/n]?  y  Obtener:1  http://
archive.raspberrypi.org/debian/wheezy/main  libsdl1.2debian  armhf  1.2.15­5+rpi1  [205  kB]

Obtener:  2  http://archive.raspberrypi.org/debian/wheezy/main  raspi­config  todo  20150131­5  [13,3  kB]

Obtener:3  http://mirrordirector.raspbian.org/raspbian/wheezy/main  libsqlite3­0  armhf  3.7.13­1+deb7u2  
[414  kB]
Obtuvo  10,7  MB  en  31  s  (343  kB/s)
Preconfigurando  paquetes...
(Leyendo  base  de  datos...  80703  archivos  y  directorios  actualmente  instalados.)
Preparándose  para  reemplazar  cups­common  1.5.3­5+deb7u5  
(usando .../cups­common_1.5.3­5+deb7u6_all.deb) ...
Desembalaje  de  vasos  de  repuesto­comunes...
Preparándose  para  reemplazar  cups­bsd  1.5.3­5+deb7u5  
(usando .../cups­bsd_1.5.3­5+deb7u6_armhf.deb) ...
Desembalaje  de  vasos  de  repuesto­bsd...
Preparándose  para  reemplazar  php5­gd  5.4.39­0+deb7u2  
(usando .../php5­gd_5.4.41­0+deb7u1_armhf.deb) ...
Desempaquetando  el  reemplazo  de  php5­gd...
Disparadores  de  procesamiento  para  man­db...
Configurando  libssl1.0.0:armhf  (1.0.1e­2+rvt+deb7u17) ...
Configurando  libsqlite3­0:armhf  (3.7.13­1+deb7u2) ...
Configurando  cups­common  (1.5.3­5+deb7u6) ...
Configurando  cups­client  (1.5.3­5+deb7u6) ...

A  menudo  puede  haber  alertas  a  medida  que  el  proceso  identifica  diferentes  problemas  que  cree  que  el  
sistema  podría  encontrar  (alias  diferentes,  niveles  de  tiempo  de  ejecución  o  nombres  de  dominio  completos  
faltantes).  Esto  no  es  necesariamente  una  señal  de  problemas,  sino  más  bien  una  indicación  de  que  el  proceso  
tuvo  que  tener  en  cuenta  ciertas  configuraciones  al  actualizar  y  vale  la  pena  señalarlas.  Siempre  que  haya  
alguna  duda  sobre  lo  ocurrido,  Google  será  tu  amigo :­).

apt­get  install

El  comando  apt­get  install  instala  o  actualiza  uno  (o  más)  paquetes.  Todos  los  paquetes  adicionales  (de  
dependencia)  necesarios  también  se  recuperarán  e  instalarán.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 218

sudo  apt­get  install  *nombre­paquete*

Si  queremos  instalar  varios  paquetes,  simplemente  podemos  enumerar  cada  paquete  separado  por  un  espacio  después  
del  comando  de  la  siguiente  manera;

sudo  apt­get  install  paquete1  paquete2  paquete3

apt­get  eliminar

sudo  apt­get  remove  *nombre­paquete*

El  comando  apt­get  remove  elimina  uno  (o  más)  paquetes.

Pruébate

1.  ¿Cómo  podría  instalar  una  variedad  de  paquetes  con  nombres  similares  (por  ejemplo,  todos  los  paquetes
comenzando  con  'mysql')?
2.  Al  eliminar  un  paquete,  ¿se  conserva  o  elimina  la  configuración  de  ese  paquete  (Google  será  su  amigo)?

3.  ¿Cómo  podría  eliminar  varios  paquetes  con  un  solo  comando?
Machine Translated by Google

Comandos  Linux 219

claro

El  comando  borrar  se  usa  para  eliminar  los  comandos  y  la  salida  de  la  ventana  del  terminal  y  presentar  una  
pantalla  clara.  Esta  es  una  forma  conveniente  de  limpiar  un  'desorden'  para  mostrar  una  pantalla  en  blanco  
(aparte  de  un  símbolo  del  sistema).

•  borrar :  borra  la  pantalla  del  terminal.

Este  es  uno  de  los  comandos  más  simples  sin  opciones  ni  argumentos.

claro

El  resultado  es  una  pantalla  clara  con  solo  el  símbolo  del  sistema  en  la  esquina  superior  izquierda

El  comando  claro

El  comando  claro  no  tiene  opciones  ni  argumentos  que  nos  distraigan.  Su  misión  es  simplemente  hacernos  la  
vida  más  fácil  limpiando  la  pantalla.

Tenga  en  cuenta  que,  si  bien  puede  borrar  el  contenido  de  la  pantalla,  nuestro  historial  de  comandos  sigue  
estando  accesible,  por  lo  que  no  es  garantía  de  ocultación.

También  tiene  un  atajo  en  forma  de  combinación  de  teclas  'CTRL­l' (esa  es  una  'L'  minúscula  por  cierto).

Pruébate

1.  ¿Qué  otros  métodos  podrían  estar  disponibles  para  determinar  qué  había  en  la  pantalla  antes  de  que  se
en  blanco?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 220

eco
El  comando  echo  se  usa  ampliamente  al  escribir  scripts  y  en  la  línea  de  comando  para  mostrar  información  en  la  
pantalla.  Si  bien  los  usuarios  avanzados  utilizarán  este  comando  de  manera  extensiva,  también  es  útil  para  los  
usuarios  que  comienzan,  ya  que  tienen  una  buena  comprensión  del  contexto  de  los  comandos  que  están  
utilizando  y  como  un  componente  básico  para  un  mayor  avance.

•  echo  [opciones]  [cadena(s)] :  mostrar  texto  en  la  pantalla.

Cada  caparazón  tiene  una  interpretación  ligeramente  diferente  del  eco,  por  lo  que,  si  bien  los  principios  
siguen  siendo  los  mismos,  tenga  en  cuenta  que  habrá  variaciones  inevitables  en  algún  lugar  a  lo  largo  de  la  pista.
A  los  efectos  de  la  siguiente  explicación,  supondremos  el  uso  del  shell  'bash',  que  es  predominantemente  el  
shell  predeterminado  en  las  distribuciones  de  Linux.

echo  se  puede  demostrar  simplemente  ejecutando  algo  como  el  siguiente  comando;

echo  Mi  primer  eco!

Esto  producirá  lo  siguiente  en  la  siguiente  línea;

Mi  primer  eco!

Este  ejemplo  de  uso  puede  parecer  un  poco  trillado,  pero  la  verdadera  fuerza  viene  con  la  aplicación  de  variables  
y  opciones  de  formato.

El  comando  de  eco

Si  bien  el  eco  se  puede  considerar  un  comando  y  se  puede  usar  fácilmente  desde  la  línea  de  comandos,  su  poder  
real  se  revela  en  los  scripts  en  ejecución.  Como  parte  de  un  script,  el  comando  echo  puede  permitirnos  presentar  
comentarios  a  un  usuario  e  incluso  recopilar  información  para  permitir  una  mayor  utilidad  y  control.

echo  solo  tiene  tres  opciones  de  nota  y  todas  se  refieren  al  formato  de  la  salida;

•  ­n :  no  generar  un  carácter  de  nueva  línea  final  •  ­e :  
habilitar  la  interpretación  de  secuencias  de  escape  de  barra  invertida  •  
­E :  deshabilitar  la  interpretación  de  secuencias  de  escape  de  barra  invertida  (predeterminado)

La  aplicación  de  un  carácter  de  nueva  línea  final  significa  que  cada  vez  que  echo  muestra  algo  en  la  pantalla,  
inmediatamente  agrega  una  nueva  línea  a  la  salida  para  que  lo  siguiente  que  aparezca  en  la  pantalla  ocurra  en  
una  nueva  línea.  Por  ejemplo,  ejecutar  el  siguiente  comando  con  la  opción  ­n ;
Machine Translated by Google

Comandos  Linux 221

echo  ­n  ¡Mi  primer  eco!

verá  aparecer  la  siguiente  línea  como  tal;

Mi  primer  echo!pi@raspberrypi:~  $

Esto  muestra  el  símbolo  del  sistema  (pi@raspberrypi:   $)  con  el  nombre  de  usuario  y  el  nombre  del  sistema  
inmediatamente  detrás  de  la  cadena  repetida;

Habilitar  los  caracteres  de  barra  invertida  con  la  opción  ­e  nos  permite  incluir  una  gama  de  caracteres  de  formato  
que  nos  permitirán  presentar  la  información  en  pantalla  de  una  forma  más  flexible.  Los  personajes  son;

•  \a :  alerta  
(campana)  •  \b :  
retroceso  •  \c :  suprimir  salida  
adicional  •  \e :  carácter  de  
escape  •  \f :  avance  
de  página  •  \n :  
nueva  línea  •  \r :  retorno  
de  carro  •  \t :  pestaña  
horizontal  •  \v :  
tabulador  vertical  •  
\\ :  barra  invertida  •  \0nnn :  el  carácter  cuyo  código  ASCII  es  nnn  (octal).  nnn  puede  tener  de  0  a  3  
dígitos  octales  •  \xHH :  el  carácter  de  ocho  bits  cuyo  valor  es  HH  (hexadecimal).  HH  puede  ser  uno  o  dos  hex.
dígitos

Como  ejemplo,  el  siguiente  comando;

echo  ­e  "¡Mi  \nprimer  \necho!  \n\t(ahora  \tcon  \ttabs)"

Producirá  el  siguiente  resultado;

Mi  
primer
¡eco!

(ahora con pestañas)

www.dbooks.org
Machine Translated by Google

Comandos  Linux 222

La  cadena  en  el  comando  está  encerrada  entre  marcas  de  voz.  Sin  estos,  los  caracteres  
de  barra  invertida  y  paréntesis  no  se  interpretan  como  nos  gustaría.

La  segunda  característica  del  arco  de  echo  es  su  capacidad  para  informar  valores  variables.  podemos  establecer  
fácilmente  valores  de  variables  en  el  shell  (o  un  script)  que  luego  se  pueden  imprimir  usando  echo  de  la  siguiente  manera;

x=1234
eco  $x

El  comando  luego  informará  el  valor  en  la  variable  'x';

1234

Del  mismo  modo,  podemos  usar  las  variables  de  entorno  integradas  para  mostrar  más  sobre  nuestro  sistema;

x=1234
eco  $  INICIO

El  comando  luego  informará  el  directorio  de  inicio  de  los  usuarios  actuales;

/inicio/pi

Podemos  encontrar  una  lista  de  las  variables  de  entorno  usando  el  comando  env .

Pruébate

1.  ¿Por  qué  no  tuvimos  que  usar  paréntesis  en  nuestro  primer  comando  de  ejemplo?  echo  My  first
¿¡eco!?

2.  Elabore  un  comando  de  eco  que  combine  una  cadena,  una  variable  local  (x)  y  un  entorno
variable.
Machine Translated by Google

Comandos  Linux 223

agregar  grupo

El  comando  groupadd  es  utilizado  por  un  superusuario  (generalmente  a  través  de  sudo)  para  agregar  una  
cuenta  de  grupo.  Es  un  comando  fundamental  en  el  sentido  de  que  Linux,  como  un  sistema  multiusuario  
complejo,  requería  un  mecanismo  para  agregar  grupos.  No  es  que  este  comando  se  use  todos  los  días,  pero  
es  importante  saberlo  para  permitirnos  administrar  usuarios  en  la  computadora.

•  groupadd  [opciones]  grupo:  agregar  una  cuenta  de  grupo

El  siguiente  ejemplo  es  la  aplicación  más  simple  del  comando;

sudo  groupaddpigroup

Esto  crea  el  grupo  'pigroup'  utilizando  los  valores  predeterminados  del  sistema.

El  comando  groupadd

El  comando  groupadd  no  se  utiliza  con  regularidad,  pero  es  útil  para  reconocer  su  función.  Agrega  una  cuenta  
de  grupo  utilizando  los  valores  predeterminados  del  sistema.  El  nuevo  grupo  se  ingresará  en  los  archivos  del  
sistema  según  sea  necesario.  Solo  puede  ser  utilizado  por  el  usuario  raíz,  por  lo  que  a  menudo  tiene  el  prefijo  
del  comando  sudo .  Los  nombres  de  grupo  solo  pueden  tener  hasta  32  caracteres  y,  si  el  nombre  de  grupo  ya  
existe  en  una  base  de  datos  de  grupo  externa,  como  NIS  o  LDAP,  groupadd  rechazará  la  solicitud  de  creación  
de  grupo.

Cuando  se  ejecuta  groupadd ,  lo  hace  utilizando  los  siguientes  archivos;

• /etc/group :  información  de  la  cuenta  del  grupo.  • /
etc/gshadow :  información  de  cuenta  de  grupo  segura.  • /etc/
login.defs :  configuración  del  conjunto  de  contraseñas  ocultas.

Pruébate

1.  ¿Qué  otro  comando  que  hemos  visto  utiliza  los  archivos  anteriores?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 224

hombre

El  comando  man  se  utiliza  para  formatear  y  mostrar  documentación  (o  manuales)  sobre  otros  comandos.  Es  uno  
de  los  comandos  más  importantes  desde  la  perspectiva  de  proporcionar  una  referencia  siempre  disponible  sobre  
cómo  debe  formatearse  o  usarse  un  comando.

•  Man  [opciones]  comando:  muestra  el  manual  de  referencia  de  un  comando.

El  comando  man  se  usa  principalmente  sin  ninguna  opción  y  solo  con  el  comando  sobre  el  que  queremos  encontrar  
información.  Por  ejemplo,  para  obtener  información  sobre  el  comando  ls  simplemente  escribimos;

hombre  ls

A  continuación,  se  mostrará  la  primera  página  del  manual  para  el  comando  ls ;

LS(1) Comandos  de  usuario LS(1)

NOMBRE

ls  ­  lista  de  contenidos  del  directorio

SINOPSIS
ls  [OPCIÓN]...  [ARCHIVO]...

DESCRIPCIÓN

Muestra  información  sobre  los  ARCHIVOS  (el  directorio  actual  por  defecto).
Ordene  las  entradas  alfabéticamente  si  no  se  especifica  ninguno  de  ­cftuvSUX  ni  ­­sort.

Los  argumentos  obligatorios  para  las  opciones  largas  son  obligatorios  para  las  opciones  cortas
también.

­a,  ­­todos
no  ignore  las  entradas  que  comiencen  con .

Podemos  avanzar  hacia  abajo  en  la  página  (y  retroceder)  una  línea  a  la  vez  con  las  teclas  de  flecha  o  movernos  un  
poco  más  rápido  una  página  a  la  vez  con  las  teclas  de  avance/retroceso  de  página.

En  cualquier  momento  podemos  pulsar  'q'  para  salir  del  programa  man  y  volver  a  la  línea  de  comandos.

El  mando  del  hombre

El  comando  man  muestra  la  documentación  (o  manual)  disponible  en  la  computadora  para  un  comando  específico.  
Piense  en  ello  como  una  forma  de  documentación  en  línea  que  está  disponible  en  los  sistemas  operativos  Unix/
Linux.  El  comando  man  puede  mostrar  documentación  sobre  diferentes  temas  aparte
Machine Translated by Google

Comandos  Linux 225

de  los  comandos.  Estas  se  denominan  secciones  e  incluyen  llamadas  al  sistema,  funciones  de  biblioteca,  
dispositivos,  formatos  de  archivo,  juegos  y  diversiones,  convenciones  y  miscelánea,  administración  del  sistema  
y  comandos  privilegiados  y  comandos  TCL.  Sin  embargo,  a  los  efectos  de  una  introducción,  un  usuario  más  
nuevo  identificará  el  comando  man  como  la  referencia  para  los  programas  ejecutables  (que  es  la  sección  1).

La  documentación  de  un  comando  individual  se  suele  denominar  "página  man".  La  página  normalmente  se  
compone  de  una  variedad  consistente  de  secciones  como;

•  NOMBRE:  El  nombre  del  comando  en  sí  y  una  breve  descripción  de  lo  que  el  comando
hace.

•  SINOPSIS:  Este  es  un  esquema  que  describe  cómo  se  supone  que  debe  usarse  el  comando.  •  
DESCRIPCIÓN:  una  descripción  más  detallada  del  comando,  incluidas  las  opciones
disponible.

•  AUTORES:  Las  personas  que  escribieron  o  ayudaron  en  la  redacción  del  mandato.  •  BUGS:  
Cualquier  problema  conocido  con  los  programas.  La  mayoría  de  las  veces  estos  no  son  errores,  sino
limitaciones.

•  ENTORNO:  Cualquier  variable  que  pueda  ser  necesaria  o  limitaciones  en  la  versión  del  shell  que  pueda  
ser  necesaria.  •  EJEMPLOS  o  
NOTAS:  Ejemplos  de  uso  y  notas  generales.  •  REPORTE  DE  ERRORES:  
Si  encontramos  problemas  con  el  comando,  este  nos  dice  donde  podemos
Reportalos.
•  DERECHOS  DE  AUTOR:  Esta  es  la  persona  u  organización  que  posee  los  derechos  de  autor  del  
comando.  •  VER  TAMBIÉN:  Que  sugiere  otros  comandos  que  están  relacionados  con  este  comando.

Debido  a  que  Linux  es  un  sistema  operativo  que  es  un  esfuerzo  de  colaboración,  el  producto  final  es  el  resultado  
de  muchas  personas  diferentes  que  contribuyen  de  diferentes  maneras.  Las  páginas  de  manual  no  son  una  
excepción  y,  como  resultado,  encontraremos  que  algunas  están  más  desarrolladas  que  otras.  Si  bien  existe  un  
grado  de  consistencia,  siempre  habrá  variaciones  en  la  profundidad  o  integridad  de  la  descripción.  No  se  
pretende  que  una  página  del  manual  sea  el  repositorio  completo  de  todo  el  conocimiento  sobre  un  comando,  
pero  ciertamente  es  un  buen  primer  lugar  para  comenzar.

Para  obtener  ayuda  al  ejecutar  el  comando  man ,  presione  la  tecla  'h'.  Esto  proporcionará  alguna  ayuda  para  
navegar  por  el  comando  y  probablemente  será  una  reproducción  de  los  comandos  que  usa  el  programa  de  
visualización  de  texto  que  usa .  La  siguiente  es  la  página  de  ayuda  que  se  muestra  al  usar  el  sistema  operativo  
Raspbian  predeterminado  y  muestra  que  usa  menos  para  mostrar  las  páginas;

www.dbooks.org
Machine Translated by Google

Comandos  Linux 226

RESUMEN  DE  MENOS  COMANDOS

Comandos  marcados  con  * puede  estar  precedido  por  un  número,  N.
Las  notas  entre  paréntesis  indican  el  comportamiento  si  se  da  N.
Una  tecla  precedida  por  un  signo  de  intercalación  indica  la  tecla  Ctrl;  por  lo  tanto,  ^K  es  ctrl­K.

S.S Mostrar  esta  ayuda.
q :q  Q :Q  ZZ Salida.
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­  ­­­­­­­­­­­­­­­­­­­­­­­­­

MOVIENTE

e  ^E  j  ^N  CR  *  Reenviar  una  línea  (o  N  líneas).  y  ^Y  k  ^K  ^P  *  Hacia  atrás  una  
línea  (o  N  líneas).  f  ^F  ^V  ESPACIO  *  Adelante  una  ventana  (o  N  líneas).

b  ^B  ESC­v *  Hacia  atrás  una  ventana  (o  N  líneas).
z *  Reenviar  una  ventana  (y  configurar  la  ventana  en  N).
w *  Retroceda  una  ventana  (y  establezca  la  ventana  en  N).
ESC­ESPACIO *  Avance  una  ventana,  pero  no  se  detenga  al  final  del  archivo.
re  ^  re *  Reenviar  una  media  ventana  (y  establecer  media  ventana  en  N).
tu  ^  tu *  Retrocede  una  media  ventana  (y  establece  la  media  ventana  en  N).
ESC­)  RightArrow  *  La  mitad  izquierda  del  ancho  de  la  pantalla  (o  N  posiciones).
AYUDA  ­­  Presiona  RETURN  para  más,  o  q  cuando  hayas  terminado

Pruébate

1.  ¿El  comando  man  muestra  el  material  de  referencia  definitivo  para  un  comando?
2.  ¿Es  necesario  estar  conectado  a  Internet  para  mostrar  las  páginas  man?
Machine Translated by Google

Comandos  Linux 227

Modprobe

El  comando  modprobe  nos  permite  agregar  (o  quitar)  módulos  al  Kernel²   de  Linux.  El  kernel  de  Linux  es  el  
código  que  forma  el  núcleo  del  sistema  operativo  Linux,  por  lo  que  es  algo  importante.
Al  cambiar  el  hardware,  el  comando  modprobe  nos  permite  importar  o  eliminar  el  equivalente  de  los  controladores  
de  dispositivos  de  Windows  hacia/desde  el  kernel  para  habilitar/deshabilitar  la  funcionalidad  adicional.

•  modprobe  [opciones]  [nombre  del  módulo]:  carga  o  elimina  un  módulo  del  kernel  de  Linux

Por  ejemplo,  para  agregar  el  módulo  w1­therm  para  admitir  la  medición  de  temperatura  a  través  del  bus  1­Wire,  
ejecutaríamos  el  siguiente  comando;

sudo  modprobe  w1­therm

Es  necesario  hacer  esto  como  superusuario  a  través  de  sudo.

El  comando  modprobe

El  kernel  de  Linux  está  diseñado  con  una  estructura  monolítica,  pero  con  la  capacidad  de  poder  cambiar  los  
módulos  del  kernel  mientras  se  ejecuta.  (Windows  7  y  OS  X  utilizan  núcleos  híbridos  que  ofrecen  la  ventaja  de  
ser  de  menor  tamaño,  pero  requieren  una  mayor  gestión  de  los  controladores  por  parte  del  usuario  y  el  
fabricante).

Para  evitar  la  desventaja  de  tener  una  gran  huella,  los  desarrolladores  del  kernel  de  Linux  han  incorporado  la  
función  de  agregar  o  eliminar  módulos  del  kernel  sobre  la  marcha.  Esto  se  puede  llevar  al  extremo  en  el  que  se  
puede  reemplazar  todo  el  módulo  del  kernel  sin  necesidad  de  reiniciar.

Los  módulos  del  kernel  generalmente  se  encuentran  en  el  directorio  lib/modules  y  se  pueden  enumerar  con  el  
siguiente  comando;

ls /lib/módulos/$(uname  ­r)

Una  salida  podría  parecerse  a  la  siguiente;

² http://www.howtogeek.com/howto/31632/what­is­the­linux­kernel­and­what­does­it­do/

www.dbooks.org
Machine Translated by Google

Comandos  Linux 228

pi@raspberrypi /lib/módulos  $  ls /lib/módulos/$(uname  ­r)
núcleo módulos.incorporados módulos.dep.bin  módulos.softdep  módulos.incorporados.bin  
módulos.alias módulos.devname  módulos.símbolos
módulos.alias.bin  módulos.dep módulos.pedir módulos.símbolos.bin

También  podemos  listar  todos  los  módulos  cargados  usando  el  comando  lsmod  de  la  siguiente  manera;

lsmod

Una  salida  de  muestra  puede  ser  similar  a  la  siguiente;

pi@raspberrypi /lib/módulos  $  lsmod
Módulo Tamaño  utilizado  por
w1_therm 2559  0

cable 25680  1  w1_therm
cn 4636  1  cable
matar 16651  1  cfg80211
i2c_dev   6027  0

snd_bcm2835 18649  0

snd_pcm   73475  1  snd_bcm2835

snd_seq   53078  0

snd_seq_dispositivo   5628  1  snd_seq  17784  2  
snd_timer snd_pcm,snd_seq  51038  5  
snd snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq\
_dispositivo
i2c_bcm2708 4990  0

También  podemos  ver  la  gama  de  controladores  que  están  disponibles  a  través  del  comando;

ls /lib/modules/$(uname  ­r)/kernel/drivers/

Lo  que  proporcionaría  una  salida  similar  a  la  siguiente;

pi@raspberrypi /lib/modules  $  ls /lib/modules/$(uname  ­r)/kernel/drivers/  rtc  staging  w1  scsi  uio  watchdog
base CD  ROM entrada  extcon  mfd  nfc  gpio
bcma carbonizarse miscelánea  de  leds  de

bloquear conector  escondido Maryland


usb  de  potencia  spi  mmc

frecuencia  cpu  bluetooth i2c red  de  medios  pps vídeo  de  ssb


Machine Translated by Google

Comandos  Linux 229

Opciones

El  comando  modprobe  tiene  varias  opciones,  pero  la  gran  mayoría  de  los  usuarios  simplemente  necesitarán  
instalar  un  módulo  que  se  hace  usando  el  comando  sudo  modprobe  [nombre  del  módulo]  (no  se  necesitan  
opciones).

La  única  opción  de  comando  realista  que  un  usuario  novato  podría  usar  sería  ­r ,  que  eliminaría  un  módulo.

sudo  modprobe  ­r  w1­therm

Argumentos

El  nombre  del  módulo  es  el  principal  argumento  utilizado  al  ejecutar  el  comando  modprobe .  Se  pueden  
cargar  varios  módulos  simplemente  poniendo  un  espacio  entre  los  nombres  de  los  módulos.

Pruébate

1.  Qué  tipo  de  módulo  se  usa  en  el  kernel  de  Linux  frente  al  kernel  de  Windows  y  cuál  es  la  ventaja  del  
enfoque  del  kernel  de  Linux  2.  Muestre  cómo  
se  pueden  cargar  los  módulos  mod1,  mod2  y  mod3  usando  un  solo  uso  del  comando  modprobe .

www.dbooks.org
Machine Translated by Google

Comandos  Linux 230

Contraseña

El  comando  passwd  es  una  herramienta  vital  del  administrador  del  sistema  para  administrar  las  contraseñas  de  las  cuentas  de  
usuario.  Podemos  cambiar  nuestra  propia  cuenta,  o  como  usuario  root  podemos  cambiar  otras  cuentas.

•  contraseña  [opciones]  nombre  de  usuario:  cambiar  la  contraseña  de  usuario

Para  cambiar  la  cuenta  de  usuario  actual  todo  lo  que  necesitamos  hacer  es  ejecutar  el  comando  passwd ;

Contraseña

Para  permitir  que  se  cambie  nuestra  contraseña,  primero  debemos  ingresar  la  contraseña  que  vamos  a  cambiar;

Cambio  de  contraseña  para  newpi.  (actual)  
contraseña  de  UNIX:

El  ingresamos  la  nueva  contraseña;

Introduzca  la  nueva  contraseña  de  UNIX:

Luego  volvemos  a  ingresar  la  nueva  contraseña  para  confirmar  que  la  escribimos  bien  la  primera  vez;

Vuelva  a  escribir  la  nueva  contraseña  de  UNIX:

Luego  se  nos  dice  que  la  actualización  se  ha  realizado  correctamente;

passwd:  contraseña  actualizada  con  éxito

Esta  es  una  de  las  tareas  más  sencillas  que  utiliza  el  comando  passwd ,  pero  hay  otras  que  implican  un  mayor  grado  de  
complejidad  para  la  gestión  de  usuarios  y  contraseñas.

El  comando  contraseña

El  comando  passwd  nos  permite  cambiar  las  contraseñas  de  las  cuentas  de  usuario.  Como  usuario  normal  solo  podemos  cambiar  
la  contraseña  de  nuestra  propia  cuenta,  mientras  que  como  superusuario  ('root')  podemos  cambiar  la  contraseña  de  cualquier  
cuenta.  El  comando  passwd  también  puede  cambiar  las  propiedades  de  la  contraseña  de  una  cuenta  a  través  de  opciones  como;

•  ­n :  establece  el  número  mínimo  de  días  entre  cambios  de  contraseña  •  ­x :  establece  el  
número  máximo  de  días  que  una  contraseña  permanece  válida  •  ­w :  establece  el  número  
de  días  de  advertencia  antes  de  que  se  requiera  un  cambio  de  contraseña

Para  ver  las  propiedades  de  nuestra  contraseña  podemos  usar  el  comando  chage  con  la  opción  ­l  para  listar  los  detalles  de  la  
contraseña  del  usuario  'newpi';
Machine Translated by Google

Comandos  Linux 231

cambio  ­l  newpi

Esto  nos  mostrará  detalles  similares  a  los  siguientes;

último  cambio  de  contraseña :  13  de  febrero  de  2016
La  contraseña  caduca :  13  de  mayo  de  2016
Contraseña  inactiva :  nunca
La  cuenta  caduca :  nunca
Número  mínimo  de  días  entre  el  cambio  de  contraseña :  0
Número  máximo  de  días  entre  el  cambio  de  contraseña :  90

Podemos  establecer  el  número  mínimo  de  días  entre  cambios  de  contraseña  (a  través  de  ­n),  el  número  máximo  de  
días  que  una  contraseña  permanece  válida  (a  través  de  ­x)  o  el  número  de  días  de  advertencia  antes  de  que  se  
requiera  un  cambio  de  contraseña  (a  través  de  ­w)  como  sigue;

sudo  passwd  ­n  0  newpi
sudo  passwd  ­x  90  newpi  sudo  
passwd  ­w  7  newpi

Necesitamos  configurarlos  usando  sudo  ya  que  constituye  una  función  de  administración  del  sistema  
que  debe  ser  realizada  por  un  usuario  con  privilegios  de  sudo .

Las  demás  funciones  administrativas  giran  en  torno  a  la  administración  de  las  contraseñas  de  otros  usuarios  a  través  
de  las  siguientes  opciones;

•  l :  bloquear  la  contraseña  de  un  usuario  sudo  passwd  ­l  newpi  •  
u :  desbloquear  la  contraseña  de  un  usuario  sudo  passwd  ­u  newpi  (la  contraseña  utilizada  antes  del  bloqueo  
vuelve  a  estar  disponible)  •  e :  
caducar  la  contraseña  de  un  usuario  sudo  passwd  ­l  newpi  (los  fuerza  para  cambiar  su  contraseña
en  el  próximo  inicio  de  sesión)

Pruébate

1.  ¿Puedes  cambiar  tu  propio  número  de  días  de  advertencia  antes  de  un  cambio  de  contraseña  si  no  estás  en  
la  lista  de  sudo­ers?

2.  ¿Cuál  es  el  número  máximo  de  días  entre  un  cambio  de  contraseña?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 232

cerrar
El  comando  shutdown  nos  permite  gestionar  el  apagado  del  sistema  desde  la  línea  de  comandos  de  varias  formas.  Este  
comando  permite  una  salida  elegante  del  sistema  y  tiene  la  opción  de  alertar  a  otros  usuarios  para  que  sepan  lo  que  está  
pasando.  en  un  sistema  multiusuario  o  como  método  para  evitar  presionar  el  botón  de  encendido,  es  una  buena  práctica  
asegurarse  de  que  el  sistema  tenga  todas  las  oportunidades  para  salir  de  forma  administrada.

•  apagar  [opciones]  [hora]  [mensaje]:  apaga  o  reinicia  un  sistema.

shutdown  debe  ejecutarse  como  un  usuario  administrativo  y  cuando  se  lleva  a  cabo  sin  opciones  o  argumentos  de  la  
siguiente  manera;

apagado  sudo

…  iniciará  un  mensaje  de  difusión  a  los  usuarios  en  el  sistema  de  que  la  computadora  se  apagará  en  un  minuto;

Apagado  programado  para  el  domingo  2016­02­14  18:00:30,  use  'shutdown  ­c'  para  cancelar  
pi@raspberrypi:~  $
Mensaje  de  difusión  de  root@raspberrypi  (dom  2016­02­14  17:59:30  NZDT):

El  sistema  se  apagará  el  domingo  2016­02­14  18:00:30  NZDT.

Luego,  después  de  un  minuto,  aparecerá  lo  siguiente  cuando  el  sistema  se  apague;

Mensaje  de  difusión  de  root@raspberrypi  (dom  2016­02­14  18:00:34  NZDT):

¡El  sistema  se  apagará  AHORA!

En  este  escenario,  el  sistema  tiene  la  oportunidad  de  salir  con  gracia  y,  siempre  que  sea  posible,  se  hace  todo  lo  posible  
para  preservar  cualquier  dato  o  configuración  (no  es  que  esto  se  pueda  dar  por  sentado).

El  comando  de  apagado

El  comando  de  apagado  está  diseñado  para  apagar  el  sistema  de  forma  administrada  y  segura.
Los  usuarios  que  iniciaron  sesión  reciben  una  alerta  de  que  el  sistema  se  está  cayendo,  lo  que  brinda  la  oportunidad  de  
guardar  el  trabajo  abierto  y  prepararse  para  la  interrupción.

Podemos  variar  la  cantidad  de  tiempo  de  retraso  antes  de  apagar  completamente  hasta  que  no  haya  ningún  retraso  y  
podemos  variar  el  estado  que  existe  después  del  apagado  para  reiniciar,  detener  o  apagar.

Estas  diferentes  acciones  y  más  están  disponibles  a  través  de  las  siguientes  opciones;
Machine Translated by Google

Comandos  Linux 233

•  ­h :  apaga  el  sistema  y  luego  lo  detiene  •  ­P :  
apaga  el  sistema  y  luego  lo  apaga  •  ­r :  reinicia  después  de  
apagarlo  •  ­c :  cancela  un  apagado  

pendiente.

Estas  opciones  pueden  ir  acompañadas  de  un  argumento  '[tiempo]'  para  especificar  cuándo  realizar  la  acción;

Por  ejemplo,  el  siguiente  comando  apagará  el  sistema  y  lo  apagará  en  5  minutos;

sudo  apagado  ­P  +5

Además,  podemos  incluir  un  argumento  '[mensaje]'  que  permitirá  que  se  transmita  un  mensaje  personalizado  para  
alertar  a  los  usuarios  del  cierre  inminente.  Por  ejemplo,  para  apagar  y  detener  el  sistema  e  imprimir  un  mensaje  
personalizado;

sudo  shutdown  ­h  "El  sistema  se  detendrá  en  un  minuto.  Guarde  su  trabajo  ahora\
w!"

Además,  podemos  realizar  el  apagado  de  inmediato  usando  ahora  o  +0  como  tiempo.  Por  ejemplo,  para  reiniciar  
inmediatamente;

sudo  apagado  ­r  ahora

Pruébate

1.  ¿Cuánto  tiempo  tenemos  para  cancelar  un  apagado  dado  el  tiempo  predeterminado  y  qué  opción  tenemos?
¿usar?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 234

su

El  comando  su  se  usa  para  cambiar  de  una  cuenta  a  otra  sin  necesidad  de  salir  de  la  sesión  en  la  que  se  
encuentra  el  usuario  original.  Si  bien  se  puede  usar  para  cambiar  a  cualquier  usuario,  se  usa  con  mayor  
frecuencia  para  cambiar  a  la  'raíz'  usuario  para  ejecutar  comandos  administrativos  La  acción  predeterminada  
de  su  si  se  invoca  sin  un  nombre  de  usuario  es  cambiar  al  usuario  'root'.  Obtener  una  buena  comprensión  de  
su  es  un  excelente  paso  para  facilitarnos  la  vida  al  administrar  el  sistema.

•  su  [opciones]  [nombre  de  usuario]:  cambiar  a  otro  usuario.

Para  sustituir  el  usuario  actual  ('pi')  por  el  usuario  'newpi'  haríamos  lo  siguiente

su  nuevo  pi

El  sistema  pedirá  la  contraseña  del  usuario  'newpi'  y  una  vez  introducida  habremos  cambiado  al  usuario  'newpi'

Contraseña:
nuevopi@raspberrypi:/home/pi$

Un  aspecto  interesante  de  este  método  de  conmutación  es  que  el  directorio  de  trabajo  en  el  que  nos  
encontramos  es  el  directorio  de  inicio  de  los  usuarios  'pi' (/home/pi).  Esto  es  sintomático  del  cambio  de  usuario,  
pero  no  del  entorno  del  nuevo  usuario.  También  podemos  cambiar  al  entorno  de  nuevos  usuarios  usando
'
­  (es  un  espacio  seguido  de  un  guión)  después  del  comando  su'.

Entonces,  lo  siguiente  sustituye  al  usuario  y  cambia  al  entorno  del  nuevo  usuario;

su  ­  nuevopi

el  comando  su

El  comando  su  puede  tener  una  función  similar  a  sudo  en  el  sentido  de  que  puede  permitirnos  cambiar  al  uso  
de  permisos  de  root  para  ejecutar  comandos  mientras  estamos  conectados  como  un  usuario  diferente.  Sin  
embargo,  la  diferencia  sustancial  en  esta  circunstancia  es  que  su  cambiará  al  nuevo  usuario  mientras  que  sudo  
simplemente  ejecutará  el  comando  único.  Esto  se  puede  remediar  usando  la  opción  ­c  con  su  de  modo  que  le  
digamos  a  su  que  ejecute  el  comando  que  le  sigue  directamente  en  la  misma  línea.

El  nombre  del  comando  se  derivó  inicialmente  de  las  palabras  usuario  sustituto .  Aunque  cambiar  de  usuario  
también  es  una  descripción  aceptada.

Una  vez  que  hayamos  cambiado  de  usuario,  podemos  revertirlo  escribiendo  'salir'  y  presionando  enter  o  presionando
'CTRL­d'
Machine Translated by Google

Comandos  Linux 235

Pruébate

1.  ¿Es  usuario  sustituto  o  cambio  de  usuario  una  descripción  más  precisa  de  la  derivación  del  su
¿dominio?

2.  Si  fuera  a  ejecutar  una  serie  de  comandos  como  root,  sería  mejor  hacerlo  usando
sudo  o  su?
3.  ¿Cómo  nos  aseguramos  de  que  nuestras  variables  ambientales  estén  configuradas  para  el  nuevo  usuario  al  cambiar
¿usuario?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 236

sudo

El  comando  sudo  permite  a  un  usuario  ejecutar  un  comando  como  'superusuario' (o  como  otro  usuario).
Es  una  herramienta  vital  para  la  administración  y  gestión  del  sistema.

•  sudo  [opciones]  [comando]:  ejecuta  un  comando  como  superusuario

Por  ejemplo,  si  queremos  actualizar  y  actualizar  nuestros  paquetes  de  software,  deberemos  hacerlo  como  superusuario.  
Todo  lo  que  tenemos  que  hacer  es  prefijar  el  comando  apt­get  con  sudo  de  la  siguiente  manera;

sudo  apt­obtener  actualización  
sudo  apt­obtener  actualización

Una  de  las  mejores  ilustraciones  de  esto  es  a  través  del  excelente  trabajo  de  dibujos  animados  de  la  tira  cómica  xkcd²   
(Compra  sus  cosas² ,  ¡ es  increíble!).

Sudo  cortesía  xkcd

El  comando  sudo

El  comando  sudo  es  la  abreviatura  de  'superusuario  do'.

El  comando  sudo  permite  al  usuario  ejecutar  programas  o  dar  comandos  que  solo  
deben  ejecutarse  con  precaución,  ya  que  podrían  afectar  el  funcionamiento  normal  
de  la  computadora.  Sin  embargo,  un  usuario  solo  puede  usar  este  comando  si  tiene  
los  permisos  correctos  para  hacerlo.

² https://xkcd.com/149/  
² http://store.xkcd.com/
Machine Translated by Google

Comandos  Linux 237

Cuando  usamos  sudo,  un  usuario  autorizado  está  determinado  por  el  contenido  del  archivo /etc/sudoers.

Como  ejemplo  de  uso  deberíamos  revisar  el  archivo /etc/sudoers.  Si  usamos  el  comando  cat  para  listar  el  archivo  
así;

gato /etc/sudoers

Obtenemos  la  siguiente  respuesta;

pi@raspberrypi  ~  $  cat /etc/sudoers  cat: /etc/sudoers:  
Permiso  denegado

Eso  es  correcto,  el  usuario  'pi'  no  tiene  permisos  para  ver  el  archivo

Confirmemos  eso  con  ls;

ls /etc/sudoers

Lo  que  dará  como  resultado  lo  siguiente;

pi@raspberrypi  ~  $  ls  ­l /etc/sudoers  ­r­­r­­­­­  1  raíz  raíz  
696  7  de  mayo  10:39 /etc/sudoers

¡Parece  que  solo  el  usuario  root  puede  leer  el  archivo!

Así  que  usemos  sudo  para  catear  el  archivo  de  la  siguiente  manera;

sudo  cat /etc/sudoers

Eso  dará  como  resultado  el  siguiente  resultado;

pi@raspberrypi  ~  $  sudo  cat /etc/sudoers
#

#  Este  archivo  DEBE  ser  editado  con  el  comando  'visudo'  como  root.
#

#  Considere  agregar  contenido  local  en /etc/sudoers.d/  en  lugar  de  #  modificar  directamente  este  archivo.

#  Consulte  la  página  del  manual  para  obtener  detalles  sobre  cómo  escribir  un  archivo  sudoers.
#

valores  predeterminados env_reset

www.dbooks.org
Machine Translated by Google

Comandos  Linux 238

valores  predeterminados mail_badpass  
valores  predeterminados ruta_segura="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi\
n:/sbin:/bin"

#  Especificación  de  alias  de  host

#  Especificación  de  alias  de  usuario

#  Especificación  de  alias  de  Cmnd

#  Especificación  de  privilegios  de  usuario

raíz TODO=(TODO:TODO)  TODO  

#  Permitir  que  los  miembros  del  grupo  sudo  ejecuten  cualquier  comando  %sudo  

ALL=(ALL:ALL)  ALL

#  Consulte  sudoers(5)  para  obtener  más  información  sobre  las  directivas  "#include":

#includedir /etc/sudoers.d  pi  TODO=(TODO)  

SIN  CONTRASEÑA:  TODO

¡NO  edite  este  archivo  con  un  editor  de  texto!  ¡Use  siempre  el  comando  visudo  como  dicen  
las  instrucciones!  (Curiosamente,  Raspbian  tiene  el  editor  nano  (no  vi)  configurado  como  
editor  predeterminado).

Hay  mucha  información  en  el  archivo,  pero  justo  en  la  parte  inferior  está  la  línea  que  determina  los  privilegios  para  el  usuario  
'pi';

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO

Podemos  desglosar  lo  que  significa  cada  sección;

Pi

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO

La  parte  pi  es  el  usuario  al  que  se  aplicará  esta  regla  en  particular.
TODO

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO

La  primera  parte  TODOS  nos  dice  que  la  regla  se  aplica  a  todos  los  hosts.
TODO

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO

El  segundo  ALL  nos  dice  que  el  usuario  'pi'  puede  ejecutar  comandos  como  todos  los  usuarios  y  todos  los  grupos.
Machine Translated by Google

Comandos  Linux 239

SIN  CONTRASEÑA

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO

El  NOPASSWD  nos  dice  que  al  usuario  'pi'  no  se  le  pedirá  su  contraseña  al  ejecutar  un  comando  con  sudo.

Todo

pi  TODO=(TODO)  SIN  CONTRASEÑA:  TODO'

El  último  ALL  nos  dice  que  las  reglas  de  la  línea  se  aplican  a  todos  los  comandos.

En  situaciones  normales,  el  uso  de  sudo  requeriría  que  un  usuario  esté  autorizado  y  luego  ingrese  su  contraseña.  De  
forma  predeterminada,  el  sistema  operativo  Raspbian  tiene  configurado  el  usuario  'pi'  en  el  archivo /etc/sudoers  para  
evitar  ingresar  la  contraseña  cada  vez.

Si  tiene  curiosidad  acerca  de  qué  privilegios  (si  los  tiene)  tiene  un  usuario,  podemos  ejecutar  sudo  con  la  opción  ­l  
para  enumerarlos;

sudo­l

Esto  dará  como  resultado  una  salida  similar  a  la  siguiente;

pi@raspberrypi  ~  $  sudo  ­l

Coincidencia  de  entradas  predeterminadas  para  pi  en  este  host:

env_reset,  mail_badpass,  ruta_segura=/

usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:\ /  bin

El  usuario  pi  puede  ejecutar  los  siguientes  comandos  en  este  host:

(TODOS :  TODOS)  TODOS

(TODOS)  SIN  CONTRASEÑA:  TODOS

El  archivo  'sudoers'

Como  se  mencionó  anteriormente,  el  archivo  que  determina  los  permisos  para  los  usuarios  es /etc/sudoers.  NO  
EDITAR  ESTO  A  MANO.  Use  el  comando  visudo  para  editar.  Por  supuesto,  se  le  pedirá  que  ejecute  el  comando  
usando  sudo;

sudo  visudo

www.dbooks.org
Machine Translated by Google

Comandos  Linux 240

Voy  a  reforzar  un  poco  más  el  punto  de  que  comenzar  a  configurar  el  archivo  sudoers  es  
una  tarea  que  debe  tomarse  muy  en  serio  y  con  pleno  conocimiento  de  las  implicaciones  
de  seguridad.

Si  abre  un  archivo  sudoers  para  editarlo  y  ve  algo  como  lo  siguiente;

bob  TODO=(TODO)  TODO  
john  TODO=(TODO)  TODO  
eve  TODO=(TODO)  TODO  
alguien  TODO=(TODO)  TODO

Indicaría  que  hay  una  buena  cantidad  de  personas  con  derechos  de  administración  
completos  para  este  servidor  y  tal  vez  esto  debería  revisarse.

sudo  contra  su

Existe  un  grado  de  confusión  sobre  las  funciones  del  comando  sudo  frente  al  comando  su .  Si  bien  ambos  se  
pueden  usar  para  obtener  privilegios  de  root,  el  comando  su  en  realidad  cambia  al  usuario  a  otro  usuario,  
mientras  que  sudo  solo  ejecuta  el  comando  especificado  con  diferentes  privilegios.  Si  bien  habrá  cierto  grado  
de  debate  sobre  su  uso,  se  acepta  ampliamente  que  para  una  simple  elevación  de  encendido  y  apagado,  
sudo  es  ideal.

Pruébate

1.  Escriba  una  entrada  para  el  archivo  sudoers  que  proporcione  privilegios  de  sudo  a  un  usuario  solo  para  el  gato
dominio.
2.  ¿Bajo  qué  circunstancias  puede  editar  el  archivo  sudoers  con  un  editor  de  texto  estándar?
Machine Translated by Google

Comandos  Linux 241

agregar  usuario

El  comando  useradd  es  utilizado  por  un  superusuario  (generalmente  a  través  de  sudo)  para  agregar  una  cuenta  de  sistema  de  usuario.
Es  un  comando  fundamental  en  el  sentido  de  que  Linux,  como  sistema  multiusuario,  requería  un  mecanismo  para  
agregar  usuarios.  No  es  que  este  comando  se  use  todos  los  días,  pero  es  importante  saberlo  para  permitirnos  administrar  
usuarios  en  la  computadora.

•  useradd  [opciones]  nombre  de  usuario:  agregar  una  cuenta  de  usuario

El  siguiente  ejemplo  es  la  aplicación  más  simple  del  comando;

sudo  useradd  newpi

Esto  crea  el  usuario,  pero  al  hacerlo  se  establece  en  un  estado  'bloqueado'  porque  no  tiene  una  contraseña  asociada.  
Esto  se  puede  configurar  usando  el  comando  passwd .

El  comando  agregar  usuario

El  comando  useradd  no  se  utiliza  con  regularidad;  de  hecho,  la  página  de  manual  para  el  comando  recomienda  usar  
adduser ,  que  es  una  interfaz  más  amigable  para  esta  herramienta  de  bajo  nivel.  Agrega  un  usuario  a  la  lista  de  
entidades  que  pueden  acceder  al  sistema  informático  aunque  se  utiliza  sin  ninguna  opción,  el  comando  deja  la  nueva  
cuenta  bloqueada  hasta  que  se  establezca  una  contraseña  con  passwd.  Solo  puede  ser  utilizado  por  el  usuario  raíz,  por  
lo  que  a  menudo  tiene  el  prefijo  del  comando  sudo .

Opciones

Hay  varias  opciones  útiles  que  se  pueden  usar  con  useradd,  pero  las  más  utilizadas  que  examinaremos  son;

•  ­m :  agrega  el  directorio  de  inicio  del  usuario  si  no  existe  •  ­s :  
especifica  el  shell  de  inicio  de  sesión  del  usuario

Para  agregar  el  directorio  de  inicio  para  el  usuario  'newpi'  y  configurar  su  shell  de  inicio  de  sesión  en  bash,  usaríamos  el  
siguiente  comando;

sudo  useradd  ­m  ­s /bin/bash  newpi

Pruébate

1.  ¿Cuál  es  la  alternativa  más  fácil  de  usar  que  useradd?

www.dbooks.org
Machine Translated by Google

Comandos  Linux 242

modo  de  usuario

El  comando  usermod  es  utilizado  por  un  superusuario  (generalmente  a  través  de  sudo)  para  cambiar  la  configuración  de  la  
cuenta  del  sistema  de  un  usuario.  No  es  un  comando  que  se  usará  todos  los  días,  pero  es  importante  saber  que  está  ahí  para  
permitirnos  administrar  los  detalles  del  usuario  en  la  computadora.

•  usermod  [opciones]  nombre  de  usuario:  modificar  la  configuración  de  la  cuenta  de  un  usuario

El  siguiente  ejemplo  es  uno  que  se  usa  en  las  primeras  etapas  de  la  configuración  de  Raspberry  Pi,  donde  queremos  que  nuestro  
usuario  'pi'  sea  miembro  del  grupo  'www­data',  lo  que  permitirá  (junto  con  otros  pasos)  que  el  usuario  edite  los  archivos  en  un  
servidor  web;

sudo  usermod  ­a  ­G  www­datos  pi

La  opción  ­a  agrega  al  usuario  a  un  grupo  'suplementario'  adicional  (­a  solo  debe  usarse  en  una  situación  en  la  que  le  sigue  el  
uso  de  una  opción  ­G ).  La  opción  ­G  enumera  el  grupo  complementario  al  que  se  agregará  un  usuario.  En  este  caso  el  grupo  es  
www­data.  Finalmente,  el  usuario  que  se  agrega  al  grupo  complementario  es  pi.

El  comando  modusuario

El  comando  usermod  no  se  utiliza  con  regularidad,  pero  cuando  se  requiere  para  administrar  los  detalles  administrativos  de  un  
usuario,  es  útil  saber  qué  es  capaz  de  hacer  y  cómo  configurar  el  comando.  Modifica  la  configuración  de  un  usuario  (por  lo  tanto,  
usermod  =  modificación  del  usuario )  y  se  puede  usar  para  tareas  tales  como  cambiar  el  directorio  de  inicio  de  un  usuario,  la  
fecha  de  vencimiento  de  la  contraseña,  su  shell  predeterminado  y  los  grupos  a  los  que  pertenece  el  usuario.  Solo  puede  ser  
utilizado  por  el  usuario  raíz,  por  lo  que  a  menudo  tiene  el  prefijo  del  comando  sudo .

Cuando  usermod  cambia  la  configuración  de  un  usuario,  lo  hace  utilizando  los  siguientes  archivos;

• /etc/group :  información  de  la  cuenta  del  grupo.  • /etc/

gshadow :  información  de  cuenta  de  grupo  segura.  • /etc/login.defs :  

configuración  del  conjunto  de  contraseñas  ocultas.  • /etc/passwd :  información  
de  la  cuenta  de  usuario.  • /etc/shadow :  información  de  
cuenta  de  usuario  segura.

Opciones

Hay  alrededor  de  15  opciones  que  se  pueden  usar  con  usermod,  pero  las  que  se  usan  comúnmente  que  examinaremos  son;

•  ­d :  cambia  el  directorio  de  inicio  del  usuario  •  ­g :  

cambia  el  grupo  principal  del  usuario
Machine Translated by Google

Comandos  Linux 243

•  ­a  ­G  grupo :  Agrega  el  usuario  a  un  grupo  suplementario  •  ­s :  
Cambia  el  shell  predeterminado  de  los  
usuarios  •  ­L :  Bloquea  la  cuenta  del  usuario  deshabilitando  la  
contraseña  •  ­U :  Desbloquea  la  cuenta  del  usuario  volviendo  a  habilitar  la  contraseña  anterior

Para  cambiar  el  directorio  de  inicio  del  usuario  'pi'  al  directorio /home/newpi  usaríamos  el  siguiente  comando;

sudo  usermod  ­d /home/newpi  pi

Para  hacer  de  'pigroup'  el  grupo  principal  para  el  usuario  'pi';

sudo  usermod  ­g  pigrupo  pi

Para  que  esto  tenga  éxito,  el  grupo  debe  existir.  Además,  cualquier  archivo  del  directorio  
de  inicio  del  usuario  que  fuera  propiedad  del  grupo  primario  anterior  del  usuario  será  
propiedad  de  este  nuevo  grupo.

Diferentes  usuarios  se  sentirán  cómodos  en  diferentes  caparazones.  Para  cambiar  el  shell  predeterminado  de  los  
usuarios,  podemos  usar  la  opción  ­s .  El  siguiente  ejemplo  cambia  el  shell  predeterminado  para  el  usuario  'pi'  al  shell  
'Korn';

sudo  usermod  ­s /bin/ksh  pi

Podemos  bloquear  la  cuenta  de  un  usuario  usando  la  opción  ­L  que  modifica  el  archivo /etc/shadow  poniendo  un  signo  
de  exclamación  delante  de  la  contraseña  cifrada.  El  siguiente  ejemplo  hace  esto  para  el  usuario  'pi';

sudo  mod  de  usuario  ­L  pi

Luego  querremos  desbloquear  la  cuenta  de  usuario  bloqueada  con  la  opción  ­U  de  la  siguiente  manera;

sudo  usermod  ­U  pi

www.dbooks.org
Machine Translated by Google

Comandos  Linux 244

Pruébate

1.  ¿Qué  debemos  hacer  antes  de  cambiar  el  grupo  principal  de  un  usuario  a  un  nuevo  grupo?
2.  ¿Cómo  podríamos  desbloquear  manualmente  la  cuenta  de  un  usuario  sin  usar  el  comando  usermod ?
Machine Translated by Google

Comandos  Linux 245

OMS

El  comando  who  puede  decirnos  qué  usuarios  están  actualmente  conectados  a  un  sistema,  así  como  cuándo  se  reinició  
el  sistema  por  última  vez  y  una  variedad  de  otros  detalles  de  información  del  sistema.  Esta  es  una  herramienta  de  
administración  del  sistema  útil  y  que  es  especialmente  relevante  en  un  entorno  multiusuario  más  grande.

•  quién  [opciones] :  informe  de  los  usuarios  registrados  en  el  sistema.

En  su  forma  más  simple,  el  comando  who  puede  decirnos  quién  está  conectado  al  sistema  de  la  siguiente  manera;

OMS

Mientras  esté  conectado  como  el  usuario  'pi',  la  salida  será;

pi   ptos/0   2016­02­14  05:39  (10.1.1.33)  2016­02­14  


pi   ptos/1   06:09  (10.1.1.33)  2016­02­14  06:10  
nuevo  pi ptos/2 (10.1.1.222)

Al  observar  la  primera  línea,  nos  muestra  el  nombre  del  usuario  que  inició  sesión  (pi),  el  terminal  que  se  utilizó  para  
iniciar  sesión  en  el  sistema  (pts/0,  lo  que  significa  psuedo  terminal  esclavo  número  0),  la  fecha/hora  de  la  conexión  
(2016­02­14  05:39)  y  la  dirección  IP  desde  la  que  se  realizó  la  conexión  (10.1.1.33).  Vemos  que  además  de  estar  dos  
veces  conectado  desde  10.1.1.33  como  usuario  'pi',  hay  otro  usado  'newpi'  conectado  desde  10.1.1.222.

el  que  manda

El  comando  who  es  esencialmente  una  herramienta  de  administración  del  sistema  para  determinar  un  rango  de  
información  sobre  nuestro  sistema.  Si  bien  el  nombre  es  obviamente  un  reflejo  de  la  necesidad  de  determinar  quién  está  
conectado  a  un  sistema,  hay  una  variedad  de  otros  detalles  que  se  pueden  determinar  usando  el  comando.  Se  accede  
a  la  información  adicional  a  través  de  las  siguientes  opciones;

•  ­b :  hora  del  último  arranque  del  
sistema  •  ­d :  todos  los  procesos  
inactivos  •  ­­login :  los  procesos  de  inicio  de  
sesión  del  sistema  •  ­p :  el  proceso  activo  generado  
por  init  •  ­r :  el  nivel  de  ejecución  del  
sistema  •  ­t :  el  hora  en  que  el  reloj  del  sistema  cambió  
por  última  vez  •  ­T :  el  estado  del  mensaje  de  los  
usuarios  (a  +,  ­  o ?)  •  ­u :  
los  usuarios  iniciaron  sesión.  •  ­a :  todo  lo  anterior

•  ­H :  imprimir  encabezados  de  columna

Hay  una  gran  cantidad  de  detalles  en  las  opciones  anteriores  y  gran  parte  de  ellos  no  serán  relevantes  para  un  nuevo  
usuario,  pero  es  útil  presentarlos  aquí  para  que  si  estamos  ejecutando  la  opción  ­a  sepamos  lo  que  estamos  obteniendo .  
En  para.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 246

quien  ­aH

NOMBRE LÍNEA TIEMPO INACTIVO PID  COMENTARIO  SALIR

arranque  del  sistema  2016­02­13  22:27
nivel  de  ejecución  5  2016­02­13  22:27

ACCESO tty1   2016­02­13  22:27 1119  identificación=tty1  

ACCESO ttyAMA0  +   2016­02­13  22:27 1122  identificación=AMA0

pi   puntos/0  +   2016­02­14  05:39  00:22 1398  (10.1.1.33)  1479  

pi   puntos/1  +   2016­02­14  06:09 . (10.1.1.33)  1505  (10.1.1.222)

nuevo  pi puntos/2 2016­02­14  06:10  00:23

En  la  salida  podemos  ver  los  encabezados;

NOMBRE LÍNEA TIEMPO INACTIVO PID  COMENTARIO  SALIR

Cuándo  se  arrancó  el  sistema  por  última  vez  (aunque  cualquier  persona  con  una  Raspberry  Pi  sabrá  que  falsifiqué  
la  hora  aquí);

arranque  del  sistema  2016­02­13  22:27

El  nivel  de  ejecución  del  sistema;

nivel  de  ejecución  5  2016­02­13  22:27

Un  nivel  de  ejecución  es  un  estado  de  inicialización  del  sistema  que  define  qué  servicios  del  sistema  
están  en  funcionamiento.  Se  designan  con  un  número  y  pueden  variar  de  la  siguiente  manera;

•  0  Detener  el  sistema.  
•  1  Modo  monousuario  (para  administración  especial).  •  2  
multiusuario  local  con  red  pero  sin  servicio  de  red  (como  NFS)  •  3  multiusuario  completo  con  
red  •  4  no  utilizados

•  5  multiusuario  completo  con  funciones  de  red  y  X  Windows  (GUI)  •  6  
reinicio.

Los  símbolos  +  después  de  los  usuarios  'pi'  y  'newpi'  indican  el  estado  de  su  mensaje;
Machine Translated by Google

Comandos  Linux 247

pi   +  ptos/0  +   2016­02­14  05:39  00:22 1398  (10.1.1.33)  1479  

pi   ptos/1  +   2016­02­14  06:09 . (10.1.1.33)  1505  (10.1.1.222)

nuevo  pi ptos/2 2016­02­14  06:10  00:23

Los  diferentes  estados  de  los  mensajes  son;

•  +  permitir  'escribir'  mensajes  •  ­  
no  permitir  'escribir'  mensajes  • ?  no  
se  puede  encontrar  el  dispositivo  terminal

El  servicio  de  mensajes  es  aquel  en  el  que  un  usuario  puede  enviar  un  mensaje  directamente  a  la  terminal  de  otro  usuario.
Aunque  no  lo  cubrimos  en  este  libro,  se  puede  encontrar  más  información  con  el  comando  man
mensaje

Pruébate

1.  ¿Por  qué  mencioné  que  modifiqué  el  tiempo  de  arranque  para  la  descripción  del  ejemplo  anterior?
2.  Escriba  el  comando  quién  soy  y  determine  la  diferencia  entre  eso  y  el  comando
quién  soy.

www.dbooks.org
Machine Translated by Google

Comandos  Linux 248

quién  soy

El  comando  whoami  puede  decirnos  quién  es  el  usuario  actual.  Según  el  shell  que  estemos  usando,  es  posible  que  no  
se  nos  presente  el  nombre  de  usuario  en  el  símbolo  del  sistema.  Lo  crea  o  no,  es  un  hecho  relativamente  común  perder  
la  noción  de  qué  usuario  es  el  usuario  operativo  mientras  trabaja  (especialmente  en  entornos  más  complejos).  Si  es  así  
podremos  saber  quiénes  somos  con  un  simple  comando.

•  whoami  [opciones]:  informar  al  usuario  actual.

El  comando  whoami  es  muy  simple  y  se  ejecuta  casi  exclusivamente  sin  opciones  de  la  siguiente  manera;

quién  soy

Mientras  esté  conectado  como  el  usuario  'pi',  la  salida  será;

Pi

El  comando  whoami

Trabajar  en  sistemas  multiusuario  complejos  conlleva  el  potencial  de  confusión  cuando  se  trabaja  en  la  línea  de  comando  
y/o  con  múltiples  ventanas  de  terminal  abiertas  y  se  pierde  el  rastro  de  qué  usuario  es  el  usuario  efectivo  actual  que  inició  
sesión.  Las  ramificaciones  de  ejecutar  un  comando  como  el  usuario  equivocado  puede  ser  catastrófico  si  se  trabaja  como  
usuario  'root',  por  lo  que  nos  corresponde  asegurarnos  de  que  sabemos  'quiénes'  somos  en  la  línea  de  comandos.

En  muchos  shells,  el  usuario  actual  se  imprime  en  el  símbolo  del  sistema,  por  lo  que  es  bastante  obvio.  Sin  embargo,  
algunos  shells  como  'csh'  no  presentan  de  forma  predeterminada  el  nombre  de  usuario  actual,  por  lo  que  debemos  poder  
determinarlo  con  un  comando.  El  comando  whoami  es  (obviamente)  una  compresión  de  la  frase  "¿quién  soy  yo?"  y  su  
salida  es  bastante  sencilla.

Además  del  ejemplo  simple  anterior,  como  prueba  podemos  ejecutar  el  comando  con  sudo  para  simular  operar  como  el  
usuario  'root'  de  la  siguiente  manera;

sudo  whoami

El  resultado  debería  ser  el  sorprendente;

raíz

…  independientemente  de  con  qué  usuario  ejecutamos  el  comando.

El  comando  whoami  es  útil  en  relación  con  el  shell  actual,  pero  para  determinar  más  acerca  de  otros  usuarios  que  
iniciaron  sesión  en  el  sistema,  usaríamos  el  comando  who .
Machine Translated by Google

Comandos  Linux 249

Pruébate

1.  ¿Cuál  es  la  diferencia  entre  un  shell,  una  consola  y  una  terminal  (pregunta  capciosa  que
requieren  investigación)?

www.dbooks.org
Machine Translated by Google

Hoja  de  trucos  de  comandos
Administración  de  archivos

•  cd  [opciones]  directorio:  se  usa  para  cambiar  el  directorio  actual  •  chgrp  
[opciones]  archivos  de  grupo:  cambia  la  propiedad  del  grupo  de  uno  o  más  archivos  y  directorios  •  chmod  [opciones]  
archivos  de  modo:  cambia  los  permisos  de  acceso  de  uno  o  más  archivos  y  directorios  •  chown  [opciones]  archivos  
de  nuevo  propietario:  cambiar  la  propiedad  de  uno  o  más  archivos  y  directorios  •  cp  [opciones]  destino  de  origen:  
copiar  archivos  y  directorios  •  buscar  [punto  de  inicio]  [criterios  de  búsqueda]  
[término  de  búsqueda]:  buscar  archivos  •  gzip  [opciones]  nombre  de  archivo:  
comprimir  o  expandir  archivos  •  ln  [opciones]  originalfile  linkfile:  crear  
enlaces  entre  archivos  o  directorios  •  ln  [opciones]  originalfile:  crear  un  enlace  al  archivo  original  
en  el  directorio  actual  •  ls  [opciones]  [argumentos] :  enumera  los  archivos  en  un  directorio  en  particular  •  
mkdir  [opciones]  directorio:  crea  un  directorio  •  mv  [opciones]  destino  de  origen:  
mueve  y/o  cambia  el  nombre  de  archivos  y  directorios  •  pwd  
[opción]:  imprime  el  directorio  de  trabajo  actual  •  rm  [opciones]  archivo:  eliminar  archivos  o  
directorios  •  rmdir  [opciones]  directorio:  eliminar  directorios  vacíos  •  tar  
[opciones]  archivename  [archivo(s)]:  archivar  o  extraer  
archivos

Acceso  al  contenido  del  archivo

•  cat  [opciones]  [nombres  de  archivo]  [­]  [nombres  de  archivo]:  Muestra,  combina  o  crea  nuevos  archivos.  
•  cortar  [opciones]  archivo:  Corta  secciones  de  cada  línea  de  un  archivo  o  archivos  •  
diff  [opciones]  de  archivo  a  archivo:  muestra  las  diferencias  entre  dos  archivos  •  grep  [opciones]  
patrón  [archivo]:  busca  texto  y  empareja  patrones  •  cabeza  [opciones]  nombre(s)  
de  archivo:  muestra  la  primera  parte  de  un  archivo  específico  •  menos  [opciones]  
nombre  de  archivo:  muestra  archivos  de  texto  •  más  
[opciones]  nombre  de  archivo:  muestra  un  archivo  de  texto  
•  cola  [opciones]  nombre(s)  de  archivo:  Listar  la  última  parte  de  un  archivo  específico

Sistemas  de  archivos

•  fdisk  [opciones]  [dispositivo]:  manipula  las  tablas  de  particiones.  •  mkfs  
[opciones]  dispositivo:  formatea  una  partición  con  un  sistema  de  archivos  •  mount  
[opciones]  escribe  el  directorio  del  dispositivo:  monta  el  almacenamiento  en  el  sistema  de  archivos  
•  umount  [opciones]  dispositivo  y/o  directorio:  desmonta  el  almacenamiento  del  sistema  de  archivos
Machine Translated by Google

Hoja  de  trucos  de  comandos 251

Información  del  sistema

•  fecha  [opciones]  +formato:  muestra  o  configura  la  fecha/hora  •  
df  [opciones]  archivo:  muestra  la  cantidad  de  espacio  libre  en  los  sistemas  de  
archivos.  •  du  [opciones]  archivo:  muestra  la  cantidad  de  espacio  utilizado  en  archivos  
y  directorios  •  libre  [opciones]:  muestra  información  sobre  la  memoria  libre  y  utilizada  en  el  sistema

Procesos

•  crontab  [­u  usuario]  [­l  |  ­r  |  ­e] :  programe  una  tarea  para  que  se  ejecute  en  un  momento  o  intervalo  
particular  •  kill  [opciones]  PID(s) :  envía  una  señal  para  terminar  un  proceso  o  procesos  por  PID  •  
killall  [opciones]  nombre  del  comando :  envía  una  señal  para  terminar  un  procesos  por  nombre  •  ps  
[opciones]:  muestra  una  instantánea  de  los  procesos  actuales  •  top  
[opciones]:  muestra  información  del  sistema  y  del  proceso  en  tiempo  real

Red

•  curl  [opciones]  [URL]:  descargar  o  cargar  archivos  a  servidores  remotos.  •  host  
[opciones]  servidor:  verifica  la  dirección  IP  de  una  computadora  a  partir  de  su  nombre  de  host  o  al  revés  •  
ifconfig  [argumentos]  interfaz  [opciones]:  configurar  una  interfaz  de  red  •  ifconfig  
[argumentos]  [interfaz]:  ver  detalles  de  la  interfaz  de  red  •  ip  [ opciones]  objeto  
subcomando  [parámetros]:  herramienta  de  configuración  de  red  •  netstat  [opciones]:  
herramienta  de  monitoreo  de  conexión  de  red  •  ping  [opciones]  
servidor  remoto:  verifica  la  conexión  de  red  a  un  servidor  remoto.  •  scp  [opciones]  
usuario1@hostorigen:directorio/nombre  de  archivo  usuario2@hostdestino:directorio/nombre  de  archivo:  copia  
segura  de  archivos  entre  computadoras  •  sftp  
[opciones ]  [usuario@]nombre  de  host[:directorio]:  copia  interactiva  de  archivos  entre  computadoras
de  forma  segura

•  servidor  ssh  [opciones]  [nombre  de  inicio  de  sesión]:  acceda  de  forma  segura  a  un  
equipo  remoto.  •  traceroute  [opciones]  host­name:  rastree  la  ruta  que  toman  los  paquetes  al  
host  de  la  red  •  wget  [opciones]  [URL]:  descargue  o  cargue  archivos  de  la  web  de  forma  no  interactiva.

Misceláneas

•  apt­get  install  *package­name* :  instala  un  paquete  •  apt­get  
remove  *package­name* :  desinstala  un  paquete  •  apt­get  update :  
actualiza  la  base  de  datos  de  paquetes  disponibles  •  apt­get  upgrade :  
actualiza  el  paquetes  en  el  sistema  •  borrar :  borra  la  pantalla  del  
terminal.  •  echo  [opciones]  [cadena(s)] :  

mostrar  texto  en  la  pantalla.  •  groupadd  [opciones]  grupo:  agrega  
una  cuenta  de  grupo  •  man  [opciones]  comando:  muestra  
el  manual  de  referencia  para  un  comando.

www.dbooks.org
Machine Translated by Google

Hoja  de  trucos  de  comandos 252

•  modprobe  [opciones]  modulename:  carga  o  elimina  un  módulo  del  kernel  de  Linux  •  
passwd  [opciones]  nombre  de  usuario:  cambia  la  contraseña  del  
usuario  •  shutdown  [opciones]  [hora]  [mensaje]:  apaga  o  reinicia  un  sistema.  •  su  
[opciones]  [nombre  de  usuario]:  cambiar  a  otro  usuario.  •  
comando  sudo  [opciones]:  ejecuta  un  comando  como  superusuario  •  usermod  
[opciones]  nombre  de  usuario:  modifica  la  configuración  de  una  cuenta  de  usuario  
•  useradd  [opciones]  nombre  de  usuario:  agrega  una  cuenta  
de  usuario  •  quién  [opciones]:  informa  de  los  usuarios  que  iniciaron  
sesión  en  el  sistema.  •  whoami  [opciones]:  informar  al  usuario  actual.
Machine Translated by Google

Hoja  de  referencia  de  la  estructura  del  directorio
• / :  el  directorio  'raíz'  que  contiene  todos  los  demás  archivos  y  directorios  • /bin :  
comandos/programas  comunes,  compartidos  por  todos  los  usuarios  • /
boot :  contiene  los  archivos  necesarios  para  iniciar  correctamente  la  computadora  durante  el  proceso  de  
arranque  • /dev :  retiene  archivos  de  dispositivos  que  representan  dispositivos  
físicos  y  'lógicos'  • /etc :  contiene  archivos  de  configuración  que  controlan  el  funcionamiento  
de  los  programas  • /etc/cron.d:  uno  de  los  directorios  que  permite  que  los  programas  se  ejecuten  en  un  
horario  regular  • /etc/rc ?.d :  Directorios  que  contienen  archivos  que  controlan  el  modo  de  operación  de  una  
computadora  • /home :  Un  directorio  que  contiene  subdirectorios  para  que  cada  usuario  almacene  
archivos  específicos  del  usuario  • /lib :  Contiene  archivos  de  
biblioteca  compartidos  y  módulos  del  kernel  • /lost+found :  Contendrá  datos  recuperables  en  caso  de  
un  apagado  incorrecto  • /media :  se  usa  para  montar  temporalmente  
dispositivos  extraíbles  • /mnt :  un  punto  de  montaje  para  sistemas  de  archivos  o  un  punto  de  montaje  
temporal  para  administradores  de  sistemas  • /opt :  contiene  software  adicional  o  de  terceros  que  no  forma  
parte  de  la  instalación  predeterminada  • /proc :  contiene  archivos  que  contienen  información  sobre  los  
procesos  en  ejecución  y  los  recursos  del  sistema  • /root :  el  directorio  de  inicio  del  
administrador  del  sistema  o  el  usuario  'raíz'  • /sbin :  contiene  ejecutables/comandos  binarios  utilizado  
por  el  administrador  del  sistema  • /srv :  proporciona  una  ubicación  coherente  para  
almacenar  datos  para  servicios  específicos  • /tmp :  una  
ubicación  temporal  para  almacenar  archivos  o  datos  • /usr :  es  el  directorio  donde  se  
almacenan  y  comparten  los  programas  y  los  datos  del  usuario  • /
usr /bin :  contiene  archivos  ejecutables  binarios  para  los  usuarios  • /usr/lib :  contiene  archivos  de  biblioteca  
compartidos  para  admitir  ejecutables  en /usr/bin  y /usr/sbin  • /usr/local :  contiene  programas  de  
usuarios  que  se  instalan  localmente  desde  el  código  fuente  • /  usr/sbin :  el  directorio  para  ejecutables  
binarios  de  administración  de  sistemas  no  esenciales  • /var :  contiene  archivos  de  datos  variables  que  se  
espera  que  crezcan  en  circunstancias  normales  • /var/lib :  contiene  información  de  estado  dinámico  
que  los  programas  modifican  mientras  se  ejecutan  • /var/  log :  almacena  
archivos  de  registro  de  una  variedad  de  programas  y  servicios  • /var/spool :  contiene  
archivos  que  se  mantienen  (en  cola)  para  su  posterior  procesamiento  • /var/tmp :  un  almacén  temporal  para  datos  que  deben 

www.dbooks.org
Machine Translated by Google

Hoja  de  referencia  de  expresiones  regulares
Los  siguientes  son  algunos  de  los  metacaracteres  más  utilizados  y  una  breve  descripción  
de  su  efecto;

[ ]  Haga  coincidir  cualquier  cosa  dentro  de  los  corchetes  para  UN  carácter
ˆ (circunflejo  o  símbolo  de  intercalación)  Coincide  solo  al  comienzo  de  la  cadena  de  destino  (cuando  no  se  
usa  entre  corchetes  (donde  tiene  un  significado  diferente))
ps
Coincide  solo  al  final  de  la  cadena  de  destino  
. (punto  o  punto)  Coincide  con  cualquier  carácter  individual
? Coincide  cuando  el  carácter  anterior  aparece  0  o  1  vez  solamente
* Coincide  cuando  el  carácter  anterior  aparece  0  o  más  veces
+ Coincide  cuando  el  carácter  anterior  aparece  1  o  más  veces

( )  Se  puede  usar  para  agrupar  partes  de  nuestra  expresión  de  búsqueda  |
(barra  vertical  o  tubería)  Nos  permite  encontrar  los  valores  de  la  mano  izquierda  o  derecha
Machine Translated by Google

Hoja  de  referencia  'buscar'

El  proceso  de  buscar  con  'encontrar'  se  trata  de  combinar  tres  cosas;

1.  El  punto  de  inicio  de  la  búsqueda  2.  El  

tipo  de  criterio  o  propiedad  que  vamos  a  evaluar  en  nuestra  búsqueda  3.  El  valor  específico  de  los  criterios  contra  

los  que  queremos  buscar.

Los  argumentos  numéricos  a  continuación  se  pueden  especificar  como;

•  +n :  para  mayor  que  n,  •  ­n :  para  
menor  que  n,  •  n :  para  
exactamente  n.

También  podemos  emplear  comodines  para  ayudar  a  hacer  coincidir  los  nombres.

•  ­name  patrón:  el  nombre  del  archivo  que  coincide  con  el  patrón  del  patrón  •  ­iname  patrón:  

como  ­nombre,  pero  la  coincidencia  no  distingue  entre  mayúsculas  y  minúsculas  •  

­mmin  n:  los  datos  del  archivo  se  modificaron  por  última  vez  hace  n  minutos  •  

­mtime  n:  los  datos  del  archivo  se  modificó  por  última  vez  hace  n  *24  horas  •  ­archivo  

más  nuevo :  el  archivo  se  modificó  más  recientemente  que  el  archivo  •  ­amin  n:  se  

accedió  al  archivo  por  última  vez  hace  n  minutos.  •  ­atime  n :  el  archivo  
*
fue  accedido  por  última  vez  n Hace  24  horas  •  

­user  uname:  el  archivo  es  propiedad  del  usuario  uname  •  ­group  

gname:  el  archivo  pertenece  al  grupo  gname  •  ­executable :  coincide  
con  los  archivos  que  son  ejecutables  y  los  directorios  que  se  pueden  buscar  •  ­type  c:  el  archivo  es  de  tipo  C:

–  b  bloque  (con  búfer)  especial  –  c  
carácter  (sin  búfer)  especial  –  d  directorio  –  p  
canalización  con  
nombre  (FIFO)  –  f  archivo  
normal  –  l  enlace  
simbólico  –  s  socket

•  ­size  n[cwbkMG] :  el  archivo  usa  n  unidades  de  espacio  (redondeando  hacia  arriba).  Los  siguientes  sufijos  pueden
ser  usado:

–  b  para  bloques  de  512  bytes  (este  es  el  valor  predeterminado  si  no  se  usa  sufijo)  –  
c  para  bytes  –  w  
para  palabras  de  dos  bytes  –  k  
para  kilobytes  (unidades  de  1024  bytes)
–  M  para  Megabytes  (unidades  de  1048576  bytes)

www.dbooks.org
Machine Translated by Google

Hoja  de  referencia  'buscar' 256

–  G  para  Gigabytes  (unidades  de  1073741824  bytes)
•  Modo  ­perm :  Los  archivos  tienen  un  conjunto  específico  de  permisos  con  un  modo  diferente  dependiendo  de  cómo  
queramos  acceder  a  ellos  –  modo  

Los  bits  de  permiso  del  archivo  son  exactamente  el  modo  –  
­modo  Todos  los  modos  de  bits  de  permiso  están  configurados  para  el  
archivo.  – /mode  Se  establece  cualquiera  de  los  modos  de  bits  de  permiso  para  el  archivo.

También podría gustarte