Pregunta

Un sysadmin profesor me dijo un día que yo debería aprender a usar el "hacer", porque yo podría utilizar para un montón de otras cosas que sólo disparo complilations.

Nunca tuve la oportunidad de hablar más sobre ello.¿Tienes algún buen ejemplo ?

Como un bono, ¿no es esta herramienta en desuso, y cuáles son alternativas modernas (para la compilación propósito y otros) ?

¿Fue útil?

Solución

Hacer puede ser utilizado para ejecutar cualquier comando que desea ejecutar.Lo mejor es utilizado para actividades que requieren la comprobación de dependencias, pero no hay ninguna razón por la que no podía utilizar para verificar su dirección de e-mail, reiniciar los servidores, hacer copias de seguridad, o cualquier otra cosa.

Ant, NAnt, y msbuild supuestamente son las alternativas modernas, pero llano-viejo-hacer todavía se utiliza ampliamente en entornos que no uso Java o .NET.

Otros consejos

Una excelente cosa que hacer puede ser usada para además de compilación es de Látex.Si usted está haciendo cualquier trabajo serio con Látex, usted encontrará muy útil debido a la necesidad de re-interpretar .tex archivos varias veces al usar BibTex o tablas de contenido.

Hacer no es definitivamente obsoleto.Aunque hay diferentes maneras de hacer la misma cosa (por lotes de archivos en Windows, shell scripts en Linux) hacer que funcione de la mejor, en mi humilde opinión.

¿no es esta herramienta en desuso

Qué?!No, ni siquiera un poco.Estoy en Linux por lo que me doy cuenta de que yo no soy una persona promedio, pero yo lo uso casi a diario.Estoy seguro de que hay miles de desarrolladores de Linux que ¿ utilizar a diario.

Recuerdo haber visto un artículo en Slashdot hace un par de años que describe una técnica para la optimización de la secuencia de arranque de Linux mediante el uso de make.

editar:

He aquí un artículo de IBM explicar el principio.

Hacer que se realiza una orden topológico, es decir, que dado un montón de cosas, y un conjunto de requisitos que una cosa sea antes de otra cosa, encuentra una manera de ordenar todas las cosas para que todos los requisitos se cumplan.La construcción de cosas (programas, documentos, distribución de paquetes, etc.) es un uso común para la ordenación topológica, pero hay otros.Usted puede crear un Makefile con una entrada para cada uno de los servidores en su centro de datos, incluyendo las dependencias entre los servidores (NFS, NIS, DNS, etc.) y puede decirle qué orden en el que a su vez en los equipos después de un corte de energía, o lo que para apagarlos antes de un corte de energía.Se puede utilizar para averiguar lo que el orden en el que inicia los servicios en un único servidor.Se puede utilizar para averiguar lo que el fin de poner la ropa en la mañana.Cualquier problema en el que usted necesita para encontrar una orden de un montón de cosas o tareas que satisface un montón de requisitos específicos de la forma a va antes que B es un candidato potencial para ser resuelto con hacer.

La mayoría de las aleatoria he visto es hacer utilizarse en lugar de bash scripts de inicio en BCCD.Realmente funcionaba decentemente, una vez superado el momento wtf....

Pensar en hacer scripts de shell con el añadido de empuje.

Bueno, estoy seguro de que el UNIX de la herramienta de "hacer" está siendo utilizado mucho, incluso si es menguante en el .Neto mundo.Y mientras más personas pueden usar MSBUILD, Ant, nAnt, y otras herramientas de estos días, que son esencialmente "hacer" con un archivo diferente de la sintaxis.El concepto básico es el mismo.

Las herramientas están a la mano para cualquier cosa donde hay un archivo de entrada que se procesa en un archivo de salida.Escribir sus informes en MSWord, pero distribuir como archivos Pdf?-- utilice para generar el Pdf.

Cambios del archivo de configuración a través de crontab, si es necesario.

Tengo ejemplos para postfix los mapas, y para squid tablas externas.

Ejemplo de /etc/postfix/Makefile:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding $< hash...
    ${POSTMAP} $<

${BTREES_DB}: %.db: %
    echo . Rebuilding $< btree...
    ${POSTMAP} $<

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

etc

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top