( FILES="$(find /var/www/ -name '*.php' -exec grep include "{}" \; | \
awk -F'"' '{print $2}' | sort | uniq)" && \
echo "$FILES" && echo "$FILES" | \
while read FILE ; do \
find /var/www/ -name "$FILE"; \
done | \
sed -e 's/.*\/\(.\+\)$/\1/' ) | sort | uniq -u ; unset FILES
Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения
[linux]
четверг, 26 апреля 2012 г.
Поиск отсутствующих файлов, упомянутых в include
[linux]
среда, 25 апреля 2012 г.
Перекодировать файлы в текущем каталоге
# рекурсивно, все файлы
find -type f -exec enconv "{}" \;
# рекурсивно, выбрать по суффиксу (расширению)
find -type f \( -name '*.js' -o -name '*.php' \) -exec enconv "{}" \;
# только текущий каталог (не спускаться ниже), все файлы
find -type f -maxdepth 1 -exec enconv "{}" \;
[linux]
Сколько файлов в какой кодировке?
# все файлы
find -type f -exec enca -ip "{}" \; | sed -e 's/^.*\.//' | sort | uniq -c
# выбрать по суффиксу (расширению)
find -type f \( -name '*.js' -o -name '*.php' \) -exec enca -ip "{}" \; | sed -e 's/^.*\.//' | sort | uniq -c
Пример результата работы:
$ find -type f \( -name '*.js' -o -name '*.php' \) -exec enca -ip "{}" \; | sed -e 's/^.*\.//' | sort | uniq -c
17 js: ASCII
34 js: UTF-8
238 php: ASCII
117 php: UTF-8
понедельник, 25 октября 2010 г.
Скрипт для подготовки кода к публикации в блоге
Я периодически публикую код на страницах своего блога, и не редко мне приходится править код, чтобы он правильно обработался движком блога... Обычно приходится заменять следующие символы в соответствующие им html коды:
- & → &
- < → <
- > → >
- " → "
- ' → '
четверг, 21 октября 2010 г.
Скрипт для получения информации о домене
Периодически мне бывает нужно получить информацию о каком-либо домене. Для этого я обычно использую utrace и whois. Но это как-то не очень удобно, хотелось все в консольке видеть. Поэтому был набросан однострочник, который выводил инфу с utrace на терминал:
wget -qO- 'http://xml.utrace.de/?query=google.ru' | \ sed -e '/^<\/\?result\|^<?xml\|^<queries/d;s/<\/.\+>$//g;s/^<//g;s/>/\t\t: /g;s/\(^countrycode\|^latitude\|^longitude\)\t/\1/g'Но все же это не совсем удобно. Вначале запускаю этот однострочник, потом whois, а потом, если вдруг приспичит глянуть, где стоит сервак интересуемого меня домен, то надо лезть на utrace. Не удобно в общем...
четверг, 2 июля 2009 г.
macfinder: Узнаем производителя сетевой железяки по его MAC'у
Сам скрипт прост как две копейки. Смотрит, что ему передали, делает запрос на сайт, получает ответ, парсит и показывает результат тебе.
$ macfinder
Использование:
macfinder MAC | -m Manufacturer
MAC - первые 24 бита mac-адреса (например, 00d0b7)
-m Manufacturer - название производителя (например, Intel)
Вот собственно и все :)
macfinder забирай тут.
Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.
[script]
понедельник, 22 июня 2009 г.
Обновил ppa-key-import до версии 1.0
Если скрипт запустить без параметров, то он лезет в файл(ы) /etc/apt/*.list и "выковыривает" оттуда все репозитории с launchpad.net. После чего для каждого репозитория проверяется наличие в системе ключа-подписи. Если ключ есть, то об этом сообщается, а если нет, то ключ будет импортирован о чем так-же будет сообщено.
Чтобы скрипт установить в систему и интегрировать в apt-get есть параметр "-a":
ppa-key-import -aТ.ж. скрипт будет скопирован в /usr/bin. Это делается для того, чтобы если вы переместите скрипт в другое место он продолжал функционировать (apt-get же не знает о том, что вы переместили скрипт). Если добавить ключ "!", то скрипт перезапишет себя в /usr/bin и заново интегрируется (переинтегрируется) в apt-get:
ppa-key-import -a !Для удаления скрипта из системы и его интеграции из apt-get есть ключ "-a -":
ppa-key-import -a -Ключ скрипта "-b" предназначен для импорта ключей от бета-репозиториев:
ppa-key-import -bОн был добавлен из-за UbuntuOne, т.к. я не захотел ставить предложенный пакет, а решил все сделать ручками :)
В части скрипта используются наработки, которые написал Dominic Evans, за что ему огромное спасибо :) А т.ж. спасибо Антону, автору блога "Крапленая колода", за то, что обратил мое внимание на этот скрипт и за тестирование ранних версий этого скрипта :)
Кстати, чуть не забыл, если скрипт установить (интегрировать) в систему, то каждый раз при выполнении команды "sudo apt-get update" вначале будет отрабатывать скрипт, а уже потом apt-get.
Скачать ppa-key-import :)
Информация с сайта http://angel2s2.blogspot.com/.
Если Вы читаете эту информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.
[linux]
среда, 13 мая 2009 г.
Bash: Добавляем дату и время в историю команд (history)
Отредактируйте ~/.bashrc добавив внизу такую строку:
export HISTTIMEFORMAT="%t%d.%m.%y %H:%M:%S%t"и выполните команду (команда начинается с точки, за которой идет пробел)
. ~/.bashrc
Теперь вместо
$ history | awk '/history/'будет такой вывод
1897 history | awk '/aptsearc/'
1898 history | awk '/aptsearch/'
1899 history | awk '/history/'
$ history | awk '/history/'
1897 13.05.09 13:20:11 history | awk '/aptsearc/'
1898 13.05.09 13:20:15 history | awk '/aptsearch/'
1899 13.05.09 13:20:34 history | awk '/history/'
Удобно? Для меня ДА :)
ЗЫЖ-1 Подсмотрено на http://guruadmin.ru/.
ЗЫЖ-2 Если кто захочет сделать свой формат даты-времени, то читаем тут.
вторник, 12 мая 2009 г.
Маленький однострочник на баше для получения погоды в консольку. Вариант 2.
Фарш получился такой:
lynx -nolist -dump http://wap.gismeteo.ru/wap2/towns/26702.wap2 | sed -e '1d' | sed -n '1,32p;32q'Чтобы выводились нормальные русские буквы надо поставить пакеты lynx-cur и lynx-cur-wrapper.
четверг, 7 мая 2009 г.
Маленький однострочник на баше для получения погоды в консольку (на 3 дня)
Чтобы получить погоду на свой город, идем по линку http://wap.gismeteo.ru/, жмем линк "Другие города", дальше находим свой город и смотрим его адрес, для Калининграда это http://wap.gismeteo.ru/wap2/towns/26702.wap2, вот тут нам нужно число, которое стоит перед ".wap2". Запоминаем его и вписываем в скрипт перед ".wml". Все :)
ЗЫЖ-1 Кстати, мой скрипт выводит инфу не на 3 дня, а на 9 кварталов (квартал = 6 часов, т.е. утро, день, вечер, ночь). Ошибся когда писал пост. Просто чтобы получить прогноз на 3 дня, надо еще одну страницу парсить, чего я не стал просто делать.
ЗЫЖ-2 Благодаря блогу Unix way из поста Погода в консоли узнал про хорошую утилитку weatherget написанную на питоне. Погоду она утягивает с http://xoap.weather.com/.
Пример использования:
weatherget -s RSXX0058 -m -e 3В консольке будет погодка на 3 дня для Калининграда.
UPD: Есть обновочка :)
[script]
четверг, 5 марта 2009 г.
ppa-key-import 0.3 - новая версия импортера ключей из PPA репозиториев
Теперь можено указывать не одно PPA имя архива, а сразу целую кучу :)
Вот пример:
$ ppa-key-import do-core claws-mail 123
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com A5D19FDCAA6ABB440CD3464628A8205077558DD0
gpg: запрашиваю ключ 77558DD0 с hkp сервера keyserver.ubuntu.com
gpg: ключ 77558DD0: "Launchpad PPA for GNOME Do Core Team" не изменен
gpg: Всего обработано: 1
gpg: неизмененных: 1
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com ADBADCEF515B37DA2F973FF6DF8030F05ED1D082
gpg: запрашиваю ключ 5ED1D082 с hkp сервера keyserver.ubuntu.com
gpg: ключ 5ED1D082: "Launchpad PPA for Claws Mail" не изменен
gpg: Всего обработано: 1
gpg: неизмененных: 1
!!! Было добавлено 2 PGP-ключей из 3 !!!
Не найдены: 123
Тут указано 3 ppa имени, но скрипт обработал только 2, о чем он и сказал в самом конце и сообщил какие из них не обработал, т.к. имени "123" не существует.
На всякий случай напомню, что с качестве параметров скрипту нужно передавать PPA имена архивов, т.е. если у нас в /etc/apt/sources.list есть запись, например, "deb http://ppa.launchpad.net/claws-mail/ubuntu intrepid main", то нам надо передать скрипту в качестве параметра строку claws-mail.
Скрипт доступен по старой ссылке.
[script]
среда, 25 февраля 2009 г.
OpenPGP от репозиториев PPA... Гребем лопатой :)
Накатал маленький скриптег (полезная нагрузка всего 2 строки) и радуюсь :)
Работает просто. Принимает только один парамерт - имя пакета, для которого нужно получить OpenPGP ключ. Точнее сказать это не совсем имя... Может правильнее будет PPA имя архива? Т.е. если у нас в /etc/apt/sources.list есть запись, например, "deb http://ppa.launchpad.net/claws-mail/ubuntu intrepid main", то нам надо передать скрипту в качестве параметра строку claws-mail, например:
$ ppa-key-import claws-mail
gpg: запрашиваю ключ 5ED1D082 с hkp сервера keyserver.ubuntu.com
gpg: ключ 5ED1D082: открытый ключ "Launchpad PPA for Claws Mail" импортирован
gpg: Всего обработано: 1
gpg: импортировано: 1 (RSA: 1)
OK
Сам скрипт всегда можно взять тут: http://notesyoungeradmin.angel2s2.googlepages.com/ppa-key-import
ЗЫ: Иногда бывают глюки, т.к. лаунч пад не всегда выдает то что нужно, иногда какой-то урезанный ключ... :(
UPD: Обновил скрипт, т.к. на оф. сайте лаунчпада появился новый поход к этой теме. Теперь скрипт не использует временный файл.
Спасибо автору блога "Крапленая колода".
UPD2: Обновил скрипт, подробности тут.
[linux]
четверг, 19 февраля 2009 г.
port-check - чекаем порты без проблем или скрипт для проверки доступности портов
Цель написания скрипта проста - возможность проверить несколько портов на одном и более хосте одной командой. Про существование различных программ я знаю, но не нашел подходящего для себя решения, поэтому написал свой скрипт основанный на netcat.
Ниже приведена справка по использованию скрипта port-check.
$ port-check --helpВсе проще некуда =)
Скрипт port-check проверяет на доступность указанные порты на указанных хостах.
Возвращает количество закрытых портов.
Использование:
port-check [-q|-v] host port
port-check [-q|-v] host "port1 .. portN"
port-check [-q|-v] "host1 .. hostN" port
port-check [-q|-v] "host1 .. hostN" "port1 .. portN"
-q, --quiet
Ничего не выводить
-v, --verbose
Выводить т.ж. открытые порты, иначе только закрытые и не доступные хосты
-V, --version
Показать версию
-h, --help
Показать эту справку
А вот несколько примеров работы скрипта:
$ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21"Вот и все. Надеюсь все понятно и наглядно.
mail.ru:80 open
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!
google.com:80 open
google.com:443 open
google.com:ssh CLOSE!!!
google.com:21 CLOSE!!!
Host 10.0.0.1 unreachable!!!
192.168.0.1:80 open
192.168.0.1:443 CLOSE!!!
192.168.0.1:ssh CLOSE!!!
192.168.0.1:21 open
$ port-check -v "mail.ru google.com 10.0.0.1 192.168.0.1" 80
mail.ru:80 open
google.com:80 open
Host 10.0.0.1 unreachable!!!
192.168.0.1:80 open
$ port-check -v mail.ru "80 443 ssh 21"
mail.ru:80 open
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!
$ port-check -v 10.0.0.1 "80 443 ssh 21"
Host 10.0.0.1 unreachable!!!
$ port-check -q 10.0.0.1 "80 443 ssh 21"
$ port-check "mail.ru google.com 10.0.0.1 192.168.0.1" "80 443 ssh 21"
mail.ru:443 CLOSE!!!
mail.ru:ssh CLOSE!!!
mail.ru:21 CLOSE!!!
google.com:ssh CLOSE!!!
google.com:21 CLOSE!!!
Host 10.0.0.1 unreachable!!!
192.168.0.1:443 CLOSE!!!
192.168.0.1:ssh CLOSE!!!
Скачать port-check можно по этой ссылке. Пользуйтесь на здоровье.
Почти каждая строка в скрипте прокомментирована. Уверен, что даже новичок сможет разобраться, как работает скрипт.
Скрипт писал довольно долго, много тестировал, поэтому версия сразу 1.0 и, скорее всего, финальная. Даже не представляю, что еще в него можно добавить...
Критика/комментарии/мнения/etc с радостью принимаются :)))
[linux]
[spam-check]
среда, 24 декабря 2008 г.
Дом для spam-check'ера
Адресог: http://spamcheck.angel2s2.googlepages.com/
RSS пока не прикречивал, да и не знаю, буду ли вообщем его прикручивать. Все новости скрипта всегда будут в блоге и на сайте.
Сайт пока в тестовой стадии, многое еще предстоит добавить, но это уже по мере возможности и времени...
Жду комментов, мнений, критики =)
ЗЫ: После нового года планирую обновить скрипт, добавить кое чего...
UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/
[linux]
[spam-check]
четверг, 20 ноября 2008 г.
Автоматизация проверки своего IP по спам базам. Вершин ту.
И заключается он в том, чтобы обращаться к DNSBL напрямую. =)
Делается это просто, вот пример:
host -t TXT 4.3.2.1.xbl.spamhaus.org
тут 4.3.2.1 - это IP адрес задом наперед, а xbl.spamhaus.org - один из многочисленных DNSBL =)
В результате получим ответ:
Host 4.3.2.1.xbl.spamhaus.org not found: 3(NXDOMAIN)что говорит о том, что хост с IP адресом 1.2.3.4 в этой базе не числится.
А если сделаем такой запрос:
host -t TXT 79.35.217.90.xbl.spamhaus.orgто получит ответ:
79.35.217.90.xbl.spamhaus.org descriptive text "http://www.spamhaus.org/query/bl?ip=90.217.35.79"что явно указывает, что это IP адрес числится в спам базе. Даже ссылку дают, куда надо сходить в гости, чтобы тебя пожалели и удалили твой IP из этой спам базы :)
Человек по "имени" darkk (http://darkk.net.ru/) поделился со мной замечательной ссылкой http://www.robtex.com/. Замечательна она тем, что этот сайт знает более 100 DNSBL и, естественно, позволяет проверить свой IP. Но кому будет оходта заходить каждый день на этот сайт, вбивать свой IP и ждать результатов? Естественно хочется этот процесс как можно лучше автоматизировать и забыть про это дело. А вспоминать, только тогда, когда IP, какого-то фига, попал в какую-то спам базу.
Вот для этого я и написал этот скрипт.
Вот что он умеет:
Использование: spam-check [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]] spam-check -i input_file [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]] spam-check -a dnsbl [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]] spam-check -d [-u] -u - Разрешить запуск скрипта от root'а -e - Показывать сообщения об ошибках -g - Показывать успешные проверки (НЕ СПАМ) -s - Не показывать не успешные проверки (СПАМ) -v - Выводить все -q - Ничего не выводить -p - IP адрес (можно указывать несколько IP, через пробел) -i - Файл со списком dnsbl-серверов -a - Проверить по указанному dnsbl -d - Вывести список всех dnsbl-серверов -V - Вывести версию -h - Показать справку Особенности: 1. По умолчанию выводятся только не успешные проверки (СПАМ) 2. -g, -e и -s можно комбинировать. 3. -g, -e и -s нельзя использовать одновременно с -v и -q. 4. -v и -q одновременно использовать нельзя. 5. -p IP [IP2 [... [IPn]]] должен быть последним параметром. 6. -q абсолютно ничего не выводит. 7. Скрипт всегда возвращает следующие коды звершения: 0 - данного IP в спам базе нет; 1 - данный IP присутствует в спам базе; 255 - ошибка в параметре, запрошена справка/версия; ошибки ответов от серверов не влияют на код завершения. 8. Если задано несколько IP и хоть один из них окажется хоть в кой-то спам базе, то код завершения будет равен 1.
В общем думаю тут и так все понятно. Скажу только, что ключ "-i" сделал на случай, если сервер http://www.robtex.com/ по какой-то причине откажется отдавать скрипту список DNSBL-серверов. А сохранить этот список предварительно можно так:
spam-check -d > dnsbl.listили взять тут. А скрипт можно взять тут.
Если будут просьбы, сделаю порт для винды.
ЗЫ: Хочу выразить благодарность:
slash - указал на досадную ошибку с psbl.surriel.com (0.1.x)
Tenno Seremel - помог с правильным запросом для wget (0.1.x)
ramok - помог многими советами (wget, sed, dnsbl, printf) (0.1.x & 0.2.x)
darkk - помог с документацией по dnsbl и поделился ссылкой на сайт http://www.robtex.com/, указал на mktemp (0.2.x)
UPD: Добавил mktemp и защиту от запуска под рутом, а т.ж. опцию -u для разрешения запуска под рутом.
UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/
[linux]
[spam-check]
вторник, 18 ноября 2008 г.
Автоматизация проверки своего IP по спам базам
Вот нам и приходится периодически проверять свой IP по спам базам, чтобы письма ходили всегда хорошо. Но проходить вручную по десятку спам-баз и вводит везде свой IP для проверки очень даже утомляет... Поэтому я решил автоматизировать этот процесс bash-скриптом.
Работа скрипта проста:
spam-check 22.22.22.22
В результате мы увидим следующее:
[OK] - spamcop.net - 22.22.22.22 not listed in bl.spamcop.net. [OK] - njabl.org - 22.22.22.22 not found in the list. [OK] - www.five-ten-sg.com - 22.22.22.22 is not listed here. [-No Lookup-] - junkemailfilter.com - ERROR - Reverse DNS Lookup Failed for [22.22.22.22]. 22.22.22.22 is NOT LISTED in any Hostkarma list. [OK] - mail-abuse.com - The IP address entered was not found on any database managed by Trend Micro's Network Reputation Services. [OK] - apews.org - We found no entry matching your search. [OK] - psbl.surriel.com - The host 22.22.22.22 has never been listed in PSBL. [OK] - psbl.surriel.com - We have no spamtrap mail on record for 22.22.22.22. [OK] - wpbl.info - 22.22.22.22 not found in database.
Поле
[-No Lookup-] - junkemailfilter.com - ERROR - Reverse DNS Lookup Failed for [22.22.22.22]. 22.22.22.22 is NOT LISTED in any Hostkarma list.говорит о том, что сервер не смог разрешить IP в доменное имя. Это единственный сервер из этого списка, который делает такую проверку, поэтому я ее включил.
Если же IP в спам базе, то мы увидим следующее:
$ spam-check 90.217.35.79 [+++SPAM+++] - spamcop.net - 90.217.35.79 listed in bl.spamcop.net (127.0.0.2). [OK] - njabl.org - 90.217.35.79 not found in the list. [OK] - www.five-ten-sg.com - 90.217.35.79 is not listed here. [+++SPAM+++] - junkemailfilter.com - Your reverse DNS is correct! - 5ad9234f.bb.sky.com. 90.217.35.79 is Black listed. [+++SPAM+++] - mail-abuse.com - The IP address 90.217.35.79 does appear on the following databases managed by Trend Micro's Network Reputation Services. [OK] - apews.org - We found no entry matching your search. [+++SPAM+++] - psbl.surriel.com - Currently listed in PSBL? Yes. [+++SPAM+++] - psbl.surriel.com - Received spamtrap mail for 90.217.35.79. [+++SPAM+++] - wpbl.info - Total spam sightings (last 90 days) - 4.
Возможно, некоторые удивлятся, что в этом списке нет довольно известной спам базы http://www.spamhaus.org/, но дело в том, что у меня не получилось сделать работу с ней через скрипт. Дело в том, что сервер http://www.spamhaus.org/, скорее всего, проверяет поле UserAgent браузера, я пробовал воспользоваться параметром -U утилиты wget, но результат это не дало. Буду очень признателен, если кто-нибудь поможет и с ним разобраться.
Ну и конечно-же сам скрипт, как же без него :)
Вот и все, чем я хотел поделиться с вами на этот раз, коллеги :)
ЗЫ: Если кто найдет ошибки, прошу меня уведомить, в комментах или по мылу на saimon.ghost [гав-гав] Гмыл0 [тут_точка] ком (защита от спама :-Р ).
UPD: Сделал новый скрипт, на много лучше, подробности тут.
UPD: Последнюю версию скрипта можно взять тут -> https://code.google.com/p/spamcheck/
[linux]
вторник, 24 июня 2008 г.
Мой bash-конфиг...
# Для начала определить некоторые цвета:
red='\e[0;31m' # Красный, темнее след.
RED='\e[1;31m' # Красный, светлее пред.
blue='\e[0;34m' # Синий, темнее след.
BLUE='\e[1;34m' # Синий, светлее пред.
cyan='\e[0;36m' # Циановый, темнее след.
CYAN='\e[1;36m' # Циановый, светлее пред.
NC='\e[0m' # No Color (нет цвета)
# Определил 2 раза для удобства :)
Black='\e[0;30m'
DarkGray='\e[1;30m'
Blue='\e[0;34m'
LightBlue='\e[1;34m'
Green='\e[0;32m'
LightGreen='\e[1;32m'
Cyan='\e[0;36m'
LightCyan='\e[1;36m'
Red='\e[0;31m'
LightRed='\e[1;31m'
Purple='\e[0;35m'
LightPurple='\e[1;35m'
Brown='\e[0;33m'
Yellow='\e[1;33m'
LightGray='\e[0;37m'
White='\e[1;37m'
NoColor='\e[0m'
# Лучше выглядит на черном фоне.....
echo -en "${red}"
date "+%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"
echo -en "$NC\n"
export HISTSIZE=2000 # Длина истории команд
export HISTFILE=~/.bash_history # Где хранить историю команд
# export HISTCONTROL="ignoredups" # Не дублировать команды
# Чтобы история команд сохранялась сразу после ввода (а не во время закрытия терминала)
shopt -s histappend
PROMPT_COMMAND='history -a'
# Испраляет ошибки в написании
shopt -s cdspell
# Разорванные многострочные команды в истории команд
shopt -s cmdhist
# "Заготовки" для 'ls' (предполагается, что установлена GNU-версия ls)
alias ll="/bin/ls -lh --color" # Отображает символьную инфу о типе файла
alias l1="/bin/ls -1Fh --color" # Вывод содержимого каталога в один столбец + отображение символьной инфы о типах файлов
alias lr="/bin/ls -Rh --color" # Вывод содержимого с подкаталогами
alias la="/bin/ls -lAh --color" # Подробный пывод содержимого каталога, включая скрытые файлы
alias ls='/bin/ls -hFh --color' # выделить различные типы файлов цветом
alias lx='/bin/ls -lXBh --color' # сортировка по расширению
alias lk='/bin/ls -lSrh --color' # сортировка по размеру
alias lc='/bin/ls -lcrh --color' # сортировка по времени изменения
alias lu='/bin/ls -lurh --color' # сортировка по времени последнего обращения
alias lt='/bin/ls -ltrh --color' # сортировка по дате
alias lm='/bin/ls -lAh --color | more' # вывод через 'more'
# На первый взягляд это бред, но когда привыкаешь, реально ускоряет работу
alias md="/bin/mkdir"
alias mds="sudo /bin/mkdir"
alias mkdirs="sudo /bin/mkdir"
alias mdp="/bin/mkdir -p"
alias mdps="sudo /bin/mkdir -p"
alias cp="/bin/cp -iv"
alias cps="sudo /bin/cp -iv"
alias cpi="/bin/cp -v"
alias cpis="sudo /bin/cp -v"
alias cpR="/bin/cp -Rv"
alias cpRs="sudo /bin/cp -Rv"
alias cpr="/bin/cp -Riv"
alias cprs="sudo /bin/cp -Riv"
alias mv="/bin/mv -iv"
alias mvs="sudo /bin/mv -iv"
alias mvi="/bin/mv -v"
alias mvis="sudo /bin/mv -v"
alias rm="/bin/rm -iv"
alias rms="sudo /bin/rm -iv"
alias rmi="/bin/rm -v"
alias rmis="sudo /bin/rm -v"
alias rmr="/bin/rm -Rfiv"
alias rmrs="sudo /bin/rm -Rfiv"
alias rmri="/bin/rm -Rfv"
alias rmris="sudo /bin/rm -Rfv"
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias cls="/usr/bin/clear" # Если ты привык к консоле винды, то тебе это поможет
alias h='history' # История команд
alias j='jobs -l' # Задания
alias path='echo -e ${PATH//:/\\n}' # Значение переменной окружения $PATH
alias recfg='. ~/.bashrc' # Перечитать настройки BASH (иногда бывает полезно, особенно для отладки)
alias du='/usr/bin/du -kh' # Размер всех подкаталогов в каталоге (включая др. ф.с.)
alias duS='/usr/bin/du -khxS' # Размер всех папок в каталоге (не переходить в др. ф.с.)
alias dus='/usr/bin/du -khxs' # Размер каталога (не переходить в др. ф.с.)
alias df='/bin/df -kh' # Занятое пространство на диске
alias upgrade='sudo apt-get update ; sudo apt-get upgrade' # Обновление пакетов
alias aptsearch='sudo apt-cache search ' # Поиск пакетов в репозиториях
alias aptinstall='sudo apt-get install ' # Установить пакет из репозитория
alias aptremove='sudo apt-get remove ' # Удалить пакет из системы
alias aptpurge='sudo apt-get purge ' # Удалить пакет из системы и его конф. файлы
alias aptautoremove='sudo apt-get autoremove' # Автоматически удалить не нужные пакеты из системы
alias 'restart-gnome'='sudo /etc/init.d/gdm restart' # Перезапустить GNOME
alias 'cd-'='cd -' # Перейти в последнюю дирректорию (бывает забываю пробем поставить)
# проверка правописания
alias xs='cd'
alias vf='cd'
alias moer='more'
alias moew='more'
alias kk='ll'
# Не все эти функции писал я сам, есть и не мои работы, но авторов уже не помню, к сожалению :(
function dfp() # Сколько занято на опр. ф.с. в %
{
/bin/df -kh | /bin/grep $1 | /usr/bin/cut -c41-43
}
function lg() # ls -lAh --color <path> | grep <filter>
{
if [ "$1" = "" ] && [ "$2" = "" ]; then
echo -en "\n${Blue}Команда$NC ${LightRed}lg$NC ${Blue}выводит список файлов с фильтрацией (тоже самое, что ${LightRed}ls -lA$NoColor ${Red}<patn>${NoColor} ${LightRed}| grep${NoColor} ${Red}<filtet>${NoColor}${Blue})${NoColor}"
echo -en "\n${Cyan}Использование:$NC ${LightRed}lg$NC ${Red}[path] <filter>$NC"
echo -en "\n${Cyan}Если$NC ${Red}[path]$NC ${Cyan}не задан, то используется текущая дирректория.$NC\n\n"
elif [ "$1" != "" ] && [ "$2" = "" ]; then
/bin/ls -lAh --color $(/bin/pwd) | /bin/grep $1
else
/bin/ls -lAh --color $1 | /bin/grep $2
fi
}
function my_ip() # IP адрес
{
MY_IP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/inet/ { print $2 } ' | /bin/sed -e s/addr://)
MY_ISP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/P-t-P/ { print $3 } ' | /bin/sed -e s/P-t-P://)
}
function ii() # Дополнительные сведения о системе
{
echo -e "\nВы находитесь на ${RED}$HOSTNAME"
echo -e "\nДополнительная информация:$NC " ; /bin/uname -a
echo -e "\n${RED}В системе работают пользователи:$NC " ; /usr/bin/w -h
echo -e "\n${RED}Дата:$NC " ; /bin/date +"%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"
echo -e "\n${RED}Время, прошедшее с момента последней перезагрузки :$NC " ; /usr/bin/uptime
echo -e "\n${RED}Память :$NC " ; /usr/bin/free
my_ip 2>&- ;
echo -e "\n${RED}IP адрес:$NC" ; echo ${MY_IP:-"Соединение не установлено"}
echo -e "\n${RED}Адрес провайдера (ISP):$NC" ; echo ${MY_ISP:-"Соединение не установлено"}
echo
}
function swap() # меняет 2 файла местами
{
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo ""
echo -e "${blue}Команда$NC ${RED}swap$NC ${blue}меняет 2 файла местами$NC"
echo -e "${cyan}Использование:$NC ${RED}swap$NC ${red}<file1> <file2>$NC"
echo ""
else
local TMPFILE=tmp.$$
/bin/mv -v "$1" $TMPFILE
/bin/mv -v "$2" "$1"
/bin/mv -v $TMPFILE "$2"
fi
}
function sswap() # меняет 2 файла местами с правами root'a
{
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo ""
echo -e "${blue}Команда$NC ${RED}sswap$NC ${blue}меняет 2 файла местами с правами root'а$NC"
echo -e "${cyan}Использование:$NC ${RED}sswap$NC ${red}<file1> <file2>$NC"
echo ""
else
local TMPFILE=tmp.$$
sudo /bin/mv -v "$1" $TMPFILE
sudo /bin/mv -v "$2" "$1"
sudo /bin/mv -v $TMPFILE "$2"
fi
}
function myps()
{
ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ;
}
function pp()
{
myps f | /usr/bin/awk '!/awk/ && $0~var' var=${1:-".*"} ;
}
function lowercase() # перевести имя файла в нижний регистр
{
for file ; do
filename=${file##*/}
case "$filename" in
*/*) dirname==${file%/*} ;;
*) dirname=.;;
esac
nf=$(echo $filename | tr A-Z a-z)
newname="${dirname}/${nf}"
if [ "$nf" != "$filename" ]; then
/bin/mv "$file" "$newname"
echo "lowercase: $file --> $newname"
else
echo "lowercase: имя файла $file не было изменено."
fi
done
}
# Поиск файла по шаблону:
function ff()
{
if [ "$1" = "" ]; then
echo ""
echo -e "${blue}Команда$NC ${RED}ff$NC ${blue}ищет файл по шаблону в текущем каталоге$NC"
echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон>$NC"
echo ""
else
/usr/bin/find . -type f -iname '*'$*'*' -ls ;
fi
}
# Поиск файла по шаблону в $1 и запуск команды в $2 с ним:
function fe()
{
if [ "$1" = "" ] || [ "$2" = "" ]; then
echo ""
echo -e "${blue}Команда$NC ${RED}fe$NC ${blue}ищет файл по шаблону в текущем каталоге и выполняет заданную команду над ним$NC"
echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон> <команда>$NC"
echo ""
else
/usr/bin/find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ;
fi
}
# поиск строки в файлах:
function fstr_help()
{
echo -en "\n${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC\n"
echo -en "${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC\n"
echo -en " ${red}-i$NC ${blue}- не учитывать регистр$NC\n"
echo -en " ${blue}если$NC ${red}\"шаблон_имени_файла\"$NC ${blue}не задан, то поиск ведется по всем файлам$NC\n\n"
}
function fstr()
{
OPTIND=1
local case=""
local usage="${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC
${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC
${red}-i$NC - не учитывать регистр
если \"шаблон_имени_файла\" не задан, то поиск ведется по всем файлам"
while getopts :it opt
do
case "$opt" in
i) case="-i " ;;
#*) echo "$usage"; return;;
*) fstr_help; return;
esac
done
shift $(( $OPTIND - 1 ))
if [ "$#" -lt 1 ]; then
#echo "$usage"
fstr_help
return;
fi
local SMSO=$(tput smso)
local RMSO=$(tput rmso)
/usr/bin/find . -type f -name "${2:-*}" -print0 | /usr/bin/xargs -0 /bin/grep -sn ${case} "$1" 2>&- | /bin/sed "s/$1/${SMSO}\0${RMSO}/gI" | /bin/more
}
Подписаться на:
Сообщения (Atom)








