Отключить «Недавние документы» («Последние файлы», «Recent Docs») в Windows 7

1. Жмем по пустому месту в панели задач, идем в Свойства

2. Переключаемся на вкладку Меню «Пуск» и снимаем галочку Хранить и отображать список недавно открывшихся элементов в меню «Пуск» и на панели задач

3. Можно также добавить в Реестр следующий параметр (сохранить следующий код в файл с расширением .reg и запустить):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRecentDocsMenu"=dword:00000001

NoRecentDocs.reg на GitHub

Это отключит меню «Последние файлы» и заблокирует вышеупомянутую галочку

4. Можно еще сходить в C:\Users\<имя пользователя>\Recent\ и подчистить там лишние ярлыки.

Как сделать favicon для сайта.

Преамбула

Favicon (от FAVorite ICON) называют иконку, отображающуюся на вкладке (или в окне, зависит от браузера) с открытым сайтом.

Вот на моем пока стандартная иконка WordPress:

Делаем свою.

Форматы файлов для favicon

Изначально для favicon был предусмотрен только один формат ICO, однако, современные браузеры поддерживают и другие форматы.

PNG: десктопные браузеры (Chrome, Safari, Firefox, Opera, Internet Explorer 11 и некоторые другие), а также браузеры для Android.

GIF: Chrome, Safari, Firefox, Opera

Анимированный GIF: Firefox, Opera. Однако, использовать анимированный GIF не рекомендуется — будет мельтешить и надоедать, да и это не самый легкий формат для картинок.

SVG (векторные изображения): Safari

Преимущество формата ICO в том, что иконка позволяет в одном файле хранить изображения разных размеров (с разным разрешением), также рекомендуется делать файл ICO для совместимости со старыми версиями браузеров. Еще формат ICO рекомендует Google и Яндекс, они выводят иконку в поисковой выдаче рядом с заголовком сайта.

Рекомендуемые разрешения для favicon

Если сравнивать с иконками для своего приложения под Windows (копия) у favicon рекомендуемых расширений целый зоопарк, хотя изначально предусматривалось только разрешение 16x16.

Десктопные браузеры:

16x16
32x32
48x48

Устройства на Android (в зависимости от разрешения экрана и количества точек на дюйм):

36x36
48x48
72x72
96x96
144x144
192x192

Устройства Apple:

— от 57x57 до 76x76

Устройства Apple с дисплеем Retina:

— от 114x114 до 180x180

Однако, городить огород из кучи картинок разного разрешения не надо, достаточно создать несколько с максимальным расширением под разные устройства и браузеры. В теории устройства сами должны масштабировать картинку из большей в меньшую, если понадобится.

Wordpress запрашивает у пользователя PNG с расширением 512x512, сохраняет его и дополнительно генерирует картинки со следующими разрешениями: 32x32, 150x150, 180x180, 192x192, 270x270, 300x300. Причем, в коде страницы прописываются сначала файлы с разрешением 32x32 и 192x192 (для десктопных и андроидных браузеров соответственно), потом 180x180 как иконка для девайсов от Apple и иконка 270x270 для использования в качестве закрепленной иконки в плиточном интерфейсе Windows 8.1

Как сделать favicon

Для начала понадобится какое-нибудь изображение, лучше всего квадратное, в смысле в квадрат вписывающееся. Я не долго думая, просто взял любимый векторный редактор и нарисовал простенький логотип для иконки, пока размером 512×512. Впрочем, пока готовишь изображение, размер не особо важен, наоборот, чем больше, тем лучше, особенно, если работаешь в растре. Векторному редактору-то фиолетово, он выходное изображение может в любом разрешении без проблем создать.

Установка favicon в WordPress

Для современных версий движка WordPress на моменте создания изображения все сложности практически и заканчиваются:
Favicon в WordPress
К сожалению, WordPress не умеет генерировать иконку в формате ICO, но это легко исправить. Таковую иконку легко собрать вручную, или же сгенерировать с помощью генератора favicon’ов (онлайн).

Генерация favicon онлайн

Есть, например, такой вот генератор favicon: https://realfavicongenerator.net/. Он генерирует иконки сразу на все случаи жизни: для десктопных браузеров и поисковиков, для кнопки сайта в iOS, иконку сайта для Android Chrome, иконку для плиточного интерфейса Windows 8.1 и 10, и даже векторную иконку для Safari (MacOS). В процессе генерации можно покрутить разные параметры для каждого случая в отдельности (размер, цвет фона и т.д.)

В конце вы получаете архив с иконками, вебманифест сайта для Android-устройств, browserconfig.xml для IE11 (Win 8.1) и Edge (Win 10), а такжe HTML-код, который необходимо вставить в секцию <head></head> на страницы сайта:

<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#000000">
<meta name="theme-color" content="#ffffff">

Создание favicon вручную

Постараюсь описать «на все случаи жизни». Пусть изображения (кроме ICO) будут находиться в /img/icons (измените путь на ваш).

Современные десктопные браузеры (с поддержкой PNG):

1. Экспортируем исходное изображение как PNG с разрешениями 16x16, 32x32, 48x48 и именами, пусть fi-16x16.png, fi-32x32.png, fi-48x48.png
2. В секции <head></head> прописываем теги:
<link rel="icon" type="image/png" sizes="48x48" href="/img/icons/fi-48x48.png">
<link rel="icon" type="image/png" sizes="32x32" href="/img/icons/fi-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/img/icons/fi-16x16.png">

3. Заливаем файлы на сайт. Далее не буду упоминать, что все теги прописываются в <head></head>, а файлы надо не забыть залить на сайт 🙂

Интересно, что автоматический генератор favicon и движок WordPress игнорируют разрешение 48x48. Почему так я не совсем понял, если у кого-то есть соображения на сей счет, высказывайтесь в комментариях.

Классический favicon.ico для поддержки устаревших браузеров и для поисковиков:

По идее, современные браузеры тоже должны поддерживать формат ICO, так что можно пропустить предыдущий пункт, хотя я перестраховался и оставил его.
1. Экспортируем исходное изображение как PNG с разрешениями 16x16, 32x32, 48x48
2. Далее потребуется инструмент для сборки иконки icon sushi Копия
3. Открываем все нужные изображения (File —> Open…)
4. Выделяем их в окне программы.
5. Сохраняем иконку (File —> Save as Multiple Icon) под именем favicon.ico
6. Заливаем ее в корень сайта.
7. Добавляем теги:
<link rel=”shortcut icon” href=”/favicon.ico” type=”image/x-icon”>
<link rel=”icon” href=”/favicon.ico” type=”image/x-icon”>

Для WordPress добавляем в раздел между тегами <head></head> файла header.php текущей темы (Внешний вид —> Редактор тем, в Редакторе ищем файл header.php) следующий код:

<link rel=”shortcut icon” href=”<?php echo get_site_url(); ?>/favicon.ico” />
<link rel=”icon” href=”<?php echo get_site_url(); ?>/favicon.ico” />

Остальные устройства

Источники

1. Манифест? А? Что? Зачем?
2. Пишем правильный манифест для сайта
3. get_site_url()
4. Favicon сегодня: форматы, поддержка, автоматизация (копия)
5. Как сделать фавикон для сайта

Пропал PDF-принтер и Foxit PDF Creator от Foxit

Но мы запасливые.

Преамбула

Сегодня переустанавливал клиентам винды, ставил бесплатный Foxit PDF Reader, и с удивлением обнаружил, что в новых версиях из комплекта софтины пропала возможность создавать PDF плагинами для Word и Excel, также пропал и PDF-принтер.

Видимо их профессиональная программа Phantom хреново продавалась. И Foxit на этой почве скурвился.

Со злости я даже хотел расковырять инсталлятор и выдернуть оттуда принтер. Но решил лицензионное соглашение не поломать, а перепрыгнуть.

Лицензионное соглашение не мешает распространять старые версии, с принтером, креатором и прочими свистелками. Тем более, что программа работает на XP, и, скорее всего, я выпущу небольшой ролик для развития темы (PDF, DJVU и FB в Windows XP).

А пока нате вам.

Скачать

Foxit Reader v. 8.3.2.25013

Проверка на битые сектора (bad-блоки) диска в Linux.

Преамбула

Неделя инвентаризации продолжается, так что настало время поговорить и о тестировании устройств на битые сектора под Linux.

Проверка и получение списка bad-блоков

Естественно, все команды выполняются от root или через sudo.

badblocks -v /dev/sdc2 >/tmp/badsect.txt

где:
-v — подробный вывод информации о процессе. Правда слово «подробный» здесь некоторое преувеличение. В процессе вывод будет такой:

Checking blocks 0 to 1805311
Checking for bad blocks (read-only test):

Но, без ключа -v программа будет молчать, как партизан на допросе.

/dev/sdc2 — раздел, который необходимо проверить.
/tmp/badsect.txt — куда выводить список bad-секторов.

Программка стандартная (входит в пакет e2fsprogs), так что в неурезанных дистрибутивах есть.

Служебные сообщения она выводит на stderr, так что «наблюдать» за процессом перенаправление вывода в файл не помешает

Если после окончания работы утилиты вывод такой, то все OK, битых секторов нет:

Checking blocks 0 to 1805311
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)

Примечание: Если у вас только консоль, посмотреть список разделов можно командой

ls /dev/sd*

Вывод:
/dev/sda /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdc /dev/sdc1 /dev/sdc2

Или через fdisk:
fdisk -l

Пометка найденных сбойные секторов

Чтобы ОС не могла записать данные в битый сектор.
Примечание: способ работает только на ext файловых системах (ext2, ext3, ext4)

e2fsck -l /tmp/badsect.txt /dev/sdc2

где:

-l взять список bad-блоков из файла и пометить их.
/tmp/badsect.txt — файл со списком bad-секторов
/dev/sdc2 — раздел, с которым надо работать.

Плюсы:
+ способ работает почти во всех линуксах
Минусы:
— работает только на линуксовых файловых системах (fsck не понимает ключ -l)
— если битых секторов слишком много, проще выкинуть винчестер e2fsck начинает писать, что сектор находится «вне диапазона» и не метит его.

Грязный хак, способный на некоторое время продлить жизнь жесткого диска

Внимание! Никогда, слышите, никогда так не делайте! Начав сыпаться, жесткий диск может крякнуть в любой момент, проще (и дешевле, если у вас на харде что-то кроме котофото из интернетов) купить новый хард. Меня заставили под пытками. Мне пришлось, т.к. HDD был от древнего квадраттера, работающего на линухе, и HDD требовался IDE-шный, который сейчас хрен найдешь (да, для работы я не делюсь своими IDE HDD, я жадный).

Так вот, если битые сектора кучкуются в начале или в конце жесткого диска, то возможно, глюк оттуда не расползется, так что часть с битыми секторами можно просто отрезать и пометить в gparted как unformatted

Но никогда так не делайте. Я предупреждал.

Victoria, утилита для проверки HDD на поврежденные сектора (BAD-блоки)

Заметка из серии «не пролюбилось шоб» и «шоб все знали, где искать». На работе астрологи бухгалтерия объявила неделю инвентаризации и, соответственно, тестирования железа. Поскольку добровольные и недобровольные помощники меня читают, пусть висит тут.

Утилита уже пожилая, но лучше еще никто не придумал. И она запускается и нормально работает из Windows PE, что на базе XP, что на базе Windows 7

Для удобства утилита упакована в RAR SFX-архив (мало ли кто будет качать на машину без установленных архиваторов)

Victoria 4.46b

Последняя официальная версия. Минус — на системах x64 не работает, только x86.

Скачать Victoria 4.46b с Mega.NZ (RAR SFX)

Victoria 4.47

Пропатченная белорусскими умельцами версия. Один из плюсов — работает на x64 системах (но в режиме API). На x86 в т.ч. на XP и XP PE тоже работает. Минус (относительный) — показывает график вместо привычной карты диска.

Список исправлений в версии 4.47:

1) возможен запуск на x64 виндах (доступен только режим API)
2) процесс сканирования не останавливается в случайных местах
3) возможно случайное сканирование на дисках более 1TB
4) можно свободно сворачивать окно программы не боясь за процесс сканирования (даже рекомендую сворачивать окно)
5) возможно сканирование за один проход дисков более 1TB (визуальное отображение секторов при этом отключается)
6) ругательства на драйвер PortTalk теперь производятся в лог
————————————
E-mail: syshwid@gmail.com

Скачать Victoria 4.47 с Mega.NZ (RAR SFX)

Прошивка Nokia 700 (Nokia Belle Feature Pack 2, FP2)

Преамбула

Попался в руки раритетный смартфон на Symbian 3 Nokia 700. После запуска телефона, через некоторое время отваливалась регистрация сим-карты, а также криво работал WiFi, подключаясь, но показывая, что подключение ограничено. Правда, как позже выяснилось, проблема прошивкой не решилась, скорее всего, она хардверная.

Тем не менее, на allnokia.ru инструкция по прошивке какая-то сумбурная, некоторые детали не учтены или опущены. Надо долго копаться в форуме, чтоб не материться потом целый день. Или инструкция старая, и написана для Windows XP. В общем, напишу свою по мотивам.

Что понадобится

1. Дата-кабель (обычный micro-USB)
2. Зарядить батарею по полной!
3. Компютер с Windows. Я прошивал под Windows 7 x64, с чем, возможно, были связаны некоторые сложности.

Установка софта

1. Делаем контрольную точку восстановления системы (на данном этапе очень желательно, но некритично)

2. Ставим оригинальный Nokia Software Updater (NSU) Копия. В процессе установки он попытается скачать, но не сможет Microsoft Visual C 2005 Redistributable, но оно и не надо. Продолжаем установку. Все остальное, по состоянию на июль 2020 г. все еще на своих местах, либо у него внутри.
По окончанию установки вводим любое имя и забываем про эту софтину на веки вечные. Запускать ее не надо, у меня без нее падал со странными глюками прошивальщик. По всей вероятности, в прошивальщике как раз были какие-то протухшие драйвера. Впрочем, некоторые пишут, что все ровно наоборот, и у кого-то прошивальщик не работает при установленном (и даже не запущенном) NSU. Если так, то откатываемся на контрольную точку и пропускаем этот пункт.
Ну и еще один аргумент к желательности контрольной точки в том, что установщик NSU оставляет в системе кучу не всегда нужных программ и драйверов, так что при разовой прошивке удобно все это одним махом откатить, а не сидеть полчаса в Панели управления.

3. Делаем еще одну контрольную точку восстановления системы. На этот раз ОБЯЗАТЕЛЬНО! Почему? Потому что дальше будем ставить прошивальшик, который отличается неплохой работой, но жутко кривым установщиком, так что если что-то пойдет не так, откатываемся к контрольной точке.

4. Рекомендую на время установки прошивальшика и самого процесса прошивки выключить антивирус. Ничего страшного нет, а вот ложное срабатывание, которое все покрашит, и/или превратит телефон в кирпич не нужно.

5. Ставим прошивальщик Phoenix. На форуме Allnokia оказался целый зоопарк Phoenix’ов, но для Nokia 700 подходит только Phoenix_Service_Software_2012.04.003.47798, причем то, что подходит только он, пришлось искать в глубинах форума. А ссылка на форуме на нужный Phoenix оказалась битой. Еле нашел.

Устанавливается он, обычно штатно (запускаем инсталлер, нажимаем Next), а вот сносится или переустанавливается хреново, для того и точка восстановления сделана. Если при удалении Phoenix зависнет Microsoft Installer — единственный нормальный способ его удалить, это откатиться на заранее созданную точку восстановления. Если этого не сделать, то при повторной установке Microsoft Installer опять зависнет.
Есть способ таки установить Phoenix и в этом случае, но он не очень правильный
— Запускаем установку и ждем, пока она застопорится.
— Вызываем диспетчер задач и переключаемся на вкладку Процессы
— Сортируем процессы по именам, находим msiexec.exe (их должно быть несколько)
— Ждем, пока их активность не прекратится окончательно. В колонке ЦП напротив msiexec.exe должны, как минимум 10 минут висеть ноли.
— Начинаем завершать процессы msiexec.exe. Когда установшик отругается, что не смог скопировать какую-то библиотеку в C:\Windows, он завершится. На самом деле Phoenix будет установлен.

6. Качаем прошивку. Официальную можно скачать отсюда или отсюда. Устанавливаем (распаковываем) ее в C:\Program Files (x86)\Nokia\Phoenix\Products\. После распаковки в папке должна образоваться подпапка RM-670

Прошивка

Подробное описание прошивки с картинками под катом

Альтернативные прошивки

01-Nokia_Belle_FP2_Valexx_Nokia700.exe — не пробовал, подробное описание мода выводится при распаковке прошивки.
02-113.010.1506_Belle_FP2_by_DSV_doma.exe — минималистичная альтернативная прошивка. Убраны офисы, попугайские обои, иконки в меню разложены по папочкам, т.о. меню влезает на один экран.
03-v113.010.1506_Belle_FP2_LEBED_S_V_SERIX74.exe — прошивка с альтернативным оформлением.

Архив с альтернативными прошивками

Скачать

1. Nokia Software Updater For Retail 4.3.2
С Allnokia
Копия на Mega.NZ

2.Phoenix Service Software 2012.04.003.47798

3. Официальная прошивка:
С Allnokia
Копия на Mega.NZ

4. Альтернативные прошивки

Нормальная прошивка для DLINK DIR-300 (DIR-300A C1)

Преамбула, или минутка негодования

Вызвали сегодня к старым клиентам с симптомами, мол новый мальчик от провайдера приходил, нам что-то обновил, в черной коробочке покопался и теперь ничего не работает. «Черная коробочка» — это и есть тот самый DIR-300. С 2011-го «черная коробочка» нареканий не вызывала. Приезжаю, действительно вижу, что ничего не работает, да еще и пароль на вход в админку поменян. Фигня война, сбрасываю к заводским настройкам, захожу в админку роутера и вижу ЛЮТЕЙШИЙ ПИЗДЕЦ, ад и Израиль, крипоту почище Сайлент Хилла.

Сраный хипстер из провайдера действительно обновил прошивку, и, что самое ужасное, в прошивку оказались внедрены бэкдоры (официально «дополнительные сервисы») от главных спамеров, доставщиков гнилой шавермы и рабовладельцев Роисси. Да, не поверите — страшный сон любого админа, теперь не только Яндекс.Браузер, который пытается всеми правдами и неправдами пролезть на десктоп, но и Яндекс.Бэкдор в роутере.

Чуть челюсть не отвалилась. Это ж до какой ручки дошла когда-то уважаемая компания DLink, что связалась с Яндекс.Спамом? Но это полбеды. Яндекс.Скам еще и мешал нормальной работе роутера.

Выдал я такое, что дохлый основатель Хуяндекса завертелся в гробу, и принялся откатывать все назад. Слава Ктулху и Великим Древним, что я компьютерный Плюшкин, и таки нашлась у меня нормальная прошивка, сделанная до того, как DLink продался Яндекс.Сволочам.

Откатил, все заработало.

Яндекс.Спам, Яндекс.Срам, Яндекс.Дерьмо, Яндекс.Хуесосы.

Чтоб вы все нахуй сдохли, суки.

Прошивка

DIR-300A_C1
Заодно уж и мастер настройки DLink Click’n’Connect с оригинального диска

DetecTOR v 0.3.1b

По многочисленным просьбам зрителей обновлена утилита DetecTOR, которая определяет, присутствует ли определенный IP в сети Tor.

— В связи с тем, что база данных Tor’овских IP по адресу http://torstatus.blutmagie.de/query_export.php/Tor_query_EXPORT.csv сдохла, то в качестве источника данных по умолчанию установлена https://check.torproject.org/exit-addresses и формат «Только IP».
В формате «Только IP» утилита пытается вытащить из источника данных все, что похоже на записи адреса IPv4 в полном формате (x.x.x.x, где x — число от 0 до 255).

— Выяснилось, что утилита не работает на Windows XP с IE6. Ошибка для C# программ (и не только их) известная, решение следующее:
Для Windows XP необходимо установить Internet Explorer 8 с обновленными корневыми сертификатами, отдельно или в составе кумулятивного обновления. Обновление можно скачать здесь или здесь

readme.txt

Основная статья о DetecTOR Копия
Скачать (портативная версия)
Исходники

Прошивка Motorola RAZR v3 (v3i)

Попался вот такой вот раритетный телефончик, правда, не грузящийся. Кто-то его пытался перепрошить и чуть не окирпичил. Поскольку, пока делал, последовательность не записывал, то инструкция больше для себя. Осторожнее. В телефонах я не профи.

1. Заряжаем телефон полностью
2. Качаем архив (драйвера + прошивальщик + прошивка + менеджер мидлетов)
3. Ставим драйвера (в архиве версия для x86 и x64 системы, для Win7)
4. Ставим прошивальщик
5. Запускаем прошивальщик, рядом с полем Filename в главном окне тыкаем в кнопку с тремя точками, выбираем прошивку.
6. Переводим телефон в прошивочный режим. При выключенном телефоне нажимаем * # и кнопку включения. На экране телефона должно отобразиться:

Boot Loader
0A.30
SW Version:
[ВЕРСИЯ ПРОШИВКИ]

Все проверяем, та ли прошивка, если все ОК, втыкаем телефон в компьютер, ждем, пока схватятся драйвера и девайс определится в системе и отобразится в прошивальщике.

7. Нажимаем в прошивальщике кнопку Start
8. Появляется окно с описанием хода прошивки. В столбце Status текущая операция, в столбце Progress — ее ход.
9. В конце прошивки прошивальщик напишет Finish, и телефон перезагрузится. Иногда надо перезагрузить вручную.
10. Берем карту памяти, копируем на нее подкаталоги Elf и Java из каталога с прошивкой, вставляем карту в телефон.

Архив с прошивкой и софтом

Скачать с Mega.NZ

Источники

Тема на 4pda
Инструкция по прошивке на motofan.ru
Описание прошивки из архива

Список софта из видео «Как выжить на Windows XP в 2020 году»

Обновление Windows XP от Simplix

Официальный сайт
Копия на Mega.NZ

Google Chrome

Официальный сайт
Автономный установщик

Firefox

Firefox Setup 49.0.2
Firefox Setup 52.9.0esr

Pale Moon XP (Mypal)

https://github.com/Feodor2/Mypal/releases

Libre Office 5.4.7.2 for Windows XP

Дистрибутив
Справка (русская)
Копия на Mega.nz (Дистрибутив+справка в RAR SFX-архиве)

Microsoft Office 2003

KB828041 (первое обновление)
Пакет обеспечения совместимости
Средство удаления скрытых данных

Антивирусы

Avast
AVG
DrWeb CureIt
AVZ

Far Manager

Официальный сайт
Far Manager v3.0 build 5577 x86
Far Manager v2.0 x86
Far Manager v2.0 x86 (урезанная версия для встраивания в образы)

WinRAR

Официальный сайт

7zip

Официальный сайт
Копия

.NET Framework

.NET 2.0
.NET 3.5
.NET 4.0
Копии в одном архиве (ZIP)

Aimp 2

Aimp + Aimp Tools + Plugins (визуализации) ZIP

KLite Mega Codec Pack XP

Официальный сайт
Копия

Torrent-клиент

uTorrent XP

Клиент OpenVPN

Скачать с официального сайта:
Версия x86 (32-разрядная)
Версия x64 (64-разрядная)

Копии:
Версия x86 (32-разрядная)
Версия x64 (64-разрядная)

SysInternalsXP

SysInternalsXP

Linux. Есть ли слово в строке. Есть ли подстрока в строке.

Довольно частой задачей является узнать, встречается ли в строке какое-нибудь слово или же, в более общем случае, подстрока.
Для решения можно воспользоваться внутренними механизмами bash, но я покажу более башенезависимый способ, с помощью grep. Благо он есть практически везде, даже в каких-нибудь системах, основанных на BusyBox, а вот вместо bash может встретится и просто sh, и что-нибудь более экзотическое.

Есть ли слово в строке

Предположим, что в переменной STR имеется строка:

STR="cat lynx lion coguar"

В переменную SUBSTR запишем первый параметр командной строки скрипта ($1):

SUBSTR="$1"

Выводим содержимое переменной $STR, передаем вывод grep с нужными параметрами, а результат сохраняем в переменную-счетчик:

CNTR=`echo "$STR" | grep -w -c "$SUBSTR"`

В данной команде более всего интересны параметры grep:

-w — искать целое слово.

Примечание: Словом по умолчанию считается все, что отделено от других символов пробелом(-ами) табуляцией(-ами) или переводом(-ами) строки.

— подсчитать количество строк с нужным вхождением

Примечание: Ключ заставляет grep подсчитывать строки, а не сами вхождения, так что количество вхождений слова в строку, так посчитать не получится.

В итоге в переменной CNTR оказывается 0, если совпадений нет, и 1, если совпадение есть, остается только проверить:

if [ "$CNTR" -ne 0 ];then
    echo "Exist"
else
    echo "Not exist"
fi

Демо-скрипт на GitHub

Примеры работы:

./exist-word lion

Вывод:
Exist

./exist-word dog
./exist-word li

Вывод:

Not exist

Более общий случай: имеется ли в строке подстрока.

Под подстрокой имеется любой набор символов, идущих подряд.

Задача решается аналогично предыдущей, только из параметров grep удаляется ключ -w

Если из вышеуказанного скрипта удалить ключ -w grep‘а, то вывод будет таким:

./exist-word li

Вывод:

Exist

Т.е. теперь была найдена подстрока li (часть слова lion).

Linux shell, pipes (конвейеры) и код завершения.

Преамбула

При работе с конвейерами (пайпами, «трубами», pipe), часто возникает вопрос, как отловить ошибку, произошедшую внутри конвейера.

Суть проблемы

Для примера возьмем код, где ход загрузки файла отображается dialog’овым прогрессбаром (копия):

#!/bin/bash

FADDR="http://tolik-punkoff.com/static/test.mp3"

wget --progress=dot -O "./test.mp3" "$FADDR" 2>&1 |\
stdbuf -o0 awk '/[.] +[0-9][0-9]?[0-9]?%/ { print substr($0,63,3) }' | \
dialog --gauge "Download file from $FADDR" 10 100

Как видите, конвейер (т.е. передача вывода от одной команды другой через |), тут налицо.

Если после данной команды просто дописать echo $?, то будет видно, что результат будет 0.

И когда все в порядке:

И когда все не в порядке (в данном случае, сделан обрыв связи):

На самом деле, это происходит потому, что в переменной $? оказывается код завершения последней команды в pipe.

Решение

В современных версиях bash перед использованием контейнера, необходимо добавить команду:

set -o pipefail

В старых bash и некоторых других оболочках придется извращаться, может как-нибудь вернусь к вопросу (если для какого утюга что писать буду).

Примечание: Следует иметь в виду “безобидные” команды, которые могут вернуть не ноль.
В больших скриптах со сложными конструкциями и длинными конвеерами можно упустить этот момент из виду, что может привести к некорректным результатам.

Проверка

После добавления вышеуказанной команды в скрипт делаем тест с обрывом связи:

Или указываем в переменной $FADDR некорректный адрес:

Теперь echo $? отображает корректный код завершения.

Модификация скрипта

Скрипт на GitHub

Источник

Linux pipes tips & tricks Копия в PDF

Скачивание файла и обработка ошибок в wget. Обратите внимание!

Преамбула

Хотел, конечно, назвать как-нибудь типа «гадское поведение wget» или «уничтожение файлов wget‘ом», но остановился на этом. Добавлю ссылку в пост о кодах ошибок (копия) на этот пост.

Но на самом деле, это вроде маленькая и многим известная штука, но которой мало кто задумывается. Особенно, если использует wget в своих скриптах. Отдельно отметить это меня сподвиг тот самый скрипт, с которого я начал сегодняшний разговор о wget (копия)

Суть проблемы

Оказывается, wget создает новый файл перед закачкой. Несмотря на то, появятся там какие-то ошибки или нет, и несмотря на то, какие ошибки это будут, хоть это ошибки сервера (например 404, файл не найден), или ошибки сети (файл не удалось докачать), файл все равно будет создан. Хотя по логике, например, ошибку сервера (пусть 404) можно было бы сначала и проверить. Но wget этого не делает, если не случилась ошибка с кодом 2 (ошибка параметров командной строки или конфигурационных файлов).

На самом деле, такой подход довольно правильный, ну и правда, какая разница, почему оно не скачалось (или не сохранилось на диск в случае I/O error). И для анализа ошибок проблем меньше.

Наибольшую проблему это представляет собой тогда, когда пользователь указывает в параметрах wget ключ -O <путь к файлу>, тогда wget придется его полюбому перезаписать.

Так-то у wget есть «защита от дурака», если файл, например, file уже существует, то при следующей закачке файл file (под тем же именем) будет сохранен, как file.1, и если что, старый файл останется в целости и сохранности. Но в скриптах ключ -O удобно использовать. Не надо следить за этими номерами файлов, и вообще в скрипте, wget без ключей, один сплошной геморрой. Так что ключи используют. Но как же правильно это сделать? Да выбирать место сохранения скачанного и проверять коды ошибок wget!

Решение

Если нужно скачать файл, а уж если скачался, заменить, не скачался, оставить старый

1. Скачиваем файл во временный:
wget -O "/tmp/test.tmp" "http://example.org/test.dat"
2. Проверяем коды ошибок (здесь самый простой вариант)

if [ "$?" -eq 0 ]; then
	#Пункт 3
fi


3. Копируем скачанный файл в целевой: cp /tmp/test.tmp /home/pi/test.dat

Естественно, все имена файлов и пути меняем на свои.

Надо скачать файл. Не скачался — вернуть сообщение об ошибке

1. Скачиваем файл:
wget -O "~.data/test.dat" "http://example.org/test.dat"

2. Проверяем коды ошибок (здесь самый простой вариант). Если ошибка — завершаем работу:

if [ "$?" -ne 0 ]; then
	rm "~.data/test.dat"
	echo "Data download error!"
	exit
fi

Посмотреть размер каталога в Linux. В консоли, но интерактивно и наглядно (ncdu).

И наглядно увидеть, где засрано 🙂

Для отображения размеров каталогов (с подкаталогами), есть стнадартная утилита du, но, если честно, она не очень удобная. Гораздо удобнее ее аналог, написанный с помощью ncursesncdu

Пользоваться очень просто. Заходим в каталог, в котором хотим узнать размеры подкаталогов, и просто вызываем утилиту:

ncdu

Наверное, ее единственный минус, что в каталог уровнем выше, чем тот, из которого ее вызвали, она не переходит. Так что если хотите посмотреть размеры каталогов сразу во всей файловой системе, надо вызывать ее из корня (/). Но причина такому поведению легко может быть найдена — после запуска утилита сканирует все подкаталоги, чтоб потом нам красиво показать. Чем с более верхнего уровня ее вызываешь, тем дольше процесс сканирования.


Сканирование

В подкаталоги входить можно по ENTER, возврат назад по стрелке влево, клавише h или < (обычно запятая с шифтом) или по нажатию ENTER на .., как в mc. Краткая справка по ? (не забывайте нажать SHIFT), выход по q.


Отображение каталогов и их размеров

В Slackware устанавливается штатным образом через sbopkg, как в других линуксах не знаю, в Убунте и Дебиане есть в репозиториях.

Linux wget, коды возврата/завершения. Коды ошибок wget.

Раз уж пошел разговор про wget (копия), решил я заодно дополнить добрым людям скрипт какими-нибудь осмысленными сообщениями об ошибках, а для того нужны коды завершения.

Кто-то, неизвестно почему, утверждал, что в man их нет. Есть. Но пусть уж будут и тут, и мне от склероза, и мало ли кому другому, кто не любит на буржуйском читать.

Коды завершения wget

0 — OK (ошибок нет)
1 — Иная / общая ошибка (generic error code)
2 — Ошибка в параметрах командной строки или файлах конфигурации (.wgetrc или .netrc)
3 — Ошибка файлового ввода/вывода (I/O error)
4 — Ошибка сети (например, при обрыве связи)
5 — Ошибка SSL
6 — Ошибка идентификации (неправильное имя пользователя или пароль)
7 — Ошибка протокола
8 — Ошибка сервера (например, нужный файл на сервере не найден, ошибка 404)

За исключением 0 и 1, коды выхода с меньшими номерами имеют приоритет над кодами с большими номерами, когда встречаются многочисленные типы ошибок.

Linux wget, тайм-аут и повторы. «Виснет» wget при разрыве связи.

Преамбула

Написали тут с вопросом, мол виснет у нас программа, почему никто не знает, кто ее писал уволился давно, поможи. Ну от чего же не помочь. Программа оказалась башевским скриптом, точнее, набором скриптов. Задача небольшая, выгрузить файл с удаленного сервера, переформатировать и положить на другой сервер, где его подхватывает бухгалтерия. Выгрузка делалась банальным wget.

Проблема

Оказалось, скрипт вис, если пропадало соединение с сетью.
Выгрузка производилась простой командой:

wget -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"

Решение

Оказывается, у wget не проставлен тайм-аут ожидания, а по умолчанию, если его не проставить, wget будет ждать аж 900 секунд (15 минут). Надо, соответственно, его напрямую указать в параметре ключа -T <секунды> (--timeout=<секунды>),
Например, можно поставить вменяемые полминуты (30 с.):

wget --timeout=30 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"

Т.е. вис-то, собственно wget, хотя конечно же, не вис, а терпеливо ждал. Но тут и не бухгалтеру, а даже не сильно опытному пользователю ничего не стоит принять такое поведение за то, что wget виснет при разрыве соединения.

Заодно можно указать wget‘у количество попыток для скачивания файла: -t <число> (--tries=<число>), тем более, что указание параметра -O (имя выходного файла) сбрасывает этот параметр в 1.

wget --timeout=30 --tries=3 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"

Полезные ссылки

Шпаргалка по Wget. Копия в PDF