- list files in
directory; use with options
·
-l (long format)
·
-a (list . files too)
·
-r (reverse order)
·
-t (newest appears first)
·
-d (do not go beyond current directory)
·
-i (show inodes)
- used to control
input by pages - like the dos /p argument with dir. e.g.
$ more /etc/motd *******************************************************************************
* *
* *
* Welcome to AIX Version 4.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
motd: END
Useful keys for use with more:
$ more /etc/motd *******************************************************************************
* *
* *
* Welcome to AIX Version 4.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
motd: END
Useful keys for use with more:
·
b (back a page)
·
' (go to top)
·
v (vi the file)
·
/ (Search)
·
q (quit)
·
' ' (down a page)
·
Control-G (View current line number
·
<CR> (down a line)
- used to control
input by pages - like the dos /p argument. pg performs the same function as the
more command but has
different control, as it is based on ex
Helpful keys for pg:
Helpful keys for pg:
·
1 (go to top)
·
$ (go to bottom)
·
h (help)
·
/ (Search)
·
? (Search back)
·
q (quit)
·
-1 (back a page)
- show present
working directory. e.g.
$ pwd
/usr/live/data/epx/vss2
To change the current working directory use cd
$ pwd
/usr/live/data/epx/vss2
To change the current working directory use cd
- change directory
(without arguments, this is the same as $ cd $HOME
or $ cd ~)
<source>
<destination> - copies a file from one location to another. e.g.
$ cp /etc/hosts /etc/hosts.backup # make a backup of the hosts file
$ cp /etc/motd /tmp/jon/ # Copy file /etc/motd to directory /tmp/jon/
Options
$ cp /etc/hosts /etc/hosts.backup # make a backup of the hosts file
$ cp /etc/motd /tmp/jon/ # Copy file /etc/motd to directory /tmp/jon/
Options
·
-f (to force the copy to occur)
·
-r (to recursively copy a directory)
·
-p (to attempt to preserve permissions
when copying)
synonym: copy
<source>
<destination> - move a file from one location to another. e.g.
$ mv /tmp/jon/handycommands.txt . # move handycommands in /tmp/jon to current directory
$ mv -f vihelp vihelp.txt # Move file vihelp to vihelp.txt (forced)
Options
$ mv /tmp/jon/handycommands.txt . # move handycommands in /tmp/jon to current directory
$ mv -f vihelp vihelp.txt # Move file vihelp to vihelp.txt (forced)
Options
·
-f (to force the move to occur)
·
-r (to recursively move a directory)
·
-p (to attempt to preserve permissions
when moving)
synonym: move
.
.
<filename> -
removes a file. e.g.
$ rm /tmp/jon/*.unl # remove all *.unl files in /tmp/jon
$ rm -r /tmp/jon/usr # remove all files recursively Options
$ rm /tmp/jon/*.unl # remove all *.unl files in /tmp/jon
$ rm -r /tmp/jon/usr # remove all files recursively Options
·
-f (to force the removal of the file)
·
-r (to recursively remove a directory)
Recursively lists
directories and their sizes. e.g.
$ du /etc # list recursively all directories off /etc
712 /etc/objrepos
64 /etc/security/audit
536 /etc/security
104 /etc/uucp
8 /etc/vg
232 /etc/lpp/diagnostics/data
240 /etc/lpp/diagnostics
248 /etc/lpp
16 /etc/aliasesDB
16 /etc/acct
8 /etc/ncs
8 /etc/sm
8 /etc/sm.bak
4384 /etc
The sizes displayed are in 512K blocks. To view this in 1024K blocks use the option -k
$ du /etc # list recursively all directories off /etc
712 /etc/objrepos
64 /etc/security/audit
536 /etc/security
104 /etc/uucp
8 /etc/vg
232 /etc/lpp/diagnostics/data
240 /etc/lpp/diagnostics
248 /etc/lpp
16 /etc/aliasesDB
16 /etc/acct
8 /etc/ncs
8 /etc/sm
8 /etc/sm.bak
4384 /etc
The sizes displayed are in 512K blocks. To view this in 1024K blocks use the option -k
lp
-d<Printername> <Filename>
send file to printer.
e.g. $ lp -dhplas14 /etc/motd # send file /etc/motd to
printer hplas14
$ lp /etc/motd # send file /etc/motd to default printer
$ lp /etc/motd # send file /etc/motd to default printer
- print a file to
stdout (screen). e.g.
$ cat /etc/motd # display file /etc/motd to screen
*******************************************************************************
* *
* *
* Welcome to AIX Version 4.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
cat is also useful for concatenating several files. e.g.
$ cat fontfile IN* > newfile # appends fontfile and all files beginning with IN to newfile
Though this might seem an essentially useless command, because most unix commands always take a filename argument, it does in fact come in extremely useful at more advanced levels. Awards are given out occasionally for the most useless usage of cat. If an option of '-' is specified, cat will take its input from stdin.
$ cat /etc/motd # display file /etc/motd to screen
*******************************************************************************
* *
* *
* Welcome to AIX Version 4.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
cat is also useful for concatenating several files. e.g.
$ cat fontfile IN* > newfile # appends fontfile and all files beginning with IN to newfile
Though this might seem an essentially useless command, because most unix commands always take a filename argument, it does in fact come in extremely useful at more advanced levels. Awards are given out occasionally for the most useless usage of cat. If an option of '-' is specified, cat will take its input from stdin.
Unix commands generally get their information from the screen, and output to it. There are three main 'streams' which unix uses to get/place it's information on. These streams are called:
·
stdin (Standard Input) - normally, what
you type into the screen
·
stdout (Standard Output) - normally,
what is output to the screen
·
stderr (Standard Error) - normally,
error messages which go to the screen
any of these may be redirected by the following symbols:
·
< <filename> take input from
<filename> rather than the screen. e.g.
$ ksh < x # will read all commands from the file x and execute them using the Korn shell.
$ ksh < x # will read all commands from the file x and execute them using the Korn shell.
·
> <filename> take output from the
command and place it in <filename>. e.g.
$ ls > x will place the output of the command 'ls' in the file x
$ ls > x will place the output of the command 'ls' in the file x
·
>> <filename> take output from the
command and append it to <filename>. e.g.
$ ls /tmp >> x will place the output of the command 'ls' and append it to the file x
$ ls /tmp >> x will place the output of the command 'ls' and append it to the file x
·
2> <filename> take any error
messages from the command and put it in <filename>. e.g.
$ ls /tmp 2>/dev/null would throw away any error messages that are produced by ls (sorry, /dev/null is a file that, if written to, the information disappears never to be seen again).
$ ls /tmp 2>/dev/null would throw away any error messages that are produced by ls (sorry, /dev/null is a file that, if written to, the information disappears never to be seen again).
·
command1 | command2 Pipe - Takes the
standard output of the first command, and turns it into the standard input of
the second command. The output of the second command will then be put on the
standard output (which, again, may be a pipe) e.g.
$ ls | more will send the output of 'ls' into the command 'more', thus producing a directory listing which stops after every page. This method is called piping.
$ ls | more will send the output of 'ls' into the command 'more', thus producing a directory listing which stops after every page. This method is called piping.
command1 & - the ampersand (&) forces command1 to run in the background. so that you may continue to type other commands in the shell, while command1 executes. It is not advisable to run a command in the background if it outputs to the screen, or takes it's input from the screen
See also tee which allows splitting of the input stream and output to several different places at once.
B Bib Baby Fox Fib
There are various wildcards which you may use. One is '*' which means 0 or more characters. e.g. 'B*' will match 'B,Bib and Baby' from the list above, another wildcard is '?' which matches 1 character, e.g. '?ib' will match 'Bib and Fib'. Wildcards differ depending on the program in use: awk derivatives (awk,sed,grep,ex,vi,expr and others) have the following special characters:
There are various wildcards which you may use. One is '*' which means 0 or more characters. e.g. 'B*' will match 'B,Bib and Baby' from the list above, another wildcard is '?' which matches 1 character, e.g. '?ib' will match 'Bib and Fib'. Wildcards differ depending on the program in use: awk derivatives (awk,sed,grep,ex,vi,expr and others) have the following special characters:
·
^ beginning of the line
·
$ end of the line
·
. any character
·
* one or more of the preceding
character
·
.* any number of characters
·
\n Carriage return
·
\t Tab character
·
\<char> Treat <char> as is
(so, \$ would try to match a '$')
Given the following
four lines:
Chargeable calls in bundle: $47.50
Chargeable calls out of bundle: $20.50
Other bundle charges: $0.00
Total Charge: $20.50
$ grep "^Charg.*bundle.*\$.*"
would match the first two lines.
In english - match all lines which start with 'Charg', then have any number of characters and then the word 'bundle', then have any number of characters, and then a dollar symbol, and then have any number of characters following to the end of the line
Chargeable calls in bundle: $47.50
Chargeable calls out of bundle: $20.50
Other bundle charges: $0.00
Total Charge: $20.50
$ grep "^Charg.*bundle.*\$.*"
would match the first two lines.
In english - match all lines which start with 'Charg', then have any number of characters and then the word 'bundle', then have any number of characters, and then a dollar symbol, and then have any number of characters following to the end of the line
type <command>
- show where the
source of a command is: e.g.
$ type sendmail
sendmail is /usr/sbin/sendmail
This command is merely an alias for 'whence -v'
$ type sendmail
sendmail is /usr/sbin/sendmail
This command is merely an alias for 'whence -v'
whence <command>
- show where the
source of a command is: shell builtin command. See type
Use option: -v for verbose mode
Use option: -v for verbose mode
which <command>
chmod <Octal
Permissions> <file(s)>
- change file
permissions. e.g.
$ chmod 666 handycommands
changes the permissions (seen by ls -l) of the file handycommands to -rw-rw-rw-
r = 4, w = 2, x = 1. In the above example if we wanted read and write permission for a particular file then we would use r + w = 6. If we then wanted to have the file have read-write permissions for User, Group and All, then we would have permissions of 666. Therefore the command to change is that above.
$ chmod 711 a.out
Changes permissions to: -rwx--x--x
Additional explanation of file permissions and user/group/all meaning are given in the description of ls -l
You may specify chmod differently - by expressing it in terms of + and - variables. For example
$ chmod u+s /usr/bin/su
will modify the "sticky bit" on su, which allows it to gain the same access on the file as the owner of it. What it means is "add s permission to user". So a file that started off with permissions of "-rwxr-xr-x" will change to "rwsr-xr-x" when the above command is executed. You may use "u" for owner permissions, "g" for group permissions and "a" for all.
$ chmod 666 handycommands
changes the permissions (seen by ls -l) of the file handycommands to -rw-rw-rw-
r = 4, w = 2, x = 1. In the above example if we wanted read and write permission for a particular file then we would use r + w = 6. If we then wanted to have the file have read-write permissions for User, Group and All, then we would have permissions of 666. Therefore the command to change is that above.
$ chmod 711 a.out
Changes permissions to: -rwx--x--x
Additional explanation of file permissions and user/group/all meaning are given in the description of ls -l
You may specify chmod differently - by expressing it in terms of + and - variables. For example
$ chmod u+s /usr/bin/su
will modify the "sticky bit" on su, which allows it to gain the same access on the file as the owner of it. What it means is "add s permission to user". So a file that started off with permissions of "-rwxr-xr-x" will change to "rwsr-xr-x" when the above command is executed. You may use "u" for owner permissions, "g" for group permissions and "a" for all.
chown <Login Name>
<file(s)>
- Change ownership of
a file. Must be done as root. e.g.
chown informix *.dat # change all files ending .dat to be owned by informix
chown informix *.dat # change all files ending .dat to be owned by informix
chgrp <Group Name>
<file(s)>
- Change group
ownership of a file. Must be done as root. e.g.
chgrp sys /.netrc # change file /.netrc to be owned by the group sys
chgrp sys /.netrc # change file /.netrc to be owned by the group sys
mvdir <Source
Directory> <Destination Directory>
- move a directory - can
only be done within a volume group. To move a directory between volume
groups you need to use mv -r
or find <dirname> -print | cpio -pdumv <dirname2>; rm -r <dirname>
or find <dirname> -print | cpio -pdumv <dirname2>; rm -r <dirname>
cpdir <Source
Directory> <Destination Directory>
- copy a directory.
See mvdir
rmdir <Directory>
mkdir <Directory>
- Creates a
directory. e.g.
$ mkdir /tmp/jon/ # create directory called /tmp/jon/
$ mkdir /tmp/jon/ # create directory called /tmp/jon/
find <pathname>
-name "searchkey" -print
- search for files -
e.g.
$ find . -name "system.log" -print # will find all files (with full path names) called system.log - Wildcards are allowed, e.g.
$ find /tmp -name "sl.*" -atime +0 -print # will print out all files in /tmp/ that start sl. and which haven't been accessed for a day. Helpful for finding lost files, or finding stuff in enormous directories. Other useful options include:
$ find . -name "system.log" -print # will find all files (with full path names) called system.log - Wildcards are allowed, e.g.
$ find /tmp -name "sl.*" -atime +0 -print # will print out all files in /tmp/ that start sl. and which haven't been accessed for a day. Helpful for finding lost files, or finding stuff in enormous directories. Other useful options include:
·
-atime +<days> - finds files that
haven't been accessed for 1+days also, ctime (creation time) and mtime (modify
time)
·
-prune - stay in current directory -
don't look in dirs off the directory specified in path names - e.g.
$ find /tmp -user "compgnc" -prune -print # will find all files in /tmp which user compgnc owns and will not search lower directories (e.g. /tmp/usr)
$ find /tmp -user "compgnc" -prune -print # will find all files in /tmp which user compgnc owns and will not search lower directories (e.g. /tmp/usr)
·
-size +<blocks> - finds files
that are bigger than <blocks>
·
-exec rm {} \; - remove all files
found...dangerous command - e.g.
$ find /tmp -name "sl.*" -atime +0 -prune -print -exec rm {} \; # will remove all files in /tmp starting 'sl.' that haven't been accessed for a day. Spacing of this command is important! Most exec commands are possible:
$ find /usr2/calltest -name "*.4gl" -print -exec grep "CHECK" {} \; | pg
$ find /tmp -name "sl.*" -atime +0 -prune -print -exec rm {} \; # will remove all files in /tmp starting 'sl.' that haven't been accessed for a day. Spacing of this command is important! Most exec commands are possible:
$ find /usr2/calltest -name "*.4gl" -print -exec grep "CHECK" {} \; | pg
·
-ok - like exec only it prompts for
confirmation after each occurence. e.g.
$ find /tmp/disk7 -name "*" -print -ok doswrite -a {} {} \; # Please note that you MUST end any exec or ok option with an escaped semicolon (\;).
$ find /tmp/disk7 -name "*" -print -ok doswrite -a {} {} \; # Please note that you MUST end any exec or ok option with an escaped semicolon (\;).
·
-user <username> - finds all files
owned by <username>
·
-group <groupname> - finds all
files with a group of <groupname>
ln -s <Directory>
<symbolic link>
- create a symbolic
link to a different directory from current directory: e.g.
$ ln -s /usr/uniplex/compgnc /u/compgnc/uni # would create a link called 'uni' in the directory /u/compgnc. From then on, typing cd uni would cd to /usr/uniplex/compgnc. You can also give two files the same name. e.g.
$ ln make.e_enquiry makefile # would link the two files so that they are identical, and when you change one, you change the other. You may also create a symbolic link to a host(!). Instead of typing 'rlogin hpserver' every time, by typing
$ ln -s /usr/bin/rsh hpserver # will create a link so that whenever you type 'hpserver' it will execute a remote shell on the machine.
Option -f forces the link to occur
$ ln -s /usr/uniplex/compgnc /u/compgnc/uni # would create a link called 'uni' in the directory /u/compgnc. From then on, typing cd uni would cd to /usr/uniplex/compgnc. You can also give two files the same name. e.g.
$ ln make.e_enquiry makefile # would link the two files so that they are identical, and when you change one, you change the other. You may also create a symbolic link to a host(!). Instead of typing 'rlogin hpserver' every time, by typing
$ ln -s /usr/bin/rsh hpserver # will create a link so that whenever you type 'hpserver' it will execute a remote shell on the machine.
Option -f forces the link to occur
head -<Number>
<FileName>
- prints out the
first few line of a file to screen. Specify number to indicate how many lines
(default is 10). e.g. If you sent something to a labels printer and it wasn't
lined up, then you could print the first few labels again using:
$ head -45 label1.out | lp -dlocal1
$ head -45 label1.out | lp -dlocal1
tail -<Number>
<FileName>
- prints out the end
of a file. Very similar to head but with a very
useful option '-f' which allows you to follow the end of a file as it is being
created.e.g.
$ tail -f vlink.log # follow end of vlink.log file as it is created.
$ tail -f vlink.log # follow end of vlink.log file as it is created.
wc -<options>
<FileName>
- Word Count (wc)
program. Counts the number of chars, words, and lines in a file or in a pipe.
Options:
·
-l (lines)
·
-c (chars)
·
-w (words)
split -<split>
<FileName>
- Splits a file into
several files.e.g.
$ split -5000 CALLS1 # will split file CALLS1 into smaller files of 5000 lines each called xaa, xab, xac, etc.
$ split -5000 CALLS1 # will split file CALLS1 into smaller files of 5000 lines each called xaa, xab, xac, etc.
tr <character>
<other character>
- translates
characters. e.g.
$ cat handycommands | tr "\t" " " # will take the file handycommands and translate all tabs into spaces. Useful when messing about with awk or you need to convert some input (e.g. that from tty) to a unique filename that does not contain special characters. e.g.
$ tty | tr "/" "." # produces for example .dev.pts.7
$ cat handycommands | tr "\t" " " # will take the file handycommands and translate all tabs into spaces. Useful when messing about with awk or you need to convert some input (e.g. that from tty) to a unique filename that does not contain special characters. e.g.
$ tty | tr "/" "." # produces for example .dev.pts.7
od <options>
<filename>
- od converts nasty
(binary save) files into character representations. Useful when back-compiling,
examining raw .dat files,etc. Use with option '-c' for character display
(recommended).
- starts recording
everything in the shell to a file by default 'typescript'. Press ^D to finish
the script. Provides a log of everything used. Has almost the same effect as $ ksh | tee
typescript
Used for debugging shells, seeing error messages which flash off the screen too quickly, etc.
Used for debugging shells, seeing error messages which flash off the screen too quickly, etc.
- cut's the file or
pipe into various fields. e.g.
$ cut -d "|" -f1,2,3 active.unl # will take the file active.unl which is delimited by pipe symbols and print the first 3 fields options:
$ cut -d "|" -f1,2,3 active.unl # will take the file active.unl which is delimited by pipe symbols and print the first 3 fields options:
·
-d <delimiter>
·
-f <fields>
Not too useful as you
can't specify the delimiter as merely white space (defaults to tab)
Alternatively, you can 'cut' up files by character positioning (useful with a
fixed width file). e.g.
$ cut -c8-28 "barcode.txt" # would cut columns 8 to 28 out of the barcode.txt file.
$ cut -c8-28 "barcode.txt" # would cut columns 8 to 28 out of the barcode.txt file.
- paste will join two
files together horizontally rather than just tacking one on to the end of the
other. e.g. If you had one file with two lines:
Name:
Employee Number:
and another file with the lines:
Fred Bloggs
E666
then by doing:
$ paste file1 file2 > file3 # this would then produce (in file3).
Name: Fred Bloggs
Employee Number: E666
Note that paste puts horizontal tabs between the files, so you may need a sed 's/ //g' command to get rid of these.
Name:
Employee Number:
and another file with the lines:
Fred Bloggs
E666
then by doing:
$ paste file1 file2 > file3 # this would then produce (in file3).
Name: Fred Bloggs
Employee Number: E666
Note that paste puts horizontal tabs between the files, so you may need a sed 's/ //g' command to get rid of these.
sort <filename>
- sorts the
information from the file and displays the result on standard output (stdout).
e.g.
$ sort /tmp/list_of_names # will sort the file into alphabetical order, and display it to the screen. Useful with option '-u' to filter out duplicates.
$ sort /tmp/list_of_names # will sort the file into alphabetical order, and display it to the screen. Useful with option '-u' to filter out duplicates.
uniq <filename>
- filters out all
duplicate lines from a file or input stream (file or stream must be sorted!).
Useful with option -c which merely produces a count of unique lines.
ex <filename>
- ex is an old line
editor, and almost never used now (similar to DOS edlin if you remember that -
me, I've repressed it). You are most likely to come across ex within the vi editor - all commands
beginning with a colon (:) are ex commands
- lists files in a
directory in long format. You cannot do without this. Here's a more detailed
explanation. e.g.
$ ls -l
$ ls -l
Part
1
|
Part
2
|
Part
3
|
Part
4
|
Part
5
|
Part
6
|
Part
7
|
-rw-rw-rw-
|
1
|
root
|
staff
|
28
|
Jan
16 09:52
|
README
|
-rw-------
|
1
|
compjmd
|
staff
|
4304
|
Jun
24 12:21
|
tabledict
|
drwxrwxrwx
|
2
|
compjmd
|
staff
|
512
|
Jul
1 16:30
|
testdir
|
-rwxrwx---
|
1
|
compjmd
|
system
|
0
|
Jul
1 16:30
|
a.out
|
... is a sample listing.
·
Part 1: Permissions - see chmod for explanation of
these. If the first field is set, then the file in question is not really a
file at all, but something else, key:
o
-: normal file
o
d: directory
o
l: symbolic link created by 'ln'
o
c or b: device of some sort
You may sometimes see an 's' where the
'x' should be in the permissions - this is normally on executable files which
change other files. e.g. Permissions of 'sqlexec' the file that executes all
informix queries should be '-rwsr-sr-x' - this then accesses tables with
permissions of '-rw-rw----'. where the table files are owned by informix (group
informix). the 's' flags allows changing of the database tables on a program
level, but not on a unix level. (can change contents via sqlexec but not use
'rm' command on db file).
·
Part 2: Number of links to
this file (directories always have 2+).
·
Part 3: The owner of the
file - e.g. If the owner is 'compjmd' and permissions are set to -rw------- then
only the user 'compjmd' may read or write to that file. Again, if owner is
"compjmd" and permissions are -r-x------ then only the user compjmd
may read or execute that file. Only the owner of a file or root may chmod it.
·
Part 4: The group ownership
of the file - (bloody hell, this is getting complicated). On a unix system
there are certain 'groups' which users can belong to, held in the file
'/etc/group'. You will notice that in this file there will be a main group,
e.g. 'staff' which contains every user. Which means that any user listed under
staff is in that group.....right...every file has a group attached to it. Which
means that if a file had permissions ----rw---- and a group reference of
'system', then only users who were part of the group system could modify that
file. To see which groups the current user belongs to do id. Sorry if this
wasn't comprehensible but you should never need to use this anyway(!).
·
Part 5: Size of the file in
bytes
·
Part 6: Time of last
modification
·
Part 7: The name of the
file
Useful options (and
there are loads more). All may be combined except where specified:
·
ls -a show files starting with '.' too
·
ls -A show files starting with '.' but
not '.' or '..'
·
ls -c must be used with either option l
and/or t - displays/sorts by modification time
·
ls -d do not show subdirectory listings
·
ls -i display the i-node number of each
file
·
ls -t Put the listing in time order
(see options u and c)
·
ls -r Put the listing in reverse order
- usually used with a -t
·
ls -u must be used with either options
l and/or t - displays/sorts by last-access time
vi <filename>
- love it or loathe
it - the standard operating system text-file editor. See Related help file. Vi You can also use
'view' which forces Read only (-R opt). vi +<number> enters the file at
the specified line no. Also, vi +/<Search pattern> will enter the file
and move to the first occurrence of <Search pattern>. e.g.
$ vi +/"love it or loathe it" handycommands
Users new to vi hate it. I personally managed to get through University without using it ever (I used Joe's own editor instead). If I accidentally went into vi, I had to ^Z and kill the job. Sigh. Five years of using vi means that I'm getting a little better at it now... (I'm actually typing this now in a vi-clone for Windows).
$ vi +/"love it or loathe it" handycommands
Users new to vi hate it. I personally managed to get through University without using it ever (I used Joe's own editor instead). If I accidentally went into vi, I had to ^Z and kill the job. Sigh. Five years of using vi means that I'm getting a little better at it now... (I'm actually typing this now in a vi-clone for Windows).
grep <pattern>
<file(s)>
- a phenomenally
useful command which matches strings within files - e.g.
$ grep D7523 mcall_reps.out # will find all the lines in mcall_reps.out that have the string "D7523" in it. Also incredibly useful for things like pipes,e.g.
$ du | grep cred # (in /home directory will show all users that have 'cred' in their title). You may use regular expression matching - e.g.
$ grep "main.*{" x.c # would match any line containing 'main' and an open curly brackets at any point in the line afterwards. There are two variations to grep - fgrep and egrep which do virtually the same things as grep, but are either faster (having less options) or more complex (but slower). See also section on Wildcards
Options:
$ grep D7523 mcall_reps.out # will find all the lines in mcall_reps.out that have the string "D7523" in it. Also incredibly useful for things like pipes,e.g.
$ du | grep cred # (in /home directory will show all users that have 'cred' in their title). You may use regular expression matching - e.g.
$ grep "main.*{" x.c # would match any line containing 'main' and an open curly brackets at any point in the line afterwards. There are two variations to grep - fgrep and egrep which do virtually the same things as grep, but are either faster (having less options) or more complex (but slower). See also section on Wildcards
Options:
·
-v : show all lines that do not contain
pattern.
·
-y : don't bother matching case
·
-i : don't bother matching case
·
-c : show count of matching lines
rather than the lines themselves
·
-l : show filename's instead of
matching lines.
ksh -o vi
- The Korn Shell -
pros might notice that I don't mention using the C-Shell at all - I've never
used it, so that's why it doesn't appear. A Shell is a program that you run
your commands in. Typing exit will end the current
shell. The -o vi option of the korn shell allows vi commands to work at
the shell prompt after pressing escape. For example, pressing escape and then
'k' will bring up the last command used in the shell.
- this would be a
damn useful command if I knew how to use it properly. see alternative page awkhelp
man <command>
- look at the manual,
e.g.
$ man ps # will list the manual page for the command ps
$ man ps # will list the manual page for the command ps
- monitor's system
usage - F5 shows processes which are hogging the machine. Not available on AIX
4.1 and above sadly.
- shows how long the
system has been up and how hard it is being hammered. The load average fields
show how many jobs on average are waiting. <1 or less is very good, around 5
is pretty bad (though not unusual), >10 the machine is being seriously
hammered.
- list users who are
currently logged on (useful with option 'am i' - i.e. 'who am i' or 'whoami')
- similar to whoami except that it does
a direct check to see who you are - who only checks
/etc/utmp so any su commands will be
ignored.
- list processes
currently running, by default on the current shell. Useful with options:
·
-t <tty> - show all processes
running on a terminal
·
-ef - show all processes
·
-u <loginname> - show all
processes owned by a user
·
-flp <processid> - show as much
information as you can about a process number
·
-aux - show processes in order of usage
of the processors. Useful to see what processes are hogging system resources.
fuser -u <filename>
- show who is using a
file.(system hogging command). Useful when trying to work out who has locked a
row or table in an informix database for example.
lpstat -p <printer>
- show the current
status of a printer and any jobs in the queue. lpstat without arguments prints
all of them.
enable <printer>
- enable a printer
queue. You must be root or a member of the printq group to run this command.
disable <printer>
- disable a printer
queue. You must be root or a member of the printq group to run this command.
enq <various
parameters>
- examine spool queue
for printers.
uname -a
- will show you what
machine you're currently on.
- list semaphores and
shared memory.
ipcrm -s
<semaphorenumber>
- remove semaphore or
shared memory.
- use -l to list all
regular scheduled jobs. To alter them, use option -e
at <now + ??
seconds/minutes/hours/days/years>
- perform a job at a
specified time. (Useful for running something at a later date). at retains the
current environment. e.g.
$ at now + 5 minutes
echo "Phone Julie McNally" > /dev/tty616
^D
job compjmd.389748732 will be run at ???
Will echo to tty616 the message "Phone Julie McNally" in 5 minutes. e.g.2
$ at 0331235930
echo "April fools day!" > /dev/console
^D
will echo "April fools day!" to the console at 11:59 and 30 seconds, on the 31st of march. Format for this is: [YYYY]MMDDhhmmss. at jobs are sometimes used in the place of crontab's because if the machine is off when the crontab is meant to take place, the job never happens. at jobs automatically start when the machine is switched on if the machine was down at the time. typing at -l will show you all the at jobs you have queued, at -r <atjob> will remove an at job (only the owner or root is allowed to do this).
$ at now + 5 minutes
echo "Phone Julie McNally" > /dev/tty616
^D
job compjmd.389748732 will be run at ???
Will echo to tty616 the message "Phone Julie McNally" in 5 minutes. e.g.2
$ at 0331235930
echo "April fools day!" > /dev/console
^D
will echo "April fools day!" to the console at 11:59 and 30 seconds, on the 31st of march. Format for this is: [YYYY]MMDDhhmmss. at jobs are sometimes used in the place of crontab's because if the machine is off when the crontab is meant to take place, the job never happens. at jobs automatically start when the machine is switched on if the machine was down at the time. typing at -l will show you all the at jobs you have queued, at -r <atjob> will remove an at job (only the owner or root is allowed to do this).
- show current date
and time. This command may also be used to set the system clock (ONLY WHEN
EVERYONE IS LOGGED OFF) with a root user id. A date change is never simple,
even when adjusting things by an hour. The safest way to do it is to change the
date then reboot the machine because otherwise the crontab daemon may start
doing jobs at odd times. I believe there might be a 'go slow/fast' option to
set the clock, and the clock will then run 'slower/quicker' until it catches up
with the required time.
last <username>
- shows a list of
recent logins. It looks at /var/adm/wtmp so it only shows initial logins, and
not whether those users have been su'd to.
fileplace -pv <filename>
- show the physical
(as in disk location) location of a file. Useful for tracing informix files,
and perhaps for working out whether defragmentation copying is required.
kill -<Signal>
<process>
- sends a signal
(normally a kill) to a process. kill -9
terminates the job no questions asked, kill -15
tries to clear up as much as possible - e.g. remove semaphores and such-like.
Other signals may be sent as well, see manual and /usr/include/sys/signal.h to
see what signals you can send to a process.
renice <priority>
<process>
- make a process not
hog the system so much by setting its nice value.
- system admin
program for AIX
- list volume groups
+ usage. see also lsvg. Usually used with
the -k flag so the number of blocks is displayed in 1024-blocks.
cu -l <device>
- log on to device
such as a pad or a modem. See related files /etc/uucp/* and /etc/locks and
/etc/services
- Changes terminal
settings back to normal. If a tetra module for example crashes your screen so
that no keys function except ^C which doesn't even do very much then typing ^Jstty sane^J should cure the problem. To fully cure
the problem you also need to type stty tab3
(and stty -ixon if you're feeling a little
overzealous)
- allows you to
change terminal settings such as the interrupt key, quit key, etc. e.g.
$ stty intr ^A # would change the interrupt key to being control-A
$ stty quit ^L #would set the quit key (normally ^\) to control-L. other key changes are:
$ stty intr ^A # would change the interrupt key to being control-A
$ stty quit ^L #would set the quit key (normally ^\) to control-L. other key changes are:
·
erase (normally ^H)
·
xon (normally ^Q)
·
xoff (normally ^S)
·
eof (normally ^D)
To really annoy a
systems administrator, change interrupt to 't' and quit to '^D' . hehehehehehe
- show all connected
devices
- list volume groups
(see related file diskhelp)
- list physical disks
(and see related file diskhelp)
lspv without arguments will produce a list of all the hard-disks used. lspv <hard-disk-name> will produce a list of information about the hard disk. lspv -l <hard-disk-name> will show any logical volumes which are mapped on to that drive.
lspv without arguments will produce a list of all the hard-disks used. lspv <hard-disk-name> will produce a list of information about the hard disk. lspv -l <hard-disk-name> will show any logical volumes which are mapped on to that drive.
- list devices.
Options:
·
-C list Configured devices
·
-P list Possible devices
produces different
output when you are root.
- make devices. e.g.
To make a tty:
# Script to add a tty. Options that need amending are:
# -l name of tty to be created - e.g '-l tty600' wil create
# a tty called 'tty600'
# -p RAN name
# -w Port number on RAN
# -a Attributes (e.g. to set up auto login, etc.)
mkdev -c tty -t 'tty' -s 'rs232' -l tty433 -p sa2 -w 2 -a term='wyse50' -a forcedcd='enable' -a login='enable' -a speed='19200'
e.g. To create a printer (raw device):
mkdev -c printer -t 'osp' -s 'rs232' -p 'sa3' -w '10' -l label2 -a xon='yes' -a dtr='no' -a col=500
It is highly recommended that you make and change devices using smit
# Script to add a tty. Options that need amending are:
# -l name of tty to be created - e.g '-l tty600' wil create
# a tty called 'tty600'
# -p RAN name
# -w Port number on RAN
# -a Attributes (e.g. to set up auto login, etc.)
mkdev -c tty -t 'tty' -s 'rs232' -l tty433 -p sa2 -w 2 -a term='wyse50' -a forcedcd='enable' -a login='enable' -a speed='19200'
e.g. To create a printer (raw device):
mkdev -c printer -t 'osp' -s 'rs232' -p 'sa3' -w '10' -l label2 -a xon='yes' -a dtr='no' -a col=500
It is highly recommended that you make and change devices using smit
- c compiler, use
with
·
-o <object> to specify a target
instead of a.out
·
-O optimise
·
-w or -W all warning flags.
- shutdown the system
so that it may be switched off. Rather obviously, this may only be run by root.
Options:
·
-f shuts the system down immediately
(rather than waiting for a minute)
·
-R reboot the system immediately after
halt
- show the current
revision of the operating system.
- end current shell
process. If you log in, then type this command, it will return you to login. ^D
(control-D) and logout (in some shells) does the same.
- login to a remote
machine, e.g.
$ rlogin hollandrs # log in to machine called hollandrs
Useful with -l option to specify username - e.g.
$ rlogin cityrs -l ismsdev # log in to machine cityrs as user ismsdev For further info about trust network see .rhosts file and /etc/resolv.conf (I think).
$ rlogin hollandrs # log in to machine called hollandrs
Useful with -l option to specify username - e.g.
$ rlogin cityrs -l ismsdev # log in to machine cityrs as user ismsdev For further info about trust network see .rhosts file and /etc/resolv.conf (I think).
- very similar to
rlogin except that it is more flexible (just type telnet with no arguments and
then '?' to see the options). Useful because you can specify a telnet to a
different port.
- File Transfer
Protocol - a quick and easy method for transferring files between machines. The
.netrc file in your $HOME directory holds initial commands. type ftp without
arguments and then '?' to see options)
- Remote copy. Copies
a file from one unix box to another, as long as they trust each other (see
.rhosts file or /etc/resolv.conf I think). Options
·
-f (to force the copy to occur)
·
-r (to recursively copy a directory)
·
-p (to attempt to preserve permissions
when copying)
su - <loginname>
- switch user, option
'-' means that the users .profile is run, without option you merely assume the
id and permissions of the user, without (for example) changing PATH and DBPATH,
e.g.
$ su - root # become root
$ su root # gain permissions of root but don't change the current environment variables
$ su - vlink # switch to user vlink
If you are root, you may su to any other user without being prompted for a password. su without arguments is the same as 'su root'. Note that the 'su' option is not available on all UNIX machines as it can crash some of them.
$ su - root # become root
$ su root # gain permissions of root but don't change the current environment variables
$ su - vlink # switch to user vlink
If you are root, you may su to any other user without being prompted for a password. su without arguments is the same as 'su root'. Note that the 'su' option is not available on all UNIX machines as it can crash some of them.
ping <hostname>
- check that
<hostname> is alive and well (do not expect an immediate response from a
machine that is linked over an ISDN line). Firewalls often block ping packets
after the Ping of Death so quite often
you'll find you can't ping internet sites either. Options include:
·
-q ping quietly
·
-i<no> wait no of seconds between
each packet sending. The default is 1 second. If you are using ping to keep an
ISDN line up then using something like $ ping -i 5 -q
hollandrs is ideal.
·
-f Never use this! Sends as many
packets as it possibly can as fast as possible, used for network debugging and
is likely to slow networks horribly when used. Known as 'flood' pinging.
·
-c <no> send no of packets before
giving up
To check that your
machine can ping, try pinging 127.0.0.1 - this acts as a feedback loop,
checking the network card's ability to ping.
rsh <hostname>
<commands>
- remote shell - e.g.
$ rsh altos more /tmp/chk # will run the command more the file /tmp/chk on the machine called altos. Useful in pipes for example. rsh on its own will execute a login. Use option '-l' to specify logon name. You can also use rcmd and remsh on other flavours of unix.
$ rsh altos more /tmp/chk # will run the command more the file /tmp/chk on the machine called altos. Useful in pipes for example. rsh on its own will execute a login. Use option '-l' to specify logon name. You can also use rcmd and remsh on other flavours of unix.
host <ip address>
- lookup the ip
address in the /etc/hosts file and give its name
dd if=<filename or
device> of=<filename or device> bs=<Block Size> conv=sync
- direct (and I mean
DIRECT) copy, normally to tape. Archaic syntax and very rarely used. flags:
·
if - input filename or device
·
of - output filename
·
bs - block size
·
conv - ??
e.g. To write a file
to tape use
$ dd if=/etc/hosts of=/dev/rmt0 bs=1024 conv=sync # write hosts file to tape using dd
$ dd if=/etc/hosts of=/dev/rmt0 bs=1024 conv=sync # write hosts file to tape using dd
stands for copy
in-out, and is extremely powerful if you can cope with the innumerable flags
that you have to use(!)
$ cpio -iBcvumd "etc/hosts" </dev/rmt0 # Grab /etc/hosts file from tape
$ find /etc -print | cpio -oBcv >/dev/rmt0 # Write the contents of the /etc directory to tape
$ find /etc -print | cpio -pdumv /usr2/etcbackup/ # copy directory /etc to /usr2/etcbackup and retain all permissions.
meaning of the flags:
$ cpio -iBcvumd "etc/hosts" </dev/rmt0 # Grab /etc/hosts file from tape
$ find /etc -print | cpio -oBcv >/dev/rmt0 # Write the contents of the /etc directory to tape
$ find /etc -print | cpio -pdumv /usr2/etcbackup/ # copy directory /etc to /usr2/etcbackup and retain all permissions.
meaning of the flags:
·
i - input
·
o - output
·
B - Block size of 5120 bytes
·
c - read/write header info
·
v - list file names
·
u - unconditional copy - overwrites
existing file.
·
m - keep modification dates
·
d - creates directories as needed.
·
t - generate listing of what is on the
tape.
·
p - preserve permissions.
tapeutil -f <devicename> <commands>
- A program which
came with the tape library to control it's working. Called without arguments
gives a menu. Is useful for doing things like moving tapes from the slot to the
drive. e.g.
$ tapeutil -f /dev/smc0 move -s 10 -d 23 # which moves the tape in slot 10 to the drive (obviously, this will depend on your own individual tape library, may I suggest the manual?).
$ tapeutil -f /dev/smc0 move -s 10 -d 23 # which moves the tape in slot 10 to the drive (obviously, this will depend on your own individual tape library, may I suggest the manual?).
doswrite -a <unix file> <dos file>
- copy unixfile to
rs6000's floppy disk drive in DOS format. -a option expands certain characters,
for certain ascii conversions.
dosdir <directory>
- show list of files
on a dos floppy disk. Useful with option -l (long format). Like dos command
'dir'
dosread -a <DOS file>
<unix file>
- copy dos file in
floppy disk drive to unix - if UNIXFILE is omitted, it outputs to the screen.
dosdel <DOS file>
- delete dos file on
floppy disk.
- format dos floppy
disk (High Density)
- Read/Write stuff to
archive.
tar cvf /dev/rmt0 <filenames> # will write files to tape
tar xvf /dev/rmt0 will read files from tape
tar tvf /dev/rmt0 will give a listing of what's on the tape. If you're using an archive file then replace /dev/rmt0 in the examples above with the name of the archive file.
tar cvf /dev/rmt0 <filenames> # will write files to tape
tar xvf /dev/rmt0 will read files from tape
tar tvf /dev/rmt0 will give a listing of what's on the tape. If you're using an archive file then replace /dev/rmt0 in the examples above with the name of the archive file.
- a command mainly
used in shell scripts. Examples:
$ echo "Hello" # will print Hello on your screen
$ echo "Hello" > /dev/tty616 # will print Hello on someone elses screen (warning - can crash their screen!)
$ echo $DESTF10 # will print the value of the environment variable DESTF10
$ echo "\033Fdemo demo" # will echo demo to the status bar at the top of a wyse terminal
See also file shellscripts
$ echo "Hello" # will print Hello on your screen
$ echo "Hello" > /dev/tty616 # will print Hello on someone elses screen (warning - can crash their screen!)
$ echo $DESTF10 # will print the value of the environment variable DESTF10
$ echo "\033Fdemo demo" # will echo demo to the status bar at the top of a wyse terminal
See also file shellscripts
- will read text from
standard input and place it in the variable name specified. See file
shellscripts
- waits until the
user presses return before carrying on (writes what is typed to standard
output). If used in a crontab/at job this instruction is ignored. See file
shellscripts
talk <user>
- set up an
interactive communication dialogue box between two users. Looks good but isn't
really that useful.
write <user>
- writes a message to
someone elses screen. Try typing 'write root'
and then type a message, finishing with control-D.
banner <message>
- writes
<message> in huge letters across your screen! (max: 10 chars per word)
wall <message>
- send a message to
all people on a system. Can only be executed by root (I think).
tput <argument>
- tty type
independent attribute setting (requires TERM variable and TERMCAP to be set). I
only know these few bits:
·
tput cnorm - turns the screen cursor on
·
tput civis - turns the screen cursor
off
·
tput clear - clears the screen
·
tput smso - turns all new text to bold
·
tput rmso - turns all bold text off
tee (-a)
<filename>
- command used in
pipes to take a copy of the standard output. e.g.
$ ls | tee /tmp/x # would output ls normally and put a copy in /tmp/x. The option '-a' is used to append rather than replace files.
$ ls | tee /tmp/x # would output ls normally and put a copy in /tmp/x. The option '-a' is used to append rather than replace files.
SCCS
Overview
The source code control system allows versions of a program to be stored in a special file, so that any version may be retrieved. There are a few commands involved (not all of them listed here). All source code files start with 's.'
The source code control system allows versions of a program to be stored in a special file, so that any version may be retrieved. There are a few commands involved (not all of them listed here). All source code files start with 's.'
get -r<revision>
<source code file>
- get a program out
of source code to read only. Missing out the -r flag gets the most recent
version. e.g.
$ get $SCUK/s.parser.c # extracts file parser.c from source code file $SCUK/s.parser.c as read only. See get -e for editing.
$ get $SCUK/s.parser.c # extracts file parser.c from source code file $SCUK/s.parser.c as read only. See get -e for editing.
get -e <source code file>
- get a piece of code
out for edit, so that the code may be modified and a new version created using
'delta'. e.g.
$ get -e $SCUK/s.parser.c # extracts file parser.c from source code file $SCUK/s.parser.c for editing. See get for read-only.
$ get -e $SCUK/s.parser.c # extracts file parser.c from source code file $SCUK/s.parser.c for editing. See get for read-only.
delta <source code
file>
- you must be in the
directory with the modified piece of code when you execute this command. This
adds the latest version to the source code file. e.g.
$ delta $SCUK/s.parser.c # writes file parser.c to the source code file $SCUK/s.parser.c . See get -e for information on how to extract the file from source code.
$ delta $SCUK/s.parser.c # writes file parser.c to the source code file $SCUK/s.parser.c . See get -e for information on how to extract the file from source code.
prs <source code
file>
- show
comments/details on source code file.
admin -r <revision
no> -i <program> <source code file>
- create a new source
code file with progam. -r specifies the initial revision of the program and may
be missed out (default is 1.1 I think). Must be spaced correctly! admin is also
used for sccs administration, but it gets to fear and loathing time pretty fast.
e.g.
admin -iparser.c $SCUK/s.parser.c # creates a new source code file called $SCUK/s.parser.c from the file parser.c
admin -iparser.c $SCUK/s.parser.c # creates a new source code file called $SCUK/s.parser.c from the file parser.c
unget <source code
file>
strip <binary compiled
file>
- Removes all linking
information within a compiled program - basically a way of cutting down the
size of an executable.
yes <word>
- yes outputs the
word 'yes' as fast as its' little legs can go. Never called on it's own. Always
used in pipes. For example:
$ yes | rm *.o # would confirm 'yes' whenever rm prompts for confirmation. You can also use it to output a different word e.g.
$ yes please # would output 'please' to the screen until you kill it (prob. immediately).
$ yes | rm *.o # would confirm 'yes' whenever rm prompts for confirmation. You can also use it to output a different word e.g.
$ yes please # would output 'please' to the screen until you kill it (prob. immediately).
Are all held on a separate page now. Commands
covered are export,if,for, shift, test, while, case, and a few others.
sed '<pattern>'
- used by myself for
quick substitutions when tr doesn't seem to be
doing its job properly. The syntax of the pattern is similar to vi ex command line. E.g.
To substitute all spaces with colon symbols the command is
sed 's/ /:/g' file1 # substitute all occurrences of spaces with colons in file1 and output to stdout.
sed 's/ /:/g' file1 # substitute all occurrences of spaces with colons in file1 and output to stdout.
Comment me if you find this post is useful also let me know if you need any new topics.
No comments:
Post a Comment