mirror of
				https://gitea.blesmrt.net/mikaela/shell-things.git
				synced 2025-10-26 06:37:32 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			803 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			803 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| UNAME=$(uname)
 | |
| # TOC
 | |
| #   Defaults etc...             M0TZLS
 | |
| #   Environment                 7RS56S
 | |
| #   Aliases                     RJ706I
 | |
| #   Functions                   ZGC5QQ
 | |
| 
 | |
| # enable terminal bell
 | |
| 
 | |
| if [ -f /usr/bin/xset ];
 | |
| then
 | |
|     (xset b on&)
 | |
| fi
 | |
| 
 | |
| #####   Defaults etc...             M0TZLS  #####
 | |
| 
 | |
| # ~/.bashrc: executed by bash(1) for non-login shells.
 | |
| # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
 | |
| # for examples
 | |
| 
 | |
| # If not running interactively, don't do anything
 | |
| [ -z "$PS1" ] && return
 | |
| 
 | |
| # save history
 | |
| export PROMPT_COMMAND='history -a'
 | |
| 
 | |
| # don't put duplicate lines in the history. See bash(1) for more options
 | |
| # ... or force ignoredups and ignorespace
 | |
| HISTCONTROL=ignoredups
 | |
| 
 | |
| # append to the history file, don't overwrite it
 | |
| shopt -s histappend
 | |
| 
 | |
| # check the window size after each command and, if necessary,
 | |
| # update the values of LINES and COLUMNS.
 | |
| shopt -s checkwinsize
 | |
| 
 | |
| # make less more friendly for non-text input files, see lesspipe(1)
 | |
| [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
 | |
| 
 | |
| # set variable identifying the chroot you work in (used in the prompt below)
 | |
| if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
 | |
|     debian_chroot=$(cat /etc/debian_chroot)
 | |
| fi
 | |
| 
 | |
| # set a fancy prompt (non-color, unless we know we "want" color)
 | |
| case "$TERM" in
 | |
|     xterm-color) color_prompt=yes;;
 | |
| esac
 | |
| 
 | |
| force_color_prompt=yes
 | |
| 
 | |
| if [ -n "$force_color_prompt" ]; then
 | |
|     if which tput >&/dev/null && tput setaf 1 >&/dev/null; then
 | |
|     # We have color support; assume it's compliant with Ecma-48
 | |
|     # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
 | |
|     # a case would tend to support setf rather than setaf.)
 | |
|     color_prompt=yes
 | |
|     else
 | |
|     color_prompt=
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if [ "$color_prompt" = yes ]; then
 | |
|     PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
 | |
| else
 | |
|     PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
 | |
| fi
 | |
| unset color_prompt force_color_prompt
 | |
| 
 | |
| # Red colour for root, thanks nyuszika7h 
 | |
| # Check if we're root
 | |
| if [[ $EUID == 0 ]]; then
 | |
|     PS1='\033[1;31m\u@\h:\w\$\033[0m '
 | |
| else
 | |
|     PS1='\033[1;32m\u@\h:\w\$\033[0m '
 | |
| fi
 | |
| 
 | |
| # If this is an xterm set the title to user@host:dir
 | |
| case "$TERM" in
 | |
| xterm*|*rxvt*)
 | |
|     PS1="\[\e]0;\u@\h: \w\a\]$PS1"
 | |
|     ;;
 | |
| *)
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| # enable color support of ls and also add handy aliases
 | |
| if [ -x /usr/bin/dircolors ]; then
 | |
|     test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
 | |
|     alias ls='ls --color=always'
 | |
|     alias dir='dir --color=always'
 | |
|     alias vdir='vdir --color=always'
 | |
| 
 | |
|     alias grep='grep -i --color=always'
 | |
|     alias fgrep='fgrep -i --color=always'
 | |
|     alias egrep='egrep -i --color=always'
 | |
| fi
 | |
| 
 | |
| # some more ls aliases
 | |
| if [[ $UNAME != Darwin ]]; then
 | |
|     alias ll='ls -alFh --color=always' && alias la='ls -A --color=always' && alias l='ls -CF --color=always'
 | |
| fi
 | |
| 
 | |
| if [[ $UNAME = Darwin ]]; then
 | |
|     alias ls="ls -Gp"
 | |
|     alias ll="ls -alFHGp"
 | |
|     alias l="ls -CFGp"
 | |
| fi
 | |
| 
 | |
| # Add an "alert" alias for long running commands.  Use like so:
 | |
| #   sleep 10; alert
 | |
| alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
 | |
| 
 | |
| # Alias definitions.
 | |
| # You may want to put all your additions into a separate file like
 | |
| # ~/.bash_aliases, instead of adding them here directly.
 | |
| # See /usr/share/doc/bash-doc/examples in the bash-doc package.
 | |
| 
 | |
| if [ -f ~/.bash_aliases ]; then
 | |
|     . ~/.bash_aliases
 | |
| fi
 | |
| 
 | |
| # enable programmable completion features (you don't need to enable
 | |
| # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
 | |
| # sources /etc/bash.bashrc).
 | |
| if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
 | |
|     . /etc/bash_completion
 | |
| fi
 | |
| 
 | |
| #Shopt settings.
 | |
| #shopt -s autocd
 | |
| 
 | |
| # Show the hostname, uptime and users logged in on shell start
 | |
| (hostname&)
 | |
| (uptime&)
 | |
| (echo "")
 | |
| if [[ $UNAME != Darwin ]]; then
 | |
|     (who -H -w -u|head -n10&)
 | |
|     (echo "")
 | |
| #    (last -10 -w -x&)
 | |
| fi
 | |
| 
 | |
| if [[ $UNAME = Darwin ]]; then
 | |
|     (who -H -u|head -n10&)
 | |
|     (echo "")
 | |
|     (last -10&)
 | |
| fi
 | |
| (echo 'Aferoj emas funkcii sin mem.'&)
 | |
| 
 | |
| # fix dircolors for Selenized https://github.com/jan-warchol/selenized/blob/master/other-apps/dircolors/README.md
 | |
| export LS_COLORS="$LS_COLORS:ow=1;7;34:st=30;44:su=30;41"
 | |
| 
 | |
| 
 | |
| #####   Environment                 7RS56S  #####
 | |
| # Environment should be placed to .environment or .bash_environment.
 | |
| 
 | |
| # Source before mentioned locations if they exist.
 | |
| 
 | |
| # .environment
 | |
| if [ -f ~/.environment ]; then
 | |
|     source ~/.environment
 | |
| fi
 | |
| 
 | |
| # .bash_environment
 | |
| if [ -f ~/.bash_environment ]; then
 | |
|     source ~/.bash_environment
 | |
| fi
 | |
| 
 | |
| # Enable core files.
 | |
| (ulimit -c unlimited&)
 | |
| 
 | |
| # More colours 
 | |
| if [[ $TERM == 'xterm' ]]; then
 | |
| export TERM=xterm-256color
 | |
| fi
 | |
| 
 | |
| if [[ $TERM == 'screen' ]]; then             
 | |
| export TERM=screen-256color              
 | |
| fi
 | |
| 
 | |
| # Things after this are just examples and should be put to some other file, which is sourced above.
 | |
| 
 | |
| # Sets the default editor.
 | |
| #export EDITOR=vim # MIKAELA_GREP MIKAELA_GREP_ENVIRONMENT
 | |
| 
 | |
| # Set TZ to local timezone for sending over SSH
 | |
| TZ=$(date +%Z)
 | |
| 
 | |
| # Sets PATH. To add another path, add :</path/to/new/path> to string below. 
 | |
| PATH=$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/snap/bin:/usr/local/bin:/usr/local/sbin:/usr/local/games:/usr/bin:/usr/sbin:/usr/games:/bin:/sbin:/games:$PATH
 | |
| 
 | |
| # Add RubyGems to PATH
 | |
| if hash ruby 2>/dev/null; then
 | |
|     PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
 | |
| fi
 | |
| 
 | |
| # Removes duplicates from $PATH. Copied from https://unix.stackexchange.com/a/14896
 | |
| PATH=$(echo "$PATH" | awk -v RS=':' -v ORS=":" '!a[$1]++{if (NR > 1) printf ORS; printf $a[$1]}')
 | |
| 
 | |
| # Colours to less
 | |
| # Copied from https://nion.modprobe.de/blog/archives/572-less-colors-for-man-pages.html
 | |
| export LESS_TERMCAP_mb=$'\E[01;31m'
 | |
| export LESS_TERMCAP_md=$'\E[01;31m'
 | |
| export LESS_TERMCAP_me=$'\E[0m'
 | |
| export LESS_TERMCAP_se=$'\E[0m'
 | |
| export LESS_TERMCAP_so=$'\E[01;44;33m'
 | |
| export LESS_TERMCAP_ue=$'\E[0m'
 | |
| export LESS_TERMCAP_us=$'\E[01;32m'
 | |
| 
 | |
| # Sets environment variable CPUARCH to output of "uname -p" & UNAME to "uname"
 | |
| UNAME=$(uname)
 | |
| CPUARCH=$(uname -p)
 | |
| 
 | |
| # If we are on Linux, enable apt progress bar and colours
 | |
| if [[ $USER = "root" ]]; then
 | |
|     mkdir -p /etc/apt/apt.conf.d/
 | |
|     echo 'Dpkg::Progress-Fancy "1";' > /etc/apt/apt.conf.d/99progressbar
 | |
|     echo 'APT::Color "1";' > /etc/apt/apt.conf.d/99color
 | |
| fi
 | |
| 
 | |
| # if gpg[-agent] has sshcontrol file, use it as ssh-agent. sshcontrol should
 | |
| # include the authentication subkey keygrip from
 | |
| # `gpg --with-keygrip --list-keys`
 | |
| # Assumption: there is not going to be a sshcontrol file if `gpgconf` is not
 | |
| # installed or `sshcontrol` is trivial to remove.
 | |
| if [ -f ~/.gnupg/sshcontrol ]; then
 | |
|     export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
 | |
|     gpgconf --launch gpg-agent
 | |
|     gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1
 | |
| # otherwise use the normal ssh-agent
 | |
| else
 | |
|     # if the output is going to /dev/null, it's non/existence doesn't matter
 | |
|     (ssh-agent -a /tmp/$USER.sshagent > /dev/null 2>&1)
 | |
|     export SSH_AUTH_SOCK=/tmp/$USER.sshagent
 | |
| fi
 | |
| 
 | |
| # OS X ls colours (copied from https://apple.stackexchange.com/questions/33677/
 | |
| export CLICOLOR=1
 | |
| export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
 | |
| 
 | |
| # znc uses this variable for figuring out hostname
 | |
| #export HOSTNAME=$(hostname --fqdn)
 | |
| 
 | |
| #####   Aliases                     RJ706I  #####
 | |
| 
 | |
| # To get sudo work with aliases.
 | |
| alias sudo="sudo "
 | |
| 
 | |
| # Moving between directories:
 | |
| alias ..="cd .."
 | |
| 
 | |
| # Use htop instead of top if available
 | |
| if hash htop 2>/dev/null; then
 | |
|     alias top="htop"
 | |
| fi
 | |
| 
 | |
| # Add title to youtube-dl & make yle-dl Windows-friendly
 | |
| alias youtube-dl="youtube-dl -o '%(title)s-%(id)s.%(ext)s'"
 | |
| alias yle-dl="yle-dl --vfat"
 | |
| 
 | |
| # git specific. This is the command which I use when git asks me to commit something and says that I have modified files, even when I haven't.
 | |
| alias gdrop="git stash && git stash drop"
 | |
| 
 | |
| # Show compilation date of WeeChat.
 | |
| alias weechat-version="weechat --help|head -n2"
 | |
| 
 | |
| # NMAP specific. All nmap things should be run with sudo.
 | |
| alias nmap-intense="nmap -T4 -A -v -PE -PS22,25,80 -PA21,23,80,3389 "
 | |
| alias nmap-intense-udp="sudo nmap -sS -sU -T4 -A -v -PE -PS22,25,80 -PA21,23,80,3389 "
 | |
| alias nmap-intense-all-tcp="nmap -p 1-65535 -T4 -A -v -PE -PS22,25,80 -PA21,23,80,3389 "
 | |
| alias nmap-intense-no-ping="nmap -T4 -A -v -PN "
 | |
| alias nmap-ping="nmap -sP -PE -PA21,23,80,3389 "
 | |
| alias nmap-quick="nmap -T4 -F "
 | |
| alias nmap-quick-plus="sudo nmap -sV -T4 -O -F --version-light "
 | |
| alias nmap-traceroute="sudo nmap -sP -PE -PS22,25,80 -PA21,23,80,3389 -PU -PO --traceroute "
 | |
| alias nmap-regular="nmap "
 | |
| alias nmap-comprehensive="sudo nmap -sS -sU -T4 -A -v -PE -PP -PS21,22,23,25,80,113,31339 -PA80,113,443,10042 -PO --script all " 
 | |
| # Little "safer" scan as connecting to only HTTP and HTTPS ports doesn't look so attacking. Copy-paste to .bash_custom and remove  " -p 80,443" if you want to scan all ports which nmap scans by default.
 | |
| alias nmap-osscan="sudo nmap -p 80,443 -O -v --osscan-guess --fuzzy "
 | |
| 
 | |
| # Downloads folder over SSH. Usage: rdownload <host>:<remotefolder> <local_destination> | TIP: use ~/ssh/config to configure hosts.
 | |
| alias rdownload="rsync -h --progress -avz "
 | |
| alias rscp='rsync -h --progress -avz '
 | |
| alias rscpr='rsync -h --progress -azvv '
 | |
| 
 | |
| # TMUX specific
 | |
| alias tmux="tmux -2u"
 | |
| alias attach="tmux attach-session"
 | |
| alias detach="tmux detach"
 | |
| 
 | |
| # Supybot specifig. Why to write long command, if you can write short command?
 | |
| alias supybot-config-reload="killall -HUP supybot "
 | |
| alias supybot-owner-quit="killall -INT supybot "
 | |
| # Translating plugins in Limnoria
 | |
| alias supybot-generate-messages.pot="pygettext --docstrings config.py plugin.py"
 | |
| alias supybot-generate-messages.pot-xgettext="xgettext --language=Python config.py plugin.py && mv -f messages.po messages.pot"
 | |
| alias supybot-check-plugin-trans="sandbox/check_trans.py plugins/"
 | |
| alias supybot-check-core-trans="sandbox/check_trans.py --core"
 | |
| alias supybot-generate-messages.pot-mass="find . -type d -exec sh -c '(cd {} && pygettext --docstrings config.py plugin.py)' ';'"
 | |
| 
 | |
| ## -- Start of aliases which are saved from Ubuntu default bashrc. --
 | |
| 
 | |
| # enable color support of ls and also add handy aliases
 | |
| if [[ $UNAME != Darwin ]]; then
 | |
|     alias ls='ls --color=always'
 | |
| fi
 | |
| # some more ls aliases
 | |
| if [[ $UNAME != Darwin ]]; then
 | |
|     alias ll='ls -alFh --color=always' && alias la='ls -A --color=always' && alias l='ls -CF --color=always'
 | |
| fi
 | |
| 
 | |
| ## -- End of aliases which are saved from Ubuntu default bashrc. --
 | |
| 
 | |
| # SSHGuard specific
 | |
| alias sshguard-show-bans="sshguard4-show-bans && sshguard6-show-bans"
 | |
| alias sshguard4-show-bans="sudo iptables -L sshguard --line-numbers"
 | |
| alias sshguard6-show-bans="sudo ip6tables -L sshguard --line-numbers"
 | |
| # Enter ban number as arguement. You can see ban numbers with previous command.
 | |
| alias sshguard4-unban="sudo iptables -D sshguard "
 | |
| alias sshguard6-unban="sudo ip6tables -D sshguard "
 | |
| alias sshguard-unban-all="sshguard4-unban-all && sshguard-6-unban-all"
 | |
| alias sshguard4-unban-all="sudo iptables -F sshguard"
 | |
| alias sshguard6-unban-all="sudo ip6tables -F sshguard"
 | |
| 
 | |
| # For locally rsync copying folder1 to folder2.
 | |
| alias rsync-folder="rsync -h --progress -azvv "
 | |
| 
 | |
| # SSHGuard seems to prefer users to run this always when connecting with keys in ssh-agent...
 | |
| #if [[ $UNAME != Darwin ]]; then
 | |
| #    alias ssh-add="\ssh-add -D && \ssh-add "
 | |
| #fi
 | |
| 
 | |
| # Use GPG2 instead of GPG!
 | |
| if hash gpg2 2>/dev/null; then
 | |
|     alias gpg=gpg2
 | |
|     export KEYBASE_GPG=gpg2
 | |
| fi
 | |
| alias gpg-fix-tty='export GPG_TTY=$(tty)'
 | |
| 
 | |
| # Amount of keys in GPG keyring.
 | |
| alias gpg-key-amount="gpg --list-keys|grep '^pub'|wc -l"
 | |
| alias gpg-key-count="gpg --export -a|gpg --import"
 | |
| 
 | |
| # Current IPv4 and IPv6 addresses. Calls functions.
 | |
| alias myip="myip4 && myip6"
 | |
| 
 | |
| # Update groups without logging out. Requires entering password. Source: https://blog.edwards-research.com/2010/10/linux-refresh-group-membership-without-logging-out/
 | |
| alias refreshgroups="exec su -l $USER"
 | |
| 
 | |
| # Get public key lenght of (public) SSH key
 | |
| alias ssh-pubkey-length="ssh-keygen -lf "
 | |
| 
 | |
| # MSDOS commands. MSDOS is after every alias line to get these lines easily by grepping.
 | |
| alias cls=clear # MSDOS
 | |
| alias help=man # MSDOS
 | |
| alias ipconfig=ifconfig # MSDOS
 | |
| alias copy=cp # MSDOS
 | |
| alias move=mv # MSDOS
 | |
| 
 | |
| # List git committers of repository
 | |
| alias git-committers="git shortlog -s"
 | |
| alias git-changelog="git log --oneline --decorate"
 | |
| alias git-changelog-color="git log --oneline --decorate --color"
 | |
| 
 | |
| # Line ending converting with flip
 | |
| alias unixle="flip -ub "
 | |
| alias msdosle="flip -mb "
 | |
| 
 | |
| # Archiving and extracting with tar
 | |
| # This is tartar to avoid conflict with tar
 | |
| alias tartar="tar cfv "
 | |
| alias targz="tar cfvz "
 | |
| alias tarbz2="tar cfvj "
 | |
| # I have function ex so these are ex-* to avoid conflict.
 | |
| # ex-tartar and ex-tar, because there is alias tartar and command tar
 | |
| alias ex-tar="tar xfv "
 | |
| alias ex-tartar="tar xfv "
 | |
| alias ex-targz="tar xfvz "
 | |
| alias ex-tarbz2="tar xfvj "
 | |
| 
 | |
| # To have less handle ls colours
 | |
| alias less="less -R "
 | |
| 
 | |
| # "su -" with/without sudo
 | |
| alias ssu="sudo su -"
 | |
| alias suu="su -"
 | |
| 
 | |
| # systemd runlevels/targets
 | |
| alias currenttargets="systemctl list-units --type=target"
 | |
| alias telsystemd="systemctl isolate "
 | |
| alias defaulttarget="systemctl enable "
 | |
| 
 | |
| # Who command which I use with Conky
 | |
| alias cwho="who -H -w -u"
 | |
| 
 | |
| # inxi - https://smxi.org/docs/inxi.htm
 | |
| #alias inxi-install="mkdir -p ~/.local/bin && cd ~/.local/bin && \wget -Nc https://github.com/smxi/inxi/raw/master/inxi && chmod +x inxi && cd"
 | |
| #alias inxi-install-root="cd /usr/local/bin;\wget -Nc https://github.com/smxi/inxi/raw/master/inxi;chmod +x inxi;./inxi -U;cd"
 | |
| #alias inxi-update="inxi -U"
 | |
| 
 | |
| # FINEID
 | |
| #alias ssh-add-fineid="ssh-add -s $(find /usr/*lib -name 'libcryptoki.so')"
 | |
| #alias ssh-add-sc-pub="\ssh-add -L"
 | |
| 
 | |
| # Homebrew
 | |
| #alias homebrew-install="cd ~;git clone https://github.com/Homebrew/homebrew.git --depth=1;mkdir -p .local;rsync -aP homebrew/* .local;rsync -aP homebrew/.* .local;rm -rf homebrew"
 | |
| #alias homebrew-install-root="cd /usr;git clone https://github.com/Homebrew/homebrew.git --depth=1;mkdir -p local;rsync -aP homebrew/* local;rsync -aP homebrew/.* local/;chmod -R 755 local;chown -R root:wheel local;rm -rf homebrew"
 | |
| #alias linuxbrew-install="cd ~;git clone https://github.com/Homebrew/linuxbrew.git --depth=1;mkdir -p .local;rsync -aP linuxbrew/* .local;rsync -aP linuxbrew/.* .local;rm -rf linuxbrew"
 | |
| #alias linuxbrew-install-root="cd /usr;git clone https://github.com/Homebrew/linuxbrew.git --depth=1;mkdir -p local;rsync -aP linuxbrew/* local;rsync -aP linuxbrew/.* local/;chmod -R 755 local;chown -R root:wheel local;rm -rf linuxbrew"
 | |
| #export HOMEBREW_LOGS=$HOME/.cache/Homebrew/Logs
 | |
| 
 | |
| # OS X
 | |
| # What is this?
 | |
| #alias osx-server-caching-interface="serveradmin settings caching:Interface ="
 | |
| alias osx-show-hidden-files="defaults write com.apple.finder AppleShowAllFiles"
 | |
| # Workaround on unsupported devices?
 | |
| alias osx-airdrop-listenallif="defaults write com.apple.NetworkBrowser BrowseAllInterfaces"
 | |
| alias osx-set-updatecheck="defaults write /Library/Preferences/com.apple.SoftwareUpdate ScheduleFrequency"
 | |
| 
 | |
| # Resetting different desktop environments
 | |
| # TODO: I imagine these are broken
 | |
| #alias reset-gnome="rm -rf ~/.gnome ~/.gnome2 ~/.gconf ~/.gconfd ~/.metacity ~/.cache ~/.dbus ~/.dmrc ~/.mission-control ~/.thumbnails ~/.config/dconf/user ~/.compiz*"
 | |
| #alias reset-unity="unity-tweak-tool --reset-unity"
 | |
| #alias reset-kde="rm -rf ~/.kde4 ~/.kde"
 | |
| #alias reset-lxpanel="rm -rf ~/.config/lxpanel;lxpanelctl restart"
 | |
| #alias reset-xfce4="rm -rf ~/.config/xfce4"
 | |
| #alias reset-matepanel="mate-panel --reset"
 | |
| 
 | |
| # Show information on PEM file.
 | |
| alias peminfo="openssl x509 -text -in"
 | |
| 
 | |
| # tmux emergency attach
 | |
| alias tmuxeattach="/proc/$(pgrep -o tmux)/exe attach"
 | |
| 
 | |
| # Reset configuration files on systems using apt
 | |
| alias purgeconfig="apt-get install --reinstall -o DPkg::options::=--force-confask"
 | |
| 
 | |
| # Send command output to sprunge.us or ix.io `command|<sprungeus|ixio>`
 | |
| alias sprungeus="curl -F 'sprunge=<-' https://sprunge.us"
 | |
| alias ixio="curl -F 'f:1=<-' ix.io"
 | |
| 
 | |
| # Copy-paste mtr output more easily
 | |
| alias mtrp4="mtr -rw4c 10"
 | |
| alias mtrp6="mtr -rw6c 10"
 | |
| 
 | |
| # Simple HTTPd with Python.
 | |
| alias python-httpd="python3 -m http.server"
 | |
| 
 | |
| # pip
 | |
| alias pip="python -m pip"
 | |
| alias pip3="python3 -m pip"
 | |
| alias pypypip="pypy -m pip"
 | |
| alias pypypip3="pypy3 -m pip"
 | |
| 
 | |
| # Python virtualenv/the new venv comparsion:
 | |
| # https://virtualenv.pypa.io/en/latest/#virtualenv / python3-venv (Debian)
 | |
| alias venv="python3 -m venv"
 | |
| 
 | |
| # cp/mv using rsync. rcp appears to be link to scp in my system, so I can
 | |
| # safely use this alias.
 | |
| if hash rsync 2>/dev/null; then
 | |
|     alias rcp="rsync -a --progress"
 | |
|     alias rmv="rsync -a --progress --remove-source-files"
 | |
| fi
 | |
| 
 | |
| # Clear apt list cache
 | |
| alias clear-apt-list-cache="cd /var/lib/apt/lists && rm -f *|true && cd partial && rm -f *|true && cd"
 | |
| 
 | |
| # Accept all cookies with Lynx, makes browsing easier and
 | |
| # every other browser does this too.
 | |
| alias lynx="lynx -accept_all_cookies"
 | |
| 
 | |
| # Cat multiple files preserving filenames
 | |
| # via https://stackoverflow.com/a/7816490
 | |
| alias multicat='tail -n +1'
 | |
| 
 | |
| # Getting SSIDs and keys from connmann (Jolla)
 | |
| alias connman-wlans='grep -E "Name|Passphrase" /var/lib/connman/wifi*/settings --no-filename'
 | |
| 
 | |
| # Turn input into lowercase and remove colons.
 | |
| # Meant for SSL certificates (IRC))
 | |
| alias lowernocolon="tr -d ':' | tr 'A-Z' 'a-z'"
 | |
| 
 | |
| # I don't want to reinstall exact same versions that I have
 | |
| alias pacman="LANG=en pacman --needed"
 | |
| #fi
 | |
| 
 | |
| # Sailfish Network status, via IRC
 | |
| alias sailfish-nstatus='dbus-send --system --type=method_call --print-reply --dest=net.connman / net.connman.Manager.GetServices|less'
 | |
| 
 | |
| # apt build depedencies (without installing)
 | |
| alias apt-builddep="apt-rdepends --build-depends --follow=DEPENDS"
 | |
| 
 | |
| # https://superuser.com/a/638033 - get embedded Windows product key
 | |
| alias winkey="xxd /sys/firmware/acpi/tables/MSDM"
 | |
| 
 | |
| # Always exec startx so Ctrl-Alt-Backspace won't lead to unlocked TTY.
 | |
| alias startx="exec \startx"
 | |
| 
 | |
| # cat list of kernel detected vulnerabilities/states with filenames
 | |
| alias linux-check-cpu-vulns="tail -n +1 /sys/devices/system/cpu/vulnerabilities/*"
 | |
| 
 | |
| # gpg web key directory lookup
 | |
| alias wkdlookup="gpg --auto-key-locate nodefault,wkd --locate-keys"
 | |
| # Debian key server, Tor not necessary due to dirmngr config
 | |
| alias gpg-dkr-recv="gpg --keyserver hkps://keyring.debian.org --recv-keys"
 | |
| # Ubuntu key server, Tor not necessary due to dirmngr config
 | |
| alias gpg-uks="gpg --keyserver hkps://keyserver.ubuntu.com"
 | |
| alias gpg-uks-recv="gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys"
 | |
| # helpful for wkd
 | |
| alias gpg-export-minimal-ascii="gpg --armor --export-options export-minimal --export"
 | |
| alias gpg-export-minimal-binary="gpg --no-armor --export-options export-minimal --export"
 | |
| 
 | |
| # ports that are being listened to
 | |
| alias netstat-listening-ports="netstat -plntu"
 | |
| 
 | |
| # mpv music & music shuffle
 | |
| alias mpvm="mpv --no-video"
 | |
| alias mpvms="mpv --no-video --shuffle"
 | |
| 
 | |
| # Compatibility with my i3 alsactl mess
 | |
| if [ -f ~/.config/asound.state ]
 | |
| then
 | |
|   alias alsactl="\alsactl -f ~/.config/asound.state"
 | |
| fi
 | |
| 
 | |
| # Allow custom aliases to be put in .aliases or .bash_aliases .
 | |
| 
 | |
| # .aliases
 | |
| if [ -f ~/.aliases ]; then
 | |
|     source ~/.aliases
 | |
| fi
 | |
| 
 | |
| # .bash_aliases
 | |
| if [ -f ~/.bash_aliases ]; then
 | |
|     source ~/.bash_aliases
 | |
| fi
 | |
| 
 | |
| #####   Functions                   ZGC5QQ  #####
 | |
| 
 | |
| # GEOIP lookup, improved from the ultimate bashrc https://goo.gl/qGK5j
 | |
| function geoip() {
 | |
|     geoiplookup $1
 | |
|     geoiplookup6 $1
 | |
| }
 | |
| 
 | |
| # TODO: Is it bash or zshrc?
 | |
| # ex command. Copied from bashrc of bioterror ( https://ricecows.org/configs/bash/.bashrc ). Original comment below:
 | |
| ## for unit193 ;)
 | |
| ## use command "ex" to extract any archive files.
 | |
| ## "ex package.zip" for example
 | |
| function ex ()
 | |
| 
 | |
| {
 | |
| if [ -f "$1" ] ; then
 | |
| case "$1" in
 | |
|       *.tar)                tar xvf $1          ;;
 | |
|       *.tar.bz2 | *.tbz2 )  tar xjvf $1         ;;
 | |
|       *.tar.gz | *.tgz )    tar xzvf $1         ;;
 | |
|       *.bz2)                bunzip2 $1          ;;
 | |
|       *.rar)                unrar x $1          ;;
 | |
|       *.gz)                 gunzip $1           ;;
 | |
|       *.zip)                unzip $1            ;;
 | |
|       *.Z)                  uncompress $1       ;;
 | |
|       *.7z)                 7z x $1             ;;
 | |
|       *.xz)                 tar xJvf $1         ;;
 | |
|       *.deb)
 | |
|          DIR=${1%%_*.deb}
 | |
|          ar xv $1
 | |
|          mkdir ${DIR}
 | |
|          tar -C ${DIR} -xzvf data.tar.gz        ;;
 | |
|       *.rpm)               rpm2cpio $1 | cpio -vid  ;;
 | |
|       *)   echo ""${1}" cannot be extracted via extract()"
 | |
| ;;
 | |
|     esac
 | |
|    else
 | |
|     echo ""${1}" is not a valid file"
 | |
| fi
 | |
| }
 | |
| 
 | |
| # Given by nyuszika7h. Shortens GitHub URLs with git.io
 | |
| function gitio() {
 | |
|     curl -s -i https://git.io -F "url=$1" | grep --color=never -P '^Location: ' | awk '{ print $2 }'
 | |
| }
 | |
| 
 | |
| function mkcd() {
 | |
|     if [[ $# -gt 1 ]]; then
 | |
|         echo 'Warning: All directories will be created, but will change to first specified directory.' 1>&2
 | |
|     fi
 | |
|     mkdir -p "$*" && cd "$1"
 | |
| }
 | |
| 
 | |
| function gribble-gpg-everify() {
 | |
|     # Set which command to use for gpg. You
 | |
|     # probably want to use gpg2 here.
 | |
|     local gpg=gpg2
 | |
| 
 | |
|     echo -n 'Enter Bitcoin OTC URL: '
 | |
|     read REPLY
 | |
|     lynx -hiddenlinks=ignore -dump $REPLY > bitcoin_otc.txt.asc
 | |
|     $gpg --decrypt-file bitcoin_otc.txt.asc
 | |
|     echo -en '\e[1;32m;;everify '
 | |
|     cat bitcoin_otc.txt
 | |
|     echo -e '\e[0m'
 | |
|     rm -rf bitcoin_otc.txt bitcoin_otc.txt.asc
 | |
| }
 | |
| 
 | |
| # This function will install/upgrade shell-things.
 | |
| 
 | |
| function shell-things {
 | |
| 
 | |
| export SHELL_THINGS_REPO=$HOME/.shell-things
 | |
| 
 | |
| # Check if ~/.shell-things exists and cd and pull.
 | |
| if [ -d $SHELL_THINGS_REPO ]; then
 | |
|     echo "shell-things: $SHELL_THINGS_REPO exists, git pulling..."
 | |
|     echo ""
 | |
|     cd $SHELL_THINGS_REPO
 | |
|     git remote set-url origin https://gitea.blesmrt.net/Mikaela/shell-things.git
 | |
|     git fetch --all
 | |
|     git pull
 | |
|     sleep 10
 | |
|     echo ""
 | |
|     echo "shell-things: Installing/Upgrading..."
 | |
|     echo ""
 | |
| # If it doesn't exist...
 | |
| else
 | |
|     echo ""
 | |
|     echo "shell-things: $SHELL_THINGS_REPO doesn't exist, cloning..."
 | |
|     echo ""
 | |
|     git clone https://gitea.blesmrt.net/Mikaela/shell-things.git $SHELL_THINGS_REPO
 | |
|     cd $SHELL_THINGS_REPO
 | |
|     sleep 10
 | |
|     echo ""
 | |
|     echo "shell-things: Installing/Upgrading..."
 | |
|     echo ""
 | |
| fi
 | |
| 
 | |
| # Installing...
 | |
| bash -x ./install
 | |
| echo ""
 | |
| echo "shell-things: Installing finished."
 | |
| echo ""
 | |
| 
 | |
| echo ""
 | |
| echo "shell-things: Everything is now done :)"
 | |
| echo ""
 | |
| 
 | |
| cd
 | |
| 
 | |
| }
 | |
| 
 | |
| # This function fixes nodejs on Debian based systems.
 | |
| # (Everything expects nodejs to be called as node, but it's not with Debian.)
 | |
| fix-node () {
 | |
|         if [[ $USER = "root" && -f /usr/bin/nodejs && ! -f /usr/bin/node && ! -f /usr/local/bin/node ]]
 | |
|         then
 | |
|                 ln -s /usr/bin/nodejs /usr/local/bin/node
 | |
|         fi
 | |
|         mkdir -p $HOME/.local/bin
 | |
|         if [[ -f /usr/bin/nodejs && ! -f /usr/bin/node && ! -f /usr/local/bin/node && ! -f $HOME/.local/bin/node ]]
 | |
|         then
 | |
|                 ln -s /usr/bin/nodejs $HOME/.local/bin/node
 | |
|         fi
 | |
| }
 | |
| 
 | |
| # This function removes and regenerates ssh host keys.
 | |
| 
 | |
| #ssh-regen-host-keys () {
 | |
| #        rm /etc/ssh/ssh_host_*
 | |
| #        ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
 | |
| #        ssh-keygen -t ed25519 -N "" -f /etc/ssh/ssh_host_ed25519_key
 | |
| #}
 | |
| 
 | |
| # This function erases Master Boot Record from device
 | |
| # Note: this is dangerous so this function will echo the command
 | |
| # instad of running it!
 | |
| #erase-mbr() {
 | |
| #    echo dd if=/dev/zero of=$1 bs=512 count=2
 | |
| #}
 | |
| 
 | |
| # Use clang if installed. It seems interesting and this is probably good
 | |
| # way to test it. This might not be a function, but I don't have any better
 | |
| # place for this.
 | |
| if hash clang 2>/dev/null; then
 | |
|     export CC=clang
 | |
|     export HOMEBREW_CC=clang
 | |
| fi
 | |
| 
 | |
| if hash clang++ 2>/dev/null; then
 | |
|     export CXX=clang++
 | |
| fi
 | |
| 
 | |
| # Add GitHub pull requests to fetched things via https://git.io/-C-0oQ
 | |
| github-add-pulls() {
 | |
|     git config --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
 | |
|     git config --add remote.upstream.fetch '+refs/pull/*/head:refs/remotes/upstream/-pr/*'
 | |
| }
 | |
| 
 | |
| # Get server SSL certificate fingerprint in MD5, SHA1 and SHA256.
 | |
| # Note that OpenSSL doesn't support IPv6 at time of writing (2015-01-13).
 | |
| serversslcertfp () {
 | |
|     SSSLCFFN=$(openssl s_client -showcerts -connect $1 < /dev/null)
 | |
|     # To see all validity information
 | |
|     echo "$SSSLCFFN"
 | |
|     # For getting the fingerprints
 | |
|     echo "$SSSLCFFN" | openssl x509 -md5 -fingerprint -noout
 | |
|     echo "$SSSLCFFN" | openssl x509 -sha1 -fingerprint -noout
 | |
|     echo "$SSSLCFFN" | openssl x509 -sha256 -fingerprint -noout
 | |
|     echo "$SSSLCFFN" | openssl x509 -sha512 -fingerprint -noout
 | |
|     unset SSSLCFFN
 | |
| }
 | |
| 
 | |
| # The same for local certificate file
 | |
| sslcertfp () {
 | |
|     cat $1 | openssl x509 -md5 -fingerprint -noout
 | |
|     cat $1 | openssl x509 -sha1 -fingerprint -noout
 | |
|     cat $1 | openssl x509 -sha256 -fingerprint -noout
 | |
|     cat $1 | openssl x509 -sha512 -fingerprint -noout
 | |
| }
 | |
| 
 | |
| # Usage: serversslciphers hostname port
 | |
| serversslciphers() {
 | |
|     nmap -Pn $1 -p $2 --script +ssl-enum-ciphers
 | |
| }
 | |
| 
 | |
| # Generate SSL certificate
 | |
| sslgenpem () {
 | |
|     openssl req -nodes -newkey rsa:4096 -keyout $1.pem -x509 -days 3650 -out $1.pem -subj "/CN=$2"
 | |
| }
 | |
| 
 | |
| # Managing SSL certificates of Google Chrome
 | |
| chrome-add-cert () {
 | |
|     echo "Please ensure that either libnss3-tools or nss-tools is installed."
 | |
|     certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
 | |
| }
 | |
| 
 | |
| chrome-list-certs () {
 | |
|     echo "Please ensure that either libnss3-tools or nss-tools is installed."    
 | |
|     certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
 | |
| }
 | |
| 
 | |
| ssldownloadcert () {
 | |
|     echo "Please ensure that either libnss3-tools or nss-tools is installed."    
 | |
|     echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p' | tee $1.pem
 | |
| }
 | |
| 
 | |
| # Getting magnet from transmission-daemon
 | |
| transmission-torrents () {
 | |
|     transmission-remote -l
 | |
| }
 | |
| transmission-magnet () {
 | |
|     transmission-remote -l -t $1 -i | \grep magnet | awk -F': ' '{print $2}'
 | |
| }
 | |
| 
 | |
| # Merges the last $1 commits into one
 | |
| git-squash () {
 | |
|     git reset --soft HEAD~$1
 | |
|     git commit
 | |
| }
 | |
| 
 | |
| # Combining mtrp4 & mtrp6
 | |
| mtrp() {
 | |
|     mtrp4 $@
 | |
|     mtrp6 $@
 | |
| }
 | |
| 
 | |
| # My IPv4 address
 | |
| myip4 () {
 | |
|     if hash dig 2>/dev/null; then
 | |
|         dig +short myip.opendns.com. A @208.67.222.222
 | |
|     else
 | |
|         curl -L4s https://icanhazip.com/
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # My IPv6 address
 | |
| myip6 () {
 | |
|     if hash dig 2>/dev/null; then
 | |
|         dig +short myip.opendns.com. AAAA @2620:0:ccc::2
 | |
|     else
 | |
|         curl -L6s https://icanhazip.com/
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # Source files for miscannellious modifications.
 | |
| 
 | |
| # acme.sh
 | |
| if [ -f ~/.acme.sh/acme.sh.env ]; then
 | |
|     source ~/.acme.sh/acme.sh.env
 | |
| fi
 | |
| 
 | |
| # .custom
 | |
| if [ -f ~/.custom ]; then
 | |
|     source ~/.custom
 | |
| fi
 | |
| 
 | |
| # .bash_custom
 | |
| if [ -f ~/.bash_custom ]; then
 | |
|     source ~/.bash_custom
 | |
| fi
 |