=head2 As an interactive shell
$ guestfish
-
+
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.
-
+
Type: 'help' for help with commands
'quit' to quit the shell
-
+
><fs> help
=head2 As a script interpreter
#!/usr/bin/guestfish -f
alloc /tmp/output.img 10M
run
- sfdisk /dev/sda 0 0 0 ,
+ part-disk /dev/sda mbr
mkfs ext2 /dev/sda1
=head2 Remote control
guestfish -i /dev/Guests/MyGuest
-You cannot use I<-a>, I<-m>, I<--listen> or I<--remote> in conjunction
-with this option, and options other than I<--ro> might not behave
-correctly.
+You cannot use I<-a>, I<-m>, I<--listen>, I<--remote> or I<--selinux>
+in conjunction with this option, and options other than I<--ro> might
+not behave correctly.
See also: L<virt-inspector(1)>.
This changes the C<-m> option so that mounts are done read-only
(see C<guestfs_mount_ro> in the L<guestfs(3)> manpage).
+=item B<--selinux>
+
+Enable SELinux support for the guest. See L<guestfs(3)/SELINUX>.
+
=item B<-v> | B<--verbose>
Enable very verbose messages. This is particularly useful if you find
rm '/"'
A few commands require a list of strings to be passed. For these, use
-a space-separated list, enclosed in quotes. For example:
+a whitespace-separated list, enclosed in quotes. Strings containing whitespace
+to be passed through must be enclosed in single quotes. A literal single quote
+must be escaped with a backslash.
vgcreate VG "/dev/sda1 /dev/sdb1"
+ command "/bin/echo 'foo bar'"
+ command "/bin/echo \'foo\'"
=head1 WILDCARDS AND GLOBBING
echo "|"
+=head1 HOME DIRECTORIES
+
+If a parameter starts with the character C<~> then the tilde may be
+expanded as a home directory path (either C<~> for the current user's
+home directory, or C<~user> for another user).
+
+Note that home directory expansion happens for users known I<on the
+host>, not in the guest filesystem.
+
+To use a literal argument which begins with a tilde, you have to quote
+it, eg:
+
+ echo "~"
+
+=head1 WINDOWS PATHS
+
+If a path is prefixed with C<win:> then you can use Windows-style
+paths (with some limitations). The following commands are equivalent:
+
+ file /WINDOWS/system32/config/system.LOG
+
+ file win:/windows/system32/config/system.log
+
+ file win:\windows\system32\config\system.log
+
+ file WIN:C:\Windows\SYSTEM32\conFIG\SYSTEM.LOG
+
+This syntax implicitly calls C<case-sensitive-path> (q.v.) so it also
+handles case insensitivity like Windows would. This only works in
+argument positions that expect a path.
+
=head1 EXIT ON ERROR BEHAVIOUR
By default, guestfish will ignore any errors when in interactive mode
guestfish --remote=$pid1 cmd
guestfish --remote=$pid2 cmd
-=head2 STANDARD OUTPUT DURING REMOTE CONTROL
-
-Because of limitations in the C<eval> statement, stdout from the
-listener is currently redirected to C</dev/null>.
-
-Stderr is unchanged.
-
=head2 REMOTE CONTROL DETAILS
Remote control happens over a Unix domain socket called
number of gigabytes
+=item C<nn>T or C<nn>TB
+
+number of terabytes
+
+=item C<nn>P or C<nn>PB
+
+number of petabytes
+
+=item C<nn>E or C<nn>EB
+
+number of exabytes
+
=item C<nn>sects
number of 512 byte sectors
this normally, because the handle is closed properly when guestfish
exits. However this is occasionally useful for testing.
+=head2 sparse
+
+ sparse filename size
+
+This creates an empty sparse file of the given size, and then adds
+so it can be further examined.
+
+In all respects it works the same as the C<alloc> command, except that
+the image file is allocated sparsely, which means that disk blocks are
+not assigned to the file until they are needed. Sparse disk files
+only use space when written to, but they are slower and there is a
+danger you could run out of real disk space during a write operation.
+
+For more advanced image creation, see L<qemu-img(1)> utility.
+
+Size can be specified (where C<nn> means a number):
+
+=over 4
+
+=item C<nn> or C<nn>K or C<nn>KB
+
+number of kilobytes, eg: C<1440> = standard 3.5in floppy
+
+=item C<nn>M or C<nn>MB
+
+number of megabytes
+
+=item C<nn>G or C<nn>GB
+
+number of gigabytes
+
+=item C<nn>T or C<nn>TB
+
+number of terabytes
+
+=item C<nn>P or C<nn>PB
+
+number of petabytes
+
+=item C<nn>E or C<nn>EB
+
+number of exabytes
+
+=item C<nn>sects
+
+number of 512 byte sectors
+
+=back
+
=head2 time
time command args...
the qemu which was found at compile time by the configure script is
used.
+=item LIBGUESTFS_TRACE
+
+Set C<LIBGUESTFS_TRACE=1> to enable command traces.
+
=item PAGER
The C<more> command uses C<$PAGER> as the pager. If not
set, it uses C<more>.
+=item TMPDIR
+
+Location of temporary directory, defaults to C</tmp>.
+
+If libguestfs was compiled to use the supermin appliance then each
+handle will require rather a large amount of space in this directory
+for short periods of time (~ 80 MB). You can use C<$TMPDIR> to
+configure another directory to use in case C</tmp> is not large
+enough.
+
=back
=head1 EXIT CODE
=head1 SEE ALSO
L<guestfs(3)>,
-L<http://libguestfs.org/>.
+L<http://libguestfs.org/>,
+L<virt-cat(1)>,
+L<virt-edit(1)>,
+L<virt-ls(1)>,
+L<virt-rescue(1)>,
+L<virt-tar(1)>.
=head1 AUTHORS