Jak ustawić dublowanie terminala na drugim ekranie w konfiguracji z dwoma monitorami?

25

Uczę za pomocą konfiguracji z dwoma monitorami, więc to, co widzę na pulpicie, różni się od tego, co widzą moi odbiorcy. Działa to dobrze w przypadku prezentacji: podczas gdy uczniowie widzą slajdy, widzę swoje notatki.

Ale chcę użyć terminala do uruchomienia powłoki. Jednak terminal musi znajdować się na moim pulpicie LUB na ekranie zewnętrznym.

Czy istnieje sposób na jednoczesne wyświetlanie zawartości terminala na obu ekranach? Nie chcę odzwierciedlać ekranów, ale trzymam się trybu dwóch monitorów.

Jakieś wskazówki?

Używam Ubuntu z Gnome.

Jander
źródło
Cóż, możesz wykonać kopię lustrzaną pulpitu i wyświetlić emulator terminala, to jeden ze sposobów, jeśli chcesz pokazać terminal w jakikolwiek sposób, o ile działa. Mówisz konkretnie o TTY? Wtedy dwie już istniejące odpowiedzi na screen i tmux mogą działać. Naprawdę zależy od twoich potrzeb
Sergiy Kolodyazhnyy
Nie jest duplikatem, ponieważ to pytanie dotyczy konkretnie terminali, co oznacza, że ​​dostępne są inne opcje (np. Screen, tmux), ale to pytanie jest ściśle powiązane i odpowiedź na nie powinna również działać w przypadku tego problemu.
psmears,
@Sergiy Kolodyazhnyy: Nie chcę tworzyć kopii lustrzanej pulpitu, ponieważ zakłóca on prezentację. Kiedy przełączam się z powrotem na osobne ekrany, slajdy nie pasują już do ekranu; czasami slajdy trafiają na mój pulpit. tmux działa dla mnie dobrze.
Jander

Odpowiedzi:

15

Przenośne rozwiązanie

Użyj script! Na przykład:

Terminal osobisty:

> script -f /tmp/lecture1.scrpt #use -F instead on MacOS
> ... #start doing things here!

Terminal prezentacyjny:

> #after this, terminal will continuously print whatever's written to personal terminal
> tail -F /tmp/lecture1.scrpt

Jak to działa

scriptWszystko kopie poleceń zapisywane na ekranie terminala (w tym co piszesz!) Do pliku potrzebny jako parametr. Zwykle wszystko jest zapisywane do pliku po zakończeniu skryptu (przez wpisanie exit). Jednak -fopcja powoduje scriptopróżnienie bufora po każdym zapisie (w systemie MacOS będzie to -Flub -t 0). Następnie, w terminalu prezentacji, możesz używać tail -Fdo ciągłego przeglądania treści w trakcie ich pisania.


Warto zwrócić uwagę

  • Ponieważ jeden terminal zapisuje do pliku, a drugi czyta, można to zrobić między różnymi użytkownikami! Oznacza to, że możesz mieć kogoś ssh z bardzo małą liczbą uprawnień i tak długo, jak umieścisz plik skryptu w miejscu, które może odczytać, nadal będziesz mógł mu to przedstawić. (tzn .: jeśli masz serwer, do którego mają dostęp uczniowie, możesz utworzyć plik .scrpt, który byłby dla nich czytelny, aby mogli śledzić na własnych ekranach)

  • Biorąc pod uwagę charakter tej metody, jeden terminal prowadzi, a drugi tylko obserwuje.

  • Ta metoda ma również dodatkową zaletę polegającą na tym, że możesz łatwo przestać tworzyć kopię lustrzaną, wykonać jakąś tajną pracę i zacząć wszystko od nowa bez opuszczania osobistego terminalu. Można to zrobić za pomocą:

Terminal osobisty:

> exit #end script session; stop writing to /tmp/lecture1.scrpt
> ... #do secret things not safe for student eyes!
> script -f -a /tmp/lecture1.scrpt #begin writing again with -a to append

Więcej zabawy z script!

Celem scriptjest nagranie sesji terminala, aby można ją było później odtworzyć (zdarza się, że jesteśmy szczególnym przypadkiem odtwarzania podczas nagrywania). Aby temu zaradzić, scriptma -topcję rejestrowania czasu wraz z treścią zapisaną na ekranie. Aby z niego skorzystać, rozpocznij sesję skryptową:

> script -f -t 2>/tmp/lecture1.timing /tmp/lecture1.scrpt

I odtwarzaj (z timingiem!) Za pomocą:

> scriptreplay -t /tmp/lecture1.timing -s /tmp/lecture1.scrpt

Czy uczeń, który wysłał Ci e-maila z informacją, że byłby chory i nie może prowadzić wykładu? A może po prostu chcesz dać swoim studentom więcej materiałów wykładowych? Jeśli nagrasz swój głos podczas wykładu (i zaczniesz pisać scenariusz mniej więcej w tym samym czasie, co nagranie), wtedy twoi uczniowie mogą odtworzyć twoją sesję terminalową głosem i uzyskać pełne doświadczenie wykładowe!

Czy uczeń, który lubi odtwarzać wszystkie swoje filmy z prędkością 2x? scriptreplaybierze „dzielnik”, przez który zwielokrotnia prędkość gry! Wystarczy przejść -d 2do gry z prędkością 2x (zauważ, że jest to podwójna wartość, więc możesz zrobić nawet -d .5z połową prędkości!).

scohe001
źródło
Wow, ciekawe! Zadziwiające jest to, że wydaje się, że obsługuje przeglądanie historii, usuwanie, kolory ... bezbłędnie. Nie pomyślałbym, że to możliwe tail. (Myślę, że tmuxjest jeszcze lepiej w praktyce, ponieważ nie ma też problemu np. Z sesją redaktora.)
leftaroundabout
Naprawdę ciekawe podejście! Może obsługiwać zmiany rozmiaru okna, podczas gdy tmuxi screennie może, o ile mi wiadomo.
Jander
@leftaroundabout o magii tutaj jest tak naprawdę to, jak niewiele tailnaprawdę robi. Jeśli spojrzysz na plik skryptu z czymś podobnym vimlub lesszobaczysz, że dodaje brzydkie znaki ucieczki, ponieważ próbuje kontrolować przewijanie ekranu i rozmieszczanie znaków.
scohe001
@leftaroundabout przez „sesję redaktora” masz na myśli coś takiego vim? O ile mi wiadomo, wydaje się, że działa dobrze (o ile terminal prezentacji jest większy niż terminal osobisty)
scohe001 26.04.2018
35

Jednym eleganckim sposobem jest użycie tmuxdo tego zadania: sudo apt install tmux. Oto przykład:

  • Utwórz sesję o nazwie my_session(usuń, -daby dołączyć podczas tworzenia):

    tmux new-session -d -s my_session
    
  • Otwórz jedno lub więcej nowych okien terminala i dołącz do tej samej sesji:

    tmux attach -t my_session
    
  • Aby odłączyć od typu sesji:

    tmux detach
    

    Lub naciśnij Ctrl+b , następnie zwolnij Ctrli naciśnij d.

  • Aby wysłać polecenie do sesji bez dołączania się do niej:

    tmux send-keys -t my_session "echo Hello World!" WCHODZIĆ  Enter
  • Zauważ, że exitpolecenie wykonane od wewnątrz zamknie sesję.

pa4080
źródło
27

Nie mogę wymyślić żadnego sposobu na bezpośrednie osiągnięcie tego, czego chcesz - być może inni mogą. Ale mogę wymyślić obejście.

Zainstaluj za screenpomocą sudo apt install screen. Uruchom dwa terminale. W pierwszym wpisz screeni naciśnij enter na ekranie nag, który otrzymasz. W drugim wpisz screen -x.

Skutecznie pokażą tę samą treść. To nie jest to samo okno terminala, ale będzie to ta sama treść.

Ekran może także wykonywać więcej sztuczek, takich jak wiele okien, między którymi można przełączać. To jest krótki samouczek dostępnych funkcji.

vidarlo
źródło
Przykro mi, ale nie mogę wybrać dwóch poprawnych odpowiedzi ...
Jander,
1
To jest w porządku :) Poparłem drugą odpowiedź osobiście :)
vidarlo,
4

oprócz powyższej odpowiedzi pa4080 na użycie tmux, chciałbym zasugerować rozszerzoną wersję:

Spróbuj spróbować. Jest również dostępny jako pakiet Ubuntu. Chociaż może być używany jako zamiennik tmux, może zrobić więcej: mogę replikować sesję terminalową przy użyciu publicznego serwera tmate dostępnego przez ssh lub http (tylko do odczytu lub pełny udział). Uczniowie mogą więc korzystać z projekcji rzutnika lub mieć dostęp do odczytu sesji terminalu bezpośrednio w przeglądarce na komputerze osobistym / tablecie itp.

pdr
źródło
tmatewygląda ciekawie. Oto prosta wersja demonstracyjna: youtube.com/watch?v=is_VpIx3Z4M
pa4080 26.0418