Sponsored Content
Top Forums Shell Programming and Scripting Help setting PS1 prompt to include current time Post 90930 by Perderabo on Monday 28th of November 2005 11:59:17 PM
Old 11-29-2005
Ygor's solution will work with ksh95 or pdksh. But ksh88 only expands variables...it won't do a general parse. I am not real fond of invoking the date command with each each display of the prompt.

ksh95 has a feature called discipline functions and these can be used to create dynamic variables that work like RANDOM.

Here is a solution that will work with all three versions of ksh. If we set SECONDS, it will continue to advance. So if we set it to the number of seconds since midnight it will serve as a time-of-day clock. To get from seconds-after-midnight to hours:minutes:seconds we need to do some arithmetic. If we reference a imaginary array, we can compute a subscript for it and use side effects from the subscript computation to set other variables. A single date process is used to initialize the clock, but after that the time is computed by the shell itself.

unset _h _m _s
eval $(date "+_h=%H ;_m=%M ;_s=%S")
((SECONDS = 3600*${_h#0}+60*${_m#0}+${_s#0}))
typeset -Z2 _h _m _s
_tsub="(_m=(SECONDS/60%60)) == (_h=(SECONDS/3600%24)) + (_s=(SECONDS%60))"
_timehm='${_x[_tsub]}$_h:${_m}'
_timehms='${_x[_tsub]}$_h:$_m:${_s}'

PS1="$_timehm $ "
These 2 Users Gave Thanks to Perderabo For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

PS1 with date stamp included in prompt

How would I put the date within my PS1 command for my shell prompt? I have it set to: PS1='$>' I tried PS1='$>' but that didn't work. (7 Replies)
Discussion started by: kymberm
7 Replies

2. UNIX for Dummies Questions & Answers

colors in Prompt - $PS1

would someone please explain in detail, how does the code below change the color or bash prompt $ echo $PS1 :\033 are there other tricks like above? (3 Replies)
Discussion started by: rakeshou
3 Replies

3. UNIX for Dummies Questions & Answers

PS1 prompt

please advise what's wrong with this command ? PS1="`hostname`:`who am i | cut -d " " -f1`:>>" trying to make the PS1 prompt look like : machine_name:username:>> thank you (4 Replies)
Discussion started by: venhart
4 Replies

4. Shell Programming and Scripting

How to get a Prompt (PS1) Timestamp under /sbin/sh?

Hi, I'm trying to find out if there is a way to get a timestamp on my Solaris root shell prompt using /sbin/sh? I'm trying to archive something in line with the following: 12:34:26 root@server # 12:34:28 root@server # 12:34:28 root@server # ls ... 12:34:30 root@server # I know there... (1 Reply)
Discussion started by: Solarius
1 Replies

5. UNIX for Dummies Questions & Answers

Setting PS1

I have set PSI for my prompt using the following command: PS1="${debian_chroot:+($debian_chroot)}\\u@\h:\\\w\a]\ "which produces chrisd@pguk:~]I want to include [ in the beginning but cannot understand the way to do this. Also I want to show only the current directory, not the whole... (4 Replies)
Discussion started by: kristinu
4 Replies

6. Shell Programming and Scripting

Change / Setup bash custom prompt (PS1)

I am trying to create my custom prompt and I have almost succeeded. Right now I have PS1='\n\\$\ ' What I have not figured out is how to make the directories bold when I'm using commands ls or ls -la. Any idea how to do it??? Many thanx. (2 Replies)
Discussion started by: emailkia
2 Replies

7. Shell Programming and Scripting

How to display current time in the prompt

Hello All, I would like to display the current time in prompt. I tried using following command: export PS1="$(date +%k:%M:%S) $ " but it gave me a fixed time in prompt whereas my objective is to get the current time everytime. $ export PS1="$(date +%k:%M:%S) $ " 17:42:42 $ 17:42:42 $... (32 Replies)
Discussion started by: manishdivs
32 Replies

8. UNIX for Dummies Questions & Answers

Why is my PS1 breaking my prompt?

So, this is strange... I created this prompt: PS1='\n\e You can see that it's a pretty minor modification of the default Debian prompt. And, if it matters, I'm using Putty to SSH to my server. The following strange symptoms appear when I use that prompt, and disappear when I change and... (2 Replies)
Discussion started by: treesloth
2 Replies

9. UNIX for Dummies Questions & Answers

Need to revert default prompt in Linux after setting PS1 command

I have given as: PS1="Karthick>" in linux. Now the prompt changed as: Karthick> Now I need to get back the default prompt . How to achieve this? Thanks in advance (13 Replies)
Discussion started by: karthick nath
13 Replies

10. Solaris

Help changing the PS1 prompt in Solaris

Hi, I need help changing PS1 in Solaris. I tried this: MYPROMPT="> " PS1=$LOGNAME@$HOSTNAME:${PWD}$MYPROMPT (NOT SURE WHY IT'S HIGHLIGHTED HERE) export PS1 My problem is that $PWD is not working, when I get the prompt and I change directories, the prompt is not displaying the current... (17 Replies)
Discussion started by: curiousmal
17 Replies
FAKETIME(1)							     W.Hommel							       FAKETIME(1)

NAME
faketime - manipulate the system time for a given command SYNOPSIS
faketime [options] timestamp program [arguments...] DESCRIPTION
The given command will be tricked into believing that the current system time is the one specified in the timestamp. The wall clock will continue to run from this date and time unless specified otherwise (see advanced options). Actually, faketime is a simple wrapper for lib- faketime, which uses the LD_PRELOAD mechanism to load a small library which intercepts system calls to functions such as time(2) and fstat(2). This wrapper exposes only a subset of libfaketime's functionality; please refer to the README file that came with faketime for more details and advanced options. OPTIONS
--help show usage information and quit. --version show version information and quit. -m use the multi-threading variant of libfaketime. -f use the advanced timestamp specification format. EXAMPLES
faketime 'last Friday 5 pm' /bin/date faketime '2008-12-24 08:15:42' /bin/date faketime -f '+2,5y x10,0' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done' faketime -f '+2,5y x0,50' /bin/bash -c 'date; while true; do echo $SECONDS ; sleep 1 ; done' (Please note that it depends on your locale settings whether . or , has to be used for fractional offsets) ADVANCED TIMESTAMP FORMAT
The simple timestamp format used by default applies the /bin/date -d command to parse user-friendly specifications such as 'last friday'. When using the faketime option -f, the timestamp specified on the command line is directly passed to libfaketime, which enables a couple of additional features such as speeding the clock up or slowing it down for the target program. It is strongly recommended that you have a look at the README file that came with faketime for the details. Summary: Freeze clock at absolute timestamp: "YYYY-MM-DD hh:mm:ss" If you want to specify an absolute point in time, exactly this format must be used. Please note that freezing the clock is usually not what you want and may break the application. Only use if you know what you're doing! Relative time offset: "[+/-]123[m/h/d/y], e.g. "+60m", "+2y" This is the most often used format and specifies the faked time relatively to the current real time. The first character of the for- mat string must be a + or a -. The numeric value by default represents seconds, but the modifiers m, h, d, and y can be used to specify minutes, hours, days, or years, respectively. For example, "-2y" means "two years ago". Fractional time offsets can be used, e.g. "+2,5y", which means "two and a half years in the future". Please note that the fraction delimiter depends on your locale set- tings, so if "+2,5y" does not work, you might want to try "+2.5y". Start-at timestamps: "@YYYY-MM-DD hh:mm:ss" The wall clock will start counting at the given timestamp for the program. This can be used for specifying absolute timestamps with- out freezing the clock. ADVANCED USAGE
When using relative time offsets or start-at timestamps (see ADVANCED TIMESTAMP FORMAT above and option -f), the clock speed can be adjusted, i.e. time may run faster or slower for the executed program. For example, "+5y x10" will set the faked time 5 years into the future and make the time pass 10 times as fast (one real second equals 10 seconds measured by the program). Similarly, the flow of time can be slowed, e.g. using "-7d x0,2", which will set the faked time 7 days in the past and set the clock speed to 20 percent, i.e. it takes five real world seconds for one second measured by the program. Again, depending on your locale, either "x2.0" or "x2,0" may be required regarding the delimiter. Faking times for multiple programs or even system-wide can be simplified by using ~/.faketimerc files and /etc/faketimerc. Please refer to the README that came with faketime for warnings and details. AUTHOR
Maintained by Wolfgang Hommel <wolf@code-wizards.com>. Please see the README and Changelog files for contributers. BUGS
Due to limitations of the LD_PRELOAD mechanism, faketime will not work with suidroot and statically linked programs. While timestamps and time offsets will work for child processes, speeding the clock up or slowing it down might not work for child processes spawned by the exe- cuted program as expected; a new instance of libfaketime is used for each child process, which means that the libfaketime start time, which is used in speed adjustments, will also be re-initialized. REPORTING BUGS
Please send an e-mail to Wolfgang Hommel <wolf@code-wizards.com> COPYRIGHT
Copyright (C) 2003-2008 by Wolfgang Hommel. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You may redistribute copies of faketime under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. SEE ALSO
ld.so(1), time(2), fstat(2) faketime 0.8 August 2008 FAKETIME(1)
All times are GMT -4. The time now is 05:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy