X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc;h=4a6f67274a44f98b5be8b9b88b5e11fbf1327d6b;hb=3e5e60efe20de2e109ad48745a5dcee04d7417a1;hp=f0b57f8cc1558918fdd34ff410da566854024207;hpb=d67edcdca8795a4bca116aa532d02dda246a6f53;p=distro-setup diff --git a/brc b/brc index f0b57f8..4a6f672 100644 --- a/brc +++ b/brc @@ -1,6 +1,25 @@ #!/bin/bash -# Copyright (C) 2019 Ian Kelling -# SPDX-License-Identifier: AGPL-3.0-or-later +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # this gets sourced. shebang is just for file mode detection # Use source ~/.bashrc instead of doing bash -l when running a script @@ -296,6 +315,7 @@ export PROFILE_TASKS_TASK_OUTPUT_LIMIT=100 export LESS=RXij12 export SYSTEMD_LESS=$LESS + export NNN_COLORS=2136 export SL_FILES_DIR=/b/ds/sl/.iank @@ -859,14 +879,14 @@ _khfix-common() { fi ll ~/.ssh/known_hosts } -khfix-r() { # known hosts fix + root +khfix-r() { # known hosts fix without syncing to root user _khfix-common "$@" || return 1 ssh $1 : - rootsshsync } khfix() { _khfix-common "$@" || return 1 ssh $1 : + rootsshsync } # copy path into clipboard @@ -1652,9 +1672,9 @@ grr() { # grep recursive # Don't return 1 on nonmatch because this is meant to be # interactive, not in a conditional. if [[ ${#@} == 1 ]]; then - grep --exclude-dir='*.emacs.d' --exclude-dir='*.git' -riIP --color=auto "$@" . || [[ $? == 1 ]] + grep -E --exclude-dir='*.emacs.d' --exclude-dir='*.git' -riIP --color=auto "$@" . || [[ $? == 1 ]] else - grep --exclude-dir='*.emacs.d' --exclude-dir='*.git' -riIP --color=auto "$@" || [[ $? == 1 ]] + grep -E --exclude-dir='*.emacs.d' --exclude-dir='*.git' -riIP --color=auto "$@" || [[ $? == 1 ]] fi } ccomp grep gr grr @@ -2119,7 +2139,7 @@ pkx() { # package extract c "$(mktemp -d)" pkg=$1 # shellcheck disable=SC2012 - cached=$(ls -t /var/cache/apt/archives/${pkg}_* | tail -n1 2>/dev/null) ||: + cached=$(ls -t /var/cache/apt/archives/${pkg}_* 2>/dev/null | tail -n1 2>/dev/null) ||: if [[ $cached ]]; then m cp $cached . else @@ -2880,6 +2900,7 @@ nonet() { } m() { printf "%s\n" "$*"; "$@"; } +m2() { printf "%s\n" "$*" >&2; "$@"; } # update file. note: duplicated in mail-setup. # updates $ur u result to true or false @@ -3162,9 +3183,13 @@ if $use_color && type -p tput &>/dev/null; then # https://github.com/trapd00r/LS_COLORS # I would like if there was something similar for light. + # https://www.bigsoft.co.uk/blog/2008/04/11/configuring-ls_colors + # change the hard to read turqouise. + # defaults dircolors --print-database. + # the default bold green is too light. # this explains the codes: https://gist.github.com/thomd/7667642 - export LS_COLORS=ex=1 + export LS_COLORS="ex=1:ln=00;31" term_bold="$(tput bold)" term_red="$(tput setaf 1)" @@ -3218,6 +3243,16 @@ if [[ $- == *i* ]]; then # so I've thrown a bunch of things at the wall to speed it up. prompt-command() { local return=$? # this MUST COME FIRST + + # all usable colors: + # black + # green nonzero exit (pri 1) + # purple default + # purple bold + # red pwd different owner & group & not writable (pri 2) + # red bold pwd different owner & group & writable (pri 2) + # yellow + local ps_char ps_color unset IFS @@ -3225,22 +3260,21 @@ if [[ $- == *i* ]]; then history -a # save history fi - case $return in - 0) ps_color="$term_purple" - ps_char='\$' - ;; - *) ps_color="$term_green" - ps_char="$return \\$" - ;; - esac + ps_color="$term_purple" + ps_char='\$' if [[ ! -O . ]]; then # not owner if [[ -w . ]]; then # writable ps_color="$term_bold$term_red" else - ps_color="$term_bold$term_green" + ps_color="$term_red" fi fi + if [[ $return != 0 ]]; then + ps_color="$term_green" + ps_char="$return \\$" + fi + # faster than sourceing the file im guessing if [[ -e /dev/shm/iank-status && ! -e /tmp/quiet-status ]]; then eval "$(< /dev/shm/iank-status)"