====11/18/14====
New Project: Time Online
- Accept via command-line argument, or user input if no arg,
the desired user name to process.
- Validate that the indicated user exists, proceed only if/when ok.
- For each month of the semester determine:
Number for that month
Total time spent on the system that month in days hours mins
Number of logins for histogram
last
lastlog
====11/13/14====
Cron Tab
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# m h dom mon dow command
0 1 * * * ps aux > .temp/psauxdat
crontab -l shows cron table
crontab -e edit cron table
AT command
at 16:26
ls > out
ctrl-d
OTHER COMMANDS
last
====11/11/14====
Scripting Optimization
whereis status
status: /usr/local/bin/status /usr/local/bin/status.logic
-rwxr-x--- 1 root lab46 105 Sep 9 11:26 status
-rwxr-x--- 1 root lab46 936 Sep 25 14:40 status.logic
lab46:Tue Nov 11:/usr/local/bin$ cat status
#!/bin/bash
#
# status - status.logic wrapper
#
sg ${USER} -c "/usr/local/bin/status.logic ${*}"
./myscript a b c
$# -count of arguments "3"
$* -all your arguments "a b c"
$0 -script name
$1 -"a"
$2 -"b"
$3 -"c"
status unix > output
status unix > ~/temp/output
rm -f output
if [ -e "~/temp/output" ]; then
status unix > ~/temp/output
stat output | grep 'Modify' | sed 's/^Modify://g'
ftime=`date -d "$(stat output | grep 'Modify' | sed 's/^Modify://g')" +%s`
date +%s
-date +%s
time
ctime=`date +%s`
let dtime=$ctime-$ftime
echo $dtime
at
cron/crontab
====11/06/14====
More RegEx
Sed
status unix | grep opus | egrep 'week([02468]|[0-9][02468])'
status unix | grep opus | grep 'week[02468]'
status unix | grep 'opus' | sed 's/^.*\([01]\):\([a-z][a-z]*\):\(week\)\([0-9]\)\(.*\)$/\5 for \3 \4 \2 [\1]/g'
====11/04/14====
Wildcards
? -match any single character
[] -characters match any of these enclosed characters
* -match 0 or more of anything
[^] -do not match any of these enclosed characters
Regular Expressions(RegEx)
. -match any single character
* -0 or more of the previous
[] -char class match one of enclosed
[^] -do not match one of enclosed
\< -matches start of word
\> -match end of word
^ -match start of line
$ -match end of line
Extended RegEx
| Or
( ) grouping ---> \( \) "SED"
+ match 1 or more of the previous
Examples
cat words | grep '^....$' | wc -l
cat words | grep '[aeiouy].*[aeiouy].*[aeiouy]' | wc -l
cat words | grep '[^A-F]' | wc -l
egrep=grep+moar
fgrep-->fast grep, no regex
====11/01/14====
Kind of researching favorite commands by unix users.
man 7 ascii -A nice built in ascii table
Ctrl+U - Cut the current line
Ctrl+Y - Paste a line cut with Ctrl+U
Ctrl+L - Clear the screen and redraw the current line
Ctrl+G - Get a new line and abandon the current one
CTRL+R in BASH for searching/activating previously executed commands
apropos - search the manual page names and descriptions "Thanks Hass"
diff - compare files line by line
"cd -" returns you to the previous directory
{{:opus:fall2014:tmosgrov:gingyeden_g3t-gnarly_alenaaaxo_cat_self_pickeep_or_delete_no_make_up11_like_da_pic_not_the_linkcat_selfies..jpeg|}}
====10/28/14====
echo "$(echo "(6/7)*100"|bc -l|cut -c|-5)%"
$`()`
====Scripting Project====
take status output
* calculate project points
* calculate opus points Counting
* calculate attendance
* calculate project 36%
* calculate opus 36% Percent calculations
* calculate attendance 28%
* calculate current grade
Display this stuff.
====Class Notes 10/23/14====
Data proc review
cat data | grep 2 | wc -l
BC and scripting
answer=`echo "2+2"|bc`
echo $answer
#!/bin/bash
total=0
evens=0
for number in `cat data`; do
evenchk=`echo "$number%2"|bc`
if [ "$evenchk" -eq 0 ]; then
fi
let total=$total+1
done
echo "Out of $total numbers, there are $evens even numbers"
exit 0
The mysterious output.
Out of 20 numbers, there are 7 even numbers
====Class Notes 10/21/14=====
Sudo random numbers
echo $RANDOM
Command Expansions
\ \
$( )
$(( ))
modulus
division
remainder
integer division
34%5=4
34/5=6
echo $(( $RANDOM%100 ))
0-99
MAX-MIN MIN
echo $((( $RANDOM%100 )+1))
0-100
VIM .sh
"Guessing Game"
#!/bin/bash
choice=$((($RANDOM%100)+1))
guess=0
while [ "$guess" -lt 6 ]; do
echo -n "Guess a number: "
read number
if [ "$number" -eq "$choice" ]; then
exit 0
elif [ "$number" -lt "$choice" ]; then
else
fi
let guess=$guess+1
done
exit
lab46:Tue Oct 21:~$ bash what.sh
Guess a number: 50
Lower
Guess a number: 25
Lower
Guess a number: 10
Lower
Guess a number: 5
Lower
Guess a number: 4
Lower
Guess a number: 3
This is correct!
NOW COMPLETE WITH CHEAT MODE!
#!/bin/bash
choice=$((($RANDOM%100)+1))
echo $choice
guess=0
93
Guess a number: 93
This is correct!
=====Class Notes 10/07/14=====
ls -a : list all do not ignore entries starting with .
alias : customize commands and their default arguments
alias bob='echo boo'
$bob
boo
PS1= : Prompt pimping PS1='\h:\w\$ '
mkdir -p jklsfjdklsjdkljflkjkl/sfjdklfjdkljfasd/jsdlasfdasfdafas/
rm -rf remove with recursive force
Environment Variables
PATH=$op
op=$PATH
Edit the .bashrc file to modify terminal session (aliases)
===SHELL SCRIPTS===
myscript.sh or .bash
to run!
bash myscript.sh
./myscript.sh
#!/bin/bash
^^^^^^^^^^^
"sh-bang"
echo -n "What is your name? "
read name
echo "Hello, $name,nice to meet you"
-gt -ge -lt -le -ne -eq
=====Class Notes 10/07/14=====
Command: tag>ls -l /bin/ls
Process: Program in action
PID: Process identification - 16 bit value - Fork bomb used up all the process IDs
Command: ps - shows current processes
cat - continuous running process of cat
kill -l PID , -HUP PID, kill pid
fms - Find my screen
ps aux|grep $USER
top
bash -bourne again shell
sh -bourne shell
csh -C shell
BSD LSD SYSTEMV SYSVR6
jobs: list of stopped jobs
bg - runs stopped process in background fg - runs stopped process in foreground
=====Purposeless=====
I'm not entirely in the mood to write about unix at the moment.
So, I will share some musings with you.
Let's see here I woke up this morning dreading the thought of going to work. (Perusal)
However, I must do my service to my country by slinging Pennsylvanians wine.
Arriving at the front door of my workplace I then switch gears, becoming happy and go lucky.
"Hi, how y'all today?"
The first innocent group of people to meet my eye.
I than began to regurgitate customer service banter.
"Five wines for five dollars, or you can try as many as you'd like until you're visibly intoxicated."
Y'know the painful cheesy joke or two that gets em going.
Next I begin to tell them about the wondrous wonders of my place of employ.
Before you know it I'm waste deep in customer service.
I'm shouting at people I don't even know. People are shouting at me.
People are walking in the door from places i didn't even know existed. I mean where do all these people come from? Y'know really just coming out of the wood work.
"Excusme me?"
I turn around to see an old lady and what appears to be her special friend.
"Yes? Can i help you"
This lady and her friend had to be pushing centuries.
"There's no toilet paper in the ladies rest room" :(
....To Be Continued....
{{:opus:fall2014:tmosgrov:download.jpg?300|}}
=====PuzzleBox2=====
Definitely an eye opener, hehe.
I have learned many things about myself probably way more than anyone would care to notice.
{{:opus:fall2014:tmosgrov:5fc6b58569d553e35e0d95ba728cb213.274x240x1.jpg|}}
**Bottom Line:**Things aren't always as they seem and one should question their own logic often when trying to attempt a project like this.
This project took me way longer than it probably should have. Credit goes out to those who helped.
I also learned that there is multiple ways to skin a cat... Disregard the horrid expression, but all of those ways should be learned.
Within the next few weeks here i would really like to get into bash scripting to make certain tasks a little easier and less redundant.
I have so much to learn in this realm of GNU/Linux but i refuse to give up.
=====Archiving=====
Ohhhh my brain hurts...
Realizations: I did not realize that compression and archiving were to separate functionales, or rather i assumed they were the same thing.
I found it interesting how a lot of thought was put into optimizing how we store, transmit, and present data. As a result i am more curious about obscure file types.
Archiving: The act of taking multiple files and presenting them as one.
Compression: Taking a file and optimizing the amount of memory space it takes up (in some cases compressing while maintaining the integrity of the original document) or at times purposefully degrading the file for faster transmission.
These functions should be separate from one another especially in a unix enviroment. The philosophy being "do one thing and do that one thing really well".
=====CHMOD for dummies=====
**Sep, 10 2014**
So...
This is a second entry in hopes that Matt will expunge the fact that there was no opus update last week. *sighhhh*
After reading through Unix for the Beginning Mage i found a simpler way of setting file privileges though both techniques get the job done.
This technique being used by issuing chmod but instead of a 3 digit string like "666" you can use letters using simple addition and subtraction.
For Example,
Lets say a currently set file permission is -rwx rw rw or "766".
By issuing chmod with the letter argument go-r where g and o specify group and other "chmod go-r"
The file permission string would now appear like this -rwx w w. The read permission was basicly subtracted from the picture. You can also use a for "all" instead of typing ugo "user" "group" "other" to specify all groups. For instance, chmod a-r.
Cheers!
======Repository Fun======
**Sep, 10 2014**
Recently been playing around with mercurial due to "structured"
Finally cloned my repositories over from bitbucket, which makes me very happy. :D
But, before i got there i was moving directories around and found that when deleting a cloned repository it is harder then you would think. Having to use rm -r -f "recursive force" to get rid of .hg in my wiki. Then starting over by re-cloning the repository. Not to mention .hg is hidden from issuing a regular ls command which had me feeling hopeless. Finally, issued ls -f and saw that .hg was hiding in there.
I leave you with this...
{{:opus:fall2014:tmosgrov:z3cq99b.jpg|}}
======Screen Command======
====Aug,31 2014====
**Brief walk-through on the screen command.**
{{:opus:fall2014:tmosgrov:screen.png?300|}}
Start screen program. "screen"
**Screen functions as follows…**
* Split horizontal: ctrl-a, shift-s
* Split vertical: ctrl-a, shift-\ “|”
* Unsplit: ctrl-a, shift-q
**More…**
* Cycle through screens: ctrl-a, tab
* New terminal: ctrl-a, c
* Next terminal: ctrl-a, [space bar]
* Previous terminal: ctrl-a, [back space]
* Cycle through by # “1-9”: ctrl-a, [1-9]
This should spice things up a bit in your terminal screen, cheers.