aboutsummaryrefslogtreecommitdiff
path: root/bash/bashrc.d
diff options
context:
space:
mode:
Diffstat (limited to 'bash/bashrc.d')
-rw-r--r--bash/bashrc.d/scp.bash9
1 files changed, 9 insertions, 0 deletions
diff --git a/bash/bashrc.d/scp.bash b/bash/bashrc.d/scp.bash
new file mode 100644
index 00000000..3d5fc1dd
--- /dev/null
+++ b/bash/bashrc.d/scp.bash
@@ -0,0 +1,9 @@
+# Wrap scp to check for missing colons
+scp() {
+ if (($# >= 2)) && [[ $* != *:* ]] ; then
+ printf 'scp: Missing colon, probably an error\n' >&2
+ return 1
+ fi
+ command scp "$@"
+}
+
light .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
# Search for alphanumeric words in a file
BEGIN {

    # Name self
    self = "gwp"

    # Words are separated by any non-alphanumeric characters
    FS = "[^a-zA-Z0-9]+"

    # Nothing found yet
    found = 0

    # First argument is the word required; push its case downward so we can
    # match case-insensitively
    word = tolower(ARGV[1])

    # Blank the first argument so Awk doesn't try to read data from it as a
    # file
    ARGV[1] = ""

    # Bail out if we don't have a suitable word
    if (!length(word))
        fail("Need a single non-null alphanumeric string as a search word")
    if (word ~ FS)
        fail("Word contains non-alphanumeric characters; use grep(1)")
}

# Bailout function
function fail(msg) {
    stderr = "cat >&2"
    printf "%s: %s\n", self, msg | stderr
    close(stderr)
    exit(2)
}

# If there's more than one filename, precede the print of the current line with
# a filename, a colon, and a space, much like grep(1) does; otherwise just
# print it
function fnpr() {
    if (ARGC > 3)
        print FILENAME ":" OFS $0
    else
        print
}

# Iterate through the words on this line and if any of them match our word,
# print the line, and flag that we've found at least one word; once a single
# instance of the word is found, just print and continue on to the next line
{
    for (i = 1; i <= NF; i++) {
        if (tolower($i) == word) {
            found = 1
            fnpr()
            break
        }
    }
}

# Exit zero if we found at least one match, non-zero otherwise
END { exit(!found) }