bsh: Duplicate source files and optimize

A step back... but hopefully so we can take a step forward?
This commit is contained in:
Geoffrey Frogeye 2023-11-23 22:39:33 +01:00
parent dcb8e62df2
commit 65d1594ec9
Signed by: geoffrey
GPG key ID: C72403E7F82E6AD8
6 changed files with 202 additions and 96 deletions

View file

@ -0,0 +1,53 @@
#!/usr/bin/env bash
# Geoffrey's trimmed and condensed shell configuration file,
# with an healthy and safe dose of aliases and config.
# Can be embedded to any server
# Completion for existing commands
alias ls='ls -h --color=auto'
alias mkdir='mkdir -v'
alias cp="cp -i"
alias mv="mv -iv"
alias free='free -h'
alias df='df -h'
# Advanced completions
# (not busybox compatible)
alias cp="cp -i --reflink=auto"
alias grep="grep --color=auto"
alias dd='dd status=progress'
alias rm='rm -v --one-file-system'
alias free='free -m'
alias diff='diff --color=auto'
alias dmesg='dmesg --ctime'
# Frequent mistakes
alias sl=ls
alias al=la
alias mdkir=mkdir
alias systemclt=systemctl
alias please=sudo
# Shortcuts for commonly used commands
alias ll="ls -l"
alias la="ls -la"
# alias s='sudo -s -E'
# Bash options
shopt -s expand_aliases
shopt -s histappend
HISTCONTROL=ignoreboth:erasedups
# Program configuration
export TIME_STYLE='+%Y-%m-%d %H:%M:%S'
export LESS=-R
export LESS_TERMCAP_mb=$'\E[1;31m'
export LESS_TERMCAP_md=$'\E[1;36m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_us=$'\E[1;32m'
export LESS_TERMCAP_ue=$'\E[0m'

View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Prefered programs environment variables
export PAGER=less
if [ -x "$(command -v nvim)" ]
then
export EDITOR=nvim
alias vi=nvim
elif [ -x "$(command -v vim)" ]
then
export EDITOR=vim
alias vi=vim
else
export EDITOR=vi
fi
# Prompt
if [[ $USER == 'root' ]]; then
col=31;
elif [[ $USER == 'geoffrey' ]]; then
col=32;
else
col=33;
fi
export PS1="\[\e]2;\u@\H \w\a\]\[\e[0;37m\][\[\e[0;${col}m\]\u\[\e[0;37m\]@\[\e[0;34m\]\h \[\e[0;36m\]\W\[\e[0;37m\]]\$\[\e[0m\] "

View file

@ -0,0 +1,50 @@
$include /etc/inputrc
set bell-style none
set colored-completion-prefix on
set colored-stats on
set completion-ignore-case on
set completion-query-items 200
set editing-mode vi
set history-preserve-point on
set history-size 10000
set horizontal-scroll-mode off
set mark-directories on
set mark-modified-lines off
set mark-symlinked-directories on
set match-hidden-files on
set menu-complete-display-prefix on
set page-completions on
set print-completions-horizontally off
set revert-all-at-newline off
set show-all-if-ambiguous on
set show-all-if-unmodified on
set show-mode-in-prompt on
set skip-completed-text on
set visible-stats off
$if mode=vi
# these are for vi-command mode
set keymap vi-command
"k": history-search-backward
"j": history-search-forward
"\e[A": history-search-backward
"\e[B": history-search-forward
Control-l: clear-screen
# these are for vi-insert mode
set keymap vi-insert
"jk": vi-movement-mode
"\e[A": history-search-backward
"\e[B": history-search-forward
Control-l: clear-screen
# Switch between thin cursor and thicc block depending on vi mode
$if term=linux
set vi-ins-mode-string \1\e[?0c\2
set vi-cmd-mode-string \1\e[?8c\2
$else
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
$endif
$endif

51
config/scripts/.bsh/vimrc Normal file
View file

@ -0,0 +1,51 @@
cmap w!! w !sudo tee > /dev/null %
filetype indent on
filetype on
filetype plugin on
imap jk <Esc>
let g:netrw_fastbrowse = 0
nmap <C-H> :bp<CR>
nmap <C-J> jjjjjjjjjjjjjjjjjjjjj
nmap <C-K> kkkkkkkkkkkkkkkkkkkkk
nmap <C-L> :bn<CR>
nmap <Enter> o<Esc>
nnoremap <Leader>s :%s/\<<C-r><C-w>\>/
set backspace=indent,eol,start
set cursorcolumn
set encoding=utf-8
set expandtab
set gdefault
set hidden
set hlsearch
set ignorecase
set incsearch
set lazyredraw
set list
set listchars=tab:╾╌,trail,extends:↦,precedes:↤,nbsp:_
set noerrorbells
set number
set ruler
set scrolloff=10
set shiftwidth=4
set showbreak=
set showcmd
set smartcase
set splitbelow
set tabstop=4
set title
set updatetime=250
set visualbell
set wildmenu
set wildmode=longest,list
set wrap
syntax enable
vmap <Enter> <Esc>
if has('nvim')
set inccommand=nosplit
set relativenumber
augroup every
autocmd!
au InsertEnter * set norelativenumber
au InsertLeave * set relativenumber
augroup END
endif

View file

@ -1,9 +1,10 @@
#!/usr/bin/env bash
# TODO Do not dupplicate trimmed.bash
# TODO More integrated with current config
CACHE_DIR="${XDG_CACHE_DIR:-$HOME/.cache}/bsh"
FOLDER_NAME="geoffrey"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
mkdir -p "$CACHE_DIR"
@ -12,14 +13,24 @@ then
# Preparation
WORK="${CACHE_DIR}/${FOLDER_NAME}"
DEST="/tmp/${FOLDER_NAME}"
rm -rf "$WORK" # DEBUG
mkdir "$WORK"
# Copying files
grep -o '^[^#]*' ~/.config/shell/trimmed.bash > "${WORK}/.bashrc"
grep -o '^[^#]*' ~/.config/inputrc > "${WORK}/.inputrc"
# grep -o '^[^"]*' ~/.config/vim/vimconfig.vim > "${WORK}/.vimrc"
# TODO Above file doesn't work anymore with automatrop
# TODO Maybe we should just set HOME there…
# Bashrc generation (sortable then unsortable)
grep -o '^\s*[^#]*' $SCRIPT_DIR/.bsh/bashrc | sed 's/^\s\+//' > "${WORK}/b"
echo "alias s='sudo -s -E bash --rcfile ${DEST}/b'" >> "${WORK}/b"
echo "export VIMINIT='source ${DEST}/v'" >> "${WORK}/b"
#echo "export TERMINFO=${DEST}/terminfo" >> "${WORK}/b"
echo "export INPUTRC=${DEST}/i" >> "${WORK}/b"
# Sort for compression efficiency (saves a whooping 12 bytes)
sort -u "${WORK}/b" > "${WORK}/b_sorted"
mv "${WORK}/b_sorted" "${WORK}/b"
dircolors --sh >> "${WORK}/b"
grep -o '^[^#]*' $SCRIPT_DIR/.bsh/bashrc_unsortable | sed 's/^\s\+//' >> "${WORK}/b"
# Other files generation
#mkdir -p "${WORK}/terminfo/${TERM:0:1}"
#if [ -f "/usr/share/terminfo/${TERM:0:1}/${TERM}" ]
#then
@ -28,23 +39,18 @@ then
#then
# cp "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}"
#fi
# Extra configuration
echo "alias s='sudo -s -E bash --rcfile ${DEST}/.bashrc'" >> "${WORK}/.bashrc"
echo "export VIMINIT='source ${DEST}/.vimrc'" >> "${WORK}/.bashrc"
#echo "export TERMINFO=${DEST}/terminfo" >> "${WORK}/.bashrc"
echo "export INPUTRC=${DEST}/.inputrc" >> "${WORK}/.bashrc"
# TODO Maybe we should just set HOME there…
grep -o '^\s*[^#]*' $SCRIPT_DIR/.bsh/inputrc | sed 's/^\s\+//' > "${WORK}/i"
grep -o '^\s*[^"]*' $SCRIPT_DIR/.bsh/vimrc | sed 's/^\s\+//' > "${WORK}/v"
# Crafting command
b64="$(cd "$CACHE_DIR"; tar czf - "$FOLDER_NAME" | base64 -w 0)"
echo "echo '$b64' | base64 -d | tar xzf - -C /tmp" > "${CACHE_DIR}/cmd"
echo "bash --rcfile ${DEST}/.bashrc" >> "${CACHE_DIR}/cmd"
echo "echo $b64|base64 -d|tar xzC /tmp" > "${CACHE_DIR}/cmd"
echo "bash --rcfile ${DEST}/b" >> "${CACHE_DIR}/cmd"
echo "rm -rf ${DEST}" >> "${CACHE_DIR}/cmd"
# TODO Do not remove unless last one connected
# Cleanup
# rm -rf "$WORK"
rm -rf "$WORK"
fi