Difference between revisions of "Bash"

From Briki
Jump to: navigation, search
 
(Remove 'Graph this data ...' footnote from logon message)
 
(7 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
== Changing IFS to line endings only ==
 +
<pre>
 +
OLDIFS=$IFS
 +
IFS=$'\x0a'
 +
</pre>
 +
or
 +
<pre>
 +
OLDIFS=$IFS
 +
IFS=$'\n'
 +
</pre>
 +
 +
== 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 ===
 +
{| border="1"
 +
!Designator!!Meaning
 +
|-
 +
|'''!!'''||The previous command.
 +
|-
 +
|'''!n'''||Command number '''n''' in the history list.
 +
|-
 +
|'''!-n'''||The '''n'''th 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 ===
 +
{| border="1"
 +
!Designator!!Meaning
 +
|-
 +
|'''n'''||The '''n'''th 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 ===
 +
 +
{| border="1"
 +
!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 ==
 
== Force autologout of root and other privileged account shells after inactivity ==
Add to /etc/profile:<pre>
+
Add to /etc/bash.bashrc (not /etc/profile, or it will only be set when running '''su -''' and not '''su'''):<pre>
 
if [ `id -u` -lt 500 ]; then
 
if [ `id -u` -lt 500 ]; then
 
     # Override console timeout for root and other system users
 
     # Override console timeout for root and other system users
Line 14: Line 89:
 
type declare > /dev/null 2>&1 && declare -r TMOUT
 
type declare > /dev/null 2>&1 && declare -r TMOUT
 
</pre>
 
</pre>
 +
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'''

Latest revision as of 14:06, 9 November 2012

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