6.1 Contar palabras, tuberías & permisos
Autora: Alejandra Rougon

Este trabajo está bajo la licencia Creative Commons Atribución-NonComercial 4.0 Licencia Internacional.
🔍 Objetivos de aprendizaje
Después de completar esta lección aprenderás a:
- Contar caracteres, palabras y líneas
- Crear tuberías (pipelines)
- Cambiar los permisos
wc
El comando wc que viene de word count cuenta caracteres, palabras y líneas
-l, palabras con -w y caracteres con -c.
Tuberías |
Muchas veces podrías querer usar la salida de un comando como entrada de otro comando. A eso se le llama pipeline o tubería y podemos hacerlo con la barra vertical también llamada pipe |.
Ahora imprime las líneas que contengan la letra e en el archivo allfruits en orden alfabético. Así es que primero tienes que encontrar las líneas con grep y luego ordenarlas alfabéticamente con sort. Recuerda que allfruits está en el directorio Documents así es que tienes que cambiarte de directorio o escribir la ruta al archivo.
Si quieres agregar la salida anterior como entrada del comando sort agrega |y luego sort.
El símbolo | tomará la salida de un comando y la usará en el siguiente comando. Pero qué tal si quieres simplemente ejecutar dos comandos diferentes? Por ejemplo, cambiar de directorio y luego buscar una cadena dentro de un archivo. En ese caso puedes usar un punto y coma ;
Ahora vamos a encontrar ¿cuántos caracteres contienen las palabras que tienen una p en el archivo toygenes.txt que está en el directorio Practice. Así es que primero ve al directorio Practice, luego busca las líneas con la letra pcon grep y toma la salida como entrada de cut para seleccionar sólo la columna que contiene las palabras y luego cuenta los caracteres con wc.
En efecto, la palabra apple contiene 5 letras y es la única palabra que contiene una p. Esto será muy útil cuando empecemos a minar datos biológicos.
chmod
En sistemas UNIX y derivados de UNIX todos los archivos y directorios pueden tener diferentes permisos para el usuario [dueño del archivo] u, el grupo [usuarios específicos asignados por el administrador] g, para los otros [cualquier otra persona] o para todos all [usuario, grupo y otros]. Esto te permite proteger tus archivos hasta de ti mismo.
Los diferentes permisos son reading [lectura] r, writing [escritura] w, y executing [ejecución] x.
Para ver los permisos de tus archivos y directorios en el directorio Documents, cambia de directorio de trabajo cd /root/sandbox/Documents y luego teclea ls -l
$ ls -l
total 5
drwxr-xr-x 2 root root 2 Apr 10 21:35 Genomes/
drwxr-xr-x 2 root root 6 Apr 24 18:22 Practice/
-rw-r--r-- 1 root root 87 Apr 24 17:02 Readme.copy
-rw-r--r-- 1 root root 64 Apr 23 21:03 Readme.txt
-rw-r--r-- 1 root root 31 Apr 24 20:26 allfruits
-rw-r--r-- 1 root root 70 Apr 23 14:49 contents.txt
-rw-r--r-- 1 root root 31 Apr 23 20:52 fruitall.copy
-rw-r--r-- 1 root root 31 Apr 23 20:47 new_fruitall
Puedes ver cómo los permisos están distribuidos en diferentes posiciones en la siguiente imagen.

La primera posición indica si es un archivo o un directorio, la siguientes tres posiciones pertenecen al usuario [dueño]. Si ella/el tiene permisos de lectura, escritura y ejecución verás rwx si alguno de esos permisos no está disponible, estará representado con un -. Las tres posiciones de en medio representan los permisos del grupo, y las últimas tres representan a los otros [los permisos de cualquier otra persona].
Existen dos maneras de cambiar los permisos. Una es a través de caracteres y la otra es a través de números, llamada el modo octal.
Modo de caracteres
En este modo puedes cambiar los permisos con símbolos. Agrega +, elimina -, especifica un permiso =. Por ejemplo:
chmod +r myfile.txtagrega permisos de read [lectura] a todoschmod g-w myfile.txtelimina permisos de write [escritura] al groupochmod u+x myfile.txtagrega permisos de execute [ejecución] al usuariochmod u=rw, go= myfile.txtagrega permisos de read & write [lectura y escritura] al usuario and elimina read, write & execute al grupo y a los otros
Modo octal
En el modo octal cada combinación de permisos representa un número.
| Número | Binario | Lectura/read [r] | Escritura/write [w] | Ejecución/Execute (x) |
|---|---|---|---|---|
| 0 | 000 | ❌ | ❌ | ❌ |
| 1 | 001 | ❌ | ❌ | 👍 |
| 2 | 010 | ❌ | 👍 | ❌ |
| 3 | 011 | ❌ | 👍 | 👍 |
| 4 | 100 | 👍 | ❌ | ❌ |
| 5 | 101 | 👍 | ❌ | 👍 |
| 6 | 110 | 👍 | 👍 | ❌ |
| 7 | 111 | 👍 | 👍 | 👍 |
Los permisos serán asignados por el número en la posición correspondiente.
chmod 777 myfile.txtdará permisos a todoschmod 766 myfile.txtdará todos los permisos [lectura, escritura y ejecución] al usuario y permisos de lectura y escritura al groupo y a los otroschmod 635 myfile.txtda permisos de lectura y escritura al usuario, escritura y ejecución al grupo, y lectura y ejecución a los otros.chmod 444 myfile.txtpermite a todos leer el archivo per elimina permisos de lectura y ejecución. Esto es muy útil en bioinformática para proteger los archivos crudos de modificación no intencional, aún de ti mismo.
Ahora vamos a ver los permisos del archivo allfruits y cambiarlos para darle todos los permisos a todos. Después verifica que se hayan cambiado los permisos correctamente.
$ ls -l allfruits
-rw-r--r-- 1 root root 31 Apr 24 20:26 allfruits
$ chmod 777 allfruits
$ ls -l allfruits
-rwxrwxrwx 1 root root 31 Apr 24 20:26 allfruits*
El asterisco aparece en algunas configuraciones de ls para indicar que es un archivo ejecutable.
🔑 En esta lección has aprendido a:
- Contar caracteres, palabras y líneas con
wc - Crear tuberías con
| - Cambiar permisos con
chmod
