Моя учеба в написании скриптов в bash

Доброго времени суток, начинающие и продвинутые линуксойды! :=) Я с Linux работаю примерно год и с недавнего времени появился у меня огромный интерес к BASH.

Мой интерес заключается в часности к написанию скриптов в нем, для автоматизации тех или иных действий.

Решил я тут создать и вести свой блог (думаю админы не против :=)), в котором буду выкладывать свои наработки и черновики, моих скриптов. Вообщем, все что я учу, выкладываю здесь :=)

Я нашел в интернете одну книгу, которая как мне сказали, очень эфективная. Конечно сразу “суперскриптов” от меня ждать не стоит, но Москва тоже не сразу строилась ;=)

И вот представляю свой первый в жизни скрипт:

Он считывает с системы время и дату + время последней перезагрузки системы + последнего зарегистрированного пользователя в системе и все это перенаправляет в файл, в моем случае result.log: 

#!/bin/sh

date 1>/home/undertaker/result.log

uptime 1>>/home/undertaker/result.log

users 1>>/home/undertaker/result.log

Вот такой вот маленький скрипт :=) После того как я его написал в текстовом документе, сохранил в формат .sh, присвоил я права на чтение и запуск, командой: 

chmod +rw

И запускаем его командой (находясь в той же директории): 

./result.log

Критика моих действий - всегда приветствуется :=)

Linux_man аватар

я в свою очередь хотел бы добавить:

ты в скрипте написал первой строчкой (#!/bin/sh), какой интерпритатор должен его исполнять (bash). В этом случае ты можешь это не писать, потому что так и так по-умолчанию идет интерпритатор bash в linux и твой скрипт не содержит спецефических команд, которые не под силу bash'у. Это первое :)

Второе: в команде chmod, ты написал "+rw", значит права на исполнения этого скрипта есть у всех, если ты напишешь команду так:

chmod u+rx, то тогда права только у создателя, то есть у тебя :)

Еще хотел бы пояснить, про 3 последние строчки скрипта, просто может кому это интересно.

после команд date, uptime и user стоит цифра "1" это называется перенаправление. Всего в системе по-умолчанию 3 источника информации:

0 (stdin) - стандартное устройство ввода, клавиатура;
1 (stdout) - стандартное устройство ввыода, экран;
2 (stderr) - сообщения об ошибках с экрана;

в скрипте указано "1", значит инфа берется с экрана и далее символ ">" перенаправляет ее в файл (создает файл с нуля), в твоем случае result.log, а символ ">>" добавляет уже в существующий файл информацию, сохраняя ее в конце документа.

Думаю кому будет полезно, что я написал :)

aka Makaveli

undertaker аватар

ооо респект, за такое разжовывание, мне всегда нравится такое еще несколько раз перечитывать! :=)

pdb3 аватар

Вот еще для автоматизации вечерних прогулок

#!/bin/bash
#пример lavka 80 200 30 5
#вес 80 кг
#200 см - расстояние между опорами
#30 см - ширина доски
#5 см - толщина доски
#в ответ получаете ответ на вопрос
# А не опасно ли сесть посредине этол лавочки из сосновой доски?:)
let P=$1
let l=$2
let b=$3
let h=$4
let W=b*h*h/6
let p=P*1,1
let M=p*l/4
let s=M/W
echo 'Ваш вес '$p' кг'
echo 'Длинна лавочки '$l' cм'
echo 'Ширина доски '$b' см'
echo 'Толщина доски '$h' см'
if [ "$s" -gt 120 ]
then echo "Опасно"
else echo "Нормуль"
fi

Это для самой простой конструкции места отдыха, но можно тему развить и для более сложных с множеством не широких дощечек:)

jekson аватар

блин, вот когда так все расписано - сразу хочется попробовать самому ))