Хроники Knowledge Base Slackware FAQ Tools Акела Озеро Селигер Путешествия Рецепты Обои Фоторедактор Сертификаты Контакты
Linux

Создано: 11 Августа 2008г.   19:31
Модифицировано: 12 Марта 2013г.   13:23

[ Назад ]

BASH Script


Разбор строк
Пути
Вывод только пути из полного имени файла:
dirname /path/to/file
выдаст:
/path/to
например включить файл из той же директории, откуда вызван скрипт:
. $(dirname $0)/file.cfg
и наоборот, для вывода только имени файла:
basename /path/to/file
выдаст:
file

Разбиение по колонкам, например:
mount | column -t

Вывести IP интерфейса
HOST_IP=`ifconfig eth0 | head -2 | tail -1 | awk '{print $2}' | cut -d : -f 2`
echo $HOST_IP

Переменные
Не использовать в имени знак подчеркивания!

Поместить содержимое файла
foo=`cat bar.txt`

Вывести с форматированием - указать в кавычках
echo "$foo"

В условных операторах с переменными

a="foo"
if [ "$a" = "qqq" ]; then
....

необходимо использовать пробелы!
Размер свободного места на диске
При выводе длинных названий дисковых устройств можно использовать ключ -P
df -P

Посмотреть % свободного места
df -P | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }'

http://www.cyberciti.biz/tips/shell-script-to-watch-the-disk-space.html

Вместо программы telnet
в скриптах удобно использоватьп рограмму nc ("netcat")
Команды можно посылать на стандартный ввод команде nc, а на STDOUT получать ответы, например:
printf 'HELO example.org\nQUIT' | nc mxs.mail.ru 25

Лекция: NETCAT и CRYPTCAT

Команду printf можно использовать вместо echo для форматирования посылаемых строк, например посыла нескольких строк

printf 'строка1\nстрока2'
послать CR/LF:
printf 'QUIT\x0D\x0A'

Получение IP адреса интерфейса
ip=`ifconfig $nic | grep inet | cut -d : -f 2 | cut -d ' ' -f 1`
или
ip=`ifconfig $nic | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'`

Удаление коментариев и пустых строк из файла
sed -i.bac "/#.*/d;/^$/d" test.txt создает файл .bac

Поиск и замена текста в файле
sed -i'.bac' -e 's/что/на_что/g' /filename

sed — Википедия


Цикл for
#/bin/bash
TEST="1 2 3"
for qqq in $TEST; do
echo $qqq
done

Полезные статьи

Advanced Bash-Scripting Guide [ 2 ] [ 3 ]
Написание несложных Bourne-скриптов
Коллекция полезных скриптов


Перенаправление стандартных потоков данных в Linux

bash - командный интерпретатор




[ Назад ]







Powered by Parser & MyCMS Дмитрий Ульянов, 2001-2024 (с)