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

Оболочки *

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

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

TOTP без смартфона, послесловие

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.7K

После публикации статьи «TOTP без смартфона» она получила много интересных и полезных комментариев. Я решил подождать, пока обсуждение затихнет и провести работу над замечаниями и высказанными мыслями.

Поскольку объём работы оказался достаточно большой, то оформил её в виде отдельной публикации-послесловия.

Читать далее
Всего голосов 14: ↑16 и ↓-2+18
Комментарии20

Новости

История терминала как инструмент продуктивности

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.3K

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

Читать далее
Всего голосов 8: ↑10 и ↓-2+12
Комментарии2

TOTP без смартфона

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров15K

Когда я решил избавиться от необходимости постоянно носить с собой смартфон, одной из проблем оказалась двухфакторная аутентификация (2FA, приложение Google Authenticator). Остаться без возможности авторизации на множестве сервисов было неприемлемо, нужна была альтернатива.

Беглый поиск вывел меня на утилиту oathtool: командная строка, POSIX, OSS — всё, как я люблю, проблема в принципе решена. Но, как и большинство CLI утилит, её удобно использовать в сочетании с другими утилитами, а для этого полезно написать скриптовую обвязку. Собственно этой обвязкой, а также опытом использования, я и решил поделиться.

Читать далее
Всего голосов 68: ↑68 и ↓0+68
Комментарии88

Как потерять управление оболочкой… Расследование

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.1K

image


Несколько недель назад я занимался хаком языковых серверов в Zed, пытаясь заставить Zed определять, когда заданный бинарник языкового сервера, например gopls, уже присутствует в $PATH. Если так, вместо загрузки нового бинарника Zed должен использовать его.


Трудность: часто $PATH динамически изменяется такими инструментами, как direnv, asdf, mise и другими, которые позволяют в данной папке установить определённый $PATH. Почему эти инструменты так делают? Потому что это даёт возможность, скажем, в начале $PATH добавить ./my_custom_binaries, пока вы находитесь в my-cool-project. Поэтому нельзя просто использовать $PATH, связанный с процессом Zed, нужен $PATH, как он есть, когда выполняется cd в каталог проекта.


Легко, подумал я. Просто запусти $SHELL, выполни cd в проект, чтобы запустить direnv и всё такое, запусти env, сохрани окружение, выбери $PATH, найди в нём бинарники. И это было легко. Вот часть кода, та часть, которая запускает $SHELL, cd и получает env:


fn load_shell_environment(dir: &Path) -> Result<HashMap<String, String>> {
    // Получает $SHELL
    let shell = std::env::var("SHELL")?;

    // Конструирует команду, которую хочется выполнить в $SHELL
    let command = format!("cd {:?}; /usr/bin/env -0;", dir);

    // Запускает $SHELL как интерактивную оболочку (чтобы использовались файлы пользователя rc).
    // и выполняет `command`:
    let output = std::process::Command::new(&shell)
        .args(["-i", "-c", &command])
        .output()?;

    // [... проверка кода выхода, получение stdout, превращение stdout в HashMap и т. д. ...]
}

За исключением одного: после запуска экземпляра Zed в терминале, который выполнял эту функцию, я больше не мог убить Zed, нажав Ctrl-C.

Что?
Всего голосов 15: ↑13 и ↓2+11
Комментарии8

Истории

Как я подарил своему старому ноутбуку вторую жизнь

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров45K

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

Читать далее
Всего голосов 67: ↑25 и ↓42-17
Комментарии137

REST API сервер на Bash с использованием сокетов и Apache

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров5.5K

Всем привет! Ранее рассказывал о том, как создать REST API и Web-сервер на PowerShell для Windows, а также упоминал, что подобный сервер будет работать и в системе Linux, благодаря кроссплатформенной версии PowerShell Core. Безусловно, для подобных целей лучше используются специализированные серверные фреймворки или библиотеки, такие как Flask или Django в Python, но меня не покидала идея реализации похожего сервера, где описание логики будет производиться на языке одного только Bash. Приведу примеры, с помощью которых можно создать такой сервер используя сетевые сокеты netcat , socat и ncat, а также веб-сервера Apache с использованием встроенных модулей.

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Комментарии3

Полезные модули PowerShell. Переводчик в консоли, SpeedTest, Syslog и другие

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.6K

Всем привет! Порой, написать графическую форму для консольного приложения может оказаться очень удобным решением, тем самым не нужно запоминать все ключи программы, особенно, если пользоваться им приходится изредка, тем самым автоматизируя работу с данным приложением в дальнейшем. Но, ситуация может быть обратной, когда приложение имеет только графический интерфейс, а вам нужно получить вывод его работы в консоли, например, для возможности передачи метрик в систему мониторинга. С тех пор как начал проводить все больше времени в консоли, заметил, что становится менее удобно переключаться на ранее привычные инструменты, лишний раз использовать мышь, держать открытыми излишние приложения или вкладки в браузере, особенно, если работаешь на удаленной машине без прямого доступа к графическому интерфейсу. У меня накопилась небольшая коллекция полезных модулей, большинство из которых написаны совсем недавно, успел привыкнуть при регулярном использовании и хотелось бы ими поделиться. Осознавая, что тенденция ухода Windows систем на территории РФ растет, тем не менее думаю еще очень много людей, кто так же как и я продолжают использовать данную систему и автоматизировать свою работу, возможно, представленные модули так же смогут пригодятся. Все модули опубликованы в репозитории на GitHub и менеджере пакетов Nuget, откуда их можно установить одной командой.

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

Мониторим работу Windows с помощью Powershell

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8.5K

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

В операционных системах семейства Windows для автоматизации выполнения задач мониторинга лучше всего использовать Powershell. И далее в этой статье мы рассмотрим несколько полезных скриптов, которые могут упростить мониторинг состояния различных компонентов ОС.

Начнем с мониторинга состояния сетевых портов и взаимодействующих с ними процессов.

Читать далее
Всего голосов 12: ↑10 и ↓2+8
Комментарии3

Persistence via RDP

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

Внимание! Статья несёт исключительно информативный характер. Подобные действия преследуются по закону!

Привет! Сегодня хотелось бы рассмотреть стандартный, но необычный способ закрепления в системе через RDP, используя utilman.exe.

Представим следующую ситуацию: нам удалось получить reverse shell от целевого хоста. Безусловно, нам необходим backdoor для обеспечения постоянного доступа. В процессе сканирования мы узнаем об открытом 3389 порте. И как нам быть?

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии6

Топ необходимых Linux-команд для разработчика [Шпаргалка]

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров25K

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

Цель этой статьи - ближе познакомить пользователей с основными командами, которые разработчики используют в повседневной работе.

Читать далее
Всего голосов 35: ↑24 и ↓11+13
Комментарии35

Четвёртое наблюдение о командной строке и путях в файловой системе

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.8K

В недавно опубликованной статье «Три наблюдения о командной строке и путях в файловой системе» были рассмотрены некоторые особенности интерпретации командной строки оболочками в операционных системах Windows и Linux. Первое наблюдение было о том, что командные оболочки SH/BASH, в отличие от COMMAND/CMD, выполняют предварительную обработку параметров, содержащих шаблоны имён файлов. А в этой небольшой заметке приводится ещё одно наблюдение, демонстрирующее важность учёта предварительной обработки параметров-шаблонов командной оболочкой.

Читать далее
Всего голосов 23: ↑16 и ↓7+9
Комментарии17

Настройка ZSH в Fedora linux, в Linux Mint и других ubuntu подобных дистрибутивах

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Свое рабочее место все хотят сделать чуть лучше и удобнее чем оно идет из "Коробки". в данной инструкции можно быстро и без боли настроить Шелл-терминал ZSH, для лучшего отображения информации и при необходимости расширять его функционал плагинами. Попутно установим один из терминалов Kitty который позволяет использовать вкладки и "окна" в работе. Используя его можно структурировать рабочее место легко и быстро. Плюсом данной инструкции будет то что вы получите свежие и стабильные версии NeoVim и некоторых пакетов, т.к. установку и сборку будем производить непосредственно из репозиториев.

Читать далее
Всего голосов 9: ↑3 и ↓6-3
Комментарии18

Полезные Заготовки Вызова Утилит Командной Строки

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K

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

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

Читать далее
Всего голосов 32: ↑7 и ↓25-18
Комментарии44

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

Книга «Linux. Командная строка. Лучшие практики»

Время на прочтение17 мин
Количество просмотров26K
image Привет, Хаброжители!

Перейдите на новый уровень работы в Linux! Если вы системный администратор, разработчик программного обеспечения, SRE-инженер или пользователь Linux, книга поможет вам работать быстрее, элегантнее и эффективнее. Вы научитесь создавать и запускать сложные команды, которые решают реальные бизнес-задачи, обрабатывать и извлекать информацию, а также автоматизировать ручную работу.

Узнайте, что происходит внутри командной оболочки Linux. Вне зависимости от используемых команд, вы повысите эффективность работы в Linux и станете более конкурентоспособным специалистом.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии17

Книга «Идиомы bash»

Время на прочтение13 мин
Количество просмотров11K
image Привет, Хаброжители!

Сценарии на языке командной оболочки получили самое широкое распространение, особенно написанные на языках, совместимых с bash. Но эти сценарии часто сложны и непонятны. Сложность — враг безопасности и причина неудобочитаемости кода. Эта книга на практических примерах покажет, как расшифровывать старые сценарии и писать новый код, максимально понятный и легко читаемый.

Авторы Карл Олбинг (Carl Albing) и Джей Пи Фоссен (JP Vossen) покажут, как использовать мощь и гибкость командной оболочки. Даже если вы умеете писать сценарии на bash, эта книга поможет расширить ваши знания и навыки. Независимо от используемой ОС — Linux, Unix, Windows или Mac — к концу книги вы научитесь понимать и писать сценарии на экспертном уровне. Это вам обязательно пригодится.

Вы познакомитесь с идиомами, которые следует использовать, и такими, которых следует избегать.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии9

Размер имеет значение! Часть 3

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

Как бы мы себя не обманывали - Размер имеет значение! И конечно, мы будем говорить о размере нашего андроид приложения, куда мы добавляем кучу классных features, и даже не задумываемся как это может негативно повлиять на размер приложения. Поэтому мы научимся обнаруживать регрессию размера нашего приложения на CI для автоматизации этого процесса.

В последней части, оптимизируем процесс обнаружения регрессии размера андроид приложения.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Как хакнуть что угодно с помощью GNU Guix

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

Мариус Бакке (Marius Bakke) несколько лет занимается разработкой Guix и недавно начал вести свой блог. Мы решили перевести рассказ о том, почему Мариус увлёкся разработкой собственной операционной системы и как с её помощью можно вносить правки в код любых программ.

Читать далее
Всего голосов 8: ↑2 и ↓6-4
Комментарии5

Размер имеет значение! Часть 2

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

Как бы мы себя не обманывали - Размер имеет значение! И конечно, мы будем говорить о размере нашего андроид приложения, куда мы добавляем кучу классных features, и даже не задумываемся как это может негативно повлиять на размер приложения. Поэтому мы научимся обнаруживать регрессию размера нашего приложения на CI для автоматизации этого процесса.

В данной части, обсудим как можно проверять размер в pull request, что позволит автоматизировать весь процесс обнаружения регрессии, до того как изменения попали в development.

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

Размер имеет значение! Часть 1

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

Как бы мы себя не обманывали - Размер имеет значение! И конечно, мы будем говорить о размере нашего андроид приложения, куда мы добавляем кучу классных features, и даже не задумываемся как это может негативно повлиять на размер приложения. Поэтому мы научимся обнаруживать регрессию размера нашего приложения на CI для автоматизации этого процесса. В данной части, обсудим как можно легко проверять размер в development ветке.

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

PowerShell: HTML Agility Pack и AngleSharp

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

Как получить и использовать библиотеки «HTML Agility Pack» и «AngleSharp» для создания простого парсера HTML в скрипте для программ-оболочек «Windows PowerShell» версии 5.1 и «PowerShell» версии 7 в операционной системе «Windows 10». Приведен простой пример кода для обеих библиотек.

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии6