¿Cómo busco el contenido de todas mis ventanas de Terminal

1

Tengo una gran cantidad de ventanas de Terminal, que mantengo abiertas para poder tener un registro de lo que hice y de las respuestas. Todas las ventanas tienen títulos que indican el espacio problemático para el que están, pero a veces se hace algo en la ventana "incorrecta".

¿Cómo se puede hacer una sola búsqueda en todas las ventanas? ¿Hay alguna aplicación que lea el contenido de la Terminal guardada y la escriba como texto? Aún mejor, ¿hay un código fuente para hacer eso?

Tengo este AppleScript:

tell application "Terminal"
    set windowName to ""
    set windowContents to ""

    repeat with theID from 1 to (count windows)
        set windowName to the name of window theID
        log windownName
        set windowContents to the contents of every tab of window theID
        log windowContents
    end repeat
end tell

Por lo que me dicen:

error "La variable windownName no está definida." número -2753 de "windownName"

El producto final final se escribirá "El archivo es: \ n", pero AppleScript parece intentar evitar que lo haga

    
pregunta Greg Dougherty 06.11.2017 - 19:12

1 respuesta

3
Las pestañas

Terminal tienen dos propiedades útiles de AppleScript denominadas history y contents .

contents contiene el contenido de texto de la pestaña actualmente visible en su panel (es decir, cualquier línea que se encuentre dentro de los límites de la parte visible de la ventana).

history contiene el historial completo del contenido de la pestaña, desde el momento en que nació hasta el momento en que se solicita el valor de la propiedad.

El comando AppleScript para recuperar todo el contenido (historial) de todas las pestañas en todas las ventanas abiertas actualmente en Terminal es:

    tell application "Terminal" to get the history of every tab of every window

Pero, como descubrió, history puede contener una gran cantidad de datos de texto, dependiendo de cuántas pestañas tenga abiertas y de qué tan activamente se hayan usado.

Su enfoque para resolver este problema es bueno: recorrer cada pestaña / ventana individualmente y manejar su contenido uno por uno.

Su AppleScript actual solo recupera el contents de cada pestaña, que será un subconjunto muy pequeño de los datos que contiene cada pestaña (lo que puede ser suficiente para sus necesidades). Si necesita lidiar con las cantidades más grandes de datos contenidos en la propiedad history de cada pestaña, esto podría ser una forma de hacerlo:

    set F to POSIX file "/Users/CK/Desktop/Terminal.txt"

    set _f to open for access F with write permission
    set eof _f to 0 -- Erase old contents

    tell application "Terminal"
        -- Loop through every window
        repeat with W in (a reference to windows)
            set [W] to W

            -- Loop through every tab of each window
            repeat with T in (tabs of W)
                set [T] to T

                set R to (a reference to history of T)
                write R & linefeed to _f
            end repeat
        end repeat

    end tell

    close access _f

Esto debería agregar secuencialmente el historial de texto de cada pestaña de cada ventana al archivo de texto especificado en la parte superior de la secuencia de comandos.

    
respondido por el CJK 31.01.2018 - 18:20

Lea otras preguntas en las etiquetas