Posso eseguire un comando Terminale in una nuova scheda?

2

Mi è appena venuto in mente che sarebbe stato incredibilmente utile se potessi digitare un comando in una scheda Terminale e poi eseguirlo in una nuova scheda in background o in primo piano. Ad esempio, sarebbe fantastico quando si modificano i file con nano . Potrei cd in una posizione e quindi rapidamente nano sys_201406271933.log , nano 415ab40ae9b7cc4e66d6769cb2c08106e8293b48.key due nuove schede di sfondo. L'alternativa è aprire manualmente due schede e capovolgerle tra loro, usando il mouse per copiare e incollare i nomi di file lunghi e non memorizzabili.

Ho impiegato circa 30 minuti per verificare se è possibile e non ho trovato una risposta soddisfacente.

    
posta Metaphile 29.08.2014 - 02:46
fonte

1 risposta

4

iTerm 2 è un potente sostituto di Terminal.app e supporta AppleScript. Puoi usare AppleScript per dirgli di eseguire comandi in una nuova scheda o finestra.

Ad esempio, facciamo una piccola azione di AppleScript che può essere richiamata. Inserisci quanto segue in AppleScript Editor:

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

e quindi salvarlo come Script in ~/Documents/Scripts/run-in-new-iterm-tab.scpt . Possiamo ora chiamarlo dalla riga di comando in questo modo:

/Users/ian
> osascript ~/Documents/Scripts/run-in-new-iterm-tab.scpt ls ~/Documents/Scripts

/Users/ian
>

e ottengo una nuova scheda nella mia sessione iTerm con:

Last login: Thu Aug 28 22:17:17 on ttys003
ls /Users/ian/Documents/Scripts

/Users/ian
> ls /Users/ian/Documents/Scripts
edit                         keep_drives_alive.sh         run-in-new-iterm-tab.scpt    touch-in-order.pl
find-missing-itunes-files.pl keep_drives_alive.sh~        start-utorrent.scpt          touch-in-order.pl~

/Users/ian
>

Che non è male. Ci sono alcuni raffinamenti che puoi fare con AppleScript come mantenere la directory di lavoro corrente quando chiami il comando. Ma questo ti porta al ballpark.

Se usi questo suggerimento in questa domanda puoi trasformare l'intero cosa in uno script bash che è ancora più facile da eseguire:

#!/usr/bin/env osascript

on run argv
    set AppleScript's text item delimiters to {" "}
    tell application "iTerm"
        make new terminal
        tell the current terminal
            activate current session
            launch session "Default Session"
            tell the last session
                write text argv as string
            end tell
        end tell
    end tell
end run

Salvalo in un punto del tuo PATH e rendilo eseguibile e quindi devi solo eseguire:

run-in-new-iterm-tab ls ~/Documents/Scripts

per farlo funzionare.

    
risposta data 29.08.2014 - 07:25
fonte

Leggi altre domande sui tag