- Disponer de un ordenador con sistema operativo sobre el que tengamos permisos de superusuario/administración.
- Manejo del entorno de escritorio.
- Instalación y desinstalación de programas.
- Resolución de problemas.
- Conocimiento del árbol de directorios. Rutas y enlaces simbólicos
- Manejo de versiones de archivos.
- Conocimiento de la arquitectura hardware del ordenador.
- Conocimiento de la estructura del sistema operativo.
- Uso de la terminal, consola Unix.
- Manejar la estructura de ficheros.
- Distinguir entre rutas absolutas y relativas.
- Nociones de las distintas codificaciones de caracteres.
- Qué tipos de datos hay
- Qué tipos de formatos de datos hay.
- Usuarios y grupos
- Atajos de teclado.
- Conocer la Web: navegador, lenguaje HTML, programas, utilidades, atajos, buscadores.
- Git
- Nociones de periodismo de datos: investigación, datos y visualización.
Sujeto Predicado Objeto
Función Variable Argumento
Para ejecutar el comando sin más, por ejemplo, ls, escríbelo y pulsa
Enter o retorno de carro
ls
En el caso de ls, podemos decirle que nos liste un archivo concreto,
por ejemplo:
ls errores.txt
Otros comandos pueden requerir uno o más argumentos.
- Cada comando tiene múltiples opciones, y se pueden combinar.
- Las opciones se suelen escribir con una sigla que corresponde con una palabra, separado por un guión.
- Por ejemplo, si escribimos
ls -r, listamos el directorio en orden inverso.
ls -r
Nótese la diferencia con la ejecución anterior.
- Números enteros o integers
- Decimales, flotantes o floats
- Cadenas -de caracteres- o strings
- Booleanos: verdades o falso
- Otros objetos
\n, línea nueva\b, backspace\r, retorno de carro.\t, tabulador\f, formfeed\e, espacio\\, barra invertida\", comillas\000, carácter octal.
- Navegador: Firefox y Chrome
- Compresor: 7-zip
- Consola: Cygwin
- Editor: Emacs, Notepad++, Sublime, Atom… puedes leer cómo elegir un buen editor de textos.
- Git: git-scm
- Github: desktop
http://stackoverflow.com/questions/1494658/how-can-i-change-my-cygwin-home-folder-after-installation
Según comentan ahí, hay que añadir la variable db_home a
/etc/nsswitch.conf con la información windows para tener el
directorio de usuarix de Windows como home, es decir:
db_home: windows
O de forma equivalente:
db_home: /%H
De esta última manera puedes interpretar el esquema y hacer que estén
dentro del subdirectorio cygwin, por ejemplo:
db_home: /%H/cygwin
En esta página proponen otro método:
mkpasswd -l -p "$(cygpath -H)" > /etc/passwdSe puede descargar y utilizar tanto en Linux, Windows o Mac. Podemos descargarlo desde:
- ftp de Emacs
- elegir un mirror
- dejar que nos sugieran el mirror más cercano a nuestra ubicación.
La línea de comandos es una interfaz de usuarix basada en líneas de comandos (Command Line Interface o CLI).
Cuando utilizamos un ordenador, tenemos interfaces para utilizar los programas.
En la actualidad, cuando utilizamos un ordenador personal –de forma general–, usamos interfaces gráficas de usuarix GUI (Graphic User Interface).
Pero también podemos, de forma general o específica, utilizar otras interfaces como son:
- Las referidas CLI
- Las NUI (Natural User Interface o
interfaz natural de usuarix), como pueden ser las pantallas capacitivas multitáctiles, Kinect –con el movimiento– o Siri –con el reconocimiento de lenguaje natural– .
Al inicio de los ordenadores, solo había líneas de comandos para comunicarnos con ellos.
Las GUI fueron desarrollados en el Centro de Investigación de Xerox en Palo Alto (Palo Alto Research Center, PARC).
Tiempo después, Apple pagó para estudiar la idea, que finalmente se concreto en su GUI.
El MIT desarrolla una GUI para Unix en 1986, X.
El sistema XFree86 de Linux se desarrolló en 1996, una implementación libre del original X, al que homenajea en el nombre.
- Ahorras tiempo
- Te ofrecen una alternativa a las GUI.
- Te acercan más a cómo funcionan los sistemas POSIX
- Te preparan para la programación.
- Aprendes otra fora de hacer las cosas.
- Si la terminal es la interfaz más directa con el sistema operativo, dado que estamos en un entorno gráfico, utilizaremos un emulador de terminal.
- Una shell es un intérprete de comandos de la terminal.
- Un comando u orden es una utilidad que ejecutas en la shell.
- La salida es lo que devueve el comando, normalmente en la terminal, llamada STDOUT por STandarD OUTput o salida estándar.
- La entrada de datos, argumentos o comandos es lo que se conoce como STDIN por STandarD INput.
- Un proceso es una aplicación que corre (está ejecutada, funciona) en tu ordenador. Puede estar activa o durmiendo.
A process is a running application on your computer. It can be active, sleeping,
CTRL + L, limpia la consola, es lo mismo que darle aclearCTRL + A, ir al inicio de la líneaCTRL + E, ir al final de línea.CTRL + U, limpia la línea.CTRL + C, mata el proceso.CTRL + Z, para el proceso.CTRL + D, fin del archivo.
Lista los archivos del punto en el que nos encontramos. Viene del inglés list. Si lo lanzamos sin argumentos, obtendremos un listado de los archivos y directorios que contiene ese directorio:
ls
ls [opciones] lista los archivos del punto en el que nos encontramos.
-a, lista todos los archivos.-l, lista en formato largo
Para emplear argumentos, utilizaremos la estructura:
ls -a
Si queremos saber la información de cada archivo y directorio, lo
haremos con la opción -l:
ls -l
pwd es el acrónimo de print working directory o muestra por
pantalla el directorio de trabajo actual. Es decir, imprime la ruta
absoluta del sistema donde nos encontramos.
pwdmkdir [opciones] [nombre-directorio], make directory, crea un directorio
-p, make parents
Sirve para cambiar de directorio. Viene de las iniciales del inglés change directory.
Si escribimos solo cd, vamos a nuestro espacio home definido en la
variable de entorno HOME:
env |grep HOME
Por tanto, iremos a /home/flow
Para cambiar de directorio, podemos elegir la ruta absoluta o la relativa.
cd [ruta]
cd, vamos a la home del usuariocd ., vamos al directorio en el que estamos.cd .., vamos al directorio superiorcd ~, vamos al directorio home del usuario.cd -, vamos al directorio donde estábamos antes.
Con esos atajos también podemos construir rutas, por ejemplo, con cd
~/Documentos vamos al directorio Documentos del usuario con el que
estamos.
cd [ruta], change directory, cambia al directorio elegido. Podemos escribir la ruta absoluta o bien con atajos:
cd, vamos a la home del usuariocd ., vamos al directorio en el que estamos.cd .., vamos al directorio superiorcd ~, vamos al directorio home del usuario.
Con esos atajos también podemos construir rutas, por ejemplo, con cd ~/Documentos vamos al directorio Documentos del usuario con el que estamos.
touch [archivo], crea archivo vacío
cp [opciones] [origen] [destino]
cp -rcopia los directorios recursivamente
mv [origen] [destino]
https://upload.wikimedia.org/wikipedia/commons/7/70/Stdstreams-notitle.svg
Para saber de los procesos de entrada y salida de datos, conviene saber de POSIX. ¿Qué es POSIX? Es lo que hace diferente Unix de Windows, es lo que te complica o te facilita la vida si quieres una compatibilidad en las operaciones que puedes hacer a nivel de sistema operativo.
POSIX es el acrónimo de Portable Operating System Interface (Interfaz de Sistema Operativo Portable), y la X viene de UNIX como seña de identidad de la API.
Como anécdota, decir que el nombre fue sugerido por Richard Stallman, fundador del proyecto GNU, cuando en 1980 pertenecía al comité del IEEE (Institute of Electrical and Electronics Engineers, Instituto de Ingenierxs Electrónicxs y Eléctricxs) que desarrolló el protocolo finalmente conocido como POSIX.
Se trata de una familia de estándares que pretenden mantener la compatibilidad entre sistemas operativos. POSIX define la API, así como la línea de comandos y otras interfaces necesarias.
Cada proceso en estos entornos suele disponer de tres archivos abiertos al comienzo de su ejecución:
- La entrada
- La salida
- La salida de errores.
El hecho de ser estándares es porque suelen estar asignados a descriptores de archivos conocidos, de manera que un programa:
- Siempre tomará los datos de entrada por el descriptor cero 0.
- Enviará los resultados por el descriptor uno 1.
- Mostrará los errores por el descriptor dos 2.
Para referirnos a ellos, se les denomina:
- La entrada, STDIN (STanDard INput, entrada estándar).
- La salida, STDOUT (STanDard OUTput, salida estándar).
- La salida de errores, STDERR (STanDard ERRor, salida estándar de errores).
Esta convención no tiene mucho sentido en sistemas gráficos o en programas que funcionan con demonios, pero alcanzan todo su potencial con la terminal.
La terminal o emulador de terminal es el programa que nos conecta con la shell del sistema, el intérprete de comandos del sistema operativo.
- La entrada de datos suele ser el teclado
- La salida típica suele ser la pantalla
- La salida de errores suele suplir a la salida típica, en caso de que se produzcan errores en la ejecución del comando.
Estos procesos se pueden modificar:
- Podemos redirigir la salida a un archivo.
- O bien dirigir la entrada a un comando.
- O redirigir una salida a una entrada.
Quienes trabajáis habitualmente con Github, quizás os suene cuando creáis un repositorio nuevo que entre las opciones para hacerlo, dice:
...or create a new repository on the command line echo "# prueba-borrar" >> README.md
Lo que aquí proponen es utilizar el comando echo, que como su nombre
indica nos devuelve lo que le digamos, y dirigir la salida a un
archivo.
Si escribimos echo hola, la salida del comando por la salida típica,
que es la pantalla, será hola:
echo hola
Com proponían en Github, si le decimos a echo que devuelva hola
pero queremos incluirlo en un archivo de nombre README.md, haremos:
echo hola > README.md
Como escribíamos en el ejemplo anterior, el carácter > redirecciona
la salida típica o STDOUT al archivo README.md.
¿Lo crea? ¿Lo destruye?
- Si no existía ese archivo, efectivamente, lo crea con
holacomo contenido. - Si existía, lo sobreescribe con
holacomo contenido.
Si no queremos sobreescribirlo, porque ya existía, sino añadir
contenido a ese archivo, en vez de > utilizaremos >>:
Como ya he creado con el ejemplo anterior el archivo README.md con
el contenido hola, ahora voy a añadir ¿qué tal:
echo qué tal >> README.mdPara comprobarlo, hacemos un more:
more README.md
Aunque aquí no hemos usado comillas, es recomendable introducir el texto entre comillas, así nos evitamos que haya palabras reservadas que empleemos en la frase:
echo "pues muy bien, gracias" >> README.md
Así añadiremos una tercera línea a README.md con ese texto.
En io-redirection, hacen un buen repaso:
Redirección de STDOUT a archivo, donde lo crea o lo sobreescribe:
comando 1> archivo
Redirección y añadido de STDOUT a archivo:
comando 1>> archivo
Redirección de STDERR a archivo:
comando 2> archivo
Redirección de STDERR y se añade al final del archivo:
comando 2>> archivo
Redirección de STDOUT y STDERR a archivo:
comando &> archivo
En sentido contrario a STDOUT, podemos hacer que un comando ejecute
un archivo ya creado:
comando < archivo
Para redirigir un comando con otro.: , entubar un comando con otro
comando1 | comando2 | comando3
Los comodines permiten usar valores conocidos con valores comodín.
Hay tres operadores:
*, para cualquier número de caracteres?, para un carácter[x-y], para un rango
Podemos listar todos los csv con el comodín *, ya que puede haber
archivos con un carácter o varios.
ls *.csv
El comodín ? sirve para solo un carácter, cualesquiera. Por ejemplo,
si tuviéramos archivos que solo difieren en un carácter, podemos
listar ambos.
Imaginemos que tenemos archivos 1.pdf, 2.pdf, 3.pdf,
etc. Podríamos listarlos con el comodín ?:
ls ?.pdf
El comodín corchetes cuadrados o [] permite buscar rangos de números
o letras.
si queremos buscar en el csv tanto CLESA como BLESA, podemos
escribir:
grep [B-C]LESA black-is-black.csv | wc -l
top, sirve para ver qué procesos consumen más.ps [comando]informa de los procesos de ese comando.ps -f, lista completaps -e, muestra todos los procesosps aux | grep [comando], muestra los procesos de ese comando
comando &, corre proceso por detrás.jobs, muestra procesos que corren por detráskill señal numero-proceso, manda la señal determinada a ese procesokillall comando, mata todos los procesos de ese comando
- Los archivos/directorios pertenecen al usuario, del grupo y de otros
- Las opciones de cada cual son lectura
rread, escriturawwrite y ejecuciónxexecute u, por user, usuariog, por group, grupoo, por others, otrosa, por all, todoschmod [opciones] [modo] [destino], change mode, cambia permisos.R, afecta recursivamente.- Por ejemplo:
chmod +rx
Cambia los permisos a lectura y escritura para todos.
chmod g-w
Quita los permisos de escritura al grupo
chmod 777
Cambia los permisos a lectura, escritura y ejecución para todxs.
En la propia terminal tienes opciones de perfiles de color que puedes usar o puedes configurar algunos propios.
Especifica las variables que se exportan a todos los procesos que son reproducidos por el shell.
Se utiliza el comando export para exportar una variable:
export VARIABLE=value
Los valores de las variables de entorno se pueden visualizar con el comando env:
env
Si quieres cambiar el aspecto del bash y que no aparezca todo el chorro de carpetas en las que te encuentras y que convierte tu línea en algo difícil de utilizar, cámbialo:
#PS1='[\u@\h \W]\$ ' # Default
PS1='\[\e[1;31m\][\u@\h \W]\$\[\e[0m\] '
Ahí elegimos, en el primer subcorchete, el color (ver la lista de colores completa), como por ejemplo \e[1;31m, color rojo y en negrita o bldred.
El primer número se refiere a que sea texto normal, en cursiva, en negrita o subrayado.
- 1, para que aparezca en negrita
- 2, aparece normal
- 3, aparece en cursiva
- 4, para que aparezca subrayado
Si queremos probarlo en la terminal, podemos utilizar el comando echo:
echo -e "${txtblu}test"
Se puede ver el listado de caracteres que escapan.
En este caso, en el segundo subcorchete definimos:
- Con
\u, que aparecerá el nombre del usuarix. - Con
@que aparecerá una arroba - Con
\hque aparecerá el nombre del host. \Windica que se pondrá el directorio de trabajo relativo o current relative path, si no estás en~/. Si quisiéramos la ruta absoluta emplearíamos\w
Los comandos tienen un nombre y opciones.
Probablemente tengamos activada en la terminal la opción autocompletado, que podemos ver con estas líneas o parecidas en el archivo .bashrc:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Por tanto, podríamos pulsar dos veces el tabulador cuando empecemos a escribir un comando y la terminal autocompletará.
Si queremos saber qué hace un comando, hay tres opciones, dos comandos
que aportan información sobre los otros comandos y una opción de cada
comando: whatis, --help y man.
whatis muestra un par de líneas sobre el comando, de la información
que aparece en el manual. Por ejemplo, si queremos saber qué hace el
comando wc, haremos whatis wc:
whatis wc
La ayuda suele estar en inglés.
Cualquier comando con la opción --help muestra una versión reducida del manual:
wc --help
El comando man con el nombre del comando del que se quiere saber
como argumento nos abre el paginador del manual del comando,
normalmente el comando more.
Para avanzar en el paginador, hay que darle a la barra espaciadora y
para salir del paginador sin llegar al final, hay que pulsar la tecla
q.
man wc
Para interrrumpir el curso de un comando, se puede pulsar a la vez las
teclas de Ctrl y c.
Ctrl + c
Para que esto no suponga un lío, lo habitual es presionar primero la letra
Ctrly, sin soltarla, pulsarCuna vez, luego soltarCtrl.
Para limpiar la línea con algo que hemos escrito y podríamos borrar
con la tecla de Backspace, podríamos pulsar la combinación de teclas
Ctrl + u.
Ctrl + u
Se puede salir de la sesión con el comando exit o con la combinación
de teclas Ctrl más d.
Con el comando screen podemos abrir una terminal virtual dentro de
la sesión, de tal forma que podemos ejecutar comandos en segundo plan
o, como por ejemplo un ping, una descarga de un fichero con curl o
cualquier otra orden o conjunto de órdenes.
Para lanzarlo, escribimos screen y entonces pide que continuemos con
space o salgamos con return.
Una vez que hemos continuado con space, podemos lanzar el comando
que queramos tener en segundo plano, como por ejemplo, ping. Para
dejarlo en segundo plano, se teclea Ctrl + a + d.
Ctrl + a + d
Si queremos saber los comandos que tenemos en segundo plano, se pueden ver con screen -ls.
Si solo tenemos un screen lanzado, podremos volver con screen -r, pero si tenemos varios, que se mostrarán con screen -ls, podremos volver al que nos interese con screen -r más el número que nos aparece en el listado.
Para cerrar la terminal virtual se utiliza también el comando exit.
Se pueden hacer alias de los comandos e incluirlos en .bashrc. Por ejemplo:
Un alias de ls para que siempre que lo invoquemos haga ls -aF --color:
alias ls='ls -aF --color=always'
O un comando nuevo, por ejemplo ll, que lanza ls -l:
alias ll='ls -l'
Podemos renombrar un comando, como por ejemplo que grep sea search:
alias search=grep
O que al escribir .. subamos un directorio con cd ../:
alias ..='cd ../'
Para saber sobre cualquier comando, por ejemplo sobre mkdir,
utilizamos el comando man.
man mkdirhistory muestra los comandos usados.
history -climpia la historiahistory |grep [comando], muestra la historia de ese comando
time [comando], muestra el tiempo de ejecución del comando
diff compara archivos línea por línea.
Lista los archivos del punto en el que nos encontramos. Viene del inglés list. Si lo lanzamos sin argumentos, obtendremos un listado de los archivos y directorios que contiene ese directorio:
ls
ls [opciones] lista los archivos del punto en el que nos encontramos.
-a, lista todos los archivos.-l, lista en formato largo
Para emplear argumentos, utilizaremos la estructura:
ls -a
Si queremos saber la información de cada archivo y directorio, lo
haremos con la opción -l:
ls -l
pwd es el acrónimo de print working directory o muestra por
pantalla el directorio de trabajo actual. Es decir, imprime la ruta
absoluta del sistema donde nos encontramos.
pwdmkdir [opciones] [nombre-directorio], make directory, crea un directorio
-p, make parents
Sirve para cambiar de directorio. Viene de las iniciales del inglés change directory.
Si escribimos solo cd, vamos a nuestro espacio home definido en la
variable de entorno HOME:
env |grep HOME
Por tanto, iremos a /home/flow
Para cambiar de directorio, podemos elegir la ruta absoluta o la relativa.
cd [ruta]
cd, vamos a la home del usuariocd ., vamos al directorio en el que estamos.cd .., vamos al directorio superiorcd ~, vamos al directorio home del usuario.cd -, vamos al directorio donde estábamos antes.
Con esos atajos también podemos construir rutas, por ejemplo, con cd
~/Documentos vamos al directorio Documentos del usuario con el que
estamos.
cd [ruta], change directory, cambia al directorio elegido. Podemos escribir la ruta absoluta o bien con atajos:
cd, vamos a la home del usuariocd ., vamos al directorio en el que estamos.cd .., vamos al directorio superiorcd ~, vamos al directorio home del usuario.
Con esos atajos también podemos construir rutas, por ejemplo, con cd ~/Documentos vamos al directorio Documentos del usuario con el que estamos.
touch [archivo], crea archivo vacío
cp [opciones] [origen] [destino]
cp -rcopia los directorios recursivamente
mv [origen] [destino]
Responde a word count, contar palabras.
El esquema de uso sería:
wc [opciones] archivo
Algunas opciones son:
-l, cuenta líneas-c, cuenta bytes-m, cuenta carácteres-w, cuenta palabras
wc rera_aragon.csv
Lo cual nos da las líneas, palabras y bytes que tiene.
Si queremos contar solo las líneas, lo haremos con la opción -l:
wc -l rera_aragon.csv
wc -c rera_aragon.csv
wc -w rera_aragon.csv
wc -m rera_aragon.csv
Busca cadenas de texto en archivos.
Por ejemplo, si queremos buscar BLESA, lo haremos con
grep "BLESA" black-is-black.csvPara contar esos resultados, le añadimos la opción -c
grep -c "BLESA" black-is-black.csvSi queremos que salga el número de línea donde aparece la expresión
buscada, podemos hacerlo con la opción -n:
grep -n "BLESA" black-is-black.csvPara dar opciones de búsqueda, operador lógico OR, caben varias
opciones a utilizar:
- El operador lógico
\| - Utilizar la combinación
|pero con la opción-E egrepgrepcon-ey-e
grep "BLESA\|MORAL" black-is-black.csvY para contarlo, lo mismo que antes:
grep -c "BLESA\|MORAL" black-is-black.csvgrep -E "BLESA|MORAL" black-is-black.csvY para contarlo, lo mismo con la opción -c:
grep -Ec "BLESA|MORAL" black-is-black.csvegrep es lo mismo que grep -E:
egrep "BLESA|MORAL" black-is-black.csv
Y para contarlo, lo mismo con la opción -c:
egrep -c "BLESA|MORAL" black-is-black.csv
grep -e "BLESA" -e "MORAL" black-is-black.csv
Igualmente, si quisiéramos contarlo, añadimos la opción -c:
grep -ce "BLESA" -e "MORAL" black-is-black.csv
Aunque no hay operador AND en grep, podemos hacerlo de varias
maneras:
- Con la opción
-Ey separando las cadenas con.*: - Encadenando
grep
grep -E "BLESA.*TABACO" black-is-black.csv
Y nos dirá si Miguel Blesa ha comprado TABACO con la tarjeta black.
grep -E "BLESA" black-is-black.csv | grep -E "TABACO"
Con el uso de la opción -v se pueden simular condiciones NOT. La
opción -v es para búsquedas inversas, es decir, busca todas las
líneas excepto las que cumplan este patrón. Por ejemplo:
grep -vE "CARGO|COMPRA|REINTEGRO|DISPOSICION|BONIFICACION|CUOTA|FACTURACIÓN|ANTICIPO|IMPOSICION|CAJEROS|Facturación|Importes|CARGA|ANULACION" black-is-black.csv
find [ruta] [opciones] [expresión]
-name, busca por nombre-size, busca por tamaño.iname, busca en modo sensitivo.
Buscas archivos o directorios desde la línea de comandos. Puedes buscar filtrando por:
- Permisos
- Propiedad
- Fecha/hora de modificación
- Tamaño
Si solo lanzamos find, nos devolverá los archivos, directorios y
subdirectorios por debajo del lugar donde nos encontramos.
Miremos primero dónde nos encontramos, volvamos a pwd:
pwd
Según el sistema operativo que utilicemos, esta orden nos devolverá rutas distintas:
- GNU/Linux: /home/usuarix/proyectos/operaciones-logicas-datos
- MacOSX:
- Windows: c:\Users\Mengana\Documents\operaciones-logicas-datos
En ese caso estamos en
/home/flow/proyectos/operaciones-logicas-datos, vamos a ver qué
contiene este directorio:
find
Se puede hacer find también de dos formas:
find .find . -print.
Pero normalmente lo utilizaremos siguiendo esta estructura:
find ruta filtro-de-búsqueda término-de-búsqueda
Podemos poner otra ruta:
find ~/docs/softwarelibre/
Atención: si no ponemos la opción
:results algoy superamos las 999 líneas, no obtendremos la salida de lo ejecutado.
Vamos a buscar ahora todos los archivos Readme.org por debajo de un
directorio con la opción -name y voy a entubar la salida con a wc -l
find ~/ownCloud/proyectos/ -name Readme.org | wc -lY también podemos incluir comodines. Por ejemplo, si quisiéramos todos los
archivos *.org, no solo los que se llaman Readme.org:
find ~/ownCloud/proyectos -name *.org | wc -l
Y si no queremos todos los archivos sino alguno en concreto, por ejemplo, que contuviera bash:
find ~/ownCloud/docs/softwarelibre -name *bash*.org
O tamaños de archivos:
find . -size +1M
O de directorios
find ~/ -folder +300MO tipo de archivo:
find . -type f *.orgO encontrar archivos más antiguos que un año y borrarlos:
find .cache/ -type f -atime +365 -exec rm \;
Encontrar y ordenar
find ~/Descargas/ -size +30M | sort -hrY programar:
find ./ -name "*.png" | sort | while read file; do tesseract $file "`basename $file" | sed 's/\.[[:alnum:]]*$//'`.txt -l spa -psm 3; done
Donde:
- Encontramos los archivos del tipo
pngsobre la carpeta elegida - Los ordenamos con
sort - Empezamos bucle con
while - Ejecutamos
tesseract(herramienta OCR) sobre cada archivo$file - Cambiamos el nombre y el tipo a
txt.
El comando head muestra, por defecto, las diez primeras líneas de un archivo.
head rera_aragon.csv
Si queremos un número de líneas distintas, tan solo tenemos que ponerlo como argumento del comando. Por ejemplo, si solo queremos 4 líneas:
head -4 rera_aragon.csvSi head nos mostraba las diez primeras líneas de un archivo, el
comando tail muestra las 10 últimas líneas de un archivo.
tail rera_aragon.csvY también podemos modificar el número de líneas que salen especificándolo como argumento. Por ejemplo, si queremos las últimas cinco líneas:
tail -5 rera_aragon.csv
tail -n2 rera_aragon.csv
Vistos estos dos comandos, head y tail, se pueden combinar para
que la salida de uno sirva como entrada de otro, y de esta manera,
saber qué contiene una línea en concreto.
La concatenación de comandos lo hacemos con la tubería |. La tubería
o pipe sirve para pasar la ejecución de un comando a otro.
Si quisiéramos saber el contenido de la línea número treinta del
fichero, mostraríamos las 30 primeras líneas con head -30 y lo
concatenaríamos con tail -1 para saber la última de esas 30 primeras
líneas:
head -30 rera_aragon.csv | tail -1
Otro ejemplo, concatenando tres comandos: head, tail y cut:
head -n20 rera_aragon.csv | tail -n5 | cut -c1-8
- Podemos ejecutar un comando
- Pero también un comando y después otro
- O un comando y si tiene éxito entonces el segundo.
- Al reves, un comando si el primero no tuvo éxito.
Ejemplos
Si queremos ejecutar un comando y luego otro, independientemente de si
el primero da error, utilizamos el operador ;
En este ejemplo, la primera orden ofrece resultados, y por eso el
echo tiene sentido:
grep BLESA black-is-black.csv | wc -l ; echo "líneas con la palabra BLESA...\n¡Qué pasada!"
En este ejemplo, no devuelve resultados porque no hay un archivo llamado black. Sin embargo, aparece el mensaje a continuación como en el primer caso, que resulta un poco incongruente.
grep CLESA black; echo "líneas con la palabra CLESA...\n¡Qué pasada!"
Si queremos ejecutar el comando, y que siga con el segundo sólo si el primero devuelve algo, utilizamos el operador &&:
grep CLESA black && echo "líneas con la palabra CLESA...\n¡Qué pasada!"Al contrario, si queremos ejecutar un comando después de otro pero
queremos que se ejecute el segundo solo si el primero dio error,
usaremos el operador ||:
grep CLESA black-is-black || echo "No hay ningún chorizo CLESA"
Para filtrar columnas
Sustituir una palabra por otra, por ejemplo:
sed 's/BLESA/CORRUPCION/' black-is-black.csv > black_corrupcion.csvY comprobamos si hay alguna línea con BLESA en el archivo black_corrupcion.csv:
grep -c "BLESA" black-corrupcion.csv
diff Mostrar diferencias entre ficheros:
diff Black.csv Black_corrupcion.csv
Comparar dos archivos. Si son iguales, no devuelve nada, si difieren muestra el byte y el número de línea de la primera diferencia.
cmp Black.csv Black_corrupcion.csv
Para reemplazar
Para dividir en varios archivos
para ordenar
- Find: http://www.binarytides.com/linux-find-command-examples/
- Aristarain, Manuel & Tigas, Mike & Merril, Jeremy B. (2014) Scraping PDFs with Tabula. URL: https://s3.amazonaws.com/media.miketigas.com/files/20140627/20140627-tabula-IRE2014-withnotes.pdf
- Crucianelli, Sandra. (2013) Herramientas digitales para periodistas. Centro Knight para el Periodismo en las Américas de la Universidad de la Universidad de Texas. URL: https://knightcenter.utexas.edu/books/HDPP.pdf
- García Santiago, Lola. (2003) Extraer y visualizar información en Internet: el Web Mining. Gijón: Ediciones Trea
- Gray, Jonathan & Bounegru, Liliana & Chambers, Lucy. (2012) Data Journalism Handbook. European Journalism Centre y Open Knowledge Foundation. URL: http://datajournalismhandbook.org/
- Kayser-Brill, Nicolas. (2014) Data wants to be free! (and clean). Medialab-Prado. URL: http://bit.ly/free-clean
- Méndez Rodriguez, Eva Mª. (2002) Metadatos y Recuperación de información: estándares, problemas y aplicabilidad en bibliotecas digitales. Gijón: Trea
- Nguyen, Dan. (2010) Chapter 3: Turning PDFs to Text. Propublica, Journalism in the Public Interest. URL: https://www.propublica.org/nerds/item/turning-pdfs-to-text-doc-dollars-guide
- Nguyen, Dan. (2010) Chapter 5: Getting Text Out of an Image-Only PDF. ProPublica, Journalism in the Public Interest. URL: https://www.propublica.org/nerds/item/image-to-text-ocr-and-imagemagick
- Schoolofdata, (2014) Obteniendo datos de los PDF. Web: School of Data. URL: http://es.schoolofdata.org/obteniendo-datos-de-los-pdfs/
- Cómo utilizar Google OCR, https://www.youtube.com/watch?v=DPJJON26Do4
- Introducción al scraping de PDF, http://www.irekia.euskadi.eus/es/news/11703-introduccion-google-refine-curso-periodismo-datos