Ukryte funkcje „ekranu”

31

Ponieważ używam polecenia * nix przezscreen cały dzień i nie mogłem znaleźć nikogo, kto zacząłby to pytanie, pomyślałem, że należy je uruchomić. Znasz wiki ćwiczenia: społeczność, jedna odpowiedź na każdą funkcję, abyśmy wszyscy mogli głosować.

Josh
źródło
5
screen jest tak przydatny, że należy do wszystkich stron: stackoverflow.com/questions/70614/gnu-screen-survival-guide
Zac Thompson

Odpowiedzi:

31

Ja uwielbiam go używać do podłączania konsol szeregowych, czyli

screen /dev/ttyS0 19200

To polecenie po prostu otwiera połączenie z portem szeregowym 0 (ttyS0) z szybkością transmisji 19200

Scott Pack
źródło
jest to jedna z moich ulubionych rzeczy, które mogą przerażać ludzi, naprawdę jedna z najmniej oczekiwanych funkcji na
ekranie
1
I naprawdę jeden z moich ulubionych. Nie trzeba zajmować się ani konfigurować minicom, konserwatora itp. Gdy to odkryłem, czułem się jak małe dziecko w sklepie ze słodyczami.
Scott Pack,
Oczywiście - miło jest mieć otwartą sesję ekranu, podzieloną na dwa okna, z widocznymi obydwoma kluczami szeregowymi USB.
dotwaffle,
10

Najlepszą funkcją screenjest Byobu (wcześniej profile ekranowe), który jest domyślnie dostarczany z Ubuntu od czasu Jaunty: https://launchpad.net/byobu

Jest to menedżer konfiguracji z bardzo ładnymi ustawieniami domyślnymi, mnóstwem powiadomień o stanie i przydatnymi skrótami klawiaturowymi (np. F2 dla nowego ekranu, f3-f4 dla poprzedniej / następnej itd.)

Naprawdę nigdzie się bez niego nie wybieram :)

KTamas
źródło
10

Z odpowiedzi KTamas: więcej niż jedna osoba może korzystać z tego samego ekranu, tzn. Jeśli twój znajomy korzysta z twojego sshkomputera, może on połączyć się z twoim ekranem. To wspaniale, gdy dwie lub trzy osoby pracują nad tymi samymi projektami.

Josh
źródło
1
Jest to znacznie lepsze do śledzenia działań użytkowników zdalnej pomocy technicznej i zabijania ich sesji, jeśli nie są dobre!
Tom O'Connor,
6

Niezupełnie „ukryta funkcja”; ale właściwie ustawiony plik .screenrc może zmienić świat. Jednym z lepszych przykładów jest googling screenrc i „brad sims” - ma doskonały plik do majstrowania.

powiedziawszy, moim ulubionym ustawieniem będzie bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next
Wir
źródło
2
Biorąc pod uwagę, że ctrl + a jest używany zbyt często poza ekranem (początek linii w bash ktoś?) Podoba mi się to.
Scott Pack
1
ctrl + a / ctrl + e do przesuwania kursora, ale także gdy Minicom działa na ekranie. Ctrl + a, a, o dla opcji ...
petrus
6

Nie pamiętam, od kogo to ukradłem (ktoś na dotfile.org). Lekko zmodyfikowałem to dla ssh:

#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command

wd=`pwd`
cmd=$1
shift

# We can tell if we are running inside screen by looking
# for the STY environment variable.  If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.

if [ -z "$STY" ]; then
        $cmd $*
else
        # Screen needs to change directory so that
        # relative file names are resolved correctly.
        screen -X chdir $wd

        # Ask screen to run the command
        if [ $cmd == "ssh" ]; then
                screen -X screen -t ""${1##*@}"" $cmd $*
        else
                screen -X screen -t "$cmd $*" $cmd $*
        fi
fi

Następnie ustawiam następujące aliasy bash:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Otwiera nowy ekran dla powyższych aliasów i iff za pomocą ssh, zmienia nazwę tytułu na nazwę hosta ssh.

Pozdrawiam z0mbix

z0mbix
źródło
: o. Podniosłeś i przystosowałeś to ode mnie? gist.github.com/137214
VxJasonxV
Nie, myślę, że był to członek personelu last.fm, który napisał o tym kiedyś na blogu.
z0mbix
4

Użyteczne jest to, że ekran może emulować większą szerokość niż twój terminal. Uważam to za przydatne, jeśli używam lessdo prawdziwych plików dziennika i nie chcę, aby linie się zawijały. Za pomocą:

Ctrl-A:width -w 999

Mogę ustawić screen, aby były szersze niż mój terminal, a wiersze logowania lesssię nie zawijają.

Josh
źródło
10
Dla twojej informacji, opcja less -spowie, żeby nie zawijała linii. Możesz używać Lefti Rightdo przewijania linii.
MikeyB,
4

Możliwość zmiany klawisza sterującego za pomocą opcji -ethat podczas uruchamiania ekranu. Używam go, aby móc zagnieżdżać sesje ekranowe w sobie. Przykład: „screen -e ^ w ^ x” zmienia klawisz Ctr-W.

jeffball
źródło
2

Jedna fajna funkcja: możesz użyć, backtickaby pobrać dodatkowe informacje do wyświetlenia w podpisie. Na przykład mam skrypt, który wyświetla jednoliniowe podsumowanie liczby nowych wiadomości w różnych folderach, i pojawia się w dolnej linii, jeśli moja sesja ekranowa wraz z nazwą hosta z konfiguracją wygląda następująco:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

Kluczem jest bit% 1`, który odnosi się do wyjścia zadania backtick 1.

(Używam hardstatusjako ciąg tytułu Xterm i mam go ustawiony inaczej, więc użycie captionzamiast hardstatus alwayslastline.)

Walter Mundt
źródło
2

Nie jest to funkcja „ukryta”, ale możliwość udostępnienia sesji ekranu innemu aktywnemu użytkownikowi jest bardzo przydatna.

Istnieją skomplikowane sposoby konfiguracji udostępniania ekranu, w tym uprawnienia kontroli dostępu i zarządzanie nazwami użytkowników. To, co najczęściej robię ze współpracownikami, jest znacznie szybsze i brudniejsze:

  1. Zaloguj się do danej maszyny w nowym oknie.
  2. Pozwól każdemu pisać na moim terminalu: chmod 777 $(tty)
  3. Sudo na swoje konto: sudo su <username>
  4. Udostępnij swój ekran: screen -x <session>

Nie wymaga to wcześniejszej konfiguracji ani udostępniania hasła.

Michael H.
źródło
1

Mały ściągawka, którą sobie wydrukowałem;

(Uwaga: wszystko poprzedza Ctrl-A)

Odp .: zmień nazwę okna   
": pokaż listę okien   
d: sesja detatch

I screen -D -Rodłączyć i ponownie dołączyć działającą sesję (w przypadku utraty dostępu do sesji).

Żadne z nich nie są naprawdę ukrytymi funkcjami, ale są to funkcje, które uważam za najbardziej przydatne.

Michael Pobega
źródło
1

Jest to podstawowa funkcja, ale oczywiście najlepiej jest Ctrl-A:rozmawiać bezpośrednio z ekranem. : screen -t title ssh hostnameitp.

Zac Thompson
źródło