540 likes | 690 Views
This guide introduces GNU/Linux, a powerful and stable multi-user, multi-tasking operating system. It compares Linux with Windows, emphasizing Linux's robustness and security. Users learn essential commands, account setup, and filesystem structure while discovering user and administrator best practices. Key resources are provided for deeper learning and community support. Mastering Linux requires reading documentation and regular practice. This guide serves as a foundational resource for operating and utilizing GNU/Linux effectively.
E N D
Pablo Manalastas <pmanalastas@ateneo.edu> Dep't of Info. Systems & Computer Science Ateneo de Manila University INTRODUCTION TO UNIX/LINUX
GNU/LINUX • GNU/Linux – consists of Linux OS kernel, GNU utilities, and open source and commercial applications. • A Unix-workalike – multi-user, multi-tasking, networking operating system, with several choices of graphical user environments, office suites, and other applications. • Very stable/robust yet free -- both binaries and sources available as free downloads from the Net. • Kernel written by Linus Torvalds & company. Utilities are from FSF/GNU, BSD, etc.
Windows-Linux Comparison • Windows runs Microsoft Office and lots of games; is perceived to be easy to install and configure; is notoriously unstable; performs poorly; crashes are frequent. • Linux runs OpenOffice, scores of technical software and fewer games; can be tricky to install and configure; is rock solid; performs impeccably; crashes are extremely rare.
LEARNING LINUX • Linux gives you power, but it takes some time to learn how to harness it. • To be proficient with Linux read the documentation (FAQs, HOWTOs, and user guides from www.linuxdoc.org) and use it regularly for at least for a few months. • Join local user groups like the Phil. Linux Users' Group (plug-request@lists.q-linux.com).
TYPING COMMANDS • At the Unix prompt, a user may type a command using the following format:commandname -option --arguments • The commandname, options, switches, and arguments are separated from each other by one or more white spaces (blanks or tabs). • The intention is to have the command work on the supplied arguments. • The options or switches modify the standard behaviour of the command. • Example: ls -l /var/log/messages
Creating a User Accountand Logging In • Unless needed, do not use the system as the super-user (root); as root, create an account for yourself as a normal non-root user:adduser login_nameYou will be asked to supply a password. • Log out as root, and then log in as a normal user. This way you can practice as much as you want without danger of damaging the system.
HOW TO QUIT LINUX • To log out without switching off the computer:logout • To switch off the computer:shutdown -h -t0 nowThen push the OFF button. • To reboot the computer:shutdown -r -t0 nowctrl-alt-delete • Under X-window:ctrl-alt-backspace then ctrl-alt-delete
GETTING HELP • Help from the Net:“Linux installation and getting started” guide (http://www.linuxdoc.org/gs/gs.html)“Linux FAQ” (http://www.linuxdoc.org/FAQ/Linux-FAQ/) • Online help:man commandinfo commandwhereis commandapropos command • What commands have manual pages available?ls /usr/man/man1
Files • Programs, data, and hardware devices are all represented as files in a Unix system. • Each file is identified by name, and files are hierarchically arranged in directories, which are also files. • For security reasons, each file belongs to an owner and a group. • The owner, the group, and the rest of the world may be selectively given read, write, and execute permissions to the file by the owner or by the super-user root.
File Types • “-” Regular files: executable programs, text files, data files, shared libraries. • “d” Directories: contains named references to other files. • “c” and “b” Character device files and block device files. • “l” Symbolic links: A file that contains a pathname; the file referenced by the pathname may or may not exist. A hard link is another directory entry for a file that exists in the same partition.
PATHNAMES • Pathname – the name of a file, together with the names of directories and subdirectories in which it is contained. • Absolute pathname – the pathname of a file, relative to the root directory “/”. Example,/var/spool/mail/pmana • Relative pathname – the pathname of a file, relative to the current working directory. Example, linux/include/linux/version.h
Filesystem Standard (FSSTND) • FSSTND – names of common directories and what files are contained in each. • /bin and /sbin – executables needed at boot time./boot – contains the Linux kernel and boot data./dev – contains device files./etc – contains the system configuration files./home and /root – home directories of users./lib and /usr/lib – contains the shared libraries./proc – contains info about running processes./tmp and /var/tmp – directory for temporary files./usr/bin and /usr/sbin – contains executables./var – contains data files for reading/writing./opt – contains optional packages.
Shell Shortcut Keys • /bin/sh or /bin/bash – the Bourne (again) shell program; accepts commands typed in by the user and causes the execution of those commands. • bash history keys: UP, DOWN, LEFT, RIGHT • bash filename completion key: TAB
Setting the Terminal Right • Selecting the correct terminal typeTERM=linuxTERM=consoleTERM=vt100TERM=xtermexport TERM • Clearing the terminal screenclear • Resetting when terminal goes crazyreset
Creating and Viewing Text Files • Use a text editor to create a text file.ed filenamevi filenameemacs filenamejoe filenamenedit filename • Viewing the contents of a text filecat filenamemore filenameless filename
What Files Are Out There? • The ls command lists names of files in the current working directory or lists names of files that satisfy a given name pattern. • ls list names of all files in current directoryls pattern list only files that satisfy patternls -a list all files, including hidden filesls -l list long, with types, owners, permissionsls -t list most recent firstls -u list by time last usedls -F list by file type
Renaming, Moving, Copying, and Deleting Files • mv oldnewrename old to new.mv file/dir move file to new loc /dir.cp origduplic copy file orig to file duplic.cp -a /dir1/dir2 copy entire directory to /dir2.rm -f file forcibly delete file; will not ask for confirmation.rm -rf /dir recursively delete directory /dir and all its contents
Counting, Searching, Sorting Files • wc -lwc file counts lines, words, characters in file • grep -v pattern fileprints all lines of file that does/doesn't contain pattern. • sort -r filesorts file in increasing/reverse order.
Showing Parts of Files • head -n file prints the first n lines of file.tail -n file prints the last n lines of file. • cut -cJ-K file prints all characters in column positions J-K of file. • cut -dD -fJ-K fileprints all fields in field positions J-K in file, using character D as field delimiter
Comparing and Patching Files • cmp file1 file2show location of first difference between file1 and file2 • diff file1 file2show all differences between file1 and file2 • diff -NuR file1 file2show all differences between file1 and file2 in “patch” format • patch -p0 <diffspatch files using the supplied diffs
Misc File Commands • Creating symbolic links:ln -s targetfilename symlinknameTarget file need not exist • Creating hard links, another name for a file that already exists in the same partition:ln existingfile newfilename • Creating an empty file or updating a file's date:touch filename
Using Hardlinks • To create a useful alternate name for a program • Example/usr/sbin/sendmail/usr/sbin/newaliasesare hardlinks to the same file
Working with Directories • pwd print working directory. • cdmake your home directory the working directory. • cd dirnamemake dirname the working directory. • mkdir dirnamecreate a new directory dirname in the current working directory. • rmdir dirnameremove the empty directory dirname.
File Permissions • chmod – change permissions to a filechmod 640 myfile • chown – change owner of a file (/etc/passwd)chown owner.group myfile • chgrp – change group of a file (/etc/group)chgrp grpname myfile • umask – set the file creation mask(what are not allowed)umask 022
Functions of the Shell • The shell program /bin/sh accepts commands typed by the user and causes the execution of those commands. It is the go-between the user and the facilities of the Unix kernel. • Some of its functions are:Filename completion – you supply a pattern and the shell gets all files that fit the pattern;I/O redirection & Pipes– you can arrange for input to/output from a program to be redirected to files, and for execution of pipes; Personalizing environment – you can define your own commands, shortcuts, variables, etc.
Filename Generation with Wildcards • The shell is capable of generating filenames in the target directory that match given patterns. • ? - matches a single character (not a leading .)Example: ls -l chapter? • [ ] - matches one character from the given rangeExample: ls -l chapter[0-9][0-9] • * - matches zero or more characters (except a leading .)Example: ls -l chapter*
Redirecting Stdout and Stderr • The standard output of a program (normally to the screen) can be redirected to a file using the symbol “>”. Example:sort /etc/passwd /etc/group > namesThe “>>” symbol is used to append to a file:cat /usr/src/linux/COPYING >> names • The standard error output of a program (normally to the screen) can be redirected to a file using the symbol “2>”. Example:gcc sample.c -o sample 2> error.log • We can combine these:sort /usr/dict/american.med >words 2>&1
Redirecting Stdin • The standard input to a program (normally the keyboard) can be redirected to come from a file. Examples:sort < fruitsmailx -s “Hello” juan pablo jose < myletter • Some or all of stdin, stderr, and stdout can be redirected in the same command. Examplesort < fruits > sortfruits 2> sorterr.log
Multitasking with Pipes • A pipe is a way to connect the output of one program to the input of another without any user-created temporary file; a pipeline is a connection of two or more programs through pipes. • All the programs in the pipeline are started at the same time and the system multitasks to give a fair share of CPU time to each program. • Example:cat /usr/dict/american | grep “aa” | sort
Multitasking: Background Processes • To run a time-consuming program in the background:program arguments & • To run in the background even after loggin out:nohup program arguments & • To check the PID of processes that are running:ps ax • To stop a running process:kill -9 PID
Shell Variables • Shell variable – a user-defined variable name usable in the current shell. • Assigning values to shell variables:cellnumber=”+63-917-8338785”webpage='xhttp://currry.ateneo.net/' • Reading input from stdin:read nameread cellnumber
Environment Variables • Env variable – a variable name that is usable in the current shell and in all children processes of this shell. • Examples:EMAIL='pmanalastas@ateneo.edu'CARPLATE=XJW889read REGNUMexport EMAIL CARPLATE REGNUM • The export command turns a shell variable to an env variable. Env variables are inherited by children processes from their parent process.
System defined Environment Variables • Some environment variables are pre-defined by the system. • Examples:PATH – list of directories searched when system looks for a commandTERM – name of terminal that is currently in usePS1 PS2 – primary and secondary promptsHOME – user's home directoryLOGNAME – user's login nameSHELL – user's shell program
Using Variables • To access the value of a variable use the prefix $ or ${ }. • To display the value of a variable:echo $PATHecho ${CARPLATE} • Variables may be used as command name or argument:cp $file ${file}02$CC myprog.c -o myprog
Command Substitution • To access the output of a program use $(program) or `program`. Both forms may be double quoted as in“$(program)” or “`program`” • Exampleslogin=$(cat /etc/passwd | grep Mana | cut -d: -f1)echo ${login}today=`date | cut -d\ -f1-2`echo $todayecho ${today} > /tmp/today.txt
Quoting • The following characters have special meaning for the shell: space & < > $ * ' “. If you want to use them as is, quote with \. • Examples:mkdir My\ Documentscat Jack\&Jillecho \<html\> • Single quotes suppresses the special meanings:askdad='allowance $100.00 & trans $20.00' • Double quotes will not supress meaning of $:PATH=”$PATH:/home/pmana/bin”
Quoting Exercise • abc=”xyz”What's the result of:echo “$abc”echo $abcecho '$abc'echo \$abc
Tailoring Your Environment • Values of environment variables that you want to stay in effect every time you log in should be saved in the file $HOME/.profile • Example /home/pmana/.profilePATH=”$PATH:/home/pmana/bin”PS1='$(pwd)\$ 'export PATH PS1 • To put into effect now your new .profile file:. .profile
Shell Scripts • Script – one or more lines of Unix commands in a text file, saved as an executable file.Use “chmod +x file”, to make file executable.Example:#!/bin/shtoday=”$(date)”tyme=”$(echo $today | cut -c12-13)”if [ “$tyme” -lt 12 ]; then echo “Good morning.” ;elif [ “$tyme” -lt 18 ]; then echo “Good afternoon.” ;else echo “Good evening.” ;fi
Scripts: Command-Line Arguments • If the command isgcc myprog.c -o myprogthen$0 = gcc$1 = myprog.c $2 = -o$3 = myprog • These variables $0, $1, $2, etc can be used within shell scripts
Scripts: More About Command-Line • $#number of command line arguments$0 not included • $*$@all command line arguments as one string • $?the return value or exit code of the previouscomand
Exit Code or Return Valuesof Programs • When a program finishes, the exit code or return value can be tested in a shell program. Exit codes are as follows:zero(0) normal program terminationnon-zero abnormal program termination; program exited with error
Scripts: Command Lists • Executing commands in the backgroundcommand & • Executing commands one after anothercommand1; command2; command3 • Execute command2 if command1 exits normallycommand1 && command2 • Execute command2 if command1 exits abnormallycommand1 || command2
Scripts: If construct • if command1; then command2; fi • if command1then command2fi • if command1; then command2else command3fi
Scripts: If example • read ansif [ “$ans” = “y” ]; then echo “Your answer is yes”else echo “Your answer is not yes”fi • The construct [ ] is equivalent to thetest command
Scripts: Complicated If • if command1; then command2elif command3; then command4elif command5; then command6else command7fi
Scripts: Case construct • case WORD in(PATTERN) COMMANDLIST ;; (PATTERN) COMMANDLIST ;; (PATTERN) COMMANDLIST ;; esac
Scripts: For construct • for NAME in{ WORDS }; do COMMANDSdone
Scripts: While consruct • while TEST-COMMANDS; do CONSEQUENT-COMMANDSdone
Scripts: Until construct • until TEST-COMMANDS; do CONSEQUENT-COMMANDSdone