komplizierter Einzeiler

Tronar

aus Überzeugung altmodisch
Auf der Maschine hier gibt "w -sh" folgendes aus:

cbm_dev :0 - ?xdm? /usr/bin/gnome-session
cbm_dev pts/0 :0.0 23:55m gnome-terminal
sim_user pts/2 p01.jinr.de 32:19 -bash
vasiliev pts/4 lns20.jinr.de 1:38m root plot_ratio_compile.cxx+

Ich möchte jetzt nach der dritten Zeile "grep"pen, genauer gesagt möchte ich eine Ausgabe, ob ein User "sim_user" eingeloggt ist auf dem aktuellen "tty" (hier pts/2), und zwar von der Maschine p01.jinr.de.
Also dachte ich, ich mache ein "grep" nach dem String `tty | cut -d / -f 3-`p01.jinr.de über die Ausgabe von "w". (Das "cut" entfernt nur den /dev/-Teil vom tty.)
Zusammen:
w -sh sim_user | grep `tty | cut -d / -f 3-`.*p01.jinr.de

Tja, Fehler:
grep: a: No such file or directory
grep: tty.*p01.jinr.de: No such file or directory

Was mache ich falsch?
 
Tja, Fehler:
grep: a: No such file or directory
grep: tty.*p01.jinr.de: No such file or directory

Was mache ich falsch?

Schreib die Ausgabe von "w -sh" in eine Datei und suche mit find und grep:
z. B.:
Code:
:~> find test.txt -exec grep -H "sim_user" {} \;
test.txt:sim_user pts/2 p01.jinr.de 32:19 -bash
 
Es muß etwas mit dem Quoting zu tun haben. Wenn ich nämlich sage

xxx=`tty | cut -d / -f 3-`
w -sh sim_user | grep "$xxx.*p01.jinr.de"

dann funktioniert's!
 
Also, "find" ist hier doch völlig überflüssig. Aber mit einem

grep `tty | cut -d / -f 3-`.*p01.jinr.de test.txt

klappt es in der Tat.
Trotzdem hätte ich das Problem gerne verstanden.
 
Das will wohl nicht mit den verschachtelten pipes.
In der C-Shell gehts aber übrigens, bis auf das w -s depracted ist.
 
w -sh sim_user | grep `tty | cut -d / -f 3-`.*p01.jinr.de

Tja, Fehler:
grep: a: No such file or directory
grep: tty.*p01.jinr.de: No such file or directory

Was mache ich falsch?

Aus tty(1):

If the standard input is not a terminal, the message ``not a tty'' is written.​

Und stdin in der Zeile oben ist ja die Pipe, also kein Terminal.
 
Aus tty(1):

If the standard input is not a terminal, the message ``not a tty'' is written.​

Und stdin in der Zeile oben ist ja die Pipe, also kein Terminal.

Aaah! Jetzt hab' ich's kapiert! Flutlicht! Kronleuchter!
Es war zum Verrücktwerden, weil die Einzelteile wunderbar funktionierten, nur nicht in Kombination.
Übrigens kann ich mir das "tty" auch sparen, wie ich mittlerweile weiß, wenn ich statt "w -sh" "who -m" verwende.

Vielen Dank an Alle
Tronar
 
Back
Top