Bash

From Briki
Jump to: navigation, search

Changing IFS to line endings only

OLDIFS=$IFS
IFS=$'\x0a'

or

OLDIFS=$IFS
IFS=$'\n'

History Manipulation

To repeat a previous command or subsection of a previous command, optionally performing some kind of modification to it, run event[:word][:modifier][:modifier]....

Event Designators

Designator Meaning
!! The previous command.
!n Command number n in the history list.
!-n The nth preceding command.
!string The most recent command line that started with string.
!?string[?] The most recent command that contained string. The last ? is optional.
!# The current command (as you have it typed so far).
!{event} The event is an event designator. The braces isolate event from the surrounding text. For example, !{-3}3 is the third most recently executed command followed by a 3.

Word Designators

Designator Meaning
n The nth word. Word 0 is normally the command name.
^ The first word (after the command name).
$ The last word.
m-n All words from word number m through word number n; m defaults to 0 if you omit it (0-n).
n* All words from word number n through the last word.
* All words except the command name. The same as 1*.
% The word matched by the most recent ?string? search.

Modifiers

Designator Meaning
e (extension) Removes all but the filename extension
h (head) Removes the last part of a pathname
p (print-not) Displays the command, but does not execute it
q (quote) Quotes the substitution to prevent further substitutions on it
r (root) Removes the filename extension
[g]s!old!new[!] (substitute) Substitutes new for old (eg. !!:0:s!ch!lm runs the first word of the previous command, substituting lm for ch in the string). The optional g replaces all occurrences of old rather than just the first one. The trailing ! is optional if the command is immediately followed by a RETURN.
t (tail) Removes all elements of a pathname except the last
x Like q but quotes each word in the substitution individually

Force autologout of root and other privileged account shells after inactivity

Add to /etc/bash.bashrc (not /etc/profile, or it will only be set when running su - and not su):
if [ `id -u` -lt 500 ]; then
    # Override console timeout for root and other system users
    TMOUT_ROOT=3600
    if [ -n "$TMOUT" ]; then
        if [ "$TMOUT" -eq "0" -o "$TMOUT" -gt "$TMOUT_ROOT" ]; then
            TMOUT=$TMOUT_ROOT
        fi
    else
        TMOUT=$TMOUT_ROOT
    fi
fi
type declare > /dev/null 2>&1 && declare -r TMOUT

You can probably get rid of the declare line at the bottom - this just ensures that TMOUT cannot subsequently be modified.

Remove 'Graph this data ...' footnote from logon message

Edit /usr/share/pyshared/landscape/sysinfo/landscapelink.py and comment out the 3 lines starting self._sysinfo.add_footnote