Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
chmod -R a-x .
$ chmod -R a-x .
chmod: cannot read directory ‘.’: Permission deniedДа, упустил это, но смысл решения понятен.комментарий vlivyur ясно указывает на то, что речь не шла о повреждении системы.
rm -rf /, а тут — видимо, человек попытался изобразить chmod, снимающий x со всех-всех файлов.lsa = ls -a или самописный скрипт обновления dns-записей локальной сети: bindlocalupdateextract#
# extract archives
#
extract ()
{
if [ -f "$1" ]
then
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.gz) tar xzvf "$1" ;;
*.bz2) bunzip2 -v "$1" ;;
*.deb) ar xv "$1" ;;
*.gz) gunzip -v "$1" ;;
*.rar) unrar xv "$1" ;;
*.rpm) rpm2cpio -v "$1" | cpio --quiet -i --make-directories ;;
*.tar) tar xfv "$1" ;;
*.tbz2) tar xjfv "$1" ;;
*.tgz) tar xzfv "$1" ;;
*.zip) unzip "$1" ;;
*.z) uncompress -v "$1" ;;
*.7z) 7z xv "$1" ;;
*) echo "'$1' cannot be extracted via extract" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
tar -xf. Использование «bunzip2» и «gunzip» — вообще сурово, т.к. в отличие от всех других альтернатив, еще и убивает исходный файл, никого не спрашивая.Возможно первое правило действительно нуждается в лучшей формулировке. Да, у меня тоже не все скрипты просят подтверждения. Ключевые слова «выполняют действия» — это именно то, что Вы называете деструктивным поведением.Зачем нужны скрипты, которые не выполняют действия?
bunzip file.bz2/bzip2 file — оно обратимо. Это не загрузка скриншотов на Яндекс.Фотки, отмонтирование, убийство operapluginwrapper, печать файла как книги на принтере или даже удаление сокетов dtach (даже если всех, включая соответствующие рабочим процессам) (dtach — аналог screen, из которого выпилен весь функционал за исключением возможности работы после убийства эмулятора терминала/ssh сессии и возможности переприсоединения).Я пока не нашел универсального способа именования скриптов… Поделитесь.Именуйте так, как вам будет понятно. Более универсального принципа я не знаю.
Я пользуюсь mc 12 часов в сутки. И он у меня по Enter не только запускает скрипты, но и открывает почти все файлы. Не говоря обо всех его остальных возможностях. Это такой удобный и естественный инструмент, что мне как-то даже нечего сказать по поводу «автодополнения в консоли».Естественным он быть не может, равно как и консоль и вообще все интерфейсы.
aplayer /mnt/files/torrent/Series/Common\ series\ prefix\ <->\ *.mkv (можно и просто …/*.mkv, но в этом случае при случайном выходе из mplayer сложнее сказать, что хочешь смотреть все серии, начиная со, скажем, 15‐й. А так <-> заменяется на <15->), то иметь mc ради такого случая мне кажется странным. Кроме того, мне не понятно, как в случае запуска с N‐й серии мне поможет mc.1>&2, субъективно, во-первых, лучше записывать, как >&2, во-вторых, раз уж выводить error messages хочется так часто — сделать в библиотеке функций типа функции «log_info», «log_warning», «log_error» — их и раскрашивать можно, и поотключать, и позаворачивать при желании в разные места — и все такое.echo "" не стоит писать почти никогда — достаточно echo без параметров.PATH="$(error_function)"
rm -rf /path/to/$PATH
set -e это очень хорошо, но неиспользование стандартных переменных должно быть условным рефлексом. В данном конкретном примере ничего не будет удалено, поскольку оболочка не будет знать, где искать rm.cat file | head -n 2 | grep smthn") если ничего не нашел — вернет 1, и скрипт завершится. res=$(expr 1 - 1), но expr вернет 1 если результат операции будет 0.zenity для создания сценариев работы с git-репозиториями, там же и размещая.Приемы написания скриптов в Bash
Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно.
Ты уверен, что хочешь запустить это (y/[a])
В Bash не очень хорошо обстоят дела с возвратом значения из функции
echo 0|sed 's909=bO%3g)o19;s0%0aob)]vO0;s()(0eh}=(;s%}%r1="?0^2{%;
s)")@l2h3%"@$);sw%wh]r()$o%!w;sz(z^+.z;sa+a !z" a;sxzxi?v{a)ax;:b;
s/\(\(.\).\)\(\(..\)*\)\(\(.\).\)\(\(..\)*%.*\6.*\2.*\)/\5\1\3\7/;
tb;s/%.*//;s/.\(.\)/\1/g' echo 0|sed 's909=bO%3g)o19;s0%0aob)]vO0;s()(0eh}=(;s%}%r1="?0^2{%;
s)")@l2h3%"@$);sw%wh]r()$o%!w;sz(z^+.z;sa+a !z" a;sxzxi?v{a)ax;:b;
s/\(\(.\).\)\(\(..\)*\)\(\(.\).\)\(\(..\)*%.*\6.*\2.*\)/\5\1\3\7/;
tb;
s/%.*//;s/.\(.\)/\1/g'
Приемы написания скриптов в Bash