Posts Tagged ‘scripts’

Combinación de comandos útiles para Linux

Posted on the Junio 2nd, 2009 under GNU/Linux,Probando herramientas,Software Libre by nacho

En este post voy a ir agregando comandos útiles que vamos encontrando entre los conocidos (y los que aporten), que permiten realizar tareas desde la consola sin tener que recurrir a programas sofisticados.

Confirmar todas las acciones que pregunte un programa interactivo.

$ yes | programa

devuelve una “y” cada vez que el programa quiere leer de la entrada estandar

$ yes s | programa

devuelve una “s” cada vez que el programa quiere leer de la entrada estandar

Encontrar archivos duplicados y conservar uno.

$ yes 1 | fdupes -d ./

fdupes encuentra mediante md5 archivos duplicados en la carpeta indicada. El parámetro d, le dice que borre el resto conservando el que le indiquemos. Mediante “yes 1″ le decimos que conserve el primero que encuentra. Cuidado con md5 ;-) .

Generar un PDF con varias páginas en una sola partiendo de otro PDF.

$ pdfnup salida.pdf --nup 2x5 --orient portrait --frame true

Dai me contó acerca de una aplicación llamada pdfnup. Permite hacer lo que uno quiera con un PDF, como recortarlo (cortarle los márgenes excesivos), agrupar en disposición de tabla varias páginas dentro de cada una (para poder imprimir por ejemplo 2×3 páginas or carilla). Tiene muchas opciones, pero a la vez configuradas por defecto para no necesitar agregar muchas cosas. El archivo de salida se llamará igual que el de entrada más la disposición, por ejemplo “salida-2×5.pdf”.

Recortar varias imágenes y convertirlas en PDF (una por página).

$ convert -crop '750x350+110+200' +repage resp?/*.png salida.pdf

convert es una de las aplicaciones de ImageMagick. Conserva los originales, permitiendo mientras convertimos de formato, modificarle brillo, contraste, recortarla, rotarla, y muchos etcéteras. Si quisieramos que convierta cada imagen en un archivo separado, bastaría con combinarlo con

$ find ./ -iname '*.png' -exec convert '{}' '{}.pdf' ';'

donde {} representa el nombre del archivo y ‘;’ finaliza el comando.

Autocompletado en bash personalizado (para tus programas!)

Posted on the Abril 9th, 2009 under GNU/Linux,Probando herramientas,Software Libre by nacho

Bash incorpora una característica que permite el autocompletado en una terminal de los parámetros que acepta un programa. Para esto utiliza un script con diversas funciones, y permite que incorporando un archivo y ciertos comandos, podamos definir como se autcompletarán los programas que querramos.

Por ejemplo, tenemos hecho un programa con Milton y Daiana, que acepta varios parámetros. Hay algunos que no los usamos hace tiempo, y para no estar consultando la ayuda, pensamos que estaría bueno que se autocompletara.

El programa está hecho en mono, y se ejecuta haciendo

$ ./programa.exe

o bien

$ mono programa.exe

Aquí el archivo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Author: Nacho
# /etc/bash_completion.d/programa
# copy it there and enjoy magic, compadre!
#
_programa() 
{
    local cur prev opts
 
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="-h -? --help -r --reemp -e -f --extrae-flex -c -g -d --vft"
 
    if [[ "${cur}" == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    else
        _filedir  '@(xml|sql)'
    fi
}
complete -F _programa $filenames programa.exe
complete -F _command $filenames mono

La línea 12 indica las opciones que acepta el programa.
La línea 17 indica que se listen (si no es que estoy intentando poner alguna opción) los directorios y archivos pero los XML y SQL únicamente.
La línea 20 indica bajo que nombre de ejecutable se completará y qué función es la encargada de tal tarea.
La línea 21 es la que indica que “mono” es un “command” al igual que otros definidos (sudo, fakeroot, nohup) que requieren autocompletado luego para el programa que le sigue.

En vez de listar la línea 12, se podría haber hecho que el programa en cuestión devuelva por defecto la lista de los parámetros que acepta. La forma de hacer esto sería reemplazar esa línea por:

12
    opts=`mono programa.exe -p`

Python tiene un módulo para realizar esto en forma más sencilla: optcomplete.

Espero les sea de utilidad!

çíàêîìñòâà íà êàâìèíâîäàõ
ïîðíî ñàéò çâåçä øîó áèçíåññà
Îíëàéí êóïèòü â åêàòåðèíáóðãå Ëåâèòðà
ìåíþ äëÿ äèåòû ïî 3 ãðóïïå êðîâè
êóïèòü äæåíåðèê ñèàëèñ ñîôò
äèåòà þ.íà÷àëîâîé
çíàêîìñòâà àáõàçèÿ
ñëóæáà çíàêîìñòâ íèæíèé íîâãîðîä
Íèçêàÿ öåíà êóïèòü â ìîñêâå Çèáàí
î÷êîâàÿ äèåòà
ðåçóëüòàòû ïîõóäåíèÿ è îçäîðîâëåíèÿ ñ ïîìîùüþ ãåðáàëàéô
ìàäè 24 çíàêîìñòâà
Íå äîðîãî êóïèòü â ñàìàðå Ñèàëèñ Ñîôò
ñâèíãåð çíàêîìñòâà â êðàñíîÿðñêå
äèåòà 2 ãðóïïå êðîâè
ðåöåïòû áåññîëåâîé äèåòû
äèåòà àëñó êîôå è øîêîëàä
ôîðóì îâîùíàÿ äèåòà
ftp ñêà÷àòü ïîðíî äëÿ ñìàòôîíà
ðîñòîâ ïîðíî
çíàêîìñòâà òîðîíòî
äèåòà î÷èñòêà êèøå÷íèêà
ïåðåäà÷à ïåðâîãî êàíàëà ìàëàõîâ ïëþñ ïåðåäà÷à âîçìîæíîñòÿõ ïîõóäåíèè
àñüêàçíàêîìñòâà
ïîðíî ñ ÷å÷åíêàìè
çíàêîìñòâà äèòåé 10-14 ëåò
êðåìëåâñêàÿ äèåòà ïî äíÿì
ëå÷åíèå èìïîòåíöèè ñèàëèñ ëåâèòðà âèàãðà ñðàâíèòåëüíûå öåíû
åêàòåðèíáóðã ñèàëèñ
ïîðíîãðàôè÷åñêîå âèäåî ëåñáèÿíîê
ÿòðûøíèê ïîòåíöèÿ
ïðîñòàòèëåí äåéñòâèå
çíàêîìñòâî â êðàñíûõ áàêàõ
ñåêñ çíàêîìñòâà â íèæíåâàðòîâñêå
êëèîí ä ñòîèìîñòü
ïîðíî ðîëèê äîñòóïíûå
ðåöåïò íàñòîéêè äëÿ ïîõóäåíèÿ ëèñòâåííûé ãðèá òðóòîâèê
ïðåâüþ ôîðóì ïîðíî ññûëêè
ðàñêàçû äåòñêîãî ïîðíî
ïîðíî xxx çàãðóçèòü
êàâêàçñêèå ñàéòû çíàêîìñòâ
êðåìëåâñêàÿ äèåòà ôîðóì åâãåíèé ÷åðíûõ
ïîçíàêîìëþñü ñî ñòåðâîé
öèí öèí ïîõóäåíèå
ïîðíî ñààêàøâèëè ñêà÷àòü
âûñîêîïàðíûå ôðàçû äëÿ çíàêîìñòâà
ãåé çíàêîìñòâà íåãðû
êaê ïîõóäåòü ía 10 êã ça 8 äíåé
ðàäìèëà àíêåòà çíàêîìñòâà
çäîðîâüå ïî÷êè äèåòà
Ñðî÷íî êóïèòü â Íîâîñèáèðñêå Ñèàëèñ
çíàêîìñòâî c àíãëè÷àíèíîì
Äåøåâî ñòîèìîñòü âèàãðà 50 ìã
ãîä çíàêîìñòâà îòâåòèòü
Àíîíèìíî êóïèòü â ïèòåðå ïîâûøåíèå ïîòåíöèè
ñàìûå ëóäøèå äèåòû
Online ïðèîáðåñòè âèàãðà òàáëåòêè
àðáóçíàÿ äèåòà ôîðóì
Àïòåêà êóïèòü â îìñêå ñðåäñòâî ïîâûøåíèÿ ïîòåíöèè
âîëãîôàðì ñèàëèñ ñîôò
ãåé ïîðíî êëèïû ñêà÷àòü
êàáà÷êîâàÿ äèåòà
êàëîðèè äèåòà ñêà÷àòü êîìïüþòåðíûå ïðîãðàììû
ýôôåêòèâíîñòü áàíàíîâîé äèåòû
òåðæèíàí íà ðàííèõ ñðîêàõ áåðåìåííîñòè
Online êóïèò â ðîññèè ïîâûøåíèå ïîòåíöèè
çíàêîìñòâà 8 903
äåâ÷îíêè ðîñòîâà ïîçíàêîìèòüñÿ
êóðèíûé áóëüîí ïîõóäåíèå
ãäå ïîçíàêîìèòüñÿ â ìîñêâå
àëêîãîëü è ñåàëåêñ
êàê ïîçíàêîìèëèñü àëôåðîâà è àáäóëîâ
 êàêîé àïòåêå êóïèòü â Íîâîñèáèðñêå èíäèéñêàÿ âèàãðà
ïîðíî ÷àñòíîå çíàìåíèòîñòåé
ýêñòðåííûå ìåòîäû ïîõóäåíèÿ
çíàêîìñòâà òðàíñû äîíåöê
Ñðî÷íî ñòîèìîñòü Ñèàëèñ Ñîôò
 êàêîé àïòåêå êóïèòü â ñàíêò ïåòåðáóðãå Âèàãðà
êðàñèâûå ïîðíî äåâóøêè êèåâ
çíàêîìñòâà ðèììèíã
ñêà÷àòü êíèãó äèåòà íà êàïóñòíîì ñóïå
ëåñòàò ôîòî
ïîðíî ñ òîëñòûìè îò 40 äî 50 ëåò
áûñòðî ïîõóäåòü ïîñëå ðîäîâ
Áåç ðåöåïòà êóïèòü äåøåâóþ âèàãðà òàáëåòêè
áûñòðûå íå èçíóðèòåëüíûå äèåòû
çíàêîìñòâà ã.âîëîãäà
âèàãðà àïòåêà êðàñíîÿðñê
Îíëàéí êóïëþ âèàãðó ñèàëèñ ëåâèòðó
êîäèðîâàíèå ïðè ïîõóäåíèè
ïîìî8ãàåò ëè áîäèìèðèí ðåàëüíî ïîõóäåòü
ïîðíî âèäåîêëèïû ñêà÷àòü
àâñòðàëèÿ ðóñêîÿçû÷íûé ñàéò çíàêîìñòâà
äåéñòâîâàòü äæåíåðèê ñèàëèñ ñîôò
äèåòà õîðîøèõ íîâîñòåé
ýôôåêòèâíî ïîõóäåòü çà ìàêñèìàëüíî êîðîòêèé ñðîê
äèåòà 90
ñêà÷àòü ñóïåð äèåòó
çíàêîìñòâà ñ áèñåêñóàëàìè
çíàêîìñòâà â ã.êñòîâî