Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
PS1 anstelle von date verwenden

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 07. Apr 2010 12:55   Titel: PS1 anstelle von date verwenden

Hi, diesmal habe ich eine Frage an die bash gurus.

Ich mache mir Gedanken darüber, ob ich in einem Script die Bash
Promptvariable PS1 auswerten kann, wenn ich sie auf
Code:
\t
setze und mir so
einen Aufruf von date im script sparen kann um die Uhrzeit zu ermitteln.

Jedoch finde ich nichts darüber, wie ich die PS1 Variable interpretieren
lassen kann anstelle von anzeigen.

echo $PS1 ergibt ja nur wieder "\t" und nicht wie gewünscht die Uhrzeit.

echo -e $PS1 interpretiert ja immerhin schon die Farbsequenzen (also
bestimmte backslash escapes um genau zu sein) meines Standardprompts,
leider aber nicht \t.

Was muss ich tun, um mir auch die anderen interpretieren zu lassen oder
auch nur \t wenigstens als ausgewertetes +HH:MM:SS?

cu
Sascha
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

PDA
Gast





BeitragVerfasst am: 09. Apr 2010 23:17   Titel:

Interessante Frage, aber mit ein wenig herum experimentieren habe ich eine (akzeptable) Lösung gefunden.
Du musst die PS1 Variable editieren indem du \t maskierst oder du verwendest 'date'.
Code:
\\t
$(date +%H:%M:%S)

Code:
echo -e $PS1 zeigt mir bei \t die Uhrzeit nicht an, bei \\t und bei date schon.

Hoffe das hilft.
 

killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 10. Apr 2010 15:00   Titel:

@PDA: Komisch, bei mir nicht:
Code:
sascha@home ~ $ echo -e $PS1
\[\]\u@\h\[\] \w \$\[\]
sascha@home ~ $ PS1='\\t'
\techo -e $PS1
\t
\tPS1='\t'
15:52:26
15:52:27echo -e $PS1

15:52:29


date möchte ich nicht verwenden (sofern es geht), weil es ein externes Programm ist, dass das Script aufrufen muss. Das kostet CPU Zeit und RAM und wenn ich das vermeiden kann, wäre es optimal.

PDA, welches Linux verwendest du? Ich bin hier bei Gentoo. Wenn es aber tatsächlich so wäre, dass bei dir 'echo -e $PS1' die Uhrzeit liefert, wenn PS1='\\t' und bei mir nicht, dann kann ich das Einbauen auch schon wieder knicken. - Wenn das nicht überall sicher funktioniert, kann ich es nicht verwenden.

Ich frage mich bloss, wie kann die Bash den Prompt mit Uhrzeit anzeigen und wieso steht diese von Bash ausgeführte Funktion dem User nicht zur Verfügung....
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

PDA
Gast





BeitragVerfasst am: 10. Apr 2010 17:55   Titel:

Muss ich bestätigen. Gestern habe ich das auf einem Debian probiert und es funktionierte, jetzt bin ich zu Hause und da funktioniert es auch nicht.
Code:
uname -srmpio
Linux 2.6.31-gentoo-r10 x86_64 AMD Phenom(tm) II X4 945 Processor AuthenticAMD GNU/Linux

app-shells/bash-4.0_p37  USE="net nls -afs -bashlogger -examples -mem-scramble -plugins -vanilla"

Nachvollziehen kann ich es nicht, da ich mich nicht mit den Interna der Bash auskenne.

PS: Ruft die Shell bei \t nicht auch date auf?, ist \t nicht nur ein Alias für date [Option]?
 

killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 11. Apr 2010 15:55   Titel:

PDA hat folgendes geschrieben::

PS: Ruft die Shell bei \t nicht auch date auf?, ist \t nicht nur ein Alias für date [Option]?

Inzwischen habe ich es auf einem Gentoo u. einem Debian stable ausprobiert und konnte nirgends das gewünschte Ziel erreichen nach dem Motto:
Code:
PS1='\\t'
DATE=$PS1
...DATE verarbeiten...


Wenn deine Vermutung \t riefe date auf stimmt, dann hat sich das Ganze sowieso erledigt. Bis zur Klärung bleibt die Antwort jedoch offen...
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

PDA
Gast





BeitragVerfasst am: 19. Apr 2010 21:12   Titel:

Wie gesagt, wie das intern funktioniert weiß ich nicht. Wenn es auf unterschiedlichen 'Systemen' mit verschiedenen Benutzern laufen soll, müsstest du ja auch sicher sein das in $PS1 auch ein \t drin steht um es dann (möglicherweise) zu verwenden.
Was hast du denn vor damit?
Abgesehen davon das ein 'date' nicht teuer ist, wahrscheinlich nicht teurer als es z.B. auf Kernelebene oder anders auszulesen.
Unter PERL gibt es sowas wie 'Time::gettimeofday()', funktioniert wohl ähnlich wie ctime unter C/C++!
 

killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 20. Apr 2010 0:50   Titel:

Guckst du http://ubuntuforums.org/showpost.php?p=9119249&postcount=12413

Da die Sekundenanzeige zeitkritisch ist (bei hoher Last u. langsameren Rechnern) und "springen" nicht so schön ist, wollte ich im Bashscript sowenig rechnen wie möglich. Sieht aber so aus, als käme ich um den date Aufruf nicht herum - naja, ist ja nur einer...
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

komsomolze



Anmeldungsdatum: 03.03.2006
Beiträge: 429

BeitragVerfasst am: 01. Mai 2010 7:31   Titel:

Das binary vcstime zeigt die Zeit in der Konsole oben rechts an,
bei debian im Paket console-tools, DO_VCSTIME=yes.
Dann brauchst Du kein ENTER Smile

Mir reicht das PS1.
_________________
mfg komsomolze
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy