Usa Atajos para Mac para pasar texto a un script de shell que selecciona el archivo de texto modificado más recientemente en una carpeta local y añade tu entrada al final. Este tutorial usa archivos de muestra desechables y se detiene si la carpeta está vacía o si la marca de tiempo más reciente está empatada.

La tarea aquí es específica: añadir una entrada breve a un archivo de texto sin formato existente, sin tener que elegirlo manualmente cada vez. Apple documenta la compatibilidad con scripts de shell dentro de Atajos para Mac. El flujo de trabajo que sigue combina esa capacidad documentada con el comportamiento documentado de zsh para seleccionar archivos y añadir contenido al final. Conoce Atajos para macOS

Decide qué significa «archivo más reciente»

En este artículo, «más reciente» significa modificado más recientemente. El script solo considera archivos visibles y normales cuyos nombres terminan en .txt minúscula y que están directamente dentro de la carpeta designada. Excluye subcarpetas y enlaces simbólicos. Estas reglas de selección se basan en los patrones y calificadores de nombres de archivo de zsh. Expansión

Esta definición afecta las ejecuciones repetidas. Después de añadir contenido a un archivo, cambia su hora de modificación, así que, por lo general, seguirá siendo el archivo apto más reciente. Si tu intención es seguir el documento creado más recientemente, la hora de modificación es una regla distinta; no des por sentado que este flujo de trabajo selecciona por fecha de creación.

Antes de crear el atajo, elige la regla que corresponda a tu tarea:

La tarea que quieres realizar ¿Coincide este ejemplo?
Añadir texto al archivo .txt editado más recientemente Sí
Añadir texto al archivo cuya fecha más reciente aparece en el nombre No; los nombres de archivo no se interpretan como fechas
Añadir texto al archivo creado más recientemente No; no se usa la hora de creación
Incluir archivos de subcarpetas No; la selección se limita a una carpeta
Añadir texto a un documento de texto enriquecido o PDF No; este ejemplo escribe texto sin formato

Finder ofrece una comprobación visual útil. Abre la carpeta en la vista de lista y haz clic en el encabezado de la columna Fecha de modificación; vuelve a hacer clic si hace falta para mostrar primero el elemento más reciente. Apple documenta tanto la ordenación por columnas como la inversión del orden. Lo que muestra Finder te ayuda a inspeccionar el resultado, pero el script realiza su propia selección. Ordenar y organizar elementos en el Finder en el Mac

Crea una carpeta de ejemplo desechable

El ejemplo usa una carpeta llamada Shortcut Append Demo dentro de tu carpeta de inicio. La configuración se detiene deliberadamente si ese nombre ya existe, en lugar de reutilizar su contenido. Crea dos archivos de texto sintéticos, con un intervalo de dos segundos para que el segundo archivo tenga una hora de modificación posterior.

Abre Terminal, pega este bloque completo de configuración y pulsa Retorno. El documento heredoc entre comillas ejecuta los comandos en un proceso zsh separado, de modo que, si falla la configuración, ese proceso termina.

/bin/zsh <<'ZSH'
emulate -L zsh
setopt ERR_EXIT
folder="$HOME/Shortcut Append Demo"

if ! /bin/mkdir "$folder"; then
  printf '%s\n' 'Setup stopped: use a new folder name if this one exists.' >&2
  exit 1
fi

printf '%s\n' 'Sample entry: blue notebook.' > "$folder/older.txt"
/bin/sleep 2
printf '%s\n' 'Sample entry: green notebook.' > "$folder/newer.txt"
printf 'Example folder: %s\n' "$folder"
ZSH

La configuración usa la redirección de salida para crear archivos solo después de que se haya creado correctamente la carpeta nueva. Apple distingue la redirección de salida normal, que escribe la salida de un comando en un archivo, de la redirección para añadir, que agrega la salida al final. Redirigir la entrada y salida de Terminal en el Mac

Si la configuración indica que la carpeta ya existe, elige otro nombre desechable y cambia la asignación de la carpeta tanto en la configuración como en el script del atajo que aparece más abajo. No vuelvas a ejecutar líneas individuales que escriben archivos en una carpeta existente.

Crea el atajo y conserva la entrada de texto

Crea un atajo nuevo en la app Atajos y llámalo Append to Newest Text File. Usa la búsqueda de acciones para añadir las acciones que se indican a continuación. Apple documenta cómo buscar en la biblioteca de acciones y comprobar la entrada aceptada y la salida resultante de cada acción mediante Mostrar información. Explorar la lista de acciones en Atajos para Mac

  1. Añade una acción Texto con la entrada sintética Sample entry: orange notebook.
  2. Añade Ejecutar script de shell inmediatamente después.
  3. Configura el shell como /bin/zsh.
  4. Configura la entrada del script para que sea la salida de la acción Texto anterior.
  5. Configura Pasar entrada como como argumentos.
  6. Sustituye el contenido del campo de script por el script completo de la siguiente sección.

La conexión prevista es un valor de Texto en un argumento del script. El script lee ese argumento como $1. La salida si se ejecuta correctamente es una confirmación de texto que contiene la ruta de destino; esa ruta no es un objeto Archivo de Atajos, y la salida no contiene el contenido completo del archivo.

Mantén la entrada conectada a la salida de Texto. Pasar un archivo, una lista de nombres de archivo o una entrada no relacionada del atajo cambiaría lo que recibe el script. El script comprueba el número de argumentos para evitar que una colección inesperada de entradas se convierta en varias entradas añadidas al archivo.

Si los scripts están desactivados, abre Atajos > Ajustes, selecciona Avanzado y activa Permitir ejecutar scripts. Estos son los controles documentados por Apple para permitir scripts en los atajos. Instrucciones de Apple para los ajustes de scripts

Añade el script que selecciona y agrega el texto

Pega todo este programa en Ejecutar script de shell. No requiere herramientas descargadas ni un archivo de script independiente. La asignación de la carpeta coincide con la configuración desechable anterior.

emulate -L zsh
unsetopt CLOBBER APPEND_CREATE

fail() {
  printf '%s\n' "$1" >&2
  exit 1
}

(( $# == 1 )) || fail 'Expected exactly one text input.'
[[ -n "$1" ]] || fail 'The text input is empty.'

folder="$HOME/Shortcut Append Demo"
[[ -d "$folder" ]] || fail 'The example folder does not exist.'

files=( "$folder"/*.txt(N.om) )
(( ${#files} > 0 )) || fail 'No eligible .txt files were found.'

newest="${files[1]}"

if (( ${#files} > 1 )); then
  [[ "$newest" -nt "${files[2]}" ]] ||
    fail 'The newest timestamp is tied or the folder changed. Check the files.'
fi

[[ -f "$newest" && ! -L "$newest" ]] ||
  fail 'The selected file is no longer an eligible regular file.'
[[ -w "$newest" ]] || fail 'The selected file is not writable.'

if ! printf '\n%s\n' "$1" >> "$newest"; then
  fail 'Append failed; inspect the selected file before retrying.'
fi

printf 'Appended to: %s\n' "$newest"

La expresión de selección crea una matriz de rutas de archivo coincidentes. En (N.om), N permite que no haya coincidencias, . limita las coincidencias a archivos normales y om las ordena por hora de modificación, con el más reciente primero. Guardar las rutas en una matriz evita separarlas por los espacios de los nombres de archivo. Expansión

La siguiente comprobación exige que el primer archivo sea estrictamente más reciente que el segundo. Si tienen la misma hora de modificación, el atajo se detiene en lugar de elegir uno sin avisar. zsh documenta -nt para comparar la antigüedad de los archivos, junto con las comprobaciones de archivo normal, enlace simbólico y permiso de escritura que se usan aquí. Expresiones condicionales

El comando para añadir contenido usa un formato fijo printf y proporciona tu entrada como argumento %s. Por eso, los signos de porcentaje y las barras invertidas de la entrada se tratan como texto, no como instrucciones de formato adicionales. El salto de línea inicial separa la entrada del texto existente; el salto final la termina. Si el archivo ya termina con un salto de línea, se crea una línea en blanco entre las entradas. Comandos integrados del shell

El script también desactiva CLOBBER y APPEND_CREATE. zsh documenta que, si ambas opciones están desactivadas, la redirección para añadir contenido falla cuando el destino no existe. Esto importa si el archivo seleccionado desaparece antes de añadir el texto: el script debe informar del fallo en lugar de crear un reemplazo en la ruta anterior. Redirección

Comprueba el resultado con los archivos de muestra

Ejecuta el atajo una vez. Si la carpeta de muestra no se ha modificado, el destino previsto es newer.txt. Abre ese archivo y comprueba que tenga el siguiente contenido. Este es el resultado previsto según el ejemplo; no significa que se haya completado una prueba en la interfaz de Mac.

Sample entry: green notebook.

Sample entry: orange notebook.

Abre también older.txt. Debería contener únicamente Sample entry: blue notebook. Comprobar ambos archivos verifica las dos partes de la tarea: seleccionar un destino y conservar el otro archivo sin cambios.

Prueba una segunda entrada sintética cambiando la acción Texto a Sample entry: yellow notebook. y ejecutando el atajo de nuevo. Debería aparecer otra entrada separada en newer.txt, siempre que ningún otro archivo apto se haya modificado más recientemente. Si ejecutas el atajo dos veces con la misma entrada, esta se añade dos veces; el programa no detecta entradas duplicadas.

Estos ejemplos se contrastaron con la documentación, pero no se ejecutaron aquí: el entorno disponible no tiene ni Atajos para macOS ni zsh. Completa la comprobación con archivos desechables en tu Mac antes de adaptar la asignación de la carpeta.

Entiende las carpetas vacías, las colisiones y los archivos que cambian

El flujo de trabajo requiere un destino existente. Si la carpeta no existe, está vacía o solo contiene elementos no aptos, se produce un error antes de añadir el texto. No crea un archivo predeterminado, no elige una subcarpeta ni recurre a un documento con otro nombre.

Las colisiones de nombres se evitan al no crear ningún destino. La configuración se detiene si el nombre de la carpeta ya existe. Durante las ejecuciones normales del atajo, el archivo seleccionado conserva su nombre actual: el script no lo renombra ni guarda una segunda copia. El comportamiento independiente para archivos ausentes se controla mediante las opciones de redirección para añadir de zsh documentadas. Redirección

Si el resultado no coincide con lo que esperas, sigue esta breve secuencia de diagnóstico:

  1. Comprueba la asignación de la carpeta. Debe coincidir con la carpeta creada durante la configuración.
  2. Comprueba qué archivos son aptos. El patrón de muestra incluye archivos visibles y normales que terminan en .txt minúscula y están en el nivel superior de la carpeta.
  3. Comprueba el orden por fecha de modificación. Revisa Fecha de modificación en Finder y recuerda que editar un archivo puede convertirlo en el próximo destino.
  4. Comprueba si hay marcas de tiempo empatadas. Edita y guarda el archivo de muestra previsto más tarde y vuelve a revisar el orden.
  5. Comprueba la conexión de la acción. El shell debe recibir un valor de texto como un solo argumento.

El script está pensado para una carpeta que no cambie durante la ejecución. La selección y la escritura son operaciones separadas: otro proceso podría editar, reemplazar o añadir un archivo entre ambas. Las comprobaciones no convierten el flujo de trabajo en una transacción, y un fallo de escritura puede dejar una entrada añadida parcialmente. Si falla la operación de añadir, inspecciona el archivo antes de volver a intentarlo.

Cuándo conviene usar filtros de archivos nativos

Apple documenta Filtrar archivos como una acción que acepta contenido, lo restringe mediante filtros y pasa los resultados coincidentes a la siguiente acción. Sus controles generales de filtro permiten ordenar los resultados y limitar su cantidad. Estas operaciones ayudan a seleccionar un archivo; por sí solas no añaden texto. Introducción a las acciones Buscar y Filtrar, Añadir parámetros de filtro

Este tutorial mantiene la selección y la escritura juntas en el script de shell para dejar explícitos el patrón de archivos, el comportamiento ante marcas de tiempo empatadas y el requisito de que el archivo ya exista. Si creas otra cadena de acciones con acciones de archivo, consulta primero Mostrar información de cada acción: un resultado de tipo Archivo, el contenido de un archivo convertido a Texto y una ruta representada como Texto son valores distintos. Apple proporciona esas descripciones para identificar los tipos de entrada y salida. Explorar la lista de acciones en Atajos para Mac

Cuando el ejemplo funcione como esperas, conserva el mismo contrato claro al adaptarlo: una entrada de texto, una carpeta local designada y un único archivo apto estrictamente más reciente. Así, cada ejecución es predecible y tienes un punto concreto que investigar cuando el atajo se detiene.

Fuentes