3l33t t1m3

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

3l33t t1m3

Beitrag von linuxCowboy » 28.06.2013 02:43:26

t="sed -nr 's/real ([0-9]+).*/\1/p'"

e real 1.00 | eval $t
1

time -p sleep 1 2>&1 | eval $t
real 1.00
user 0.00
sys 0.00

time -p sleep 1 |& eval $t
real 1.00
user 0.00
sys 0.00

{ time -p sleep 1 2>&1; } | eval $t
real 1.00
user 0.00
sys 0.00

$( time -p sleep 1 ) |& eval $t
real 1.00
user 0.00
sys 0.00

$( time -p sleep 1 2>&1 ) | eval $t
real 1.00
user 0.00
sys 0.00

...einige sind Gleicher! 8)

time : |& >/dev/null
real 0m0.001s
user 0m0.000s
sys 0m0.000s


{ time -p sleep 1; } |& eval $t
1

Gotcha!
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
Meillo
Moderator
Beiträge: 9239
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: 3l33t t1m3

Beitrag von Meillo » 28.06.2013 08:49:41

Ist das wildes Raten zu spaeter Stunde? Das ist ja haarstaeubend anzusehen. 8O

Vielleicht waer's besser sich erst zu informieren was die verschiedenen Konstrukte bedeuten und dann das passende auszuwaehlen.
Use ed once in a while!

uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

Re: 3l33t t1m3

Beitrag von uname » 28.06.2013 09:29:32

Naja. "e" ist wohl "echo" und das "t" kann man auch direkt eintragen.Es geht wohl gar nicht darum ob der Befehl minimal länger dauert, sondern um die Frage wie man "stderr" korrekt durch den Pipe-Befehl überträgt. Richtig sind die beiden unten aufgeführten Lösungen. Mal der Versuch nur nach "real" zu filtern:

Code: Alles auswählen

{ time -p sleep 1; } |& grep real
real 1.00

{ time -p sleep 1; } 2>&1 | grep real
real 1.00
http://askubuntu.com/questions/24953/us ... -from-find

Benutzeravatar
Meillo
Moderator
Beiträge: 9239
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: 3l33t t1m3

Beitrag von Meillo » 28.06.2013 10:33:07

uname hat geschrieben:[...] das "t" kann man auch direkt eintragen.
Eine Shellfunktion waere sinnvoller, dann kann man sich auch das eval sparen.
Es geht wohl gar nicht darum ob der Befehl minimal länger dauert, sondern um die Frage wie man "stderr" korrekt durch den Pipe-Befehl überträgt.
Mir ist schon klar was gesucht war, ich wundere mich nur ueber den Weg zur (vielleicht zufaellig richtigen) Loesung. Dieser Versuch zeigt wie sehr unkontrolliert durch die Gegend geraten wurde:

Code: Alles auswählen

time : |& >/dev/null
Um genau zu sein, und das ist hier sicher die Schwierigkeit, geht es gar nicht um das Umleiten von stderr, denn das waere einfach. Es geht um das Verarbeiten der Ausgabe vom time-Builtin, das sehr speziell ist. Es ist naemlich kein normales Builtin sondern ein Praefix einer Pipeline der die Verarbeitungzeit der *ganzen* folgenden Pipeline misst. Siehe:
bash(1) hat geschrieben: The format for a pipeline is:

Code: Alles auswählen

[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]
Das ist der Grund weshalb die Klammern noetig sind und warum die Umleitung dahinter sein muss.

Schaut man in die Manpage der mksh, dann findet man:
mksh(1) hat geschrieben: Simple redirections of standard error do not affect the output of the time command:

Code: Alles auswählen

$ time sleep 1 2>afile
$ { time sleep 1; } 2>afile
Times for the first command do not go to “afile”, but those of the second command do.

(Ich glaube mich stoert einfach der Twitter-Mentalitaets-Charakter des ersten Posts. Was soll damit ausgesagt werden? Warum schreibt man sowas in ein Forum? Ich werd's einfach nicht verstehen. ... Gab's da nicht irgendwo diese Ignore-User-Funktion im Forum? ... Andererseits war mein Beitrag in dem Thread ja doch wieder wertvoll fuer die Community .... hmm ...)
Use ed once in a while!

Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: 3l33t t1m3

Beitrag von Livingston » 28.06.2013 16:11:46

Meillo hat geschrieben:(Ich glaube mich stoert einfach der Twitter-Mentalitaets-Charakter des ersten Posts. Was soll damit ausgesagt werden? Warum schreibt man sowas in ein Forum? Ich werd's einfach nicht verstehen. ... Gab's da nicht irgendwo diese Ignore-User-Funktion im Forum? ... Andererseits war mein Beitrag in dem Thread ja doch wieder wertvoll fuer die Community .... hmm ...)
Ach watt, locker bleiben 8)
Solange es nicht überhand nimmt und man den Thread-Titel ... äh, ernst nimmt, kann man's doch eindeutig als 'nen kleinen Gag verstehen wollen.

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: 3l33t t1m3

Beitrag von linuxCowboy » 28.06.2013 21:23:48

Meillo hat geschrieben:der Twitter-Mentalitaets-Charakter des ersten Posts
Wenn man aufmerksam hinschaut und darüber nachdenkt, stößt man auf Unerwartetes.

Also das Gegenteil vom Emotion-Laber-Reflex bei Twitter.

Mir fällt auf, dass du zum wiederholten Mal einfach losprustet. Und diesmal dann sogar selbst die richtigen Überlegungen anführst.
Um genau zu sein, und das ist hier sicher die Schwierigkeit, geht es gar nicht um das Umleiten von stderr, denn das waere einfach. ...
Jetzt hast du angefangen nachzudenken.

Ich traue den Boardnutzern einfach zu, den Code pur lesen zu können. (Schließlich sind wir hier nicht im Ubuntu-Forum ;-)

Die Abfolge und Anordnung versuche ich logisch aufsteigend mit möglichen Varianten auf den Punkt zu bringen.

Wer dem im Geiste folgt und folgen will, erlebt Überraschendes. Einen Aha-Effekt. So wie es mir erging - bei der Beschäftigung mit der genialen Bash!

Es ist wie in der LPIC-Prüfung. Einige Sachen kann man nur wissen, wenn man sie schon mal gehört hat. Mit Erfahrungswissen tappt man in die Falle.
Andererseits war mein Beitrag in dem Thread ja doch wieder wertvoll fuer die Community.
:hail:
Livingston hat geschrieben:... kann man's doch eindeutig als 'nen kleinen Gag verstehen wollen.
Du sagst es.
-der_linux_cowboy --- Besser werden! ... f*** w$$

uname
Beiträge: 12405
Registriert: 03.06.2008 09:33:02

Re: 3l33t t1m3

Beitrag von uname » 29.06.2013 08:14:28

Ein paar einleitende Worte und vielleicht eine Frage wären schon ganz nett gewesen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9239
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: 3l33t t1m3

Beitrag von Meillo » 29.06.2013 12:16:52

linuxCowboy hat geschrieben: Mir fällt auf, dass du zum wiederholten Mal einfach losprustet.
Beim Verhaeltnis von meinen voreiligen zu meinen fundierten Beitraegen muss ich mir sicher keine Sorgen machen.
Use ed once in a while!

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: 3l33t t1m3

Beitrag von linuxCowboy » 29.06.2013 23:24:08

Wie sagte Ian:

"You can be rude or wrong, but not both!"
:wink:
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten