working on it ...

Filters

Explore Public Snippets

Sort by

Found 1,126 snippets

    public by gwarah modified Oct 15, 2018  35  0  3  0

    Create a symbolic link with a file dialog

    This script provides an easy way to create a link using zenity file dialog. requisites: It won't run ok if there would be any restriction related creating symlink command (ln -s ...) or if zenity package wouldn't be installed in your system. The syntax is very simple: crsln.sh [-f|-d] [/path/to/file_or_directory [/path/to/link_name]] [
    #/bin/bash
    # program     : crsln.sh
    # description : create a symlink with zenity file dialog
    # author      : lp (Luís Pessoa)
    # version     : 0.1.0b
    # syntax      : 
    # 	  crsln.sh [-f|-d] [/path/to/file_or_directory] [/path/to/link_name]] 
    # dependences : 
    #   1) shell: bash  
    #   2) package: zenity
    #   3) see restrictions to crete a symlink, man ln
    # history     :
    #   lp; 09/02/2018; first release
    #   lp; 12/12/2017; begin of development
    
    
    # syntax get_file
    function syntax {
        local SINTAX=""
        SINTAX=$1
        SINTAX+="\n syntax: get_file [-t <title>] [ -f <file_or_dir_selected> ] [-l <filters>]"
        SYNTAX+="\n for <filters> rules see: zenity --help-file-selection"
        
        echo -e "Error: ${SINTAX} \n" >&2
        return 1
    }
    
    # syntax script
    function syntax_main {
        local SINTAX=""
        SINTAX=$1
        SINTAX+="\n syntax: create_symlink.sh [-d|-f] [file_or_directory [link_name]]"
        SYNTAX+="\n for <filters> rules see: zenity --help-file-selection"
        
        echo -e "Error: ${SINTAX} \n" >&2
        return 1
    }
    
    # catch a directory or file
    function dir_or_file {
        local opc
        local pkey=""
        RETORNO=0
        
        # 0: zenity; 1: dialog; 2: shell
        local dialog_type=${DIALOG_TYPE}
    
        if [ $dialog_type -eq 0 ]; then
            opc=$(zenity --list  \
                --text "Target is file or directory?" \
                --radiolist  --column "Check" --column "Options" \
                TRUE "file" FALSE "directory" --separator=" ")
            case $? in
            1)
                    echo "Opção deve ser selecionada" >&2
                    return 1
                    ;;
            -1)
                    echo "Ocorreu um erro na seleção de opções"
                    return 1
                    ;;
            esac
        else
            syntax "dialog type not implemented yet."
            return 1
        fi
        
        echo "${opc}"
        return $RETORNO
    }
    
    # catch a directory or file
    function get_file {
        local opt_found=0
        local list_opt=""
        local pkey=""
        
        local fun_text="Choose a file"
        local fun_filename=""
        local fun_filters=""
        local fun_result=""
        
        # 0: zenity; 1: dialog; 2: shell
        local dialog_type=${DIALOG_TYPE}
        local zenity_keys="--file-selection"
        
        # flags
        local flag_dir=0
        
        OPTIND=1
        while getopts ":t:l:f:ds" pkey; do
    
            # verifica se chave já foi chamada
            # excluir chaves que foram chamadas mais de uma vez
            echo "${list_opt}" | grep -q $pkey
            if [ $? -eq 0 ]; then
                syntax "Option -$pkey called twice or more times."
                return 1
            fi
    
            # stored invoked keys
            (( opt_found++ ))
            list_opt="${list_opt};${pkey}"
    
            if [ $opt_found -gt 5 ]; then
                syntax "too many keys"
                return 1
            fi
    
            case "${pkey}" in
                t)
                    fun_text="${OPTARG}"
                    ;;
                f)
                    fun_filename="${OPTARG}"
                    ;;
                l)
                    fun_filters="${OPTARG}"
                    ;;
                d)
                    [ -z "${fun_text}" ] && fun_text="Choose a directory"
                    zenity_keys+=" --directory"
                    flag_dir=1
                    ;;
                s)
                    zenity_keys+=" --save "    
                    ;;    
                \?)
                    syntax "inavalid option: -$OPTARG"
                    return 1
                    ;;
                :)
                    syntax "Option -$OPTARG require argument."
                    return 1
                    ;;
            esac
        done
            
        # zenity_keys+=" --title=\"${fun_text}\" "
        
        if [ -s "${fun_filters}" ]; then
            zenity_keys+=" --file_filter=${fun_filters} "
        fi
        
        if [ -s "${fun_filename}" ]; then
            zenity_keys+=" --filename=${fun_filename} "
        fi
        
        # dialog tool
        if [ $dialog_type -eq 0 ]; then
            fun_result=`zenity --title="${fun_text}" ${zenity_keys}`
            case $? in
            1)
                    echo "No one option selected" >&2
                    return 1
                    ;;
            -1)
                    echo "Error!"
                    return 1
                    ;;
            esac
        else
            syntax "dialog type not implemented."
        fi
        
        echo "${fun_result}"
        return 0
    }
    
    export FILEMAP=""
    export DIRLINK=""
    export LINKNAME=""
    export FLAGTYPE=0
    export TYPEMAP="file"
    export CUR_DIR=`pwd`
    export RETORNO=0
    
    # 
    OPTIND=1
    opt_found=0
    while getopts ":df" pkey; do
        # stored invoked keys
        (( opt_found++ ))
    
        if [ $opt_found -gt 1 ]; then
            syntax_main "too many keys"
            exit 1
        fi
    
        case "${pkey}" in
        d)
             FLAGTYPE=1
             TYPEMAP="directory"
             ;;
        f)
             FLAGTYPE=1
             TYPEMAP="file"
             ;;
        \?)
             syntax_main "invalid key: -$pkey"
             exit 1
             ;;
        esac
    done
    
    # due -d|-f key
    [ $FLAGTYPE -eq 1 ] && shift
    
    # don't change this value!!
    # 0: zenity; 1: dialog; 2: shell
    export DIALOG_TYPE=0
    
    #
    # parameters validation
    #
    [ $# -gt 2 ] && syntax_main "Too many parameters: $#"
    
    # getting file or directory to link
    if [ $# -eq 0 ]; then
        [ $FLAGTYPE -eq 0 ] && TYPEMAP=`dir_or_file` 
        if [ "${TYPEMAP}" = "file" ]; then
            FILEMAP=`get_file -t "Choose any file to link"`
        else
            FILEMAP=`get_file -d -t "Choose any directory to link"`
        fi
    else
        FILEMAP="$1"
    fi 
    
    
    if [ -d "${FILEMAP}" ]; then 
        if [ "${TYPEMAP}" = "file" ]; then
           syntax_main "key set to -f can't link direcory ${FILEMAP}"
        fi
    elif [ -f "${FILEMAP}" ]; then 
        if [ "${TYPEMAP}" = "directory" ]; then
            syntax_main "key set to -d can't link file ${FILEMAP}"
        fi
    else
        syntax_main "Not found or not type regular file or directory: ${FILEMAP}"
        exit 1
    fi
    
    # getting linkname
    if [ $# -lt 2 ]; then
        LINKNAME=`get_file -s -t "Choose the linkname"`
    else
        LINKNAME="${2}"
    fi
    
    # check if ${LINKNAME} already exists file
    if [ -e ${LINKNAME} ]; then  
        if [ -L ${LINKNAME} ]; then
            zenity --question --text="Link ${LINKNAME} already exist. Overwrite it?" --ok-label="Yes" --cancel-label="No"
            if [ $? -ne 0 ]; then
                exit 1 
            fi
        else
            zenity --error --title "error" --text="${LINKNAME} already exist as file or directory"
            exit 1 
        fi    
    fi
    # link
    echo ""
    echo "---------------"
    echo "${TYPEMAP} : ${FILEMAP} "
    echo "link : ${LINKNAME} "
    
    echo ""
    echo "Press a key to continue or [ctrl]+c to exit " ; read
    ln -s -r "${FILEMAP}" "${LINKNAME}"
    [ $? -gt 0 ] && echo "failure!" && exit 1
    
    echo "sucess!"
    exit $RETORNO
    																		

    public by gwarah modified Aug 26, 2018  516  3  5  0

    Is a file in a directory tree?

    This script is a shell function that performs exactly this check, even if the parameters are symbolic links and/or relative directories. See "How to Use" section to install this snippet
    #!/bin/bash
    # /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    # * File       : dircontains.sh
    # * Goal       : checks if <parent> direcory contains <file>
    # * Requisites :
    # *     1. SHELL=bash
    # * History    :
    # *   #version;date;description
    # *   0.2.0; 29/07/2018; now can check if any kind of file is in <parent>
    # *   0.1.0; 27/07/2018; first release (tested in bash environment)
    # */
    
    #
    # Tested in: ubuntu 16.04/bash
    #
    
    #
    # How to use
    #
    # 1. put this script into a directory (Ex: ~/scripts)
    #
    # 2. insert this code in your ~/.bashrc:
    # . ~/scripts/dircontains.sh
    #
    # 3. open a new shell session and test it:
    #
    # dircontains <dir_parent> <file>
    #
    # 4.
    # the result is in $? var
    # $1=0, <file> is in <dir_parent>
    # $1=1, <file> is not in <dir_parent>
    # $1=2, error
    #
    
    function dircontains_syntax {
        local msg=$1
        echo "${msg}" >&2
        echo "syntax: dircontains <parent> <file>" >&2
        return 1
    }
    
    function dircontains {
        local result=1
        local parent=""
        local parent_pwd=""
        local child=""
        local child_dir=""
        local child_pwd=""
        local curdir="$(pwd)"
        local v_aux=""
    
        # parameters checking
        if [ $# -ne 2 ]; then
            dircontains_syntax "exactly 2 parameters required"
            return 2
        fi
        parent="${1}"
        child="${2}"
        
        # exchange to absolute path
        parent="$(readlink -f "${parent}")"
        child="$(readlink -f "${child}")"
        dir_child="${child}"
    
        # file/directory checking
        if [ ! -d "${parent}" ];  then
            dircontains_syntax "parent dir ${parent} not a directory or doesn't exist"
            return 2
        elif [ ! -e "${child}" ];  then
            dircontains_syntax "file ${child} not found"
            return 2
        elif [ ! -d "${child}" ];  then
            # not directory? get the path of file
            dir_child=`dirname "${child}"`
        fi
    
        # get directories from $(pwd)
        cd "${parent}"
        parent_pwd="$(pwd)"
        cd "${curdir}"  # to avoid errors due relative paths
        cd "${dir_child}"
        child_pwd="$(pwd)"
    
        # checking if is parent
        [ "${child_pwd:0:${#parent_pwd}}" = "${parent_pwd}" ] && result=0
    
        # return to current directory
        cd "${curdir}"
        return $result
    }						

    public by gwarah modified Jun 23, 2018  1059  2  8  0

    improved cd: <directory pattern> as parameter

    An improvement of cd Linux command. From a given directory pattern, the snippet finds directories matching it and output them as a menu. # Requisites: 1. SHELL=bash 2. locatedb available and up to date. It's necessary to select the directories (see: man (locate | locatedb | updatedb) for more information) # How to use: 1. put this
    #!/bin/bash
    # /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    # * File       : rexcd.sh
    # * Goal       : improve cd linux command
    # * Requisites :
    # *     1. SHELL=bash
    # *     2. Locate service available and up to date. It's necessary to search directories
    # *        (see locate, locatedb and updatedb manual for more information)
    # * History    :
    # *   #version;date;description
    # *   0.1.1; 02/05/2018; tested in ubuntu 16.04/bash and minor code improvements
    # *   0.1.0; 30/04/2018; first release (tested in cygwin 2.10.x)
    # */
    
    # How to use
    #
    # 1. put this script into a directory (Ex: ~/scripts)
    #
    # 2. insert this code in your ~/.bashrc:
    # . ~/scripts/rexcd.sh
    #
    # 3. open a new shell session and test it:
    # cd ~
    # rexcd scripts
    #
    # 4. Example of output (cygwin 2.10.x)
    # Choose one directory
    # 
    # 1) /home/prpe/scripts
    # 2) /home/prpe/sintaxe/scripts_plone
    # 3) /home/prpe/sintaxe/scripts_plone/scripts
    # 4) /usr/share/doc/xorg-scripts-1.0.1
    # 5) /usr/x86_64-pc-cygwin/lib/ldscripts
    # Option [1] 2
    # 
    #  
    # prpe@DESK-00-090117 ~/sintaxe/scripts_plone
    # $
    
    
    #
    # ToDo:
    #
    # 1. switch:-i (ignore case)
    # 2. switch:-l limits of directories in menu (from m-th to n-th search matches)  (m,n|m,|,n default 1 to number of matches)
    # 3. switch:-d root directory -d <dir> (default /)
    # 4. switch:-u perform an update of db table
    #
    
    # syntax: rexcd_exit <msg>
    function rexcd_exit {
        local msg=$1
        echo "${msg}" >&2
        return 1
    }
    
    # syntax: 
    #  export rexcd_opt=""
    #  rexcd_menu opt1 opt2 ... optn
    #  echo $rexcd_opt
    function rexcd_menu {
        # return code + option
        local FN_RESULT=1
        rexcd_opt=""
    
        # variáveis de controle
        local num_options=$#
        local arr_options
        local num_choose=1
        local FN_DEFAULT=""
        local v_aux1 v_aux2
        local fl ind
    
        # menu message
        local FN_MSG="Choose one directory "
        local PS3="#"
    
        # checking number of options and creating list of them
        if [ $num_options -lt 2 ]; then
            rexcd_exit "At least 2 options required"
            return $?
        fi
    
        let ind=1
        for fl in $*; do
            arr_options[${ind}]="${fl}"
            let ind++
        done
    
        # menu
        FN_RESULT=1
        ind=1
        num_choose=""
        FN_DEFAULT=$ind
        PS3="Option [${FN_DEFAULT}] "
        
        echo "" ; echo "${FN_MSG}" ; echo ""
        select num_choose in `echo ${arr_options[@]}`; do
            case "${num_choose}" in
                *)
                    if [ -z "${num_choose}" ]; then
                        read -t 2 -p "Invalid option"
                        echo "" ; echo "${FN_MSG}" ; echo ""
                        continue
                    fi
                    FN_RESULT=0
                    break
                    ;;
            esac
        done
        echo ""
    
        rexcd_opt="${num_choose}"
        return ${FN_RESULT}
    }
    
    function rexcd {
        local contador fl
        local padrao=""
        local max_opc=15
        local lst_opc=""
        local retorno=0
        local v_aux=0
    
        # its necessary declare as export
        export rexcd_opt=""
    
        if [ $# -ne 1 ]; then
            rexcd_exit "Number of arguments invalid: $#. Must be exactly one."
            return $?
        fi
    
        padrao=$1
        contador=0
        cd /
        for fl in `locate -i "${padrao}"`; do
            # filter not directories elements
            [ ! -d "${fl}" ] && continue
    
            # search regards
            basename "${fl}" | grep -q -i "${padrao}"
            [ $? -ne 0 ] && continue
    
    
            # update array e var count
            let v_aux=contador+1
    
            if [ $contador -eq 1 ]; then
                lst_opc="${fl}"
            else
                lst_opc="${lst_opc} ${fl}"
            fi
    
            let contador++
            # verifica o máximo de entrada
            if [ $contador -ge $max_opc ]; then
                echo "WARNING: Maximum number of options $max_opc reached" >&2
                break
            fi
        done
    
        if [ ${contador} -eq 1 ]; then
            rexcd_opt="${lst_opc}"
        elif [ ${contador} -gt 1 ]; then
            export rexcd_opt=""
            rexcd_menu ${lst_opc}
            retorno=$?
        else
            rexcd_exit "No directory matches with ${padrao}."
            retorno=$?
        fi
    
        [ $retorno -eq 0 ] && cd ${rexcd_opt}
        return ${retorno}
    }
    																														

    public by kerid18 modified May 9, 2018  976  5  5  2

    Random 8 Character Password Generator Script

    #!/bin/bash
    #
    #
    #  Random password generator for Bash 2.x +
    #+ by Antek Sawicki <tenox@tenox.tc>,
    #+ who generously gave usage permission to the ABS Guide author.
    #
    # ==> Comments added by document author ==>
    
    
    MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    # ==> Password will consist of alphanumeric characters.
    LENGTH="8"
    # ==> May change 'LENGTH' for longer password.
    
    
    while [ "${n:=1}" -le "$LENGTH" ]
    # ==> Recall that := is "default substitution" operator.
    # ==> So, if 'n' has not been initialized, set it to 1.
    do
    	PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
    	# ==> Very clever, but tricky.
    
    	# ==> Starting from the innermost nesting...
    	# ==> ${#MATRIX} returns length of array MATRIX.
    
    	# ==> $RANDOM%${#MATRIX} returns random number between 1
    	# ==> and [length of MATRIX] - 1.
    
    	# ==> ${MATRIX:$(($RANDOM%${#MATRIX})):1}
    	# ==> returns expansion of MATRIX at random position, by length 1. 
    	# ==> See {var:pos:len} parameter substitution in Chapter 9.
    	# ==> and the associated examples.
    
    	# ==> PASS=... simply pastes this result onto previous PASS (concatenation).
    
    	# ==> To visualize this more clearly, uncomment the following line
    	#                 echo "$PASS"
    	# ==> to see PASS being built up,
    	# ==> one character at a time, each iteration of the loop.
    
    	let n+=1
    	# ==> Increment 'n' for next pass.
    done
    
    echo "$PASS"      # ==> Or, redirect to a file, as desired.
    
    exit 0
    +

    public by gwarah modified May 2, 2018  2622  2  6  0

    List (and optionally run) snapped apps

    Show all installed snaped apps in a zenity menu. The user can choose one and run it. just run this script: ./mysnaps.sh
    #!/bin/bash
    # program     : mysnaps.sh
    # description : choose one snapped app and run it
    # author      : lp (Luís Pessoa)
    # version     : 0.1.0b
    # dependences : 
    #   1) shell: bash 
    #   2) packages awk, snap and zenity installed
    #   3) at least one snap app instaled
    # history     :
    #   lp; 07/02/2018; begin of development
    #   lp; 09/02/2018; first release
    
    ###############
    # functions
    ###############
    
    
    ###############
    # end functions
    ###############
    
    # building snap list header 
    snap_cols="$(snap list | \
    awk '{ if (NR == 1) { for (i = 1; i <= NF; i++)  printf "--column " $i " " }} ')"
    snap_cols="--column check ${snap_cols}"
    
    # building snap list options
    snap_ops=$(snap list | \
    awk '
    BEGIN { }
    {
    if (NR >= 2 ) {
        for (i = 1; i <= NF; i++) {
            
            if ( i == 1 ) {
                if ( $i == "core"  ) break;
                if (NR == 2) {printf "TRUE ";} 
                else {printf "FALSE ";}
            }
            printf $i;
            if ( i == NF ) { print "";}
            else { printf " "; }
       }
    }}')
    
    # snap app selection
    opc=$(zenity  --list  --text "Apps snaped " --radiolist  ${snap_cols} ${snap_ops})
    case $? in
             1)
                    echo "No snap app selected"
                    exit 1
                    ;;
            -1)
                    echo "Error!"
                    exit 1
                    ;;
    esac
    
    # run app selected
    app_opc=`echo $opc | awk '{print $1}'`
    ${app_opc}
    exit $?
    												

    public by yourfriendcaspian modified Sep 2, 2017  185  0  3  0

    Copy file remotely using scp in Linux

    The scp command copies from a location to a remote path. In this example, the remote server is Linux based and the command will use 'root' as username and will copy into the /tmp directory. Root password will be requested before transferring file.
    >scp myFile.txt root@1.2.3.4:/tmp/													

    public by charlwillia6 modified Aug 14, 2017  346  1  3  0

    Uninstall package.json

    Uninstall package.json: npm_uninstall.sh
    # /bin/bash 
    
    npm uninstall `ls -1 node_modules | tr '/\n' ' '`
    
    																								

    public by adam2015 modified May 21, 2017  331  8  4  -1

    Install docker-machine and docker-compose

    install_dc() {
    curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    }
    
    install_dm() {
    curl -L https://github.com/docker/machine/releases/download/v0.11.0/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine
    chmod +x /usr/local/bin/docker-machine
    }

    public by johnny13 modified Dec 15, 2016  210  2  3  0

    MacOS bash aliases for File, List and Disk functions

    MacOS bash aliases for File, List and Disk functions: .bash_alias_osx
    #
    ## Shortcuts
    alias d="cd ~/Documents/Dropbox"
    alias dl="cd ~/Downloads"
    alias dt="cd ~/Desktop"
    alias p="cd ~/projects"
    alias g="git"
    alias h="history"
    alias j="jobs"
    
    
    #
    ## Detect which `ls` flavor is in use
    if ls --color > /dev/null 2>&1; then # GNU `ls`
    	colorflag="--color"
    	export LS_COLORS='no=00:fi=00:di=01;31:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
    else # macOS `ls`
    	colorflag="-G"
    	export LSCOLORS='BxBxhxDxfxhxhxhxhxcxcx'
    fi
    
    #
    # #	List Aliases
    alias ls="gls -AXhsg1N --group-directories-first --color=auto"                                     # Nice list
    alias lsl="ls -lhAC	| less"									   # less list
    alias ll="ls -xhks"										   # little list
    alias lx="ls -XhkGgos1"										   # extension list
    alias la="ls -Cap1hk"										   # list all
    alias lm="ls -Cp1hk"										   # mini list
    alias lr="ls -CgAR"									           # recursive list
    alias lsd='ls -CapXokdh'									   # directory list
    alias lspath="ls -ACGghskop1 $PWD/**"						                   # nice full path list
    
    
    # Print each PATH entry on a separate line
    alias path='echo -e ${PATH//:/\\n}'
    
    
    #
    ## Disk Aliases
    alias fhere="find . -name "
    alias df="df -Tha --total"
    alias free="free -mt"
    alias du="du -ach | sort -h"
    alias filelarge="du -h | grep '^\([0-9.]*G\|[0-9]\{3,\}M\)' | sort -n"
    
    #
    ## System Status
    alias psg="ps aux | grep -v grep | grep -i -e VSZ -e"
    
    #
    ## get rid of command not found ##
    alias cd..='cd ..' 
     
    #
    ## directories
    alias ..='cd ..'
    alias ...='cd ../../../' 
    alias ....='cd ../../../../' 
    alias .....='cd ../../../../' 
    alias .4='cd ../../../../' 
    alias .5='cd ../../../../..'
    
    #
    ## Stats
    alias path='echo -e ${PATH//:/\\n}'
    alias now='date +"%T"'
    alias nowtime=now
    alias nowdate='date +"%d-%m-%Y"'
    
    ## pass options to free ## 
    alias meminfo='free -m -l -t'
     
    ## get top process eating memory
    alias psmem='ps auxf | sort -nr -k 4'
    alias psmem10='ps auxf | sort -nr -k 4 | head -10'
     
    ## get top process eating cpu ##
    alias pscpu='ps auxf | sort -nr -k 3'
    alias pscpu10='ps auxf | sort -nr -k 3 | head -10'
     
    ## Get server cpu info ##
    alias cpuinfo='lscpu'
     
    ## older system use /proc/cpuinfo ##
    ##alias cpuinfo='less /proc/cpuinfo' ##
     
    ## get GPU ram on desktop / laptop## 
    alias gpumeminfo='grep -i --color memory /var/log/Xorg.0.log'
    
    ## this one saved by butt so many times ##
    alias wget='wget -c'
    
    ## Enable aliases to be sudo’ed
    alias sudo='sudo '
    
    ## Updates
    alias update='brew update; brew upgrade; brew cleanup; npm install npm -g; npm update -g; sudo gem update --system; sudo gem update; sudo gem cleanup'
    
    
    # IP addresses
    alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
    alias localip="ipconfig getifaddr en0"
    alias ips="ifconfig -a | grep -o 'inet6\? \(addr:\)\?\s\?\(\(\([0-9]\+\.\)\{3\}[0-9]\+\)\|[a-fA-F0-9:]\+\)' | awk '{ sub(/inet6? (addr:)? ?/, \"\"); print }'"
    
    
    # Clean up LaunchServices to remove duplicates in the “Open With” menu
    alias clean_menu="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user && killall Finder"
    # Recursively delete `.DS_Store` files
    
    alias clean_ds="find . -type f -name '*.DS_Store' -ls -delete"
    
    # Empty the Trash on all mounted volumes and the main HDD.
    # Also, clear Apple’s System Logs to improve shell startup speed.
    # Finally, clear download history from quarantine. https://mths.be/bum
    alias clean_trash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl; sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'delete from LSQuarantineEvent'"
    
    
    # macOS has no `md5sum`, so use `md5` as a fallback
    command -v md5sum > /dev/null || alias md5sum="md5"
    
    # macOS has no `sha1sum`, so use `shasum` as a fallback
    command -v sha1sum > /dev/null || alias sha1sum="shasum"
    
    
    # Trim new lines and copy to clipboard
    alias c="tr -d '\n' | pbcopy"
    
    
    # Hide/show all desktop icons (useful when presenting)
    alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
    alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
    
    
    # URL-encode strings
    alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1]);"'
    
    
    # Ring the terminal bell, and put a badge on Terminal.app’s Dock icon
    # (useful when executing time-consuming commands)
    
    
    # Kill all the tabs in Chrome to free up memory
    # [C] explained: http://www.commandlinefu.com/commands/view/402/exclude-grep-from-your-grepped-output-of-ps-alias-included-in-description
    alias chromekill="ps ux | grep '[C]hrome Helper --type=renderer' | grep -v extension-process | tr -s ' ' | cut -d ' ' -f2 | xargs kill"
    
    alias badge="tput bel"
    
    

    public by route66 modified Dec 1, 2016  7632  8  4  0

    Renaming multiple files using find

    find . -type f -name 'file*' -execdir mv {} {}_renamed ';'            
    • Public Snippets
    • Channels Snippets