[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kakie-poleznye-odnostrochniki-dolzhen-znat-java-razrabotchik":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},177,"kakie-poleznye-odnostrochniki-dolzhen-znat-java-razrabotchik",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Какие полезные однострочники должен знать Java-разработчик?","**Однострочники (one-liners)** — это компактные комбинации команд, решающие конкретную практическую задачу в одну строку. Владение однострочниками отличает разработчика с реальным опытом эксплуатации систем от того, кто работает только в IDE.\n\n### Поиск в логах\n\n```bash\n# Найти последние 50 ошибок с контекстом (3 строки вокруг)\ngrep -C 3 \"ERROR\" app.log | tail -50\n\n# Уникальные типы исключений с количеством\ngrep -oE \"[A-Za-z]+Exception\" app.log | sort | uniq -c | sort -rn\n\n# Ошибки за последний час\nawk -v date=\"$(date -d '1 hour ago' '+%Y-%m-%d %H')\" '$0 >= date' app.log | grep ERROR\n\n# Запросы дольше 1 секунды (парсинг из лога)\ngrep \"completed in\" app.log | awk -F'completed in ' '{print $2, $0}' | sort -rn | head -20\n\n# Следить за ошибками в реальном времени\ntail -f app.log | grep --line-buffered \"ERROR\\|WARN\"\n\n# Количество запросов в минуту из access.log\nawk '{print $4}' access.log | cut -c1-18 | sort | uniq -c | sort -rn | head -20\n```\n\n### Подсчёт строк кода\n\n```bash\n# Строки Java-кода (без пустых строк и комментариев)\nfind src -name \"*.java\" | xargs grep -v '^\\s*$\\|^\\s*\u002F\u002F' | wc -l\n\n# Строки по типам файлов\nfind . -name \"*.java\" -o -name \"*.xml\" -o -name \"*.yml\" | \\\n    xargs wc -l | tail -1\n\n# Топ-10 самых длинных файлов\nfind src -name \"*.java\" -exec wc -l {} + | sort -rn | head -11\n\n# Количество файлов по расширению\nfind . -type f | sed 's\u002F.*\\.\u002F\u002F' | sort | uniq -c | sort -rn | head -10\n```\n\n### Работа с Git из командной строки\n\n```bash\n# Файлы, изменённые в последнем коммите\ngit diff --name-only HEAD~1\n\n# Кто больше всех коммитил\ngit shortlog -sn --all\n\n# Поиск по истории коммитов (кто добавил\u002Fудалил строку)\ngit log -S \"password\" --oneline\n\n# Найти коммит, который сломал тест (git bisect)\ngit bisect start\ngit bisect bad HEAD\ngit bisect good v1.0\n\n# Количество строк, изменённых автором\ngit log --author=\"developer\" --pretty=tformat: --numstat | \\\n    awk '{added+=$1; deleted+=$2} END {print \"Added:\", added, \"Deleted:\", deleted}'\n\n# Файлы, которые чаще всего менялись (hotspots)\ngit log --pretty=format: --name-only | sort | uniq -c | sort -rn | head -20\n```\n\n### Анализ портов и сети\n\n```bash\n# Кто слушает порт 8080\nlsof -i :8080\nss -tlnp | grep 8080\n\n# Все слушающие порты\nss -tlnp\nnetstat -tlnp\n\n# Проверить доступность хоста и порта\nnc -zv hostname 8080\n# Или через bash (без дополнительных утилит)\ntimeout 3 bash -c 'echo > \u002Fdev\u002Ftcp\u002Fhostname\u002F8080' && echo \"Open\" || echo \"Closed\"\n\n# DNS-запрос\ndig example.com\nnslookup example.com\n\n# Трассировка маршрута\ntraceroute example.com\n```\n\n### Работа с процессами и ресурсами\n\n\u003Cdetails>\n\u003Csummary>Процессы, диск, память\u003C\u002Fsummary>\n\n```bash\n# Java-процессы с параметрами JVM\nps aux | grep \"[j]ava\" | grep -oE '\\-Xm[sx][^ ]+'\n\n# Использование диска по директориям (топ-10)\ndu -sh \u002Fvar\u002F* 2>\u002Fdev\u002Fnull | sort -rh | head -10\n\n# Найти файлы, занимающие больше всего места\nfind \u002F -type f -size +100M 2>\u002Fdev\u002Fnull | xargs ls -lhS\n\n# Освободить место — найти и удалить старые логи\nfind \u002Fvar\u002Flog -name \"*.gz\" -mtime +90 -delete\n\n# Мониторинг использования памяти Java-процессом\nwhile true; do ps -p $(pgrep -f app.jar) -o %mem,rss,vsz; sleep 5; done\n```\n\n\u003C\u002Fdetails>\n\n### Обработка данных\n\n```bash\n# Конвертация CSV в читаемую таблицу\ncat data.csv | column -t -s ','\n\n# Извлечь email-адреса из файла\ngrep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}' file.txt\n\n# Суммировать числа в столбце\nawk -F',' '{sum+=$3} END {print sum}' data.csv\n\n# Сравнить два конфигурационных файла\ndiff \u003C(sort config1.yml) \u003C(sort config2.yml)\n\n# Заменить текст во всех файлах проекта\nfind . -name \"*.java\" -exec sed -i 's\u002FoldMethod\u002FnewMethod\u002Fg' {} +\n\n# Быстрый HTTP-сервер для текущей директории\npython3 -m http.server 8000\n```\n\n> **На собеседовании:** на Senior-позиции могут попросить решить задачу в терминале «на лету»: найти топ-5 IP-адресов в access.log, посчитать уникальные ошибки в логах, найти самый часто изменяемый файл в Git-истории. Практикуйте комбинации `grep | sort | uniq -c | sort -rn | head` — это универсальный паттерн для анализа частотности. Знание `awk`, `sed` и `jq` на базовом уровне обязательно.\n\n---","","middle",[15,16,17,18,19],"scripting","devops","linux","автоматизация","bash",[],null,{"title":23,"description":24,"ogTitle":23,"ogDescription":25,"keywords":26,"schemaAnswer":34,"featuredSnippetReady":35},"Полезные bash-однострочники для Java-разработчика -- Gymterview","Какие однострочники должен знать Java-разработчик? Поиск в логах, подсчёт строк кода, Git-команды, анализ портов и сети, работа с процессами и обработка данных.","Подборка практических bash-однострочников: поиск в логах, анализ кода, Git, мониторинг портов и процессов для Java-разработчиков.",[27,28,29,30,31,32,33],"bash однострочники","bash one-liners","grep логи","подсчёт строк кода","lsof порт","Git однострочники","Linux для Java","Поиск в логах: grep -oE '[A-Za-z]+Exception' app.log | sort | uniq -c | sort -rn (уникальные исключения с количеством), tail -f app.log | grep --line-buffered 'ERROR' (мониторинг ошибок). Подсчёт кода: find src -name '*.java' | xargs wc -l. Git: git shortlog -sn --all (кто больше коммитил), git log -S 'password' --oneline (поиск по истории). Сеть: lsof -i :8080 (кто слушает порт), ss -tlnp (все порты). Процессы: ps aux | grep '[j]ava' (Java-процессы), du -sh \u002Fvar\u002F* | sort -rh | head -10 (использование диска). Данные: column -t -s ',' (форматирование CSV).",true]