Итак, все мы знаем, что bash-скрипты — это круто, ибо их легко писать и они здорово облегчают нам жизнь.
Возьмём для примера меня :) Я недавно мигрировал с винды, и потому столкнулся с рядом проблем при переносе данных. Основная проблема — кодировки. В Debian я преспокойно поставил себе в качестве кодировки локали UTF-8, но в винде-то CP1251! Поэтому всякие там txt'шные заметки и текстики (а я вообще поклонник принципа «каждой технологии — своё применение», и потому у меня каждый документ по возможности сохранён в формате, наиболее для этого документа подходящем), коих у меня просто море, читаться отказались. То есть не совсем отказались — KWrite способен прочесть их, но для этого надо сделать два лишних клика. А вот Midnight Commander не заставить понимать CP1251 и тремя кликами (хотя, может, и можно, но тюнинговать его мне откровенно влом, так что я решил повыпендриваться :) ). Да и вообще, UTF-8 рулит, CP1251 - отст… эм… просто альтернативная кодировка :)
Естественно, первое время я перегонял CP1251 в UTF8 вручную. Делал я это
enconv
'ом (входит в пакет enca
). Но однажды я открыл сконвертированный txt'шник во встроенном редакторе MC и увидел в конце каждой строки какой-то гадкий чёрный прямоугольник с «крышей» (имеется в виду символ «^»). Призадумавшись, я вспомнил, что в винде для обозначения новой строки применяется CRLF, а в никсах — LF. Проблема была решена практически моментально (респект гуглу) — tr -d '\r' <inputfile >outputfile
превратит CRLF в LF (материал из английской википедии). Я объединил enconv
с tr
и получил вполне приличную конструкцию, которая исправно выполняло поставленную задачу. Но каждый раз вбивать сиё творение мне быстро надоело, и я написал скриптик win2lin
:#!/bin/sh
enconv "$1" && tr -d '\r' <"$1" >temp && mv temp "$1"
./win2lin имя_конвертируемого_файла
и получаем результат. Но постоянно тягать скрипт в ту директорию, где он нужен, быстро надоело; поэтому я поместил его в корневой каталог и конвертировал файлы командой ~/win2lin file
.А потом я случайно вспомнил про переменные окружения, среди которых оказалась и
PATH
— переменная, содержащая пути к исполнимым файлам. Недолго думая, я полез в ~/.bashrc
, но не нашёл там ничего полезного. Тут мои глаза наткнулись на файлик ~/.bash_profile
— и именно там оказался ключик к окончательному решению.В общем, я создал каталог
~/scripts
, дописал в ~/.bash_profile
вот это:if [-d ~/scripts] ; then
PATH=~/scripts:"${PATH}"
fi
~/scripts
свой win2lin
и возрадовался жизни :)Примечание: изменение к
.bash_profile
подействует только после перезагрузки баша. Если влом (нельзя?) ребутиться, то можно сделать так:source ~/.bash_profile
Ну вот и всё, именно это я и подразумевал под "интеграцией скриптов в систему". :)
Пишите свои сценарии, упрощающие рутинные операции, и кладите их в
~/scripts
, откуда они будут доступны по первому зову!
Копируете статью — поставьте ссылку!
2 комментария:
Очень хорошо написано для новичков! Думаю, много кому понравится. Только не проще ли настройки баша обновлять посредством $ source ~/.bashrc ?
Рад, что хоть кому-то это понадобилось :)
Заменил своё шаманство с $PATH на source — так правильнее :)
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.