Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

GNU/Linux

RedHat 5.2

(Apollo)

sash(8)


SASH

SASH

NAME
SYNOPSYS
DESCRIPTION
OPTIONS
WARNINGS
AUTHOR

NAME

sash − stand-alone shell with built-in commands

SYNOPSYS

sash

DESCRIPTION

The sash program is a stand-alone shell which is useful for recovering from certain types of system failures. In particular, it was created in order to cope with the problem of missing shared libraries. You can also use sash to safely upgrade to new versions of the shared libraries.

Sash can execute external programs, as in any shell. There are no restrictions on these commands, as the standard shell is used to execute them if there are any meta-characters in the command.

More importantly, however, is that many of the standard system commands are built-in to sash. These built-in commands are:

-chgrp, -chmod, -chown, -cmp, -cp, -dd, -echo,
-ed, -grep, -gunzip, -gzip, -kill, -ln, -ls, -mkdir,
-mknod, -more, -mount, -mv, -printenv, -pwd, -rm,
-rmdir, -sync, -tar, -touch, -umount, -where

These commands are generally similar to the standard programs with similar names. However, they are simpler and cruder than the external programs, and so many of the options are not implemented. The restrictions for each built-in command are described later.

The built-in commands which correspond to external programs begin with a dash character in order to distinguish them from the external programs. So typing "ls", for example, will attempt to run the real ls program. If "-ls" is typed, then the built-in command which mimics ls is called.

For the built-in commands, filenames are expanded so that asterisks, question marks, and characters inside of square brackets are recognised and are expanded. However, no other command line processing is performed. This includes quoting of arguments, specifying of file redirection, and the specifying of a pipeline.

If an external program is non-existant or fails to run correctly, then the "alias" built-in command may be used to redefine the standard command so that it automatically runs the built-in command instead. For example, the command "alias ls -ls" redefines "ls" to run the built-in command. This saves you the pain of having to remember to type the leading dash all of the time.

The "help" command will list all of the built-in commands in sash . If an argument is given, it will list only those built-in commands which contain the given argument as a sub-string. Each built-in command is described below in more detail.
alias [name [command]]

If name and command are provided, this defines an alias for a command with the specified name, which executes the specified command, with possible arguments. If just name is provided, then the definition of the specified command alias is displayed. If nothing is provided, then the definitions of all aliases are displayed. When defining an alias, wildcards are not expanded.

cd [dirname]

If dirname is provided, then the current directory is changed to the dirname. If dirname is absent, then the current directory is changed to the user’s home directory (value of the $HOME environment variable).

-chgrp gid filename ...

Change the group id for the specified list of files. The gid can either be a group name, or a decimal value.

-chmod mode filename ...

Change the mode of the specified list of files. The mode argument can only be an octal value.

-chown uid filename ...

Change the owner id for the specified list of files. The uid can either be a user name, or a decimal value.

-cmp filename1 filename2

Determines whether or not the specified filenames have identical data. This says that the files are links to each other, are different sizes, differ at a particular byte number, or are identical.

-cp srcname ... destname

Copies one or more files from the srcname to the destname. If more than one srcname is given, or if destname is a directory, then all the srcnames are copied into the destname directory with the same names as the srcnames.

-dd if=name of=name [bs=n] [count=n] [skip=n] [seek=n]

Copy data from one file to another with the specified parameters. The if and of arguments must be provided, so stdin and stdout cannot be specified. The bs argument is the block size, and is a numeric value (which defaults to 512 bytes). Count is the number of blocks to be copied (which defaults to end of file for the input file). Skip is the number of blocks to ignore before copying (seek is used if possible, and the default is 0). Seek is the number of blocks to seek in the output file before writing (and defaults to 0). Any of the numeric decimal values can have one or more trailing letters from the set ’kbw’, which multiplies the value by 1024, 512, and 2 respectively. The command reports the number of full blocks read and written, and whether or not any partial block was read or written.

-echo [args] ...

Echo the arguments to the -echo command. Wildcards are expanded, so this is convenient to get a quick list of filenames in a directory. The output is always terminated with a newline.

-ed [filename]

Edit the specified file using line-mode commands. The following ed commands are provided: = c r w i a d p l s f k z and q. Line numbers can be constants, ".", "$", "’x", /string/ and simple arithmetic combinations of these. The substitute command and the search expression can only use literal strings. There are some small differences in the way that some commands behave.

exec filename [args]

Execute the specified program with the specified arguments. This replaces sash completely by the executed program.

exit

Quit from sash.

-grep [-in] word filename ...

Display lines of the specified files which contain the given word. If only one filename is given, then only the matching lines are printed. If multiple filenames are given, then the filenames are printed along with the matching lines. Word must be a single word, (ie, not a regular expression). If -i is given, then case is ignored when doing the search. If -n is given, then the line numbers of the matching lines are also printed.

-gunzip inputfilename ... [-o outputpath]

Uncompress one or more files that had been compressed using the gzip or compress algorithms. If the -o option is not given, then each of the input file names must have one of the extensions ".gz", ".tgz", or ".Z", and those files will be replaced by the uncompressed versions of those files. The original files will be deleted after the output files have been successfully created. The uncompressed versions of the files have the same names as the original file names, except for a simple modification of their extensions. If an extension is ".tgz", then the extension is replaced by ".tar". Otherwise, the ".gz" or ".Z" extension is removed.

If the -o option is given, then the input files will not be deleted, and the uncompressed versions of the files will be created as specified by outputpath. If the output path is a directory, then the uncompressed versions of the input files will be placed in that directory with their file names modified as described above, or with the same name if the input file name does not have one of the special extensions. If the output path is not a directory, then only one input file is allowed, and the uncompressed version of that input file is created as the output path exactly as specified.

-gzip inputfilename ... [-o outputpath]

Compresses one or more files using the gzip algorithm. If the -o option is not given, then each of the input file names will be replaced by the compressed versions of those files, The original files will be deleted after the output files have been successfully created. The compressed versions of the files have the same names as the original file names, except for a simple modification of the extensions. If an extension is ".tar", then the extension is replaced by ".tgz". Otherwise, the ".gz" extension is added.

If the -o option is given, then the input files will not be deleted, and the compressed versions of the files will be created as specified by outputpath. If the output path is a directory, then the compressed versions of the input files will be placed in that directory with their file names modified as described above. If the output path is not a directory, then only one input file is allowed, and the compressed version of that input file is created as the output path exactly as specified.

help

Displays a list of built-in commands.

-kill [-signal] pid ...

Sends the specified signal to the specified list of processes. Signal is a numberic value, or one of the special values HUP, INT, QUIT, or KILL.

-ln [-s] srcname ... destname

Links one or more files from the srcname to the specified destname. If there are multiple srcnames, or destname is a directory, then the link is put in the destname directory with the same name as the source name. The default links are hard links. Using -s makes symbolic links. For symbolic links, only one srcname can be specified.

-ls [-lid] filename ...

Display information about the specified filesnames, which may be directories. The normal listing is simply a list of filenames, one per line. The options available are -l, -i, and -d. The -l option produces a long listing given the normal ’ls’ information. The -i option also displays the inode numbers of the files. The -d option displays information about a directory, instead of the files within it.

-mkdir dirname ...

Creates the specified directories. They are created with the default permissions.

-mknod filename type major minor

Creates a special device node, either a character file or a block file. Filename is the name of the node. Type is either ’c’ or ’d’. Major is the major device number. Minor is the minor device number. Both of these numbers are decimal.

-more filename ...

Type out the contents of the specified filenames, one page at a time. For each page displayed, you can type ’n’ and a return to go to the next file, ’q’ and a return to quit the command completely, or just a return to go to the next page. The environment variables LINES and COLS can be used to set the page size.

-mount [-t type] [-r] [-m] devname dirname

Mount a filesystem on a directory name. The -t option specifies the type of filesystem being mounted, and defaults to "ext2". The -r option indicates to mount the filesystem read-only. The -m option indicates to remount an already mounted filesystem.

-mv srcname ... destname

Moves one or more files from the srcname to the destname. If multiple srcnames are given, or if destname is a directory, then the srcnames are copied into the destination directory with the same names as the srcnames. Renames are attempted first, but if this fails because of the files being on different filesystems, then a copies and deletes are done instead.

-printenv [name]

If name is not given, this prints out the values of all the current environment variables. If name is given, then only that environment variable value is printed.

prompt [word] ...

Sets the prompt string that is displayed before reading of a command. A space is always added to the specified prompt.

-pwd

Prints the current working directory.

quit

Exits from sash.

-rm filename ...

Removes one or more files.

-rmdir dirname ...

Removes one or more directories. The directories must be empty for this to be successful.

setenv name value

Set the value of an environment variable.

source filename

Execute commands which are contained in the specified filename.

-sync

Do a "sync" system call to force dirty blocks out to the disk.

-tar [xtv]f devname [filename] ...

List or restore files from a tar archive. This command can only read tar files, not create them. The available options are xtvf. The f option must be specified, and accepts a device or file name argument which contains the tar archive. If no filename is given, all files in the archive are listed or extracted. Otherwise, only those files starting with the specified filenames are done. Leading slashes in the tar archive filenames are removed.

-touch filename ...

Updates the modify times of the specifed files. If a file does not exist, then it will be created with the default protection.

umask [mask]

If mask is given, sets the "umask" value used for initializing the permissions of newly created files. If mask is not given, then the current umask value is printed. The mask is an octal value.

-umount filename

Unmounts a file system. The filename can either be the device name which is mounted, or else the directory name which the file system is mounted onto.

unalias name

Remove the definition for the specified alias.

-where program

Prints out all of paths defined by the PATH environment variable where the specified program exists. If the program exists but cannot be executed, then the reason is also printed.

OPTIONS

There are several command line options to sash. The -c option executes the next argument as a command (including embedded spaces to separate the arguments of the command), and then exits.

The -p option takes the next argument as the prompt string to be used when prompting for commands.

The -q option makes sash quiet, which simply means that it doesn’t print its introduction line when it starts.

WARNINGS

Sash should obviously be linked statically, otherwise it’s purpose is lost.

The system is still vulnerable to unrunnable shared versions of init and sh.

Several other system commands might be necessary for system recovery, but aren’t built-in to sash.

AUTHOR

David I. Bell
dbell@canb.auug.org.au
March 8, 1998



sash(8)