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 p
con 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.txt
agrega permisos de read [lectura] a todoschmod g-w myfile.txt
elimina permisos de write [escritura] al groupochmod u+x myfile.txt
agrega permisos de execute [ejecución] al usuariochmod u=rw, go= myfile.txt
agrega 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.txt
dará permisos a todoschmod 766 myfile.txt
dará todos los permisos [lectura, escritura y ejecución] al usuario y permisos de lectura y escritura al groupo y a los otroschmod 635 myfile.txt
da permisos de lectura y escritura al usuario, escritura y ejecución al grupo, y lectura y ejecución a los otros.chmod 444 myfile.txt
permite 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