======unix Journals====== ====Week 1==== This Week we used __Screen__ to keep __Irssi__ open for class chat. ===Screen=== 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 To kill a screen session: Screen -X -S kill ===IRSSI=== To start IRSSI: IRSSI To connect to the Lab46 Chat server: >/server IRC To list all channels: >/list To join a channel: >/jon # To switch between channels >Ctrl + LEFTARROW or RIGHTARROW ===Misc Commands=== List - List files in the current directory: ls Make Directory mkdir Alpine - Mail Client Alpine Nano - Text Editing Nano [-C] ====Week 2==== This week covered some basic Utilities and some information on Archive handling ==Archives== To untar a GZip'd tar (.tar.gz) use: Tar -zxvf Quick reference at: http://www.computerhope.com/unix/utar.htm To Unzip a regluar zip file (.zip) use: unzip Quick reference at: http://linux.about.com/od/commands/a/blcmdl1_unzipx.htm To create a GZip'd tar (.tar.gz) use: tar -cvzf For example: tar -cvzf Home.tar.gz home/ ==Misc Utilities and commands== Copy cp Move/Rename - can be used to both move file to differnt locations and rename files mv Remove/Deleate rm Symbolic link - "A shortcut" if you will ln -s <2nd location/file> Manual Pages: man An example use would be: man ls | more ==Pipeline== Not covered but I feel it's imporant to add this week: http://en.wikipedia.org/wiki/Pipeline_(Unix) ====Week 3==== This week covered Naming Conventions and File/Directories ==Naming Conventions== Always Remember: KISSBNOLTDEW >Keep It Simple Stupid Because No One Likes to Do Extra Work ==Permissions== 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> Where <0000> are your numeric representation of your permissions and is the file you want to set permissions on lab46:~$ chmod 644 Example.Txt lab46:~$ ls -l -rw-r--r-- 1 mgardne8 lab46 15 May 2 00:24 Example.Txt lab46:~$ chmod 600 Example.Txt lab46:~$ ls -l -rw------- 1 mgardne8 lab46 15 May 2 00:24 Example.Txt 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 ==*Nix "Shortcuts"== Home Directory Lab46:anyLocation$ cd ~ Or lab46:~$ cd / lab46:/$ cd home/ lab46:/home$ cd mgardne8/ lab46:~$ Relative Current directory > . Parent directory > .. ==DIRECTORY TREES!!!!11!!111ONEONE11!!!!== 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 ====Week 4==== TEXT TEXT AND MORE TEXT, WHOOO, OH, AND FILE TYPES, DON'T FORGET THOSE ==MISC COMMANDS== 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 lab46:~$ cat Example.Txt BLAH BLAH BLAH HEAD - DISPLAYS X LINES FROM THE TOP OF THE FILE head -N lab46:~$ head -N 1 Example.Txt BLAH BLAH BLAH TAIL - DISPLAYS X LINES FROM THE BOTTOM OF THE FILE tail -N 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 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 ==MISC FILES== .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 ====Week 5==== "Break Week" ====Week 6==== 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. ==Imporant Control Codes== Interrupt >CTRL-C End Of File >CTRL-D Suspend >CTRL-Z Escape Character >CTRL-[ Make It Ding CTRL-G ==Imporant Files== >.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 ==Imporant Environment Variables== 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 ==Misc Programs== Not going to go into detail in these programs/utilities >write >ytalk ====Week 7==== Wildcards, Input/Output Redirection and Web Pages. Oh my! ==Wild Cards== > * 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. ==Input/Output Redirection== 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 |Args.Txt Referenced below 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== 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 ==Quotes== 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! ==Web Pages. Oh my!== On lab46, Apache is configured to use the /~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/ http://lab46.corning-cc.edu/~mgardne8/tree.txt http://lab46.corning-cc.edu/~mgardne8/tree2.txt http://lab46.corning-cc.edu/~mgardne8/tree3.txt ====Week 8==== 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! ==Running scripts== make sure the script file can be executed via it's permissions. >chmod +x then it's as simple as >./scriptname.sh ==shabangs== 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 ==Scripting Quick Reference== > 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 [[Lab6]]http://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! ==Quick Script to generate a simple webpage based on file in your current directory== ====Week 9==== ====Week 10==== ====Week 11==== ====Week 12==== ====Week 13==== >Slowly >>Formating >>>And >>>>Posting >>>>>EVERYTHING! Oh, and generating example to use my Opiu that corolate to lab46, because I did everything on my home "ArchPI"