script
make typescript of terminal session
see also :
scriptreplay
Synopsis
script [-a]
[-c command] [-e]
[-f] [-q]
[-t[=file]] [-V]
[-h] [file]
add an example, a script, a trick and tips
examples
source
Create a logoff script/task for Linux
The C-shell, a.k.a. csh, has the .logout functionality, and Bash
(the more current default) has .bash_logout, but I don't remember
any other shells (ksh, sh, etc) with a similar concept.
source
How do perform commands in another folder, without repeating the folder path?
Run the operation in a subshell.
( cd /folder1/folder2/folder3 && mv file.txt file-2013.txt )
The change of working directory won't be propagated to the parent
shell.
source
How to execute a command whenever a file changes?
A little more on the programming side, but you want something
like inotify. There are implementations in many
languages, such as jnotify and pyinotify.
This library allows you to monitor single files or entire
directories, and returns events when an action is discovered. The
information returned includes the file name, the action (create,
modify, rename, delete) and the file path, among other useful
information.
source
What is the difference between executing a bash script and sourcing a bash script?
Sourcing you get all the extra variables defined in the
script.
So if you have configs or function definitions you should source
and not execute. Executions are independent from the parents
environment.
source
Looping Through Subdirectories and Running a Command in Each
for dir in ~/projects/git/*; do (cd "$dir" && git pull); done
source
How to set a Linux Ditribution to self-destruct (to wipe everything from the system partition) via a script
To destroy everything seems to be a little overkill, how about to
just remove/unstall your program.
rm -rf /path/to/your/program/
Or how about you implement a normal licensing server that the
program must contact before it can start?
Update: As a open question, do you plan to
destroy the users data as well as your program? Or are the users
data stored elsewhere?
And maybe the user should get some kind of nagware notice that
you plan destroy everything! Something like
-"This software will self destruct if you don't pay more money,
you have X days left."
As a user I would be really upset if you just destroyed something
in my computer without even telling me that this was about to
happen (so I at least got some chance of affecting the outcome).
It is kind of bad for your company if all your paying costumers
would end up hating you.
source
Multiple standard input? How?
<(...)
does process substitution
in bash. The output of the process in the parens is sent to an
additional file descriptor beyond the normal 3, and a filename is
returned corresponding to that file descriptor. In this way the
output of a command can be treated as a filename to be passed to
another command.
source
Can I make a script always execute as root?
Be really careful: scripts combined with setuid are
dangerous!
First, please have a look on this
question/answers, especially on this answer and
security warning.
If you still want to execute your script with setuid
set, then you can write a short C program as wrapper and set the
setuid
bit on the compiled binary.
Wrapper example:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Another solution using sudo
(mentioned
here):
-
As root, prevent write (and maybe other) access to your
script:
chown root /absolute/path/to/your/script.sh
chmod 700 /absolute/path/to/your/script.sh
-
Verify that noone except root can replace the
script, e.g. by modifying the access rights of the
parent folder:
chown root /absolute/path/to/your/
chmod 755 /absolute/path/to/your/
-
Modify sudo access rights in /etc/sudoers
with
visudo
:
ALL ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
More details about the settings (e.g. restricting access to
specific users or groups) can be found in the sudoers
manpage.
Afterwards, all users can run the script as root without
password:
sudo /absolute/path/to/your/script.sh
This is similar to using the wrapper/setuid solution above.
source
How to extract text from pdf in script on Linux?
pdftotext
that comes with poppler will try to
extract any text found in the PDF.
source
Where should I put system-wide scripts in *nix system?
Well, your tags include the Filesystem Hierarchy Standard so that should give
you some guidance. I would recommend /usr/local/bin
.
description
script makes a typescript
of everything printed on your terminal. It is useful for
students who need a hardcopy record of an interactive
session as proof of an assignment, as the typescript file
can be printed out later with lpr(1).
If the argument
file is given, script saves all dialogue in
file. If no file name is given, the typescript is
saved in the file typescript.
Options:
-a,
--append
Append the output to
file or typescript, retaining the prior
contents.
-c,
--command command
Run the command rather
than an interactive shell. This makes it easy for a script
to capture the output of a program that behaves differently
when its stdout is not a tty.
-e,
--return
Return the exit code of the
child process. Uses the same format as bash termination on
signal termination exit code is 128+n.
-f,
--flush
Flush output after each write.
This is nice for telecooperation: one person does
’mkfifo foo; script -f foo’, and another can
supervise real-time what is being done using ’cat
foo’.
--force
Allow the default output
destination, i.e. the typescript file, to be a hard or
symbolic link. The command will follow a symbolic link.
-q,
--quiet
Be quiet.
-t,
--timing[=file]
Output timing data to standard
error, or to file when given. This data contains two
fields, separated by a space. The first field indicates how
much time elapsed since the previous output. The second
field indicates how many characters were output this time.
This information can be used to replay typescripts with
realistic typing and output delays.
-V,
--version
Output version information and
exit.
-h,
--help
Output help and exit.
The script ends
when the forked shell exits (a control-D to exit the
Bourne shell (sh(1)), and exit, logout or
control-d (if ignoreeof is not set) for the
C-shell, csh(1)).
Certain
interactive commands, such as vi(1), create garbage in the
typescript file. Script works best with commands that
do not manipulate the screen, the results are meant to
emulate a hardcopy terminal.
availability
The script command is part of the util-linux package and is
available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
util-linux February 2011 util-linux
environment
The following environment variable is utilized by script:
SHELL
If the variable SHELL exists, the shell forked by script
will be that shell. If SHELL is not set, the Bourne shell is
assumed. (Most shells set this variable automatically).
c-
--return
Return the exit code of the child process. Uses the same format
as bash termination on signal termination exit code is 128+n.
f-
--flush
Flush output after each write. This is nice for telecooperation:
one person does ’mkfifo foo; script -f foo’, and another can
supervise real-time what is being done using ’cat foo’.
h-
--help
Output help and exit.
The script ends when the forked shell exits (a control-D
to exit the Bourne shell (sh(1)), and exit, logout
or control-d (if ignoreeof is not set) for the
C-shell, csh(1)).
Certain interactive commands, such as vi(1), create garbage in
the typescript file. Script works best with commands that
do not manipulate the screen, the results are meant to emulate a
hardcopy terminal.
t-
--version
Output version information and exit.
bugs
Script places
everything in the log file, including linefeeds and
backspaces. This is not what the naive user expects.
history
The script command
appeared in 3.0BSD.
see also
csh (for the history
mechanism), scriptreplay .