В данной статье мы поговорим, почему важно не отрекаться от терминала полностью, а использовать его в меру. В каких случаях его нужно использовать, а в каких не стоит.
Будем честны
Никому из нас особо терминал не нужен. Мы привыкли к тому, что на всё, что только можно мы можем кликнуть мышкой и затригерить что-то. Нам лень что-то открывать и где-то писать комманды. Мы хотим функционала здесь и сейчас. Большинство из нас вообще не использует терминал. Стоит ли его использовать вообще?
Почему использовать терминал нужно?
Это удобно. Не нужно переключаться на множество окон, искать что-то где-то мышкой. Вы можете просто написать комманду нужную для этого.
Перечислим ситуации, когда терминал нужен:
- Когда нужно что-то включить, а времени искать это в настройках нет (Привет, GUI dconf)
- Когда проще найти файл или папку в терминале, нежели тратить время на GUI (fzf хорошо справляется с такой задачей)
- Когда легче быстро редактировать файл в Vim, Neovim, Nano, Micro, нежели лезть в IDE
- Когда остается только терминал (сброс настроек в Ubuntu или установка Arch Linux, например)
- Когда нужно быстродействие, а не качество
Когда не нужно использовать терминал:
- Когда этого функционала нет в терминале (такое встречается крайне редко, но всё же)
- Когда удобнее это сделать в GUI, нежели мучиться с TUI (отладка программ, например)
- Когда вы толком не умеете ничего делать в терминале, а сделать что-то нужно быстро (вы потратите больше времени на автоматизацию, чем на само действие, думаю это знакомо всем)
- Когда нужна удобность, а не быстродействие
Это основные правила, которые нельзя забывать. Казалось бы просто, однако желание "давай-ка попробуем автоматизировать всё, а не кликнуть мышкой два раза" частенько выходит в приоритет. Люди ленивые, однако это не всегда им на руку.
Делаем сам терминал жизнеспособным
Вот мой минимальный набор для того, чтобы хоть что-то сделать в терминале нормально:
Tmux — чтобы делить окно на панели (если наспавнить кучу окон терминал и переключаться между ними подолгу, то во всей идее отсутствует смысл, легче уже просто переключаться между приложениями с GUI)
fzf — чтобы быстро что-то найти. Это действительно быстрее, нежели на GUI. vim <ctrl + r> и выбираем имя файла и всего-то.
zsh — (точнее OhMyZsh) терминал должен быть удобным, и не быть вырвиглазным
neovim — ибо смысл пребывания в терминале без него практически теряется. Редактор, который может намного больше, чем приложения с GUI
А также огромное количество других приложений: ranger (или ViFM), how2, live-server, nmcli, xrandr, python3, jshell, diff, git и далее
А какой смысл?
Сами посудите, когда вы пытаетесь загрузить полновесную IDE для того чтобы изменить какой-то маленький скрипт — это иррационально. Легче просто быстро поменять его в Vim (или Nano, для тех, кто не любит Vim-раскладку). Вы можете делать вещи быстрее, однако не надо учить всё, что есть в терминале. Возможно, работая в терминале, вам никогда не потребуется изучать скриптовый язык Bash, потому что вам оно не надо.
Давайте делать вещи проще, и смотреть на разные вещи с разных сторон, а не делить всё на чёрное и белое
muxa_ru
Как пользователь Win10 Pro я в линуксовом терминале постоянно сижу — Bash on Windows наше всё :)
grep, ssh на другие сервера, разные самописные скриптики которые что-нибудь распаршивают и анализируют.
Из минусов — на один терминал больше трети процессора Винда не отдаёт + не очень удобно работать с мнешними дисками.
Из плюсов — в любой момент можно прибить весь процесс с терминалом, не рискуя что это повлечёт за собой проблемы в других процессах + нативно доступна куча разного консольного линуксового софта.
Username77177 Автор
А с утилитами (OhMyZsh + Tmux + NeoVim и плагины к NeoVim, например) проблемы есть? Или всё работает как надо?
muxa_ru
Я не настоящий линуксоид и если что надо поправить то в винде есть Notepad++
Самые часто используемые команды
grep
php myscript.php
find /mnt/[disc letter] | php myscript.php
Последнее именно в таком виде — не заморачиваясь параметрами поиска скармливаю весь список файлов скрипту, а он там уже сам разбирается что и как делать.
Недавно вот анализировал сохранённые Файрфоксом html-страницы на предмет изменения логики сохранения сопутствующих файлов. Результатом опечален :(
eumorozov
Для большинства задач вместо grep гораздо удобнее использовать ripgrep (rg) или один из многочисленных аналогов (silver searcher, ack).
muxa_ru
в чём удобство?
eumorozov
Очень много удобств. Рекурсивно ищет по умолчанию, не надо комбинировать с find, чтобы искать по типам, может игнорировать файлы из
.gitignore
или по собственным спискам, может искать по сжатым файлам (gzip, bzip2 и другие), и другие преимущества.grep имеет смысл использовать только в скриптах, на случай, если в системе нет установленного ripgrep. Для всех интерактивных (и не только) применений, ripgrep в разы удобнее.
VolCh
Он неудобен в плане количества готовых паттернов на SO и т. п.
eumorozov
Любые паттерны от grep подойдут и для ripgrep — и тут и там одни и те же регулярные выражения.
Nengchak
Рекурсивно:
eumorozov
Как вы думаете, авторы ripgrep, ack-grep, silver searcher, platinum searcher, не удосужились прочитать man по grep и сразу же написали свой вариант?..
Nfan
Удобство не знаю, но silver searcher заметно быстрее рекурсивно ищет по файлам.
eumorozov
Они все примерно равны по возможностям. По скорости ripgrep как правило быстрее всех альтернатив (на GitHub есть результаты бенчмарков). Хотя заметить глазами разницу в скорости почти нереально. Долгое время пользовался ack — первой подобной заменой grep — и необходимости в более быстрых альтернативах не ощущал.