Unix help | ||
man | ||
Directories | ||
df | report disk partition usage/space | |
pwd | print working directory | |
cd | change directory | shorthand notations: ~ (home directory), no argument (home directory), . (current directory) , .. (one directory up), - (previous directory) |
mkdir | make directory | |
rmdir | remove directory | directory must be empty: rm -rf dirname will remove directory and files in it, recursively |
basename | report filename without leading directories | |
dirname | report directory without trailing filename | |
Files | ||
ls | list files | useful options: -a, -l, -F, -r, -t, -R, others |
touch | create new empty file | |
mv | Rename file | |
cp | Copy file | |
echo "text" >> file | add text to file | |
chmod, chown, umask | permissions commands | Unix permissions cover three types of users: owner, group, world. Each of these can have read, write, execute permission, expressed in three bits, in order rwx. You can change permissions using characters, e.g., o+w,g-x, or via a permissions mask, e.g., 755 (rwxr-xr-x) or 644 (rw-r--r--) |
ln | link files | -s for symbolic link, else hard link (hard links must be on same file system) |
mkfifo | Create pipe file | |
find | find files under specified directory | -name, -type, -mtime |
locate | locate files using system database | |
cat | display contents of file to stdout | (use more or less instead) |
more | displays contents by screenful | |
less | isplays contents by screenful | |
head | displays specified \# of lines from top of file | -n displays n lines |
tail | displays specified \# of lines from bottom of file | -n displays n lines |
od | displays contents in "raw" format | -a for ascii, -x for hexadecimal, -o,-b for octal (2 bytes and 1 byte) |
Command line editing | ||
grep regexp file | search within files | -i (ignore case), -v (reverse search, i.e. find where given expression is \textbf{not} matched |
sed | line-by-line processing | |
tr | line-by-line processing with simple replacement of special characters | |
sort | sorting alphabetically and numerically by column | -n (numerical sort), --key=n by nth column |
paste | join files "horizontally" | |
join | join files "horizontally", matching lines on common columns | |
awk | File processing | awk 'condition \{action} |
archiving and compression | ||
tar | ||
gzip | ||
compress | ||
xzip | ||
fpack \subsection{Unix resources and usage} | ||
Unix resources and resource usage | ||
memory, cpu, etc. | ||
du | show disk usage for files/directories | -s displays summary of specified files, good for directories, -k output in kB, -h outputs in "human" readable (but not sortable!) |
Unix job control | ||
ps | show running process | e.g. aux for all processes |
top | shows processes sorted by usage, updates< | |
kill -SIGNAL processid | sends signals processes | -KILL full kill, -STOP pauses, -CONT continues |
Intermachine communication | ||
ssh | ||
scp | ||
sftp | ||
ftp | ||
rsync | ||
ssh-keys |
function | sh/bash | csh/tcsh |
Overall shell | ||
Shebang! (first line of a script) | #!/bin/bash | #!/bin/tcsh |
Multiple commands on the same line (semicolon) | command1; command2; command3 | |
Extending commands across multiple lines ( backslash) | command1 argument | command2 | command3 | \ command 4 | command5 > file | |
Variables | ||
Variable assignment | VAR="Here is a string" | set VAR="Here is a string" |
Setting environment variables | export VAR=" Here is a string" (No spaces around the = sign!) | setenv VAR "Here is a string" (No equal sign (=) when using setenv!) |
Unsetting a variable | unset VAR | unset VAR |
Aliases | alias top='cd /top' | alias top 'cd /top' |
Conditionals | ||
If statements: can use conditional operators: ==, !=, &&, ||, and others; string sorting with < and >. | if [[ $VAR1 == $VAR2 ]]; then echo "True" else echo "False" fi | if ($VAR1 == $VAR2) then echo "True" else echo "False" endif if |
If statements with file property testing (see property table below) | if [[ -d $VAR ]]; then echo "Directory! fi |
if ( -d $VAR ) then echo "Directory!" endif |
Arguments | ||
Passing arguments to a script | myscript.sh arg1 arg2 arg3 ... argN | |
Corresponding variables | $1 $2 $3 ... $N, $* refers to all command line arguments (useful with loops!) | |
Assigning command output to variables (backtick) | VAR=`command1; command2; command3` (bash) | Set VAR="`command1; command2; command3`" (tcsh) |
String replacement | NEWVAR=${VAR/search/replace} | set NEWVAR= "$VAR:gas/search/replace/" |
Loops | ||
For loop on a list | for i in 1 2 3 4 5; do echo $i done | foreach i (1 2 3 4 5) echo $i end |
For loop using wildcards | for i in *.in; do touch ${i/.in/.out} done | foreach i ( *.in ) touch "$i:gas/.in/.out/" end |
For loop using commands | for i in `cat files`; do grep "string" $i >> list done | foreach i ( `cat files` ) grep "string" $i >> list end |
While | i=0 while [ $i -lt 10 ] do echo $i i=$[$i+1] done | set i = 0 while ( $i < 10) echo $i @ i = $i + 1 end |