Comandos GNU/Linux Parte 2

Hoy continuamos con los comandos de GNU/Linux, ampliando la lista. Si bien la lista es muy larga, vamos a hablar de los comandos más usados y más útiles como indicamos en el primer post de comandos. A su vez subimos el archivo en formato pdf para su descarga.

Comando grep
Este comando nos permite buscar a través de todo el texto en un archivo dado. Un comando muy útil para programados. Básicamente significa impresión de expresión regular global. Las búsquedas son sensibles a mayúsculas y minúsculas por defecto, podemos usar –i para hacerla insensible.
$ grep azul notepad.txt #esta expresión buscara la palabra azul en el archivo del bloc de notas, las líneas que contienen la palabra buscada se mostraran.
Comando sudo
Sudo es la abreviatura de “SuperUser Do” (SuperUsuario hace), este comando te permite realizar tareas que requieren permisos administrativos o raíz, sin embargo no es aconsejable usar este comando para el uso diario, ya que podría ser fácil que ocurra un error si haces algo mal. Debes estar habilitado para usar sudo, una vez que lo estés, podes ejecutar comandos como root introduciendo la contraseña de tu usuario.
Los permisos son altamente configurables, lo que es estupendo especialmente en un entorno de servidor multiusuario. A algunos usuarios se les puede conceder acceso a la ejecución de comandos específicos a través de sudo.
Por ejemplo se puede editar un archivo de configuración del sistema:
$sudo nano /etc/hosts
Podes iniciar un Shell como root de la siguiente forma:
$sudo –i
Comando df
El comando df nos arroja un informe sobre el uso del espacio en disco del sistema, que se muestra en porcentaje y KB, si queres verlo en megabytes por ejemplo, escribí:
$df –m
A su vez nos brinda información de los volúmenes montados. Otra forma útil es escribir la siguiente línea
$df –h #donde nos mostrara los valores de una forma más legible.
Tambien podes especificar el nombre de un archivo o directorio para obtener información sobre el volumen especifico
$df dev
Comando du
Este comando nos sirve para visualizar cuánto especio ocupa un archivo o un directorio. Si solo escribimos du nos arrojara los números de bloque de disco, si queremos verlo en el formato habitual de tamaño hay que agregar el argumento –h a la línea del comando.
Por ejemplo, podríamos usar du y ordenarlos de mayor a menor de la siguiente forma:
$du –h <directorio> | sort –nr
Comando head
El comando head se usa para ver las primeras líneas de cualquier archivo de texto. De manera predeterminada, mostrara las primeras diez líneas, pero podes cambiar este número a tu gusto. Por ejemplo:
$ head –n 5 nombredearchivo.ext #esto nos mostrara las primeras 5 líneas
Comando tail
Este tiene una función similar al comando head, pero en lugar de mostrar las primeras líneas, el comando tail mostrara las ultimas diez líneas de un archivo de texto.
$ tail –n nombredelarchivo.ext
Comando diff

Para abreviar diferencia, el comando diff compara el contenido de dos archivos línea por línea, después de analizar los archivo, genera las líneas que no coinciden. Los programadores suelen usar a menudo este comando cuando necesitan hacer modificaciones al programa en lugar de reescribir el código fuente. Podemos usar la opción –y para que nos muestre línea por línea. O el parámetro –u nos muestra la misma versión de Git en el control de versiones.
Se puede utilizar muchos parámetros distintos, solo con escribir $man diff podremos ver las opciones.
$diff archivo1.ext archivo2.ext
Comando tar

El comando tar es el comando más utilizado para guardar múltiples archivos en un tarball, un formato de archivo de Linux comando similar a zip, con compresión opcional.
Este comando es bastante complejo con una larga lista de funciones y parámetros.
El nombre de este comando viene del pasado y significa “archivo de cintas”. Por ejemplo:
$tar –cf archivo.tar file1 file2
La opción c significa crear, la opción f es usada para escribir el archivo y archivar al mismo.
Podemos extraer archivos de otro de la carpeta actual:
$tar –xf archivo.tar
La opción x representa la extracción.
Tar se usa muy a menudo para crear un archivo comprimido, esto se hace usando la opción z
$tar –czf archivo.tar.gz file1 file2
Creamos el archivo tar y después aplicamos gzip en el mismo.
Para desarchivar un archivo comprimido podemos usar gunzip, o gzip –d y después desarchivarlo. Pero tar –xf lo reconocerá como un archivo comprimido y lo hace automáticamente.
$tar –xf archivo.tar.gz
Comando chmod
Chmod es un comando de Linux muy utilizado para cambiar los permisos de lectura, escritura y ejecución de archivos y directorios.
Si ejecutas $ls –al
Vas a ver unas cadenas en cada línea del archivo, como drwxr –xr –x, estas definen los permisos del archivo o carpeta.
- “ – “ significa que es un archivo normal
- “ d “ significa que es un directorio
- “ l “ significa que es un enlace
Luego en los 3 conjuntos de valores:
El primer conjunto representa los permisos del propietario del archivo, el segundo conjunto los permisos de los miembros del grupo al que el archivo está asociado, y el tercer conjunto representa los permisos de todos los demás.
Estos conjuntos se componen de 3 valores “r w x” significa que una persona especifica tiene acceso de lectura, escritura y ejecución. Todo lo que se elimina se intercambia con un “ – “ que permite formar varias combinaciones de valores y permisos relativos: rw-, r–, r-x
Este comando se puede usar tanto con archivos simbólicos como argumentos numéricos.
Los simbólicos:
- “ a “ significa todos
- “ u “ significa usuario
- “ g “ significa grupo
- “ o “ significa todos
Luego escribís + o – para agregar permiso o eliminarlo, y luego se ingresa uno o más símbolos de permiso (r, w, x), seguido el nombre del archivo o carpeta.
$chmod a+r nombredelarchivo #todos pueden leerlo
$chmod a+rw nombredelarchivo #todos pueden leerlo y escribir
En caso de que sean los permisos de una carpeta se puede aplicar permisos de manera recursiva usando el parámetro –r
Los argumentos numéricos son mas rápidos, pero cuesta quizá un poco más recordarlos. Se usa un digito que representa los permisos de la persona, este valor numérico puede ser un máximo de 7 y se calcula de esta manera:
- 1 –> tiene permiso de ejecución
- 2 –> tiene permiso de escritura
- 4 –> tiene permiso de lectura
Esto nos da 4 combinaciones:
- 0 –> no tiene permisos
- 1 –> puede ejecutar
- 2 –> puede leer
- 3 –> puede escribir, ejecutar
- 4 –> puede leer
- 5 –> puede leer, ejecutar
- 6 –> puede leer, escribir
- 7 –> puede leer, escribir y ejecutar
Los usamos en pares de 3, para establecer permisos de los 3 grupos en conjunto:
$chmod 777 nombredelarchivo
$chmod 755 nombredelarchivo
$chmod 644 nombredelarchivo
Comando chown
En Linux todos los archivos son propiedad de un usuario en específico, el comando chown te permite cambiar o transferir la propiedad de un archivo al nombre de usuario especificado.
Por ejemplo, $chown usuariolinux archivo.ext hara que usuariolinux sea el propietario del archivo.ext.
Es bastante común la necesidad de cambiar la propiedad de un directorio, recursivamente a todos los archivos que tiene dentro, además de todos los subdirectorios y los archivos contenidos en ellos también, esto se puede hacer:
$chown –R <usuario> <archivo>
Los archivos/directorios no sólo tiene un propietario, también tienen un grupo, a través de este comando podes cambiar eso simultáneamente cuando se cambia el propietario:
Por ejemplo:
$chown <usuario>:<grupo> <archivo>
$chown hernan:users texto.txt
Comando jobs
El comando Jobs mostrara todos los trabajos actuales junto a sus estados. Un trabajo es básicamente un proceso iniciado por el Shell.
Comando kill
Si tenes un programa que no responde, podes cerrarlo manualmente usando kill. Enviara una señal al programa que se está ejecutando mal y le indica a la aplicación que finalice.
Hay un total de 64 señales que podes usar, pero por lo general se usan solo 2 señales:
SIGTERM (15): solicita que un programa deje de ejecutarse y te da algo de tiempo para guardar todos su progreso, si no especificas la señal al ingresar el comando kill, se utilizara esta señal.
SIGKILL (9): obliga a los programas a detenerse inmediatamente. Progreso no guardado se perderá.
Además de conocer las señales, también tenes que saber el número de identificación del proceso (PID) del programa que queres detener (KILL), si no conoces el PID simplemente ejecuta el comando $ps ux
Luego una vez que tenemos el PID, simplemente ejecutamos:
$kill [opción de señal] PID
- kill -HUP <PID>
- kill -INT <PID>
- kill -KILL <PID>
- kill -TERM <PID>
- kill -CONT <PID>
- kill -STOP <PID>
HUP significa colgar (hang up en inglés). Se envía automáticamente cuando una ventana de terminal que inició un proceso se cierra antes de terminar el proceso.
INT significa interrumpir (interrupt en inglés), y envía la misma señal que se usa cuando pulsamos ctrl-C en la terminal, que normalmente terminal el proceso.
KILL no se envía al proceso, sino al núcleo del sistema operativo, que inmediatamente se detiene y termina el proceso.
TERM significa terminar (terminate en inglés). El proceso lo recibirá y terminará por sí mismo. Es la señal por defecto enviada por kill.
CONT significa continuar (continue en inglés). Se puede usar para reanudar un proceso detenido.
STOP no se envía al proceso, sino al núcleo del sistema operativo, que inmediatamente detiene (pero no termina) el proceso.
Podrías ver números usados en su lugar, como kill -1 <PID>. En este caso,
- 1 corresponde a HUP.
- 2 corresponde a INT.
- 9 corresponde a KILL.
- 15 corresponde a TERM.
- 18 corresponde a CONT.
- 15 corresponde a STOP.
Comando ping

El comando ping nos ayuda a verificar el estado de conectividad a un servidor. Por ejemplo: Usamos el comando $ping google.com, este comando verificará si podes conectarte a Google y también medirá el tiempo de respuesta.
Ping sigue enviando la solicitud cada segundo por defecto, seguirá funcionando hasta que lo detengas con “ctrl –C” a menos que pases el numero de veces que queres intentarlo con la opción –c:
$ping –c 2 google.com
Ping además nos arroja algunas estadísticas sobre los resultados obtenidos, porcentaje de paquetes perdidos y estadísticas sobre el rendimiento de red.
No todos los servidores soportan hacerles un ping, si pasa esto la solicitud se agota, a veces esto se usa para “esconder” el servidor o solo para reducir la carga.
Ping funciona usando el protocolo ICMP (Internet Control Message Protocol), un protocolo de red como el TCP o el UDP.