This Week we used Screen to keep Irssi open for class chat.
To start a new screen use
Screen
To detach from a screen:
Ctrl-A And D
To list all screens use:
Screen -list
or
Screen -ls
To reatach to the most recent screen:
Screen -rd
To reatach to any screen session:
Screen -r <ID of screen>
To kill a screen session:
Screen -X -S <ID of screen> kill
To start IRSSI:
IRSSI
To connect to the Lab46 Chat server:
/server IRC
To list all channels:
/list
To join a channel:
/jon #<channel>
To switch between channels
Ctrl + LEFTARROW or RIGHTARROW
List - List files in the current directory:
ls
Make Directory
mkdir <Directory name>
Alpine - Mail Client
Alpine
Nano - Text Editing
Nano [-C]
This week covered some basic Utilities and some information on Archive handling
To untar a GZip'd tar (.tar.gz) use:
Tar -zxvf <Archive Name>
Quick reference at: http://www.computerhope.com/unix/utar.htm
To Unzip a regluar zip file (.zip) use:
unzip <Archive Name>
Quick reference at: http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm
To create a GZip'd tar (.tar.gz) use:
tar -cvzf <Name.tar.gz> <directory/>
For example:
tar -cvzf Home.tar.gz home/
Copy
cp <location/file> <new location/file>
Move/Rename - can be used to both move file to differnt locations and rename files
mv <orig> <new>
Remove/Deleate
rm <file>
Symbolic link - “A shortcut” if you will
ln -s <location/file> <2nd location/file>
Manual Pages:
man <command>
An example use would be:
man ls | more
Not covered but I feel it's imporant to add this week: http://en.wikipedia.org/wiki/Pipeline_(Unix)
This week covered Naming Conventions and File/Directories
Always Remember: KISSBNOLTDEW
Keep It Simple Stupid Because No One Likes to Do Extra Work
How to check:
ls -l
lab46:~$ ls -l total 4 lrwxrwxrwx 1 mgardne8 lab46 18 Jan 20 13:54 Maildir -> /var/mail/mgardne8 -rw-r--r-- 1 mgardne8 lab46 0 May 1 23:47 Tree.Txt drwxr-xr-x 4 mgardne8 lab46 46 Jan 22 17:53 mgardne8 drwx-----x 2 mgardne8 lab46 53 May 2 00:01 public_html drwx------ 12 mgardne8 lab46 4096 Apr 17 12:29 src drwxr-xr-x 6 mgardne8 lab46 52 Jan 22 18:04 znc
How to edit:
chmod <0000> <file>
Where <0000> are your numeric representation of your permissions and <file> is the file you want to set permissions on
lab46:~$ chmod 644 Example.Txt lab46:~$ ls -l <snip> -rw-r--r-- 1 mgardne8 lab46 15 May 2 00:24 Example.Txt <snip> lab46:~$ chmod 600 Example.Txt lab46:~$ ls -l <snip> -rw------- 1 mgardne8 lab46 15 May 2 00:24 Example.Txt <snip>
Quick Reference
400 r——– files (won’t let you accidentally erase) 444 r–r–r– files (lets everyone read) 600 rw——- files (no one else can read or see files) 644 rw-r–r– files (owner can read/write, group read, public read) 664 rw-rw-r– files (owner can read/write, group read/write, public read) 666 rw-rw-rw- files (owner can read/write, group read/write, public read/write) 700 rwx—— programs and directories (Owner r/w/execute) 750 rwxr-x— programs and directories etc 755 rwxr-xr-x programs and directories etc 777 rwxrwxrwx programs and directories etc
Home Directory
Lab46:anyLocation$ cd ~
Or
lab46:~$ cd / lab46:/$ cd home/ lab46:/home$ cd mgardne8/ lab46:~$
Relative Current directory
.
Parent directory
..
Created using:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' > ~/public_html/tree.txt
Command (Minus saving into a file) Stolen from: http://stackoverflow.com/questions/1581559/ascii-library-for-creating-pretty-directory-trees
My home dir:
. |-mgardne8 |---znc |-public_html |-src |---lab_1 |-----Test_Compiles |---lab_2 |---lab_3 |---lab_4 |---lab_6 |---lab_7 |---lab_phone |---scrap |---submit |-znc |---bin |---include |-----znc |---lib |-----pkgconfig |-----znc |---share |-----man |-------man1 |-----znc |-------modules |---------blockuser |-----------tmpl |---------cert |-----------tmpl |---------certauth |-----------tmpl |---------lastseen |-----------tmpl |---------listsockets |-----------tmpl |---------notes |-----------files |-----------tmpl |---------perform |-----------tmpl |---------send_raw |-----------files |-----------tmpl |---------stickychan |-----------tmpl |---------webadmin |-----------files |-----------tmpl |-------webskins |---------_default_ |-----------pub |-----------tmpl |---------dark-clouds |-----------pub |-----------tmpl |---------forest |-----------pub |-----------tmpl |---------ice |-----------pub |-----------tmpl
/var/public/unix
. |-archives |-cluster |-conf |-courselist |-cs6 |-data |-devel |---archive |---multifile |-eoce |-ex3 |-file |-filters |-final |-grep |-groups |---unix |---users |-lab12 |-lab2 |-list-archives |---spring2002 |-misc |-multitask |-naming |---badname |-----challenge |-----example |-----exercise |-narrative |---a |-patterns |-puzzle |---script |-puzzlebox |-quests |-regex |-scripting |---project |-----output |-shell |-stuff |---examples |-web
/var/public/cpp
. |-cli |-cs1 |-cs3 |-cs5 |-cs99 |-data |---spring2012 |-----project4 |-eoce |---spring2012 |-----bn |---spring2013 |-----game |-------images |-exam1 |-examples |---overloaded_shapes |---spring2012 |-----project1 |-files |-final |-incomplete |-inheritance |-input |-interfaces |-lab0 |-lab1 |-lab3 |-lab5 |-lab6 |-lab7 |-lab8 |-multifile |---exponentiator |---scores |-overloading |-pointers |---debug |-polymorphism |-recursion |-scope |-shapes |-templates
TEXT TEXT AND MORE TEXT, WHOOO, OH, AND FILE TYPES, DON'T FORGET THOSE
VI - VIM - ANOTHER TEXT EDITOR THAT IS NOT NANO
vim [File]
MORE INFORMAN ON VIM CAN BE FOUND http://lab46.corning-cc.edu/haas/spring2013/unix/labs/lab3#the_vi_editor AND http://tnerual.eriogerg.free.fr/vimqrc.pdf
CAT - DISPLAY FILES ON SCREEN
cat <FILE>
lab46:~$ cat Example.Txt BLAH BLAH BLAH
HEAD - DISPLAYS X LINES FROM THE TOP OF THE FILE
head -N <LINES> <FILE>
lab46:~$ head -N 1 Example.Txt BLAH BLAH BLAH
TAIL - DISPLAYS X LINES FROM THE BOTTOM OF THE FILE
tail -N <LINES> <FILE>
lab46:~$ Tail -N 1 Example.Txt BLAH BLAH BLAH
FILE - GIVES INFORMATION ON A FILE, SUCH AS WHEN IT WAS CREATED, AND WHAT TYPE OF FILE IT IS (NOT BASED ON THE EXTENSION)
file <FILE>
lab46:~$ file Example.Txt Example.Txt: ASCII text
lab46:~$ file abcd.tar abcd.tar: gzip compressed data, was "abcd.tar", from Unix, last modified: Wed Sep 22 16:02:40 2010, max compression
.signature - THIS FILE IS USED TO ADD A SIGNATURE TO ALL MAIL SENT USING ALPINE
.plan - THIS FILE IS USED TO RESPOND TO ALL FINGERS
“Break Week”
Lets chat this week! Also learn about those less fun imporant control codes and Dot-Files that are not important at all, you'll never even notice a dot file, it's not like they are used for anything, with their special dot and all that jazz.
Interrupt
CTRL-C
End Of File
CTRL-D
Suspend
CTRL-Z
Escape Character
CTRL-[
Make It Ding CTRL-G
.bash_Profile
Personal Settings for Bash
.bashrc
Called by .bash_profile
.exrc
Vi/ex Settings
.forward
Used for email forwarding
.pinerc
Pine settings
.vimrc
Vim settings
Places system searches for executables
$Path
lab46:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/local/java/bin
The systems hostname
$HOSTNAME
lab46:~$ echo $HOSTNAME lab46
The user running the command
$USER
lab46:~$ echo $USER mgardne8
A variable you never ever mess with, unless you like to break stuff.
$TERM
lab46:~$ echo $TERM xterm
The path to the default shell. (Shouldn't mess with this)
$SHELL
lab46:~$ echo $SHELL /bin/bash
Not going to go into detail in these programs/utilities
write
ytalk
Wildcards, Input/Output Redirection and Web Pages. Oh my!
*
Used to match 0 or more characters
?
Used to match exactly one character
[ ]
Used to match ANY of the contained characters
[^ ]
Uased to NOT match ANY of the contained characters
For example, in the following set of files:
file1 | filea |
file2 | file1234 |
file3 | fileZZZ |
file4 | file41 |
To search for list all files that contain only one character after the word “file” you would:
lab46:~/shell$ ls file? file1 file2 file3 file4 filea
To list all files that end in a number between (inclusive) 1 and 3 you would:
lab46:~/shell$ ls *?[1-3] file1 file2 file3 file41
Finally: To list all files that end in .Txt in your home Directory (And all sub-directories) you would do the following:
lab46:~/shell$ ls -R ~ | grep '.Txt' Example.Txt Tree.Txt sometextfile.Txt
This method is CaSe SeNsAtIvE and will not pick up
.tXt
.TXT
.TXt
.txT
or any modification of capitalization.
The following chart was stolen from: http://lab46.corning-cc.edu/haas/spring2013/unix/labs/lab5
Symbol | Description |
---|---|
> | STDOUT redirection operator |
>> | STDOUT append redirection operator |
< | STDIN redirection operator |
2> | STDERR redirection operator |
2>> | STDERR append redirection operator |
| | pipe |
Some example uses of these are:
To save the manual page of 'grep' as 'grep_manual.Txt'
lab46:~/shell$ man grep > grep_manual.Txt
To append some text to your Note.Txt file
lab46:~/shell$ cat Note.Txt Note number 1 lab46:~/shell$ echo "Note number 2" >> Note.Txt lab46:~/shell$ echo "Note number 3" >> Note.Txt lab46:~/shell$ cat Note.Txt Note number 1 Note number 2 Note number 3
lab46:~/shell$ cat Args.Txt -a1 // does something something -a4 // does something else -b4 // something something blah blah -c5 // more blahs -abc1337 // the most imporant argument of them all! -43x0R // Enables expert mode
To feed “Args.Txt” to the 'grep' command and search for all instances of the number '1' you would do the following:
lab46:~/shell$ grep '1' < Args.Txt -a1 // does something something -abc1337 // the most imporant argument of them all!
This could also be done without feeding Args.Txt via STDIN as grep supports reading files with:
lab46:~/shell$ grep '1' Args.Txt -a1 // does something something -abc1337 // the most imporant argument of them all!
Oh, and to find out how to enable expert mode!
lab46:~/shell$ grep 'expert' Args.Txt -43x0R // Enables expert mode
Pagers are used to, as I would describe them, “Buffer outputs in a way that a human can read them without going mad”
In short, More feeds 1 screens worth of information at a time, and can only advance in the file, while less feed 1 screens worth of information at a time, but can both advance and go back to what was already passed.
More information on more and less can be found in their man pages: http://unixhelp.ed.ac.uk/CGI/man-cgi?more http://unixhelp.ed.ac.uk/CGI/man-cgi?less
These are what you have to use when people refused to
KISSBNOLTDEW
(See Week 3)
For example to use 'cat' on “Long File $PATH for Shell Lab.text” without using blackslashes, Tab completion or WildCards, you would:
lab46:~/shell$ cat /var/public/unix/shell/'Long File $PATH for Shell Lab.text' Good work! You're done!
On lab46, Apache is configured to use the <server Ip or domain>/~user/ configuration(This is default if I recall correctly?) to allow each user the ability to host their own Web space.
To place files in your web space place them in the “public_html” Directory of your home folder.
For example, here are some of the contents of my “public_html” directory:
lab46:~/public_html$ ls *.txt tree.txt tree2.txt tree3.txt
And each of those files are able to be accessed by going to
lab46.corning-cc.edu/~mgardne8/<file name>
http://lab46.corning-cc.edu/~mgardne8/tree.txt
The joyous act of scripting!
Make Tedious tasks simple!
Save time and money!
Get your very own script today!
only 4 easy payments of nothing!
But wait, if you call in the next 20 years, we'll throw in some additional Nothing! A value of ABSOLUTELY NOTHING!
make sure the script file can be executed via it's permissions.
chmod +x <file>
then it's as simple as
./scriptname.sh
To prevent using code meant for one shell being executed in another shell,(This could cause undesired results, or just plain not work) shabangs are placed on the _First_ line of the script.
The format for a shabang is
#!/path/to/shell -options
For these scripts bash will be used, so the shabang would be:
#!/bin/bash
echo
Used to print text to the output:
Echo "Text"
Note: You can use the -n parameter to not print a newline character after the output
read
saves the next input as a variable
read Number12 echo $Number12
let
Doing (simple) Mathematics
let var1=$var1+var2
if/elif/else
Basic If selection Paramaters (As stolen from Lab6http://lab46.corning-cc.edu/haas/spring2013/unix/labs/lab6)
Symbol | Description |
---|---|
-lt | is less than |
-gt | is greater than |
-eq | is equal to |
-le | is less than or equal to |
-ge | is greater than or equal to |
-ne | is not equal to |
if [ "$var1" -gt "$var2" ]; then echo "some text" elif [ "$var1" -lt "$var2"]; then echo "some other text" else echo "some else text"
For
The numeric version that is quite much like C++
let f=100 for((k=0; f>0; k++)); do echo "$k" let f=$f-$k echo "$f" done
lab46:~$ ./testscript.sh 0 100 1 99 2 97 3 94 4 90 5 85 6 79 7 72 8 64 9 55 10 45 11 34 12 22 13 9 14 -5
The list version
for firstName in Jack Bob Fred Bill Murry James; do echo "$firstName Is a first name believe it or not!" done
lab46:~$ ./testscript.sh Jack Is a first name believe it or not! Bob Is a first name believe it or not! Fred Is a first name believe it or not! Bill Is a first name believe it or not! Murry Is a first name believe it or not! James Is a first name believe it or not!
SlowlyFormatingAndPostingEVERYTHING!
Oh, and generating example to use my Opiu that corolate to lab46, because I did everything on my home “ArchPI”