#argv

2024-08-28

My zshrc contains the following:

setopt autocd
function cd () {
if (( ${#argv} == 1 )) && [[ -f ${1} ]]; then
[[ ! -e ${1:h} ]] && return 1
builtin cd ${1:h}
else
builtin cd "$@"
fi
}
alias ...='../..'
alias ....='../../..'
alias .....='../../../..'

This allows things like `cd /etc/fstab` to go to `/etc`, `...` to go 2 directories up and `/blah/fasel` to go to `/bla/fasel` without explicit `cd`.

I am basically lost on machines without that. 😿

Найменшенькийbalaraz@social.net.ua
2024-05-19

Знайшов ще одну не погану C++ бібліотеку для розбору вхідних аргументів програми. Називається TCLAP (Templatized C++ Command Line Parser). Вона є header-only тому зібрати набагато простіше, але мені таке не дуже подобається. Подивитись більше інформації з прикладами можна тут. Поширюється бібліотека під ліцензією MIT.

На жаль стандартне форматування помилок, довідки й версії не дуже звичне, але досить просто можна замінити на своє власне. Також було б непогано додати сучасні constexpr і таким чином пришвидшити виконання. А якщо у C++26 нарешті зʼявиться рефлексія. А з використанням C++23 можна було б замінити динамічний поліморфізм на статичний (CRTP). Ну це я вже дуже розмріявся.

#cpp #cxx #argv #args #parsing #parser #cli #lib #library #tclap #headeronly

2024-04-11

Some days you don’t get your own stuff done, but you do point out to someone else that they have loaded a high-caliber #footgun.

#Sanitize your input, folks, and jealously guard your #argc and #argv.

2021-09-20

array=( $( printf "%s\n" "${array[@]}" | sort -n -u ) )

#arra=();arra=( $( printf "%s\n" "${argv[@]}" | sort -n -u ) )
max=${#array[@]}

#echo "${array[@]}"
for ((i=0; i < $max; i++)); do
a=`echo -n "${array[$i]}"`
array[i]=`echo "obase=16;ibase=10;"$a|bc`
done
#echo "${array[@]}"
if [ $max -eq $baseN ];then
max=${#argv[*]}
for ((i=0; i < $max; i++)); do
a=${argv[i]}
b=$(echo -n "${array[10#$a]}")
#echo $a
#echo $b
printf '\x'$b
done;
else
echo incorrect base number
fi

2020-07-27

if [[ ${array[i]} = ${arraz[j]} ]]; then
unset array[i]
fi
done
done

array=( $( printf "%s\n" "${array[@]}" | sort -n -u ) )

arra=();arra=( $( printf "%s\n" "${argv[@]}" | sort -n -u ) )
max=${#arra[@]}

for ((i=0; i < $max; i++)); do
a=`echo -n "${array[$i]}"`
array[i]=`echo "obase=16;ibase=10;"$a|bc`
done
if [ $max -eq $baseN ];then
max=${#argv[*]}
for ((i=0; i < $max; i++)); do
a=${argv[i]}
b=$(echo -n "${array[10#$a]}")
printf '\x'$b
done;
else

2020-07-26

unset array[i]
fi
done
done

array=( $( printf "%s\n" "${array[@]}" | sort -n -u ) )

max=${#array[@]}
for ((i=0; i < $max; i++)); do
a=`echo -n "${array[$i]}"`
array[i]=`echo "obase=16;ibase=10;"$a|bc`
done
if [ $max -eq $baseN ];then
max=${#argv[*]}
for ((i=0; i < $max; i++)); do
a=${argv[i]}
b=$(echo -n "${array[10#$a]}")
printf '\x'$b
done;
else
echo incorrect base number
fi

2020-07-12

a="${OPT_TAGS[0]}"
max=${#a}
array=()
for ((i=0; i < $max; i++)); do
array[i]=`echo -n "${a:i:1}"|od -tu1 -An|xargs printf "%s"`
done
array=( $( printf "%s\n" "${array[@]}" | sort -n -u ) )
max=${#array[@]}
for ((i=0; i < $max; i++)); do
a=`echo -n "${array[$i]}"`
array[i]=`echo "obase=16;ibase=10;"$a|bc`
done
max=${#argv[*]}
for ((i=0; i < $max; i++)); do
a=${argv[i]}
a=`echo -n "${array[$a]}"`
printf '\x'$a
done

もっと短くするのどすればいいの

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst