28.12.2009
В комментариях к прошлогоднему переводу Bash Pitfalls внимательный flavi задался вопросом, почему при попытке выполнить скрипт, в начале которого написано
#!/bin/bash –posix –verbose
выдаётся ошибка
/bin/bash: –posix –verbose: invalid option
в то время как в интерактивном режиме bash нормально запускается с такой комбинацией опций; более того, если в shebang’е оставить только одну из этих опций, то скрипт [...]
linux
-
3 комментария
24.08.2009
В блоге «Полезные советы по Linux» наткнулся на способ ссылаться на определенное место в документации:
sh -c ‘PAGER=»less» LESS=»-p search_string» man man_page’
Явно вызываем sh, задаем просмотрщик less и указываем ему строку, которую нужно найти. Команда man запустит less и прокрутит экран до первого совпадения.
Конечно же, необходимо убедиться, что заданный шаблон присутствует в документе хотя бы один [...]
linux
-
2 комментария
18.08.2009
Имеется неколько десятков однотипных файлов вида FILE20090801011253.txt, FILE20090801023619.txt и т.д. Требуется составить регулярное выражение, которому удовлетворяют только названия файлов из списка.
Вручную это можно сделать примерно так:
FILE200908010(11253|23619)\.txt
Если файлов много, то никаких нервов не хватит высчитывать, проверять и перепроверять.
То же самое можно сделать полуавтоматически, с помощью механизма complete-into-braces оболочки bash. Сочетание клавиш Esc-{ преобразовывает список подстановки в [...]
linux
-
7 комментариев
18.03.2009
Есть две вечные темы, о которых пишет почти каждый автор «блога про linux» — туннели в ssh (каюсь, сам грешен) и сброс пароля root путём загрузки в режиме single user. Как правило, второй рецепт провоцирует обширные обсуждения на тему незащищённости Linux от действий злоумышленников при наличии физического доступа к компьютеру.
Вот несколько простых шагов, которые создадут [...]
linux
-
2 комментария
29.12.2008
22. echo «Hello World!»
23. for arg in $*
24. function foo()
25. echo «~»
26. local varname=$(command)
linux
-
10 комментариев
24.12.2008
17. cd /foo; bar
18. [ bar == "$foo" ]
19. for i in {1..10}; do ./something &; done
20. cmd1 && cmd2 || cmd3
21. Касательно UTF-8 и BOM (Byte-Order Mark, метка порядка байтов)
linux
-
0 комментариев
22.12.2008
11. cat file | sed s/foo/bar/ > file
12. echo $foo
13. $foo=bar
14. foo = bar
15. echo <<EOF
16. su -c ’some command’
linux
-
3 комментария
18.12.2008
5. [ "$foo" = bar && "$bar" = foo ]
6. [[ $foo > 7 ]]
7. count=0; grep foo bar | while read line; do ((count++)); done; echo «number of lines: $count»
8. if [grep foo myfile]
9. if [bar="$foo"]
10. if [ [ a = b ] && [ c = d ] ]
linux
-
5 комментариев
13.12.2008
Качество скриптов, используемых для автоматизации и оптимизации работы системы, является залогом ее стабильности и долголетия, а также сохраняет время и нервы администратора этой системы. Несмотря на кажущуюся примитивность bash как языка программирования, он полон подводных камней и хитрых течений, способных значительно подпортить настроение как разработчику, так и администратору.
Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)
1. for i in `ls *.mp3`
2. cp $file $target
3. [ $foo = "bar" ]
4. cd `dirname "$f"`
linux
-
3 комментария
17.11.2008
В Debian в bash был добавлен патч, благодаря которому пользователь может написать свою функцию, выполняемую в случае, если введённая пользователем команда отсутствует. В Ubuntu эту фичу использует подсказка command-not-found, заметно тормозящая работу, в то время как можно найти более интересные и полезные возможности применения этого механизма, оставив поиск пакета специализированным программам. Поделюсь своим опытом.
У [...]
linux
-
6 комментариев
28.04.2008
Ежедневно в моей рабочей папке появлялось от одного до полутора десятков и более файлов — документов, патчей, скриптов, отчётов и прочих продуктов рабочей деятельности. Однажды настал момент, когда найти нужный файл среди этого бардака стало довольно затруднительно, и чаша моего терпения переполнилась. Файлы нужно каким-нибудь организовать, подумал я. Изобретать систему меток для организации файлов по [...]
lifehack
-
8 комментариев
03.04.2008
После посещения заметки "Создание списка имен хостов для ssh на лету для автодополнения" долго вчитывался в man bash с целью понять, как же там это автодополнение работает. В конце концов, поняв, что с наскоку эту гремучую смесь из фич баша и возможностей readline не осилить, скачал оба исходника и нашел там великое множество примеров использования [...]
linux
-
6 комментариев
28.03.2008
Иногда при работе в midnight commander появляется сообщение «The shell is already running the command», не дающее выполнить команду в текущем каталоге. Стандартный способ обхода — Ctrl+O, Ctrl+C, Enter приводит к тому, что mc возвращается в каталог, где была выполнена предыдущая команда, и приходится еще раз переходить в нужный каталог. Проблема обсуждается чуть ли не [...]
linux
-
3 комментария
27.11.2007
Tips от Madskull’a: bash, в т.ч.:
ожидание запущенных в фоне задач
прерывание по таймеру (SIGALRM)
параметры в скриптах и функциях
работа с массивами
перехват прерываний с помощью trap
как сделать прогрессбар в bash-скриптах
чтение конфигов из скрипта
работа со строками без использования внешних утилит типа sed и awk
подстановка параметров
использование getopts в shell-скриптах
специальные переменные, цвета ECHO, спецсимволы
краткое описание некоторых полезных утилит
linux, Ссылки
-
1 комментарий
26.11.2007
Оригинал: bash tips and tricks
Для непосвящённых, bash — это оболочка по умолчанию во многих дистрибутивах Linux, включая Fedora, Ubuntu, Redhat и т.д. и т.п. Если вы используете ОС, основанную на Linux, есть вероятность, что вы используете именно bash. Поэтому ниже я сделал обзор некоторых часто встречающихся неудобств, а также простых способов их избежать.
1. Забытая история [...]
lifehack, linux
-
2 комментария