blob: 92ec32beb0b8411ecd16ede59e2b0a24a6d31195 [file] [log] [blame]
% File src/library/utils/man/savehistory.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2013 R Core Team
% Distributed under GPL 2 or later
\name{savehistory}
\alias{loadhistory}
\alias{savehistory}
\alias{history}
\alias{timestamp}
\title{Load or Save or Display the Commands History}
\description{
Load or save or display the commands history.
}
\usage{
loadhistory(file = ".Rhistory")
savehistory(file = ".Rhistory")
history(max.show = 25, reverse = FALSE, pattern, \dots)
timestamp(stamp = date(),
prefix = "##------ ", suffix = " ------##",
quiet = FALSE)
}
\arguments{
\item{file}{The name of the file in which to save the history, or
from which to load it. The path is relative to the current
working directory.}
\item{max.show}{The maximum number of lines to show. \code{Inf} will
give all of the currently available history.}
\item{reverse}{logical. If true, the lines are shown in reverse
order. Note: this is not useful when there are continuation lines.}
\item{pattern}{A character string to be matched against the lines of
the history. When supplied, only \emph{unique} matching lines are shown.}
\item{\dots}{Arguments to be passed to \code{\link{grep}} when doing
the matching.}
\item{stamp}{A value or vector of values to be written into the history.}
\item{prefix}{A prefix to apply to each line.}
\item{suffix}{A suffix to apply to each line.}
\item{quiet}{If \code{TRUE}, suppress printing timestamp to the console.}
}
\details{
There are several history mechanisms available for the different \R
consoles, which work in similar but not identical ways. Notably,
there are different implementations for Unix and Windows.
\describe{
\item{Windows:}{
The functions described here work in \command{Rgui} and interactive
\command{Rterm} but not in batch use of \command{Rterm} nor in
embedded/DCOM versions.
}
\item{Unix-alikes:}{
The functions described here work under the
\command{readline} command-line interface but may not otherwise (for
example, in batch use or in an embedded application). Note that \R
can be built without \command{readline}.
\command{R.app}, the console on macOS, has a separate and largely
incompatible history mechanism, which by default uses a file
\file{.Rapp.history} and saves up to 250 entries. These functions are
not currently implemented there.
}
}
The (\command{readline} on Unix-alikes) history mechanism
is controlled by two environment variables: \env{R_HISTSIZE} controls
the number of lines that are saved (default 512), and \env{R_HISTFILE}
(default \file{.Rhistory}) sets the filename used for the
loading/saving of history if requested at the beginning/end of a
session (but not the default for
\code{loadhistory}/\code{savehistory}). There is no limit on the
number of lines of history retained during a session, so setting
\env{R_HISTSIZE} to a large value has no penalty unless a large file
is actually generated.
These environment variables are read at the time of saving, so can be
altered within a session by the use of \code{\link{Sys.setenv}}.
On Unix-alikes:
Note that \command{readline} history library saves files with permission
\code{0600}, that is with read/write permission for the user and not
even read permission for any other account.
The \code{timestamp} function writes a timestamp (or other message)
into the history and echos it to the console. On platforms that do not
support a history mechanism only the console message is printed.
}
\note{
If you want to save the history at the end of (almost) every
interactive session (even those in which you do not save the
workspace), you can put a call to \code{savehistory()} in
\code{\link{.Last}}. See the examples.
}
\examples{\dontrun{
## Save the history in the home directory: note that it is not
## (by default) read from there but from the current directory
.Last <- function()
if(interactive()) try(savehistory("~/.Rhistory"))
}}
\keyword{utilities}