diff --git a/code/bash/aliases.sh b/code/bash/aliases.sh new file mode 100644 index 0000000000000000000000000000000000000000..b326077fee9b3e451a62cb72158ea59c621ac1cf --- /dev/null +++ b/code/bash/aliases.sh @@ -0,0 +1,7 @@ +alias cf="clang-format --style=WebKit -i" +alias C="clang++ -std=c++20 -stdlib=libc++" +alias Cm="clang++ -std=c++20 -stdlib=libc++ -fmodules -fimplicit-module-maps" +alias G="g++ -std=c++20 -pedantic -Wall" +alias Gm="g++ -std=c++20 -fmodules-ts -pedantic -Wall" +alias Gh="g++ -std=c++20 -fmodules-ts -xc++-system-header" + diff --git a/code/bash/pathutils.sh b/code/bash/pathutils.sh new file mode 100644 index 0000000000000000000000000000000000000000..be5c3a41e411c8da41cc1a27f954138308f72507 --- /dev/null +++ b/code/bash/pathutils.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# *********************************************** +# Programming in C++ +# 09 -- 13 May 2022 +# Jülich Supercomputing Centre +# *********************************************** + +rmspecial() { + sed -e 's/[]\/()$*.^|[]/\\&/g' <<< "$1" +} + +# Usage: +# prepend_path NAME_OF_PATH_ENV_VAR LOCATION_TO_PREPEND +prepend_path() { + local pathtochange prevpath + pathtochange=$1 + prevpath=${!pathtochange} + if [ -d "$2" ]; then + [[ ":${prevpath}:" != *":$2:"* ]] && prevpath="$2:${prevpath}" + fi + eval "export ${pathtochange}=${prevpath}" +} + +# Usage: +# remove_path_element NAME_OF_PATH_ENV_VAR LOCATION_TO_REMOVE_FROM_IT +remove_path_element() { + local pathtochange prevpath toremove + pathtochange=$1 + prevpath=${!pathtochange} + toremove=$(rmspecial $2) + prevpath=$(eval "echo ${prevpath} | sed -e 's#$toremove:##'") + prevpath=$(eval "echo ${prevpath} | sed -e 's#:$toremove##'") + eval "export ${pathtochange}=${prevpath}" +} + +# Usage: +# pathadd /a/b/c/bin +pathadd() { + prepend_path PATH $1 +} +# Usage: +# pathrm /a/b/c/bin +pathrm() { + remove_path_element PATH $1 +} +libpathadd() { + prepend_path LD_LIBRARY_PATH $1 + prepend_path LD_RUN_PATH $1 + prepend_path LIBRARY_PATH $1 +} +libpathrm() { + remove_path_element LD_LIBRARY_PATH $1 + remove_path_element LD_RUN_PATH $1 + remove_path_element LIBRARY_PATH $1 +} + +incpathadd() { + prepend_path CPATH $1 +} +incpathrm() { + remove_path_element CPATH $1 +} +cmpathadd() { + prepend_path CMAKE_PREFIX_PATH $1 +} +cmpathrm() { + remove_path_element CMAKE_PREFIX_PATH $1 +} + +