Как стать автором
Обновить
34.45

Оболочки *

Шелл и компания

Сначала показывать
Порог рейтинга
Уровень сложности

Падение в кроличью нору: История об одной ошибке перезагрузки varnish — часть 1

Время на прочтение8 мин
Количество просмотров1.8K

ghostinushanka, молотив по кнопкам в течение предыдущих 20 минут, как если бы от этого зависела его жизнь, поворачивается ко мне с полу-диким выражением в глазах и хитрой ухмылкой — "Чувак, я кажется понял."


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


Немного озадаченный и уставший, я изменяю sed выражение, над которым мы какое-то время уже работали, сохраняю файл и запускаю systemctl varnish reload. Сообщение об ошибке исчезло...


"Мейлы, которыми я обменивался с кандидатом," продолжил мой коллега, в то время как его ухмылка перерастает в неподдельную улыбку полную радости, "До меня вдруг дошло что это точно такая же проблема!"

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Интегрируем команды Linux в Windows с помощью PowerShell и WSL

Время на прочтение8 мин
Количество просмотров17K
Типичный вопрос разработчиков под Windows: «Почему здесь до сих пор нет <ВСТАВЬТЕ ТУТ ЛЮБИМУЮ КОМАНДУ LINUX>?». Будь то мощное пролистывание less или привычные инструменты grep или sed, разработчики под Windows хотят получить лёгкий доступ к этим командам в повседневной работе.

Подсистема Windows для Linux (WSL) сделала огромный шаг вперёд в этом отношении. Она позволяет вызывать команды Linux из Windows, проксируя их через wsl.exe (например, wsl ls). Хотя это значительное улучшение, но такой вариант страдает от ряда недостатков.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии26

Нетипичный «ls» — Habr Edition

Время на прочтение2 мин
Количество просмотров15K
image

Всем привет!

После вчерашнего поста о замене штатного ls другими штатными (или не очень) утилитами, я просто не мог пройти мимо комментов, особенно учитывая то что пост взлетел на вершины хит-парадов и за сутки его прочитало 18k, с хвостиком человек. Хабровчане подарили миру много новых способов избавиться от ls. Я их все (но это не точно) проверил, некоторые «причесал», что бы они соответствовали условиям задачи, и хочу поделиться с вами. Наслаждайтесь!
Читать дальше →
Всего голосов 46: ↑39 и ↓7+32
Комментарии53

Нетипичный «ls» или как развлекаются линуксоиды

Время на прочтение2 мин
Количество просмотров33K
Однажды в телеграм чат питерского сообщества линуксоидов SPbLUG я кинул забавную задачку:
Выведите список файлов в домашней директории максимально возможным количеством способов, без использования ls или его алиасов(1 способ — 1 балл)

Такое же задание чуть позже прилетело в ещё один чат, и вот что из этого получилось:
Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии136

Истории

Восемь малоизвестных опций Bash

Время на прочтение3 мин
Количество просмотров42K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

для выхода по ошибке или

set -o errunset

для выхода, если вызванная переменная не установлена.

Но есть много других опций. Иногда они слишком путано описаны в манах, поэтому я собрал здесь некоторые из наиболее полезных, с объяснением.
Читать дальше →
Всего голосов 82: ↑79 и ↓3+76
Комментарии13

Запуск Bash в деталях

Время на прочтение3 мин
Количество просмотров33K
Если вы нашли эту страницу в поиске, то наверняка пытаетесь решить какую-то проблему с запуском bash.

Возможно, в вашем окружении bash не устанавливается переменная среды и вы не понимаете, почему. Возможно, вы засунули что-то в различные загрузочные файлы bash или в профили, или во все файлы наугад, пока это не сработало.

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

Диаграмма


Эта блок-схема обобщает все процессы при запуске bash.



Теперь подробнее рассмотрим каждую часть.
Читать дальше →
Всего голосов 35: ↑29 и ↓6+23
Комментарии4

Семь неожиданных переменных Bash

Время на прочтение3 мин
Количество просмотров36K
Продолжая серию заметок о менее известных функциях bash, покажу вам семь переменных, о которых вы могли не знать.

1) PROMPT_COMMAND


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

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

Попробуйте запустить это в новом шелле, и увидите, что произойдёт с сессией:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии32

Запуск SAP GUI из браузера

Время на прочтение8 мин
Количество просмотров13K
Эту статью я сначала написал в свой блог, чтобы потом опять не искать и не вспоминать, но поскольку блог никто не читает, то этой информацией захотелось поделиться со всеми, вдруг кому пригодиться.

Во время работы над идеей сервиса по сбросу пароля в системах SAP R/3 возник вопрос — а как запустить SAP GUI с нужными параметрами из браузера? Поскольку в этой идее подразумевалось использование веб-сервиса, сначала отрабатывающего по запросу SOAP из SAP GUI и отправляющего письмо со ссылкой на веб-страницу со скриптом сброса пароля на начальный, а потом уже отображение пользователю сообщения об успешном сбросе пароля и отображение этого самого начального пароля, то хотелось, чтобы на этой странице была еще и ссылка на запуск SAP GUI. Причем, чтобы эта ссылка открывала нужную систему, да еще, желательно, сразу с заполненными полями логина и пароля: пользователю оставалось бы только дважды заполнить продуктивный пароль.

Запуск SAP Logon — для нашей цели был не интересен, а при запуске sapgui.exe невозможно было указать мандант и имя пользователя, зато можно было запустить систему не определенную в SAP Logon. С другой стороны, запуск SAP GUI с произвольными параметрами сервера был не особенно актуален: уж если мы решаем задачу сброса пароля пользователя, то скорее всего у него в SAP Logon уже есть нужная строка, с нужными ему настройками и не надо лезть со своими. Зато заданным требованиям удовлетворяла технология SAP GUI Shortcut и собственно программа sapshcut.exe, которая давала возможность запускать SAP GUI с использованием определенного «ярлыка».
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии16

Инфраструктура открытых ключей. Цепочка корневых сертификатов X509 v.3

Время на прочтение9 мин
Количество просмотров7.5K
Неумолимо приближается час «Ч»: «использование схемы подписи ГОСТ Р 34.10-2001 для формирования подписи после 31 декабря 2018 года не допускается!».
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии41

Собственный DHCP-сервер силами bash

Время на прочтение6 мин
Количество просмотров24K
Я люблю автоматизировать процесс и писать собственные велосипеды для изучения того или иного материала. Моей новой целью стал DHCP-сервер, который будет выдавать адрес в маленьких сетях, чтобы можно было производить первоначальную настройку оборудования.

В данной статье я расскажу немного про протокол DHCP и некоторые тонкости из bash'а.
Поднять паруса!
Всего голосов 27: ↑27 и ↓0+27
Комментарии33

За 2018 год разработчики проекта KDE получили больше $ 0,5 млн. пожертвованиями. И не только они…

Время на прочтение2 мин
Количество просмотров20K
image

Жизнь многих коллективов разработчиков свободного программного обеспечения преисполнена аскетизма, преодоления сложностей и препятствий, и часто сообщества выживают исключительно за счет альтруистических убеждений и самоотверженности своих участников. Не всем популярным свободным продуктам удается найти стабильный и надежный источник финансирования. Однако, иногда судьба дарит заслуженные подарки. Так в этом году произошло с проектом KDE. Дважды.

KDE — организация и международное сообщество вокруг нее, разрабатывающее свободное программное обеспечение: среду рабочего стола Plasma и набор приложений KDE Applications. Основным источником средств для проекта служит сбор пожертвований и целевые кампании по фандрайзингу.

image


15 октября 2018 некоммерческая организация KDE e.V., курирующая развитие проекта KDE, сообщила о получении пожертвования в $300 000 на 22-летие проекта от другого сообщества энтузиастов — Handshake.org. Причем 100 тысяч долларов, из полученных 300 тысяч, пойдут на развитие свободного офисного пакета Calligra.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии64

Работаем в консоли быстро и эффективно

Время на прочтение9 мин
Количество просмотров123K

В сети можно встретить много советов по эффективной работе в консоли. В большинстве таких статей авторы рассказывают про банальности типа "выучите горячие клавиши" или "sudo !! запустит последнюю команду под sudo". Я же расскажу о том, что делать, когда вы уже выучили горячие клавиши и знаете про sudo !!.

Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии117

Встречайте псевдоконсоль Windows (ConPTY)

Время на прочтение17 мин
Количество просмотров20K
Статья опубликована 2 августа 2018 года

Это вторая статья про командную строку Windows, где мы обсудим новую инфраструктуру и программные интерфейсы псевдоконсоли Windows, то есть Windows Pseudo Console (ConPTY): зачем мы её разработали, для чего она нужна, как работает, как её использовать и многое другое.

В прошлой статье «Тяжкое наследие прошлого. Проблемы командной строки Windows» мы рассказали о предпосылках появления терминала и эволюции командной строки в Windows, а также начали изучать внутреннее устройство Windows Console и инфраструктуры Windows Command-Line. Мы также обсудили многие преимущества и главные недостатки консоли Windows.

Один из недостатков заключается в том, что Windows пытается быть «полезной», но мешает разработчикам альтернативных и сторонних консолей, разработчикам служб и т.д. При создании консоли или службы разработчикам нужно иметь доступ к каналам связи, по которым их терминал/служба обменивается данными с приложениями командной строки, или предоставлять доступ к ним. В мире *NIX это не проблема, потому что *NIX предоставляет инфраструктуру «псевдотерминала» (PTY), которая позволяет легко создавать коммуникационные каналы для консоли или службы. Но в Windows такого не было…

… до настоящего времени!
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии23

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Тяжкое наследие прошлого. Проблемы командной строки Windows

Время на прочтение28 мин
Количество просмотров77K
Предисловие от автора, Рича Тёрнера из Microsoft. Это статья о командной строке: от её появления и эволюции до планов капитального ремонта Windows Console и командной строки в будущих версиях Windows. Будь вы опытным профессионалом или новичком в IT, надеемся, что вы найдёте статью интересной.

Давным-давно в далёкой-далёкой серверной...


С первых дней развития информатики людям нужен был эффективный способ передавать компьютеру команды и данные и видеть результат выполнения этих команд/вычислений.

Одним из первых по-настоящему эффективных человеко-машинных интерфейсов стал Tele-Typewriter или «телетайп». Это электромеханическая машина с клавиатурой для ввода данных и каким-нибудь устройством вывода — сначала использовался принтер, позже экран.
Читать дальше →
Всего голосов 107: ↑103 и ↓4+99
Комментарии181

Насколько хорошо ты знаешь bash?

Время на прочтение4 мин
Количество просмотров38K

Пользуешься командным интерпретатором каждый день? Готов решить несколько логических задачек и узнать что-то новое? Добро пожаловать под кат.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии31

Google's Shell Style Guide (на русском)

Время на прочтение14 мин
Количество просмотров21K

Предисловие


Какой Shell использовать


Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


Когда использовать Shell


Shell следует использовать только для небольших утилит или простых скрптов-оберток.


Хотя shell-скриптинг не является языком разработки, он используется для написания различных утилит во всем Google. Это руководство по стилю является скорее признанием его использования, а не предложением использовать его в широком применении.

Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии10

Как безопасно программировать в bash

Время на прочтение11 мин
Количество просмотров44K

Почему bash?


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

В fish сложнее допустить ошибку, но там нет безопасного режима. Поэтому хорошей идеей станет прототипирование в fish, а затем трансляция с fish на bash, если вы умеете правильно это делать.

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии39

Производительность консолей и оболочек

Время на прочтение11 мин
Количество просмотров13K
Есть хорошее демо MSR от 2012 года, которое показывает эффект времени отклика при работе на планшете. Если не хотите смотреть три минуты видео, они по сути создали устройство, которое симулирует произвольные задержки вплоть до доли миллисекунды. Задержка 100 мс (0,1 секунды), типичная для современных планшетов, выглядит ужасно. На 10 мс (0,01 секунды) задержка заметна, но уже можно нормально работать, а при задержке менее 1 мс всё просто идеально — как будто вы пишете карандашом по бумаге. Если хотите проверить это самостоятельно, возьмите любой Android-планшет со стилусом и сравните с нынешним поколением iPad Pro со стилусом Apple. У устройства Apple время отклика намного больше 10 мс, но разница всё равно кардинальная — она такая, что я реально использую новые iPad Pro для записи заметок и рисования диаграмм, в то время как Android-планшеты считаю совершенно неприемлемыми в качестве замены карандашу и бумаге.

Что-то похожее вы увидите в шлемах VR с разными задержками. 20 мс выглядит нормально, 50 мс лагает, а 150 мс уже непереносимо.

Странно, но редко приходится слышать жалобы на задержку ввода с клавиатуры или мыши. Казалось бы, причиной может быть то, что ввод с клавиатуры и мыши очень быстрый — и происходит практически мгновенно. Часто мне говорят, что так оно и есть, но я думаю, что ситуация совершенно обратная. Идея того, что компьютеры быстро реагируют на ввод данных — настолько быстро, что человек не замечает разницы — самое распространённое заблуждение, которое мне приходилось слышать от профессиональных программистов.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии3

Удалённый рабочий стол + распределённые команды =?

Время на прочтение7 мин
Количество просмотров28K
В предыдущей статье я мимолётом упоминал про использование технологии удалённого рабочего стола для организации взаимодействия распределённых команд. Сейчас мне бы хотелось более подробно остановиться на этой теме, понять границы применения этой технологии и провести сравнение наиболее популярных реализаций.


Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии11

Дюжина приемов в Linux, которые действительно сэкономят уйму времени

Время на прочтение9 мин
Количество просмотров136K


Эта статья также есть на английском.

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

Командная строка для администратора или пользователя — это не только инструмент, которым можно сделать все, но и инструмент, который кастомизируется под себя любимого бесконечно долго. Недавно пробегал перевод на тему удобных приемов в CLI. Но у меня сложилось впечатление, что сам переводчик мало пользовался советами, из-за чего важные нюансы могли быть упущены.

Под катом — дюжина приемов в командной строке — из личного опыта.
Читать дальше →
Всего голосов 128: ↑122 и ↓6+116
Комментарии166
Изменить настройки темы

Вклад авторов