Come faccio a cercare il contenuto di tutte le finestre del mio terminale

1

Ho un gran numero di finestre di Terminale, che tengo aperto in modo da poter avere una registrazione di quello che ho fatto, e quali sono state le risposte. Tutte le finestre hanno titoli che indicano lo spazio del problema, ma a volte qualcosa viene fatto nella finestra "sbagliata".

Come si può fare una singola ricerca su tutte le finestre? Esiste un'app che legge i contenuti del terminale salvati e li scrive come testo? Ancora meglio, c'è un codice sorgente per farlo?

Ho questo 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

Per il quale mi viene detto:

error "La variabile windownName non è definita." numero -2753 da "windownName"

Il prodotto finale sarà scritto "Il file è: \ n", ma AppleScript sembra intenzionato a impedirmi di farlo

    
posta Greg Dougherty 06.11.2017 - 19:12
fonte

1 risposta

3
Le schede

Terminale hanno due utili proprietà AppleScript denominate history e contents .

contents contiene il contenuto del testo della scheda attualmente visibile nel suo riquadro (ovvero, qualsiasi linea che si trova all'interno dei confini della parte visibile della finestra).

history contiene l'intera cronologia dei contenuti della scheda, dal momento in cui è entrata in vigore al momento in cui viene richiesto il valore della proprietà.

Il comando AppleScript per recuperare l'intero contenuto (cronologia) di tutte le schede in tutte le finestre attualmente aperte in Terminale è:

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

Tuttavia, come hai scoperto, history può contenere una gran quantità di dati di testo, a seconda di quante schede hai aperto e quanto attivamente sono state utilizzate.

Il tuo approccio alla gestione di questo problema è buono: scorrere ogni singola scheda / finestra singolarmente e gestirne i contenuti uno per uno.

Il tuo attuale AppleScript recupera solo il contents di ogni scheda, che sarà un sottogruppo molto piccolo dei dati contenuti in ogni scheda (che potrebbe essere sufficiente per le tue esigenze). Se hai bisogno di gestire le maggiori quantità di dati contenuti nella proprietà history di ogni scheda, questo potrebbe essere un modo per farlo:

    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

Questo dovrebbe aggiungere in sequenza la cronologia del testo di ogni scheda da ogni finestra al file di testo specificato nella parte superiore dello script.

    
risposta data 31.01.2018 - 18:20
fonte

Leggi altre domande sui tag