1 votos

¿Cómo puedo buscar en el contenido de todo mi Terminal Windows

Tengo un gran número de ventanas de terminal que mantengo abiertas para tener un registro de lo que hice y de las respuestas. Todas las ventanas tienen títulos que indican el espacio del problema para el que están, pero a veces se hace algo en la ventana "equivocada".

¿Cómo se puede hacer una única búsqueda en todas las ventanas? ¿Existe alguna aplicación que lea los contenidos guardados de la Terminal y los escriba como texto? Mejor aún, ¿existe el código fuente para hacerlo?

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 será escribir "El archivo es: \n ", pero AppleScript parece querer evitar que lo haga

3voto

qarma Puntos 71

Terminal tienen dos útiles propiedades AppleScript llamadas 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 la ventana).

history contiene todo el historial del contenido de la pestaña, desde el momento en que se creó 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 de todas las ventanas actualmente abiertas en Terminal es:

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

Pero, como has descubierto, history puede contener una gran cantidad de datos de texto, dependiendo del número de pestañas que tenga abiertas y de su uso activo.

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

Su AppleScript actual sólo recupera el contents de cada pestaña, que va a ser un subconjunto muy pequeño de los datos que contiene cada pestaña (que puede ser suficiente para sus necesidades). Si necesita tratar las cantidades más grandes de datos que contiene cada pestaña history propiedad, este podría ser un medio para 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 añadir secuencialmente el historial de texto de cada pestaña de cada ventana al archivo de texto especificado en la parte superior del script.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X