{"id":3535,"date":"2023-03-14T23:41:18","date_gmt":"2023-03-14T22:41:18","guid":{"rendered":"https:\/\/www.gcportal.com\/wordpress\/?page_id=3535"},"modified":"2023-03-14T23:48:33","modified_gmt":"2023-03-14T22:48:33","slug":"esempio-di-script-bashrc","status":"publish","type":"page","link":"https:\/\/www.gcportal.com\/wordpress\/esempio-di-script-bashrc","title":{"rendered":"Esempio di Script .bashrc"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Il file &#8220;.bashrc&#8221; \u00e8 un file di configurazione utilizzato dai terminali Bash su sistemi Linux e Unix. Esso contiene una serie di variabili di ambiente, alias, funzioni e altre impostazioni personalizzate per il prompt del terminale e il comportamento del shell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco alcuni esempi di come puoi utilizzare il file &#8220;.bashrc&#8221; per personalizzare il tuo ambiente di lavoro:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Definire alias personalizzati:<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"># Definisce l&#8217;alias &#8220;ll&#8221; per visualizzare la lista dei file con maggiori informazioni <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>$ alias ll=&#8217;ls -alh&#8217;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Impostare variabili di ambiente personalizzate:<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"># Imposta la variabile di ambiente &#8220;JAVA_HOME&#8221; su un percorso specifico export<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>$ JAVA_HOME=\/usr\/local\/java<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creare funzioni personalizzate:<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"># Definisce una funzione &#8220;cd&#8221; personalizzata per memorizzare l&#8217;ultima posizione <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>function cd { <br>  builtin cd &#8220;$@&#8221; &amp;&amp; pwd &gt; ~\/.lastdir <br>} <\/strong><br><br># Consente di tornare alla posizione precedente con il comando &#8220;back&#8221; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>function back { <br>   cd &#8220;$(cat ~\/.lastdir)&#8221; <br>}<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modificare il comportamento del prompt:<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"># Modifica il prompt per visualizzare l&#8217;utente e l&#8217;hostname <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>PS1=&#8217;\\u@\\h:\\w\\$ &#8216;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questi sono solo alcuni esempi delle molte cose che \u00e8 possibile fare con il file &#8220;.bashrc&#8221;. Tuttavia, \u00e8 importante essere cauti quando si apportano modifiche al file, poich\u00e9 potrebbero influire sulla stabilit\u00e0 del sistema. Assicurati sempre di fare un backup del file originale prima di apportare modifiche.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Le funzioni personalizzate<\/em><\/strong> all&#8217;interno del file &#8220;.bashrc&#8221; sono semplicemente blocchi di codice che vengono eseguiti quando chiamati tramite il loro nome. Quando il file &#8220;.bashrc&#8221; viene letto dal terminale Bash, qualsiasi funzione definita all&#8217;interno del file viene caricata in memoria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ecco come funzionano le funzioni personalizzate in un file &#8220;.bashrc&#8221;:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Definire la funzione:<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Per definire una funzione personalizzata, \u00e8 necessario utilizzare la parola chiave &#8220;function&#8221; seguita dal nome della funzione e dalle sue parentesi graffe contenenti il codice da eseguire:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>function mia_funzione { <br>   # Il codice da eseguire va inserito qui <br>}<\/em><\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Chiamare la funzione:<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Per chiamare la funzione all&#8217;interno del terminale Bash, \u00e8 sufficiente digitare il nome della funzione seguito da eventuali argomenti richiesti tra parentesi tonde:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>mia_funzione arg1 arg2<\/em><\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Utilizzare le variabili:<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">All&#8217;interno della funzione, \u00e8 possibile utilizzare qualsiasi variabile definita all&#8217;interno del file &#8220;.bashrc&#8221; o passata come argomento alla funzione stessa. Ad esempio, se hai definito una variabile di ambiente chiamata &#8220;JAVA_HOME&#8221;, puoi utilizzarla all&#8217;interno della tua funzione come segue:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>function mia_funzione { <br>   echo &#8220;Il percorso di Java \u00e8 $JAVA_HOME&#8221; <br>}<\/em><\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Restituire un valore:<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Se desideri che la tua funzione restituisca un valore al chiamante, \u00e8 possibile utilizzare il comando &#8220;return&#8221;. Ad esempio, se la tua funzione deve restituire il valore di una variabile, puoi farlo come segue:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>function mia_funzione { <br>   # Assegna un valore a una variabile mio_valore=&#8221;valore&#8221; <br>   # Restituisci il valore della variabile return $mio_valore <br>}<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Esempio di ,bashrc mediamente complesso.<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">#===============================================================\n#\n# PERSONAL $HOME\/.bashrc FILE for bash-2.05a (or later)\n#\n# Last modified: Tue Apr 15 20:32:34 CEST 2003\n#\n# This file is read (normally) by interactive shells only.\n# Here is the place to define your aliases, functions and\n# other interactive features like your prompt.\n#\n# This file was designed (originally) for Solaris but based \n# on Redhat's default .bashrc file\n# --&gt; Modified for Linux.\n# The majority of the code you'll find here is based on code found\n# on Usenet (or internet).\n# This bashrc file is a bit overcrowded - remember it is just\n# just an example. Tailor it to your needs\n#\n#\n#===============================================================\n# --&gt; Comments added by HOWTO author.\n# --&gt; And then edited again by ER :-)\n#-----------------------------------\n# Source global definitions (if any)\n#-----------------------------------\nif [ -f \/etc\/bashrc ]; then\n        . \/etc\/bashrc   # --&gt; Read \/etc\/bashrc, if present.\nfi\n#-------------------------------------------------------------\n# Automatic setting of $DISPLAY (if not set already)\n# This works for linux - your mileage may vary.... \n# The problem is that different types of terminals give\n# different answers to 'who am i'......\n# I have not found a 'universal' method yet\n#-------------------------------------------------------------\nfunction get_xserver ()\n{\n    case $TERM in\nxterm )\n    XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' ) \n    XSERVER=${XSERVER%%:*}\n    ;;\naterm | rxvt)\n # find some code that works here.....\n    ;;\n    esac  \n}\nif [ -z ${DISPLAY:=\"\"} ]; then\n    get_xserver\n    if [[ -z ${XSERVER}  || ${XSERVER} == $(hostname) || ${XSERVER} == \"unix\" ]]; then \n\tDISPLAY=\":0.0\" # Display on local host\n    else\n\tDISPLAY=${XSERVER}:0.0    # Display on remote host\n    fi\nfi\nexport DISPLAY\n\nGRASP_HOME=\"\/opt\/graspada\"\nexport GRASP_HOME\n\n#---------------\n# Some settings\n#---------------\nulimit -S -c 0         # Don't want any coredumps\nset -o notify\nset -o noclobber\nset -o ignoreeof\nset -o nounset\n#set -o xtrace          # useful for debuging\n# Enable options:\nshopt -s cdspell\nshopt -s cdable_vars\nshopt -s checkhash\nshopt -s checkwinsize\nshopt -s mailwarn\nshopt -s sourcepath\nshopt -s no_empty_cmd_completion  # bash&gt;=2.04 only\nshopt -s cmdhist\nshopt -s histappend histreedit histverify\nshopt -s extglob                 # necessary for programmable completion\n# Disable options:\nshopt -u mailwarn\nunset MAILCHECK           # I don't want my shell to warn me of incoming mail\nexport TIMEFORMAT=$'\\nreal %3R\\tuser %3U\\tsys %3S\\tpcpu %P\\n'\nexport HISTIGNORE=\"&amp;:bg:fg:ll:h\"\nexport HOSTFILE=$HOME\/.hosts   # Put a list of remote hosts in ~\/.hosts\n#-----------------------\n# Greeting, motd etc...\n#-----------------------\n# Define some colors first:\nred='\\e[0;31m'\nRED='\\e[1;31m'\nblue='\\e[0;34m'\nBLUE='\\e[1;34m'\ncyan='\\e[0;36m'\nCYAN='\\e[1;36m'\nNC='\\e[0m'              # No Color\n\n# --&gt; Nice. Has the same effect as using \"ansi.sys\" in DOS.\n# Looks best on a black background.....\n\n#echo -e \"${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\\n\"\n#date\nif [ -x \/usr\/games\/fortune ]; then\n    \/usr\/games\/fortune -s     # makes our day a bit more fun.... :-)\nfi\n#function _exit()# function to run upon exit of shell\n#{\n#    echo -e \"${RED}Hasta la vista, baby${NC}\"\n#}\ntrap _exit EXIT\n\n#---------------\n# Shell Prompt\n#---------------\nif [[ \"${DISPLAY}\" != \":0.0\" &amp;&amp;  \"${DISPLAY}\" != \":0\" ]]; then  \n    HILIT=${red}   # remote machine: prompt will be partly red\nelse\n    HILIT=${cyan}  # local machine: prompt will be partly cyan\nfi\n\n#  --&gt; Replace instances of \\W with \\w in prompt functions below\n#+ --&gt; to get display of full path name.\n\nfunction fastprompt()\n{\n    unset PROMPT_COMMAND\n    case $TERM in\n        *term | rxvt )\n            PS1=\"${HILIT}[\\h]$NC \\W &gt; \\[\\033]0;\\${TERM} [\\u@\\h] \\w\\007\\]\" ;;\nlinux )\n    PS1=\"${HILIT}[\\h]$NC \\W &gt; \" ;;\n        *)\n            PS1=\"[\\h] \\W &gt; \" ;;\n    esac\n}\n\nfunction powerprompt()\n{\n    _powerprompt()\n    {\n        LOAD=$(uptime|sed -e \"s\/.*: \\([^,]*\\).*\/\\1\/\" -e \"s\/ \/\/g\")\n    }\n    PROMPT_COMMAND=_powerprompt\n    case $TERM in\n        *term | rxvt  )\n            PS1=\"${HILIT}[\\A \\$LOAD]$NC\\n[\\h \\#] \\W &gt; \\[\\033]0;\\${TERM} [\\u@\\h] \\w\\007\\]\" ;;\n        linux )\n            PS1=\"${HILIT}[\\A - \\$LOAD]$NC\\n[\\h \\#] \\w &gt; \" ;;\n        * )\n            PS1=\"[\\A - \\$LOAD]\\n[\\h \\#] \\w &gt; \" ;;\n    esac\n}\n\nfastprompt      # this is the default prompt - might be slow\n                # If too slow, use fastprompt instead....\n#===============================================================\n#\n# ALIASES AND FUNCTIONS\n#\n# Arguably, some functions defined here are quite big\n# (ie 'lowercase') but my workstation has 512Meg of RAM, so .....\n# If you want to make this file smaller, these functions can\n# be converted into scripts.\n#\n# Many functions were taken (almost) straight from the bash-2.04\n# examples.\n#\n#===============================================================\n#-------------------\n# Personnal Aliases\n#-------------------\n\nalias shuth='shutdown -h now'\nalias shutr='shutdown -r now'\nalias rm='rm -i'\nalias cp='cp -i'\nalias mv='mv -i'\n\n# -&gt; Prevents accidentally clobbering files.\nalias mkdir='mkdir -p'\nalias h='history'\nalias j='jobs -l'\nalias r='rlogin'\nalias which='type -all'\nalias ..='cd ..'\nalias path='echo -e ${PATH\/\/:\/\\\\n}'\nalias print='\/usr\/bin\/lp -o nobanner -d $LPDEST'   # Assumes LPDEST is defined\nalias pjet='enscript -h -G -fCourier9 -d $LPDEST'  # Pretty-print using enscript\nalias background='xv -root -quit -max -rmode 5'    # Put a picture in the background\nalias du='du -kh'\nalias df='df -kTh'\n\n# The 'ls' family (this assumes you use the GNU ls)\nalias la='ls -Al'               # show hidden files\nalias ls='ls -hF'               # add colors for filetype recognition\nalias lx='ls -lXB'              # sort by extension\nalias lk='ls -lSr'              # sort by size\nalias lc='ls -lcr'              # sort by change time  \nalias lu='ls -lur'              # sort by access time   \nalias lr='ls -lR'               # recursive ls\nalias lt='ls -ltr'              # sort by date\nalias lm='ls -al |more'         # pipe through 'more'\n\n# alias tree='tree -Csu'# nice alternative to 'ls'\n# tailoring 'less'\nalias more='less'\nexport PAGER=less\nexport LESSCHARSET='latin1'\nexport LESSOPEN='|\/usr\/bin\/lesspipe.sh %s 2&gt;&amp;-' # Use this if lesspipe.sh exists\nexport LESS='-i -N -w  -z-4 -g -e -M -X -F -R -P%t?f%f \\\n:stdin .?pb%pb\\%:?lbLine %lb:?bbByte %bb:-...'\n\n# spelling typos - highly personnal :-)\nalias xs='cd'\nalias vf='cd'\nalias moer='more'\nalias moew='more'\nalias kk='ll'\n#----------------\n# a few fun ones\n#----------------\nfunction xtitle ()\n{\n    case \"$TERM\" in\n        *term | rxvt)\n            echo -n -e \"\\033]0;$*\\007\" ;;\n        *)  \n    ;;\n    esac\n}\n# aliases...\nalias top='xtitle Processes on $HOST &amp;&amp; top'\nalias make='xtitle Making $(basename $PWD) ; make'\nalias ncftp=\"xtitle ncFTP ; ncftp\"\n# .. and functions\n\nfunction man ()\n{\nxtitle The \"$1\" manual\ncommand man -a \"$1\"\n}\n\nfunction ll(){ ls -l \"$@\"| egrep \"^d\" ; ls -lXB \"$@\" 2&gt;&amp;-| egrep -v \"^d|total \"; }\n\nfunction te()  # wrapper around xemacs\/gnuserv\n{\n    if [ \"$(gnuclient -batch -eval t 2&gt;&amp;-)\" == \"t\" ]; then\n        gnuclient -q \"$@\";\n    else\n        ( xemacs \"$@\" &amp;);\n    fi\n}\n#-----------------------------------\n# File &amp; strings related functions:\n#-----------------------------------\n# Find a file with a pattern in name:\n\nfunction ff() { find . -type f -iname '*'$*'*' -ls ; }\n\n# Find a file with pattern $1 in name and Execute $2 on it:\n\nfunction fe() { find . -type f -iname '*'$1'*' -exec \"${2:-file}\" {} \\;  ; }\n\n# find pattern in a set of filesand highlight them:\n\nfunction fstr()\n{\n    OPTIND=1\n    local case=\"\"\n    local usage=\"fstr: find string in files.\nUsage: fstr [-i] \\\"pattern\\\" [\\\"filename pattern\\\"] \"\n    while getopts :it opt\n    do\n        case \"$opt\" in\n        i) case=\"-i \" ;;\n        *) echo \"$usage\"; return;;\n        esac\n    done\n    shift $(( $OPTIND - 1 ))\n    if [ \"$#\" -lt 1 ]; then\n        echo \"$usage\"\n        return;\n    fi\n    local SMSO=$(tput smso)\n    local RMSO=$(tput rmso)\n    find . -type f -name \"${2:-*}\" -print0 | xargs -0 grep -sn ${case} \"$1\" 2&gt;&amp;- | \\\nsed \"s\/$1\/${SMSO}\\0${RMSO}\/gI\" | more\n}\n\nfunction cuttail() # cut last n lines in file, 10 by default\n{\n    nlines=${2:-10}\n    sed -n -e :a -e \"1,${nlines}!{P;N;D;};N;ba\" $1\n}\n\nfunction lowercase()  # move filenames to lowercase\n{\n    for file ; do\n        filename=${file##*\/}\n        case \"$filename\" in\n        *\/*) dirname==${file%\/*} ;;\n        *) dirname=.;;\n        esac\n        nf=$(echo $filename | tr A-Z a-z)\n        newname=\"${dirname}\/${nf}\"\n        if [ \"$nf\" != \"$filename\" ]; then\n            mv \"$file\" \"$newname\"\n            echo \"lowercase: $file --&gt; $newname\"\n        else\n            echo \"lowercase: $file not changed.\"\n        fi\n    done\n}\n\nfunction swap()         # swap 2 filenames around\n{\n    local TMPFILE=tmp.$$\n    mv \"$1\" $TMPFILE\n    mv \"$2\" \"$1\"\n    mv $TMPFILE \"$2\"\n}\n#-----------------------------------\n# Process\/system related functions:\n#-----------------------------------\nfunction my_ps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; }\n\nfunction pp() { my_ps f | awk '!\/awk\/ &amp;&amp; $0~var' var=${1:-\".*\"} ; }\n# This function is roughly the same as 'killall' on linux\n# but has no equivalent (that I know of) on Solaris\n\nfunction killps()   # kill by process name\n{\n    local pid pname sig=\"-TERM\"   # default signal\n    if [ \"$#\" -lt 1 ] || [ \"$#\" -gt 2 ]; then\n        echo \"Usage: killps [-SIGNAL] pattern\"\n        return;\n    fi\n    if [ $# = 2 ]; then sig=$1 ; fi\n    for pid in $(my_ps| awk '!\/awk\/ &amp;&amp; $0~pat { print $1 }' pat=${!#} ) ; do\n        pname=$(my_ps | awk '$1~var { print $5 }' var=$pid )\n        if ask \"Kill process $pid &lt;$pname&gt; with signal $sig?\"\n            then kill $sig $pid\n        fi\n    done\n}\n\nfunction my_ip() # get IP adresses\n{\n    MY_IP=$(\/sbin\/ifconfig ppp0 | awk '\/inet\/ { print $2 } ' | sed -e s\/addr:\/\/)\n    MY_ISP=$(\/sbin\/ifconfig ppp0 | awk '\/P-t-P\/ { print $3 } ' | sed -e s\/P-t-P:\/\/)\n}\n\nfunction ii()   # get current host related info\n{\n    echo -e \"\\nYou are logged on ${RED}$HOST\"\n    echo -e \"\\nAdditionnal information:$NC \" ; uname -a\n    echo -e \"\\n${RED}Users logged on:$NC \" ; w -h\n    echo -e \"\\n${RED}Current date :$NC \" ; date\n    echo -e \"\\n${RED}Machine stats :$NC \" ; uptime\n    echo -e \"\\n${RED}Memory stats :$NC \" ; free\n    my_ip 2&gt;&amp;- ;\n    echo -e \"\\n${RED}Local IP Address :$NC\" ; echo ${MY_IP:-\"Not connected\"}\n    echo -e \"\\n${RED}ISP Address :$NC\" ; echo ${MY_ISP:-\"Not connected\"}\n    echo\n}\n\n# Misc utilities:\nfunction repeat()       # repeat n times command\n{\n    local i max\n    max=$1; shift;\n    for ((i=1; i &lt;= max ; i++)); do  # --&gt; C-like syntax\n        eval \"$@\";\n    done\n}\n\nfunction ask()\n{\n    echo -n \"$@\" '[y\/n] ' ; read ans\n    case \"$ans\" in\n        y*|Y*) return 0 ;;\n        *) return 1 ;;\n    esac\n}\n#=========================================================================\n#\n# PROGRAMMABLE COMPLETION - ONLY SINCE BASH-2.04\n# Most are taken from the bash 2.05 documentation and from Ian McDonalds\n# 'Bash completion' package (http:\/\/www.caliban.org\/bash\/index.shtml#completion)\n# You will in fact need bash-2.05a for some features\n#\n#=========================================================================\nif [ \"${BASH_VERSION%.*}\" \\&lt; \"2.05\" ]; then\n    echo \"You will need to upgrade to version 2.05 for programmable completion\"\n    return\nfi\nshopt -s extglob        # necessary\nset +o nounset          # otherwise some completions will fail\ncomplete -A hostname   rsh rcp telnet rlogin r ftp ping disk\ncomplete -A export     printenv\ncomplete -A variable   export local readonly unset\ncomplete -A enabled    builtin\ncomplete -A alias      alias unalias\ncomplete -A function   function\ncomplete -A user       su mail finger\ncomplete -A helptopic  help     # currently same as builtins\ncomplete -A shopt      shopt\ncomplete -A stopped -P '%' bg\ncomplete -A job -P '%'     fg jobs disown\ncomplete -A directory  mkdir rmdir\ncomplete -A directory   -o default cd\n# Compression\ncomplete -f -o default -X '*.+(zip|ZIP)'  zip\ncomplete -f -o default -X '!*.+(zip|ZIP)' unzip\ncomplete -f -o default -X '*.+(z|Z)'      compress\ncomplete -f -o default -X '!*.+(z|Z)'     uncompress\ncomplete -f -o default -X '*.+(gz|GZ)'    gzip\ncomplete -f -o default -X '!*.+(gz|GZ)'   gunzip\ncomplete -f -o default -X '*.+(bz2|BZ2)'  bzip2\ncomplete -f -o default -X '!*.+(bz2|BZ2)' bunzip2\n# Postscript,pdf,dvi.....\ncomplete -f -o default -X '!*.ps'  gs ghostview ps2pdf ps2ascii\ncomplete -f -o default -X '!*.dvi' dvips dvipdf xdvi dviselect dvitype\ncomplete -f -o default -X '!*.pdf' acroread pdf2ps\ncomplete -f -o default -X '!*.+(pdf|ps)' gv\ncomplete -f -o default -X '!*.texi*' makeinfo texi2dvi texi2html texi2pdf\ncomplete -f -o default -X '!*.tex' tex latex slitex\ncomplete -f -o default -X '!*.lyx' lyx\ncomplete -f -o default -X '!*.+(htm*|HTM*)' lynx html2ps\n# Multimedia\ncomplete -f -o default -X '!*.+(jp*g|gif|xpm|png|bmp)' xv gimp\ncomplete -f -o default -X '!*.+(mp3|MP3)' mpg123 mpg321\ncomplete -f -o default -X '!*.+(ogg|OGG)' ogg123\ncomplete -f -o default -X '!*.pl'  perl perl5\n# This is a 'universal' completion function - it works when commands have\n# a so-called 'long options' mode , ie: 'ls --all' instead of 'ls -a'\n_get_longopts () \n{ \n    $1 --help | sed  -e '\/--\/!d' -e 's\/.*--\\([^[:space:].,]*\\).*\/--\\1\/'| \\\ngrep ^\"$2\" |sort -u ;\n}\n_longopts_func ()\n{\n    case \"${2:-*}\" in\n-*);;\n*)return ;;\n    esac\n    case \"$1\" in\n\\~*)eval cmd=\"$1\" ;;\n*)cmd=\"$1\" ;;\n    esac\n    COMPREPLY=( $(_get_longopts ${1} ${2} ) )\n}\ncomplete  -o default -F _longopts_func configure bash\ncomplete  -o default -F _longopts_func wget id info a2ps ls recode\n_make_targets ()\n{\n    local mdef makef gcmd cur prev i\n    COMPREPLY=()\n    cur=${COMP_WORDS[COMP_CWORD]}\n    prev=${COMP_WORDS[COMP_CWORD-1]}\n    # if prev argument is -f, return possible filename completions.\n    # we could be a little smarter here and return matches against\n    # `makefile Makefile *.mk', whatever exists\n    case \"$prev\" in\n        -*f)    COMPREPLY=( $(compgen -f $cur ) ); return 0;;\n    esac\n    # if we want an option, return the possible posix options\n    case \"$cur\" in\n        -)      COMPREPLY=(-e -f -i -k -n -p -q -r -S -s -t); return 0;;\n    esac\n    # make reads `makefile' before `Makefile'\n    if [ -f makefile ]; then\n        mdef=makefile\n    elif [ -f Makefile ]; then\n        mdef=Makefile\n    else\n        mdef=*.mk               # local convention\n    fi\n    # before we scan for targets, see if a makefile name was specified\n    # with -f\n    for (( i=0; i &lt; ${#COMP_WORDS[@]}; i++ )); do\n        if [[ ${COMP_WORDS[i]} == -*f ]]; then\n            eval makef=${COMP_WORDS[i+1]}       # eval for tilde expansion\n            break\n        fi\n    done\n        [ -z \"$makef\" ] &amp;&amp; makef=$mdef\n    # if we have a partial word to complete, restrict completions to\n    # matches of that word\n    if [ -n \"$2\" ]; then gcmd='grep \"^$2\"' ; else gcmd=cat ; fi\n    # if we don't want to use *.mk, we can take out the cat and use\n    # test -f $makef and input redirection\n    COMPREPLY=( $(cat $makef 2&gt;\/dev\/null | awk 'BEGIN {FS=\":\"} \/^[^.#   ][^=]*:\/ {print $1}' | tr -s ' ' '\\012' | sort -u | eval $gcmd ) )\n}\ncomplete -F _make_targets -X '+($*|*.[cho])' make gmake pmake\n# cvs(1) completion\n_cvs ()\n{\n    local cur prev\n    COMPREPLY=()\n    cur=${COMP_WORDS[COMP_CWORD]}\n    prev=${COMP_WORDS[COMP_CWORD-1]}\n    if [ $COMP_CWORD -eq 1 ] || [ \"${prev:0:1}\" = \"-\" ]; then\n        COMPREPLY=( $( compgen -W 'add admin checkout commit diff \\\n        export history import log rdiff release remove rtag status \\\n        tag update' $cur ))\n    else\n        COMPREPLY=( $( compgen -f $cur ))\n    fi\n    return 0\n}\ncomplete -F _cvs cvs\n_killall ()\n{\n    local cur prev\n    COMPREPLY=()\n    cur=${COMP_WORDS[COMP_CWORD]}\n    # get a list of processes (the first sed evaluation\n    # takes care of swapped out processes, the second\n    # takes care of getting the basename of the process)\n    COMPREPLY=( $( \/usr\/bin\/ps -u $USER -o comm  | \\\n        sed -e '1,1d' -e 's#[]\\[]##g' -e 's#^.*\/##'| \\\n        awk '{if ($0 ~ \/^'$cur'\/) print $0}' ))\n    return 0\n}\ncomplete -F _killall killall killps\n# A meta-command completion function for commands like sudo(8), which need to\n# first complete on a command, then complete according to that command's own\n# completion definition - currently not quite foolproof (e.g. mount and umount\n# don't work properly), but still quite useful - By Ian McDonald, modified by me.\n_my_command()\n{\n    local cur func cline cspec\n    \n    COMPREPLY=()\n    cur=${COMP_WORDS[COMP_CWORD]}\n    if [ $COMP_CWORD = 1 ]; then\nCOMPREPLY=( $( compgen -c $cur ) )\n    elif complete -p ${COMP_WORDS[1]} &amp;&gt;\/dev\/null; then\ncspec=$( complete -p ${COMP_WORDS[1]} )\nif [ \"${cspec%%-F *}\" != \"${cspec}\" ]; then\n    # complete -F &lt;function&gt;\n    #\n    # COMP_CWORD and COMP_WORDS() are not read-only,\n    # so we can set them before handing off to regular\n    # completion routine\n\n    # set current token number to 1 less than now\n    COMP_CWORD=$(( $COMP_CWORD - 1 ))\n    # get function name\n    func=${cspec#*-F }\n    func=${func%% *}\n    # get current command line minus initial command\n    cline=\"${COMP_LINE#$1 }\"\n    # split current command line tokens into array\nCOMP_WORDS=( $cline )\n    $func $cline\nelif [ \"${cspec#*-[abcdefgjkvu]}\" != \"\" ]; then\n    # complete -[abcdefgjkvu]\n    #func=$( echo $cspec | sed -e 's\/^.*\\(-[abcdefgjkvu]\\).*$\/\\1\/' )\n    func=$( echo $cspec | sed -e 's\/^complete\/\/' -e 's\/[^ ]*$\/\/' )\n    COMPREPLY=( $( eval compgen $func $cur ) )\nelif [ \"${cspec#*-A}\" != \"$cspec\" ]; then\n    # complete -A &lt;type&gt;\n    func=${cspec#*-A }\nfunc=${func%% *}\nCOMPREPLY=( $( compgen -A $func $cur ) )\nfi\n    else\nCOMPREPLY=( $( compgen -f $cur ) )\n    fi\n}\ncomplete -o default -F _my_command nohup exec eval trace truss strace sotruss gdb\ncomplete -o default -F _my_command command type which man nice\n# Local Variables:\n# mode:shell-script\n# sh-shell:bash\n# End:<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Warning Message, Welcome Message and .bashrc <br>(cowsay -f eyes &#8220;Welcome $USER&#8221;) Results<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">#################################################################\n#                   _    _           _   _                      #\n#                  \/ \\  | | ___ _ __| |_| |                     #\n#                 \/ _ \\ | |\/ _ \\ '__| __| |                     #\n#                \/ ___ \\| |  __\/ |  | |_|_|                     #\n#               \/_\/   \\_\\_|\\___|_|   \\__(_)                     #\n#                                                               #\n#  You are entering into a secured area! Your IP, Login Time,   #\n#   Username have been registered and sent to the server        #\n#                       administrator!                          #\n#                                                               #\n#   This service is restricted to authorized users only. All    #\n#            activities on this system are logged.              #\n#                                                               #\n#  Unauthorized access will be fully investigated and reported  #\n#        to the appropriate law enforcement agencies.           #\n#                                                               #\n#################################################################\nLinux Mint 21.1 Vera\nzipixel@zpxc321's password:\n\n                                          ?????     ?????      ???\n                                         ????????  ????????   ????\n ????????  ???????   ???  ???   ???????       ???        ??     ??\n     ???   ???  ???    ????    ???    ?    ?????       ???      ??\n   ???     ??    ??    ????    ??             ???    ???        ??\n ????????  ????????   ??????   ????????  ????????  ????????  ????????\n ????????  ?? ???    ???  ???    ?????    ?????    ????????  ????????\n           ??\n\n\nWelcome to Linux Mint\n * Documentation:  http:\/\/www.linuxmint.com\n\n====================================================\n - Hostname............: zpxc321\n - Disk Space..........: \/dev\/sda6 101G 15G 81G 16%\n - Memory used.........: 1115 MB\n - Temp................: +46.0\u00b0 C\n====================================================\n\nLast login: Tue Mar 14 21:56:37 2023 from 192.168.188.175\n _________________\n&lt; welcome zipixel &gt;\n -----------------\n    \\\n     \\\n                                   .::!!!!!!!:.\n  .!!!!!:.                        .:!!!!!!!!!!!!\n  ~~~~!!!!!!.                 .:!!!!!!!!!UWWW$$$\n      :$$NWX!!:           .:!!!!!!XUWW$$$$$$$$$P\n      $$$$$##WX!:      .&lt;!!!!UW$$$$\"  $$$$$$$$#\n      $$$$$  $$$UX   :!!UW$$$$$$$$$   4$$$$$*\n      ^$$$B  $$$$\\     $$$$$$$$$$$$   d$$R\"\n        \"*$bd$$$$      '*$$$$$$$$$$$o+#\"\n             \"\"\"\"          \"\"\"\"\"\"\"\nzipixel@zpxc321:~$\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Il file &#8220;.bashrc&#8221; \u00e8 un file di configurazione utilizzato dai terminali Bash su sistemi Linux e Unix. Esso contiene una serie di variabili di ambiente, alias, funzioni e altre impostazioni [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":3547,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-3535","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/pages\/3535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3535"}],"version-history":[{"count":12,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/pages\/3535\/revisions"}],"predecessor-version":[{"id":4037,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/pages\/3535\/revisions\/4037"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/media\/3547"}],"wp:attachment":[{"href":"https:\/\/www.gcportal.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}