Lubię używać screen -d -RR
do automatycznego tworzenia / dołączania do podanego ekranu. Stworzyłem funkcje basha, aby było to łatwiejsze ...
function mkscreen
{
local add=n
if [ "$1" == '-a' ]; then
add=y
shift;
fi
local name=$1;
shift;
local command="$*";
if [ -z "$name" -o -z "$command" ]; then
echo 'Usage: mkscreen [ -a ] name command
-a Add to .bashrc.' 1>&2;
return 1;
fi
if [ $add == y ]; then
echo "mkscreen $name $command" >> $HOME/.bashrc;
fi
alias $name="/usr/bin/screen -d -RR -S $name $command";
return 0;
}
function rmscreen
{
local delete=n
if [ "$1" == '-d' ]; then
delete=y
shift;
fi
local name=$1;
if [ -z "$name" ]; then
echo 'Usage: rmscreen [ -d ] name
-d Delete from .bashrc.' 1>&2;
return 1;
fi
if [ $delete == y ]; then
sed -i -r "/^mkscreen $name .*/d" $HOME/.bashrc;
fi
unalias $name;
return 0;
}
Tworzą alias do /usr/bin/screen -d -RR -S $name $command
. Na przykład lubię używać irssi w sesji screen, więc w moim .bashrc (pod tymi funkcjami) mam:
mkscreen irc /usr/bin/irssi
Wtedy mogę po prostu pisać irc
terminal, aby dostać się do irssi. Jeśli ekran 'irc' jeszcze nie istnieje, to jest tworzony i uruchamiany z niego / usr / bin / irssi (co oczywiście łączy się automatycznie). Jeśli już działa, po prostu podłączam się do niego, siłą odłączając każdą inną instancję, która jest już do niego dołączona. To całkiem miłe.
Innym przykładem jest tworzenie tymczasowych aliasów ekranowych dla perldoców, gdy je spotykam:
mkscreen perlipc perldoc perlipc
perlipc # Start reading the perldoc, ^A d to detach.
...
# Later, when I'm done reading it, or at least finished
# with the alias, I remove it.
rmscreen perlipc
Opcja -a (musi być pierwszym argumentem) dołącza alias ekranu do .bashrc (więc jest trwała), a -d usuwa go (może to być destrukcyjne, więc używaj go na własne ryzyko). xD
Dodać:
Kolejny bash-ism, który uważam za wygodny podczas dużej pracy z ekranem:
alias sls='/usr/bin/screen -ls'
W ten sposób możesz wyświetlić listę ekranów za pomocą znacznie mniejszej liczby naciśnięć klawiszy. Nie wiem, czy sls
koliduje z jakimikolwiek istniejącymi narzędziami, ale wtedy tak się nie stało w moim systemie, więc zdecydowałem się na to.