Re: Über Skript mehrere Tabs in Konsole öffnen
Hi
2012/8/7 Andre Tann <atann@alphasrv.net>:
> mit diesem [¹] Schnippsel versuche ich, eine konsole (also das
> KDE-Konsolen-Programm) und darin dann mehrere Tabs zu öffnen.
> Anschließend sollen ssh-Verbindungen auf allerlei Server hergestellt
> werden.
Für genau diesen Zweck habe ich mir das Script "Tabs" geschrieben:
-> http://paste.debian.net/183227/
#! /bin/bash
# Rufe Konsole (KDE) bzw. Gnome Terminal so auf, das eine Anzahl von
# Tabs mit passendem Kommando gestartet wird.
# Die zu verwendenden Tabs stehen in der Datei
"$HOME/var/term-tabs/$1.term-tabs"
# Es ist nur der "name" der Datei als Arg. 1 anzugeben (z.B. nzz-prod)
tabs_file="$HOME/var/term-tabs/$1"
test -r "$tabs_file" || tabs_file="$HOME/var/term-tabs/$1.term-tabs"
shift
# Evtl. vorhandene weitere Tabs werden an den Aufruf angehängt.
# Z.B. "-l root" um "ssh ... -l root" auszuführen.
args="$@"
terminal_type="konsole"
terminal_type="/usr/bin/gnome-terminal"
function KonsoleTabs() {
echo "Starte KDE konsole mit $(wc -l < "$tabs_file") Tabs aus $tabs_file"
# Erzeuge eine temporäre Datei
tmpfile=$(mktemp /tmp/Konsole-Tabs.XXXXXX)
# Formatiere die $tabs_file Datei für Konsole um
sed 's,\(.*\)|\(.*\),title:\1;; command:\2'" $*"',' "$tabs_file" >
"$tmpfile"
# Rufe Konsole auf
konsole --tabs-from-file "$tmpfile" ; ex="$?"
# Lösche Konfigurationsdatei
rm "$tmpfile"
# Beende mit dem Exit Code, den gnome-terminal zurück gegeben hat.
exit "$ex"
}
# Starte gnome-terminal mit einer Anzahl von Tabs und passendem Kommando
function GnomeTerminalTabs() {
echo "Starte Gnome Terminal mit $(wc -l < "$tabs_file") Tabs aus $tabs_file"
# http://goo.gl/M6o7p bzw.
http://newsoffice.de/groups/index.php?action=article&id=PDMyMTY0NjMuME8xcU1wemZwbUBQb2ludGVkRWFycy5kZT4=&group=de.comp.os.unix.shell&uberblicka=&first=1&last=50
# Speichere den alten IFS und Setze IFS auf <tab> + <newline>; dh.
entferne <space>
IFS_bak=$IFS ; IFS=$'\t\n'
# Rufe das Gnome Terminal "passend" auf
gnome-terminal $(sed 's,^\(.*\)|\(.*\)$,--tab\t-t\t\1\t-e\t\2,'
"$tabs_file")
# Speichere den Rückgabewert von gnome-terminal
ex=$?
# Setze IFS zurück
IFS=$IFS_bak
# Beende mit dem Exit Code, den gnome-terminal zurück gegeben hat.
exit "$ex"
}
if [[ ! -r "$tabs_file" ]]; then
echo "Fehler! Tabs Datei $tabs_file nicht vorhanden!"
exit 1
fi
case "$terminal_type" in
*konsole)
KonsoleTabs "$@"
;;
*gnome-terminal)
GnomeTerminalTabs "$args"
;;
*)
echo "Fehler! Terminal $terminal_type wird nicht unterstützt..."
exit 1
;;
esac
exit 0
# EOF #
Wie man unschwer erkennt, unterstützt das Script sowohl KDE Konsole
als auch Gnome Terminal.
Aufruf
Das Script erwartet 1 Parameter: Name der Datei mit den zu startenden
Tabs. Z.B.:
$ Tabs nzz-prod
In ~/var/term-tabs/nzz-prod.term-tabs steht:
cas1-nzz-prod|ssh cas1-nzz-prod
cas2-nzz-prod|ssh cas2-nzz-prod
web1-nzz-prod|ssh web1-nzz-prod
web2-nzz-prod|ssh web2-nzz-prod
Bei Konsole wird vom Script folgender Aufruf gebaut:
konsole --tabs-from-file "$tmpfile"
"$tmpfile" wird mit dem gefüllt:
sed 's,\(.*\)|\(.*\),title:\1;; command:\2'" $*"',' "$tabs_file" >
"$tmpfile"
Bei gnome-terminal kann man auf diese blöde
temporäre Datei verzichten; dort ist der erzeugte
Aurfur "simpel" dies:
gnome-terminal $(sed 's,^\(.*\)|\(.*\)$,--tab\t-t\t\1\t-e\t\2,'
"$tabs_file")
Gruss,
Alexander
--
↯ Lifestream (Twitter, Blog, …) ↣ http://alexs77.soup.io/ ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar@gmail.com , AIM: alexws77 ↯
Reply to: