\lstdefinelanguage{lBash}{
language=bash,
otherkeywords = {<<,>>,2>},
alsoletter={|~_.><:-},
moredelim=**[is][{\xlsthlbox{xlstwarning}}]{&warn&}{&warn&},
moredelim=**[is][{\xlsthlboxd{\xlstcustom}}]{&custom&}{&custom&},
moredelim=[is][\color{xlst@colors@lst@highlight}]{&ihl&}{&ihl&},
moredelim=[is][{}]{&plain&}{&plain&},
moredelim=**[il][\color{gray}\bfseries]{>imp>},
comment=[l]{\#},keywordsprefix={\$},escapeinside={!*}{*!},
morekeywords = [1]{bash,pkill,make,apt,pacman,zypper,cd,mvn,sh,clear,xargs,source,print,install,update,get,dump,config,tokentest,clean,help,buildfile_compile,generate,curl,nano,service,groupadd,usermod,ssh-keygen,ssh-agent,ssh-add,remove,upgrade,sudo,jake,java,javac,ghci,ghc,grep,ls,cp,sort,find,man,tail,head,setfacl,getfacl,groups,pdflatex,latexmk,apt-get,texdoc,firefox,traceroute,docker,netcat,mv,rm,du,diff,vimdiff,locate,date,ts,gcc,tar,zip,unzip,ln,file,more,chmod,ftp,telnet,ssh,scp,mail,dbx,whoami,gdb,watch,script,git,texhash,mkdir,which,wc,parallel,gzip,tsc,node,yarn,perl},
morekeywords = [3]{PATH,javafx:compile,javafx:run},
morestring=[b]',
add to literate={>}{{\xlstGet{keywordA}{>}}}1 {<}{{\xlstGet{keywordA}{<}}}1 {:bashdollar:}{{\texttt{\xlstGet{keywordA}{\$}}}}1 {\\u}{{\xlstGet{keywordB}{\textbackslash u}}}2 {\\n}{{\xlstGet{keywordB}{\textbackslash n}}}2  {\\"}{{\xlstGet{keywordB}{\textbackslash\dq}}}2 {\\\\}{{\xlstGet{keywordB}{\textbackslash\textbackslash}}}2 {:asyncamp:}{{\xlstGet{keywordC}{\&}}}1,
}

\RegisterLanguage{bash}{lBash}