LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   bash login script (https://www.linuxquestions.org/questions/programming-9/bash-login-script-226796/)

seanatis 09-04-2004 10:03 PM

bash login script
 
Hi, I am very new at bash scripting, and I was looking for a script that tells me the # of times I have logged in. Specifically one that uses a counter. Anyone out there have something like that, that I could look at?

Thanks,

Sean

b0ng 09-04-2004 10:26 PM

Ugh.... I could write something in perl, not bash. Though you could just look in .bash_history and it should be in there.

If not let me know, and I will come up with a quick perl script, for it.

Dark_Helmet 09-05-2004 12:48 AM

The .bash_history file contains a list of the previous commands executed. I don't know if it contains any login information; I would have to double-check.

If you'd like to count how many times you have logged in since deciding to keep track of it, then this is one way to do it:

1. Edit your ~/.bash_profile to include this:
Code:

counter_file="~/.login_counter"
if [ -e ${counter_file} ] ; then
  expr $( cat ${counter_file} ) + 1 > ${counter_file}
else
  echo 1 > ${counter_file}
fi
unset counter_file

2. When you want to know how many times you've logged in, execute this command (or set up an alias):
Code:

cat ~/.login_counter

indian 09-05-2004 01:07 AM

The main idea is that u will make a file in ur home directory and u will put a counter in it.Everytime when ever u will login than All the scripts written in .bash_profile will be executed.So open the counter file..increment the counter and than print the counter and than close it.

seanatis 09-05-2004 08:30 AM

That script worked really well, thanks. Now I need an explanation on the following. I have read on many bash script HOW-TO sites that if you want to put multiple commands on one line, separate them with a ";"

echo -n "You have logged in: " ; cat .login_counter ; echo "times"

All the text except for "times" shows up on the same line.

You have logged in: 5
times

I also tried echo -n. That doesn't work either!
What am I doing wrong?

Sean

Dark_Helmet 09-05-2004 01:34 PM

The problem is with the cat command in the middle. cat will add a newline when it reaches the end of the file. You can fix it with this:
Code:

echo -n "You have logged in "; echo -n $( cat ~/.login_counter ); echo "times"
I'm assuming you're using that to create an alias. Otherwise, it's the same as three commands on three separate lines.

If this is part of a script, then it can be done a bit more cleanly using a variable

seanatis 09-06-2004 08:00 AM

Exactly what I was looking for. Thanks!


All times are GMT -5. The time now is 09:00 AM.