ฉันชอบที่จะใช้ screen -d -RR
เพื่อสร้าง / แนบไปยังหน้าจอที่กำหนดโดยอัตโนมัติ ฉันสร้างฟังก์ชันทุบตีเพื่อให้ง่ายขึ้น ...
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;
}
พวกเขาสร้างนามแฝงให้ /usr/bin/screen -d -RR -S $name $command
พวกเขาสร้างชื่อแทนไปตัวอย่างเช่นฉันชอบใช้ irssi ในเซสชันหน้าจอดังนั้นใน. bashrc ของฉัน (ภายใต้ฟังก์ชันเหล่านั้น) ฉันมี:
mkscreen irc /usr/bin/irssi
จากนั้นฉันสามารถพิมพ์irc
เทอร์มินัลเพื่อเข้าสู่ irssi หากยังไม่มีหน้าจอ 'irc' ระบบจะสร้างและ / usr / bin / irssi ถูกเรียกใช้จากหน้าจอนั้น (แน่นอนว่าเชื่อมต่อโดยอัตโนมัติ) ถ้ามันทำงานอยู่แล้วฉันก็แค่แนบเข้าไปใหม่โดยบังคับให้ถอดอินสแตนซ์อื่น ๆ ที่ติดอยู่กับมันออก มันค่อนข้างดี
อีกตัวอย่างหนึ่งคือการสร้างนามแฝงหน้าจอชั่วคราวสำหรับ perldocs เมื่อฉันเจอ:
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
ตัวเลือก -a (ต้องเป็นอาร์กิวเมนต์แรก) ต่อท้ายนามแฝงของหน้าจอเป็น. bashrc (ดังนั้นจึงเป็นแบบถาวร) และ -d จะลบออก (สิ่งเหล่านี้อาจเป็นอันตรายได้ดังนั้นโปรดใช้ความเสี่ยงเอง) xD
ผนวก:
bash-ism อีกอย่างที่ฉันคิดว่าสะดวกเมื่อทำงานกับหน้าจอเป็นจำนวนมาก:
alias sls='/usr/bin/screen -ls'
ด้วยวิธีนี้คุณสามารถแสดงรายการหน้าจอของคุณด้วยการกดแป้นพิมพ์น้อยลงมาก ฉันไม่รู้ว่าsls
ชนกับยูทิลิตี้ที่มีอยู่หรือไม่ แต่มันไม่ได้อยู่ในระบบของฉันในเวลานั้นดังนั้นฉันจึงไปหามัน