We've studied lots of ways to manipulate files, but not very many ways for creating them. For now we will focus on the creation and editing of text files; while the majority of the data on a modern computer is not text, the majority of the files likely are.
Your shell has the ability to redirect command output into a file
(overwriting it!) using the syntax COMMAND \> FILE:
# print "hi", then prompt
$ echo hi
hi
$
# print "hi" but into a file
$ echo hi > testfile
$ ls testfile
testfile
$ cat testfile
hi
$ echo bye > testfile
$ cat testfile
bye
$
If you use two angle brackets, COMMAND \>\> FILE, the file will be
appended to:
$ echo hi > testfile
$ echo bye >> testfile
$ cat testfile
hi
bye
The cat command, without arguments, simply takes user input and
duplicates it (type Control+D to end input):
# type after hitting [ENTER]
$ cat
the first copy is me typing
the first copy is me typing
the second copy is produced by "cat"
the second copy is produced by "cat"
[CTRL-D]
$
You can use this to make multi-line files without typing echo for
each line:
$ cat > my-poem
There once was a man from Nantucket.
He liked to live in a bucket.
I don't remember the rest.
[CTRL-D]
$ cat my-poem
There once was a man from Nantucket.
He liked to live in a bucket.
I don't remember the rest.
$
There are a number of programs to help with editing files.
eded is the standard editor. Be careful about using ed. I don't
use ed. (I sort-of know how.) If you accidentally use ed, type
q<RETURN> to exit.
nanoThe nano editor is considered to be very user-friendly; it is our
first example of a terminal, but not command-line, interface.
Such systems became popular when screens and synchronous interfaces
became practical.
You start nano by running nano [file]. The commands nano
responds to are all of the form "Control+"; they are displayed
^<KEY>. For example, ^X Exit means "press Control+X to exit". You
use the arrow keys to navigate.
emacs and vimMore sophisticated editors are emacs, a highly extensible modeless
editor written in a variant of LISP, and vim, a highly extensible
modal editor. I don't really use emacs, but there is a lot of
material available online.
vim is a modal text editor; here "modal" means that vim has
different interaction paradigms ("modes"). The default mode is called
"normal", and each button pressed is interpreted as part of a command.
Among several others, normal mode has a simple grammar which can allow
you to express otherwise complex ideas very elegantly.
Exercise: read the vim normal mode grammar.
vim also has a reasonably sophisticated plugin system; for example,
my web browser and mail client are plugins for vim. vim can be
used for spreadsheets, pdf creation, website authoring, programming in
most languages, etc. Plugins can also extend vocabularies with new
verbs, nouns, and prepositions.