Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
proceed_sudo () { sudor_command="`HISTTIMEFORMAT=\"\" history 1 | sed -r -e 's/^.*?sudor//' -e 's/\"/\\\"/g'`" ; sudo sh -c "$sudor_command"; }; alias sudor="proceed_sudo # "$ sudor make me a sandwitch > /var/lib/sandwitch
finit() { count=$#; current=1; for i in "$@" ; do echo $current $count; echo $i; current=$((current + 1)); done; }
alias fnext='read cur total && echo -n "[$cur/$total] " && read'
finit 1 2 3 4 | while fnext item; echo $item ; done
$ finit 1 2 3 4 | while fnext item; do echo $item; done
[1/4] 1
[2/4] 2
[3/4] 3
[4/4] 4
.*? ничем не отличается от .*. Точнее от (.*)?, за исключением сохранения текста.echo abc | sudor { read def && echo $def } | read ghi можно обеспечить в обоих случаях если немного заморочиться.a="echo a";
$a
a="echo a";
eval $a
cd -
cd $OLDPWD
mv file{,.bak} #!/bin/bash -x#!/bin/bash
for i in {1..10000000}; do
echo "item: $i";
done
#!/bin/bash
for i in $(seq 10000000); do
echo "item: $i";
done
echo "0000.0000.0000" |sed -e 'y/./:/' | sed -r 's/([0-9,a-f]{2})([0-9,a-f]{2})/\1:\2/g'
$ while read line; do X=$line; done < <(cat /etc/hosts | head)
$ echo $X
# IPv4 and IPv6 localhost aliases
[[ 2 -eq 3 ]] [[ "test" == "test" ]] [[ $VAR -eq 3 ]]
VAR=`some args`
if [ -n "$VAR" ]; then ...
....
fi
Подводные камни shell скриптинга