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

Краткий справочник по «всем-всем» командам Linux

Уровень сложности Средний
Время на прочтение 74 мин
Количество просмотров 149K
Всего голосов 126: ↑123 и ↓3 +120
Комментарии 114

Комментарии 114

там есть test
(в курсе "[" не попала — так как не было среди этих трех курсов курса по скриптованию, а при наборе команд в курсе администрирования похоже как-то не набралась не разу)

Сейчас добавлю (продублирую test) — добавил (стало 298 команд)
Неее
там же в тексте статьи есть лучше рецепт:
whatis -r "." | grep "([18])" | nl

$ whatis -r "." | grep "([18])" | nl
.: nothing appropriate.

можно попробовать без точки:
whatis -r "" | grep "([18])" | nl
там как бы идея в том что whatis ищет команды из man-документации. -r указывает искать по шаблону(регулярке), ну а точка — это любой символ в регулярке

$ whatis -r "" | grep "([18])" | nl
: nothing appropriate.

P. S. А зачем вам скобки в grep?

ищу (1) или (8) в списке команды
(1) — это команды пользовательские
(8) — команды админские
поэтому в grep: "(" и ")" это ищу просто скобки, а "[18]" — либо 1, либо 8
Кстати можно и без grep:
whatis -s1:8 -r "." | nl

У вас whatis немного странный:
— он вообще чего-нить ищет (например выполните «whatis ls») — может еще не разу не запускался mandb, который для whatis проиндексирует маны — можно так запустить(если systemd служба есть такая): systemctl start man-db.service
— (может версия старая) — вероятно нужно доставить что-то типа пакета man-db

Действительно, позабыл, что скобки в регулярках грепа означают просто скобки )

Было бы круто сгруппировать по сценариям использования.

тут скорее думаю было бы полезно к каждой команде тег(ну или значок emoji) — как к командам фильтрам и дистроспецифичным добавил — так как одни и те же универсальные команды могу попасть в разные группы.
А по меткам можно и «группировать по сценариям использования».
ToDo Добавить:
  • фильтры: hexdump, xxd,
  • пользовательских — strace, dia, tput, pactl, nmap, iw, ltrace, xdotool, rlwrap, identify
  • админских: vgs,lvs, pvs, lvscan, mkfs.btrfs, mdadm
  • Альт-специфик — system-auth, jot и rs

jq еще - очень удобное для JSON

в дополнение еще yq - использует аналогичный синтаксис, но поддерживает еще yaml помимо json

Ну и xq до кучи для XML

странно, что никто ещё не написал про "reptyr" - "перетащить" запущенную программу в другой терминал

Всего 300 команд (25/08/2022):
🔵 136 — пользовательские
⚫ 55 — админские
🟣 21 — встроенные в bash
🔲 26 — TUI-приложение
🔳 30 — GUI-приложение
...| 19 — команды-фильтры
🔘 9 — специфичные ALT
💫 8 — специфичные AstraLinux
⚪ 32 — не совсем к курсу
… до комментариев
Всего 330 команд (26/08/2022)
🔵 154 — пользовательские  
⚫ 57 — админские  
🟣 24 — встроенные в bash  
🔲 26 — TUI-приложение  
🔳 31 — GUI-приложение  
...| 24 — команды-фильтры  
🔘 9 — специфичные ALT
💫 8 — специфичные AstraLinux
⚪ 34 — не совсем к курсу
еще не все добавил
Всего 396 команд (02/09/2022)
🔵 193 — пользовательские  
⚫ 66 — админские  
🟣 27 — встроенные в bash  
🔲 29 — TUI-приложение  
🔳 31 — GUI-приложение  
...| 35 — команды-фильтры  
🔘 9 — специфичные ALT
💫 8 — специфичные AstraLinux
⚪ 46 — не совсем к курсу
Всего 455 команд (04/09/2022)
🔵 214 — пользовательские  
⚫ 88 — админские  
🟣 30 — встроенные в bash  
🔲 32 — TUI-приложение  
🔳 38 — GUI-приложение  
...| 38 — команды-фильтры  
🔘 9 — специфичные ALT
💫 9 — специфичные AstraLinux
⚪ 49 — не совсем к курсу
Всего 507 команд (09/10/2022)

🔵 228 — пользовательские
⚫ 93 — администраторские
🟣 38 — встроенные в bash
🔲 37 — TUI-приложение
🔳 50 — GUI-приложение  
...| 42 — команды-фильтры
🔘 10 — специфичные ALT
💫 11 — специфичные AstraLinux
⚪ 66 — не совсем к курсу
Всего 516 команд (16/10/2022):
🔵 206 — пользовательские
⚫ 92 — администраторские
🟣 40 — встроенные в bash
🟡 49 — обычно дополнительно устанавливаемое
🔲 39 — TUI-приложение
🔳 51 — GUI-приложение
🕙 12 — устаревшее или устареваемое (есть предустановленный аналог)
⚪ 32 — не совсем к курсам
Также:
...| 42 — команды-фильтры
🔘 10 — специфичные ALT
💫 15 — специфичные AstraLinux

Всего 612 команд (27/11/2022):
🔵
395 - пользовательские
176 - админские
🔴 41 - встроенные в bash
☑️ 48 - TUI-приложение
80 - GUI-приложение
➡️ 27 - команды-фильтры
📦 83 - дополнительно устанавливаемое
🕙 20 - устаревающее
💽 55 - специфичные дистрибутиву
В том числе:
14 - специфичные ALT
22 - специфичные AstraLinux
14 - Debian
8 - RedHat
6 - другие (SUSE, Arch, RedOS)

Редизайн пометок и +100 команд

Всего 716 команд (11/05/2023):

🔵 463 - пользовательские
211 - админские
🔴 42 - встроенные в bash
☑️ 52 - TUI-приложение
108 - GUI-приложение
➡️ 29 - команды-фильтры
📦 114 - дополнительно устанавливаемое
🏢 14 - относятся к сетевым службам
🕙 22 - устаревающее

💽 69 - специфичные дистрибутиву:
19 - ALT
26 - AstraLinux
14 - Debian
9 - RedHat
10 - другие (SUSE, Kali, Arch, RedOS, ...)

🔵 549 - пользовательские
248 - админские
🔴 44 - встроенные в bash
☑️ 51 - TUI-приложение
150 - GUI-приложение
➡️ 32 - команды-фильтры
📦 139 - дополнительно устанавливаемое
🏢 32 - относятся к доп.службам
🕙 22 - устаревающее

----------------------------------------------------

💽 92 - специфичные дистрибутиву:
35 - AstraLinux
22 - ALT
15 - Debian
13 - RedHat
6 - RedOS
12 - другие (SUSE, Ubuntu, Kali, Arch, ...)

Больше всего команд на буквы: s(87), p(62), l(56), f(54), m(51).
Меньше всего команд на буквы: j(7), y(7), q(10), z(10), k(11).

Всего 842 команд (05/08/2023) - в 2.8раз увеличилось с первых 300 команд.

🔵 672 - пользовательские
280 - админские
🔴 52 - встроенные в bash
☑️ 61 - TUI-приложение
226 - GUI-приложение
➡️ 34 - команды-фильтры
📦 171 - дополнительно устанавливаемое
🔖 63 - прикладное ПО
🏢 40 - серверные службы
📈 101 - мониторинг
🎚️ 105 - конфигуратор
🕙 25 - устаревающее


💽
113 - дистрибутиво-специфичное:
65 - AstraLinux
24 - ALT
16 - Debian
15 - RedHat
8 - SUSE
7 - RedOS
7 - другие (Ubuntu, Kali, Arch, Mageia, ...)

Всего 1005 команд (02/11/2023):

Больше всего команд начинается с буквы: s(107), f(92), p(68), l(62), m(57), g(53), c(52).
Меньше всего команд начинается с буквы: j(8), y(8), z(10), q(14), k(15).

Сделал разделы с буквами и добавил ссылки:

Все ссылки: ><(6) A(42) B(33) C(52) D(44) E(24) F(92) G(53) H(23) I(35) J(8) K(15) L(62) M(57) N(37) O(32) P(68) Q(14) R(35) S(107) T(40) U(29) V(29) W(22) X(28) Y(8) Z(10)

P.S. Перевалил через 1000 команд и через 1000 закладок

Отлично прочищает мозг, если разблокируете у себя достижение - "устновить один раз в жизни линукс из исходных кодов" - "linux from scratch".
Там выясняется что является "божественным" - необходимым минимумом с которым можно жить, а божественное это POSIX-команды https://gist.github.com/td-shi/bf599ae6bcfab074e6f01a34ac68196a

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

Установить LFS не достаточно. Надо еще понимать что ты делаешь, а не тупо идти по инструкции. Ставил LFS два раза до конца и пару раз забивая по пути... ума и опыта не прибавилось.

у меня такого ощущения не возникло, хотя я много просто копировал.

У меня такая картина мира - в идеальном мире проект LFS не потребовался бы. Все должно было устанавливаться в произвольном порядке и без всяких "тайных знаний". Но в реальном мире есть нерешаемая проблема с конфликтами библиотек - автор LFS должен тупо перебрать множество комбинаций версий библиотек чтобы они не конфликтовали (или подсмотреть номера библиотек в чужом дистрибутиве). Вторая проблема - софт редко собирается без проблем, нужны костыли. Автор LFS должен собрать все костыли и предоставить их читателю.
Эти проблемы не требуют пристального внимания. Это чудовищная потеря времени на изучение.

Не ради разведения срача, а просто ради какой-то «истины», хочу задать вопрос.

Зачем взаимодействовать с операционной системой какими-то командами?
Это похоже на какое-то высокоуровневое API, но неужели нельзя собрать наиболее популярные use case'ы использования этого API в какую-то нормальную среду управления. GUI или Web-консоль или что-то еще, но где не надо вспоминать ни названия команд, ни их параметры, а нужно просто тыкать кнопочки, ставить флажочки и прочее. Причем желательно, чтобы количество этих кнопочек было очень ограниченным, т.к. нет смысла вытаскивать для всех те возможности, которые требуются 1% пользователей.
Имхо, пример почти идеального интерфейса — это Norton Commander — всё было под рукой и самое основное — ближе всего. И не было необходимости помнить команды. Сказка же…
Есть такие и GUI и WebUI:

Примеры GUI (они обычно в каждом дистрибутиве свои):
  • YaST в SUSE
  • acc в Альте
  • … (добавьте что есть своё в других дистрибутивах, но именно админка дистрибутива а не «Центр управления» среды рабочего стола (где можно, утрирую, обои и тему оформления сменить)


Примеры WebUI (их обычно доставлять надо):
  • webmin на порту 10000
  • cockpit на порту 9090
  • alterator (в Альте) на порту 8080
  • ajenti на порту 8000
  • … (добавьте если кого забыл)
  • да тупо тот же zabbix можно упомянуть — не совсем админка, а мониторинг системы — но можно настроить выполнение некоторых действий по настройки системы автоматически

GUI на сервере?

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

А если хочется аналога NC, то попробуйте mc.

Так может же быть и текстовый UI.
в том же mc параметры настраиваются не вводом их в консоль

Примеры TUI (из этой статьи):
1 🔲 aptitude▪️ (8) — [⊚Debian][TUI] интерфейс над apt
2 🔲 cfdisk (8) — [TUI] Разбивка диска на разделы
3 🔲 htop (1) — [TUI] «подкрашенный» интерактивный список процессов, отсортированных по использованию процессорного времени
4 🔲 iftop (8) — [TUI] сетевая статистика по src/dest
5 🔲 info (1) — [TUI] просмотр info-документации [H — справка по клавишам]
6 🔲 iotop (8) — [TUI] top процессов использующих диск
7 🔲 ...| less (1) — [TUI] постраничный просмотр текстовых файлов [h — справка по клавишам]
8 🔲 links (1) — [TUI] консольный веб-браузер
9 🔲 lynx (1) — [TUI] консольный веб-браузер
10 🔲 man (1) — [TUI] просмотр справки [h — справка по клавишам]
11 🔲 mc (1) — [TUI] файловый менеджер [F1 — справка]
12 🔲 mcdiff (1) — [TUI] показывает различия между двумя файлами [из MC]
13 🔲 mcedit (1) — [TUI] текстовый редактор [из MC]
14 🔲 mcview (1) — [TUI] просмотр текстовых файлов [из MC]
15 🔲 mtr (8) — [TUI] traceroute + ping
16 🔲 nano (1) — [TUI] Текстовый редактор [Ctrl-x — выход]
17 🔲 nethogs (8) — [TUI] сетевая статистика по процессам
18 🔲 nload (1) — [TUI] отслеживает полосу пропускания в режиме реального времени
19 🔲 nmtui (1) — [TUI] настройка сети (через NetworkManager)
20 🔲 top (1) — [TUI] интерактивный список процессов, отсортированных по использованию процессорного времени [h — справка по клавишам]
21 🔲 vi (1) — [TUI] програмируемый текстовый редактор Vi [Esc:q!Enter — выход без сохранения]
22 🔲 view (1) — [TUI] просмотр текстовых файлов через VIM
23 🔲 vim (1) — [TUI] програмируемый текстовый редактор Vi-улучшенный [Esc:q!Enter — выход без сохранения]
24 🔲 vimdiff (1) — [TUI] показывает различия между двумя файлами [из Vim]
25 🔲 w3m (1) — [TUI] консольный веб-браузер
26 🔲 whdd (1) — [TUI] тестирования накопителей на чтение и запись

Из текстовых редакторов неплох joe

Часто использую для обработки табличных данных из разных файлов утилитки: join, comm
(позволяют сравнивать и искать связанные строки из двух файлов удобным для автоматической обработки способом).

Это то понятно, можно и браузер консольный поставить :)

Может конечно мне одному проще написать команду cp, чем запускать mc, клацать по папкам и т.д. Профессиональную деформацию никто не отменял.

far2l

Если нет гуя, то лапки кверху?

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

командами быстрее взаимодействовать (когда их знаешь) — сразу просто формулируешь командой запрос к системе, а не ждешь пока загрузится админка и начинаешь «общаться с системой через переводчика»

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

Я тоже так думал, пока не пришлось накопить глубокую экспертизу одного софта (система бекапов HP Data Protector). Быстро оказалось, что гуи и медленнее, и показывает не то и лишнее, и не автоматизируется, и копировать текст нельзя где нужно и куча ещё «не». И без всяких советов, не будучи ни разу *nix-гиком, через четыре года я стал использовать гуи только 20% времени при решении определённых задач.

Да, был бы нормальный гуи - может все было бы по другому. Но плохой гуи исправить нельзя. А плохой кли легко корректируется скриптами и простыми баш-ухищрениями.

Вы только что изобрели ОС с графическим интерфейсом пользователя?

Речь немного не об этом. Виндовые сервера прекрасно администрируются через GUI без заморочек с CLI. Вопрос почему нельзя и линуксовые сервера админить через GUI, в чем сакральность делать всё именно командами. Да, CLI даёт больше гибкости, но зачастую натыкать мышкой гораздо быстрее.

Сколько времени вы будете разворачивать и конфигурировать 100 серверов под windows? До завтра справитесь?

Про количество речи то не идет. Я один единственный экземпляр ActiveDirectory быстрее разверну через GUI, пока Вы будете гуглить команды ps.

С увеличением сложности, через CLI быстрее и проще, но один единственный сервис на 1 сервере в виндовом GUI настроить гораздо проще и легче

А сотню-другую пользователей тоже через гуи добавлять будете? А конфиг dhcp, к примеру, из гуи бэкапите? Глупые мелкомягкие зря сделали powershell - ведь из гуи проще?

Гуй заточен на выполнение строго ограниченного набора задач. Если пихать в гуй всё, что может потребоваться администратору - сложность гуя в итоге приведёт к его полной неюзабельности. Не говоря уже про проблемы автоматизирования задач. Это либо мастрячить свой крон в каждый гуй и кучу вариантов запуска в него же, либо писать второй only-cli вариант гуя и мы получаем то, от чего хотели уйти.

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

В windows есть очень удобный гуй, про который и идет речь в этой ветке. 99% всех задач можно сделать, щелкая мышкой по кнопочкам. В никсах такого гуя нет.

Гуи обычно хвалят те кто не знает командной строки.
«Одна единственная операция» — это и есть команда из командной строки.

Фраза «В никсах нет гуи» еще больше убеждает что вы их(никсы) не видели или видели, но ничего не поняли и бросили это дело.

Звучит как оправдание «я ни чего не знаю про никсы и командную строку, а значит там всё плохо и они не нужны».
(Далее ирония) Не изучайте, вас не кто ни заставляет — зачем лезть в диалоги в этих темах. Пользуйтесь Виндой — это ваш верх удобства))

Почему в этой ветке, все читают через строчку, цепляясь к одной фразе и выдирая её из контекста?

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

Стоит ещё раз написать, что тут нет задачи в автоматизацию или в развертывании 100 доменов одновременно? Эта задача делается например для какой-то там лабы и никогда больше повторяться не будет.

Мой наставник в свое время сказал "Если тебе нужно сделать что-то один раз, то ты заблуждаешься".

С тех пор я стараюсь писать скрипты и автоматизировать все возможное. Но правда я и работаю DevOps`ом :) Видимо это уже профессиональное.

Сравните, просмотр последних сообщений в логе:

Linux: tail /var/log/nginx.log (для примера)

Windows: Пуск - Панель управления - Администрирование - Просмотр событий - Выбор нужного журнала - Ожидание его загрузки. Ну можно сократить первые 4 шага до двух: Win+R - eventvwr

Кто-то может возразить, а как же eventquery "Имя журнала"? Вы много знаете пользователей Win, которые в курсе этой команды?

UPD: Нет, я не линуксойд. Дома у меня Win11, но по работе приходится иметь дело с 1500+ серверов на Linux. И с точки зрения админства, командная строка это супер.

Даже такая базовая операция, как разблокировка пользователя в AD, делается через dsa.msc пятью кликами, а хорошим (и простым) скриптом - одной командой (ок, одна команда и одно подтверждение, когда под критерий попадают несколько юзеров).

Когда-то я работал дежурным «инженером», и был период, когда за 12 часов смены я занимался только разблокировкой, по несколько сотен учёток за смену. Нас в смене было три-четыре человека и мы просто шлепали эти чертовы учетки. Уверен, если бы это был не продукт ms - кто-то из настоящих админов задумался бы об автоматизации или хотя бы оптимизации вопроса. А так - это же винда, можно не напрягаться.

Одно из важных достоинств Norton Commander'a (которым обладает Far и не обладает например Total Commander) - это налииче коммандной строки, чтобы вводить те самые команды. Потому что для тривиальных задач - да, командер удобнее и быстрее. А если в него впихнуть все нетривиальные случаи - будет слишком монструозно и неудобно. Поэтому пользуемся командером, если встретилась нетривиальная задача - тут же юзаем командную строку, и не паримся.
Ну и, командер никак не помогает от запоминания команд. Просто тут вместо команд надо запоминать горячие клавиши.

и не обладает например Total Commander) - это налииче коммандной строки, чтобы вводить те самые команды.

в TC есть строка внизу для ввода, только открывает в новом окне, но я не спец по TC совершенно, стоит для редких кэйсов, возможно и настраивается

cd срабатывает на активной половине(удобно менять диск, или переходить в корень, не отрывая руки от клавиатуры). А для остального проще открыть из командной строки TC cmd(откроется в активной папке, если это не сетевой путь), и вбивать команды в отдельном консольном окне.
Честно говоря не вижу смысла для TC во «встроенной» консоли по типу MC/NC, всё таки тотал это не консольное приложение — тут это просто не требуется.

Скорее речь может идти про конструктор команд и параметров под сценарии.
Если сценарии типа 1 раз сделал, потом пользуешься, то курить man вроде бы правильно, но хотелось бы сэкономить время.

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

Наверно имели в виду:
man -f intro

Нет: темой данного поста является то, что документировано в разделе 1 руководства, потому просто man intro или, если хочется явно, man 1 intro.

А явная отсылка к Linux man pages (несмотря на то, что мы говорим о Linux-based системах), сделана потому, что именно в них есть хоть какое-то описание команд: так, в V7 intro(1), в OpenBSD, NetBSD, FreeBSD там лишь введение в само руководство (в SunOS есть ещё базовое описание формата команд и лишь), а в Linux man pages — введение именно в первый раздел руководства со знакомством с базовыми командами.

Все уже придумали до нас (http://cheat.sh)
Поэтому:
делай раз:
nano ~/.bashrc

howto () {
	LYELLOW='\033[1;33m'; N='\033[0m'
  if [ $# -eq 0 ]
     then
        echo -e "${LYELLOW} А что искать то?${N}"
     else
        curl cheat.sh/$1
  fi
}

делай два:
bash или перелогиниться

делай три
howto sed

там (на cheat.sh) только 2/3 упомянутых команд (но на те которые есть — в статье ссылки на cheat.sh указаны) и странно что описания нет на русском (хотя автор — igor_chubin, вроде как русский можно было б добавить, а в идеале и много разных языков).

еще удобно автодополнение (например в bash так делается) прикрутить (добавив в ~/.bashrc):
complete      -W  "$(howto :list)"      howho


и на самом сайте предлагают утилиту-скрипт называть не howto, а cheat.sh — но это кому как удобнее

Зачем дергать при каждом запуске и держать список из 12 тысяч с гаком команд (ака wordlist) для каждой сессии bash, тем более если оно нужно то бывает редко-редко.

Тогда уж лучше как-то так:

# howto () { curl -s cheat.sh/$1; }
complete -C 'filter () { howto :list | grep "^$2"; }; filter' howto

Думаю не лишним будет упомянуть о существующей утилите tldr

Устанавливается через npm install -g tldr или pip install tldr (в первом случае версия будет свежее), использование tldr sed

Ну вот у меня проблема не найти и понять описание, а найти какая команда мне сделает то, что мне нужно. И в этом случае cheat.sh мне особо не поможет, а вот такой список - вполне

Сегодня искал команду, чтобы получить описание dll-ки от dotnet-а.

В интернете самое расхожее было через mono-utils, может есть что-то попроще и из коробки или не такой тяжелый пакет как mono-utils?

А что вы имеете в виду под "описанием"? Version, ProductVersion, Description и т.д.?
Они далеко не всегда в сборку попадают. Устойчиво AssemblyVersion только работает. Хотя я конечно могу ошибаться...

да, вот как раз Version / AssemblyVersion, чтобы понять, что развернулось :(

А нет ли такого же, но с перла... в виде таблички pandas или sql? Добавить разных колонок-признаков и ищи нужную фильтрами...

Спасибо, хорошая шпаргалка, записал.
С Днюхой Linux!

Упоминая штуки вроде init и runlevel можно упомянуть и service. Всплывает иногда в старых мануалах и, что характерно, всё ещё работает

согласен, но init и runlevel засветились случайно (просто рассказывал как раз на одном из прошедших курсов немного ретроспективу про sysVinit)

Нашел еще больше команд, которых не хватает для общей коллекции:

chcon - смена контекста

xclip xsel xkill xprintidle

ack - продвинутый grep

mktemp mkfifo mkfile mklocale mknod mke2fs

uuidgen micro pwgen autogen automake autoconf autodiff autoenv autossh autojump col column command file figlet false gc gcc gpg

Нашел еще несколько важных команд:

cksum - посчитать контрольную сумму

md5sum sha1sum sha224sum sha256sum sha384sum sha512sum - еще хэшсуммы

printf - форматированный вывод строки (раз уж echo есть, то можно и printf)

perl - запускает перл-команду или файл скрипта (раз уж sed есть, то можно и perl)

dc - калькулятор в обраной польской записи (раз уж bc есть, то можно и dc)

exec - выполнить команду в текущем pid

patch - раз уж diff есть, куда же мы без patch?

ncdu - продвинутый du с ncurse-интерфейсом

openssl - решает разные криптографические задачи

openvpn - организует виртуальную локальную сеть

wg - тоже самое, что и openvpn, только wireguard

jq - потоковая выборка (и обработка) JSON со своим языком запросов

hq - потоковая выборка HTML по селектору CSS

yq - потоковая выборка YAML

xml2 - потоковая выборка XML

perf - бенчмарк CPU, RAM, GPU и многое другое

shfmt - форматирование sh/bash скриптов

sshfs - монтирование ssh-сервера

potrace - преобразование bitmap в SVG

ocrad - преобразование bitmap в текст

espeak - преобразование текста в звук

rhvoice - преобразование текста в звук

wait - ждет окончание работы процесса

wait4path - ждет появления файла по пути

lynis - аудит безопасности

clamscan - поиск вирусов

Кстати говоря, если кто пользуется fish, набрав команду man , потом пробел, потом любую первую букву и двойной <tab>, получится приблизительно такое:

они выводят:
whatis -r "^t"
Такой список добавок нарисовался:
ack — Kanji code converter
amixer — command-line mixer for ALSA soundcard driver
apt-file — APT package searching utility — command-line interface
autoconf — Wrapper for distinguishing Autoconf 2.13 and 2.50
autodiff — autoenv — autogen — The Automated Program Generator
autojump — a faster way to navigate your filesystem
automake — automatically create Makefile.in's from Makefile.am's
autossh — monitor and restart ssh sessions
basename — strip directory and suffix from filenames
chcon — change file security context
checkinstall — Track installation of local software, and produce a binary manageable with your package management software
col — filter reverse line feeds from input
column — columnate lists
comm — compare two sorted files line by line
command — execute a simple command
dia — a diagram drawing program
dirname — strip last component from file name
dmidecode — DMI table decoder
expr — evaluate expressions
factor — factor numbers
false — do nothing, unsuccessfully
findfs — fsfreeze — suspend access to a filesystem (Linux Ext3/4, ReiserFS, JFS, XFS)
getent — get entries from administrative database
hexdump — ASCII, decimal, hexadecimal, octal dump
identify — describes the format and characteristics of one or more image files
if — ipcs — provide information on ipc facilities
iw — show / manipulate wireless devices and their configuration
joe — Joe's Own Editor
join — join lines of two files on a common field
jot — print sequential or random data
jq — look — display lines beginning with a given string
losetup — set up and control loop devices
lslocks — ltrace — A library call tracer
lvs — report information about logical volumes
lvscan — scan (all disks) for logical volumes
mdadm — manage MD devices aka Linux Software RAID
micro — mke2fs — create an ext2/ext3/ext4 filesystem
mkfifo — make FIFOs (named pipes)
mkfile — mkfs.btrfs — mklocale — mknod — make block or character special files
mktemp — create a temporary file or directory
more — file perusal filter for crt viewing
nmap — Network exploration tool and security / port scanner
nohup — run a command immune to hangups, with output to a non-tty
nproc — print the number of processing units available
numfmt — od — dump files in octal and other formats
pactl — Control a running PulseAudio sound server
patch — apply a diff file to an original
printf — format and print data
pvs — report information about physical volumes
pwgen — generate pronounceable passwords
read — read a line from standard input
realpath — return the canonicalised absolute pathname
reptyr — Reparent a running program to a new terminal
rlwrap — readline wrapper
rs — reshape a data array
screendump — dump the contents of a virtual console to stdout
script — make typescript of terminal session
select — seq — print a sequence of numbers
sh — command interpreter (shell)
shred — strace — trace system calls and signals
system-auth — tailf — follow the growth of a log file
timeout — run a command with a time limit
tldr — tput — initialize a terminal or query terminfo database
true — do nothing, successfully
update-alternatives — uptime — Tell how long the system has been running
users — print the user names of users currently logged in to the current host
uuidgen — create a new UUID value
vgs — wait — await process completion
watch — execute a program periodically, showing output fullscreen
xclip — command line interface to X selections (clipboard)
xdotool — command-line X11 automation tool
xkill — kill a client by its X resource
xprintidle — utility printing user's idle time in X
xsel — manipulate the X selection
xxd — make a hexdump or do the reverse

Как же получилось что какие-то apt команды (у меня в системе таких нет, например) в статью попали, а полезные тулы типа comm - нет?

потому что команды были собраны на трех последних курсах и просто так случайно сложилось что курсы были по Альт и Астре — по этому там так много apt*-утилит. Если б занялся этим справочником хоть бы год назад, туда бы попало больше команд поразнообразнее (из других дистрибутивов, ну и хотя бы больше из тем про скриптование на bash'е).

comm — уже, кстати, добавил сегодня как раз когда вы писали своё сообщение

Спасибо большое! Прямо целый талмуд)

Для преобразования MP4 в субтитры открыл для себя GNU parallel
каждый процесс казалось не съедал всю память и CPU, поэтому конвертировать последовательно по 1 файлу показалось неразумно. parallel позволил запускать по 2 независимых процесса конвертации еще и рисовать Bar для понимания общего процесса

find . -name '*.mp4' | \

parallel -j2 --bar "python3 test_srt.py {} >> {.}.srt"

… | xargs -P… — тоже позволяет распараллелить выполнение команд
$ find $(tr ':' ' ' <<<$PATH) -executable -type f -print 2>&1 | grep -v 'No such'| wc -l
2885

а зачем ошибки завернули в stdout, а затем их же вроде отфильтровали
$ find $(tr ':' ' ' <<<$PATH) -executable -type f -print 2>/dev/null | wc -l

Да и что даёт эта цифра — там много команд которые не используются никогда человеком напрямую и ему не тепло ни холодно от того что он их не знает. Выуживать используемые команды из истории команд все ж кажется полезней

Суть не в том куда stderr запихивать, а в том, что каждый день появляются, используются и исчезают новые команды. В огромном количестве. В бещенных количествах.
И всех их знать не нужно и анализировать/каталогизировать тоже бессмысленно. Это живой организм, всё меняется постоянно.

А вот знать как и где инфу искать (а еще и без интернетов!) - вот что бесценно.
В большинстве случаев есть ключик --help
или команда man
или команда info
или такая древность как apropos для поиска по манам.
Куда полезнее простого перечисления команд.

Кстати, watis (бесполезная при наличии --help) упомянута, а о весьма юзабельной утилиты whereis (показывающей путь до бинарника) - не упоминается. Про *trace вроде уже сказано?
А про поиск fzf ?
alias lll='ls -laHR | fzf -m --preview='''echo user={3} when={-4..-2}; cat {-1}''' --header-lines=1 | awk '''{print $9}''''

which и type показывают путь до бинарника, а whereis — еще показывает где man и где исхожники

fzf — хорошо.

Знаю что не нужно знать команды все, и знаю про man, aporopos, man -K (поиск по всему man), но начинающие просят «Справочник» (им так спокойнее) — вот им и сделал. До сих пор правда несильно понимаю нужно ли туда strace, autoconf, gcc, checkinstall,… справочник начинает разрастаться командами которые нужны когда уже такими «справочниками» не пользуются, а читают man'ы

gdb начинающим точно не надо. =))
А вот работа с текстом и сортировки sort, uniq, awk, cat, tac - точно пригодятся (не увидел в списках).

только tac не попал пока — остальные есть

Окей! А как максимально быстро создать файл любого размера? Ну например для использования под своп или создания raw image. ;-)

Ну вот зачем было подсказывать? ;-) Тем и отличаются всякие такие теоретические списки с кучей хипстерских утилит, от практики и хардкорных util-linux и сотоварищи. ;-)

Это ко мне вопрос?) Или такой риторический к читателю?
Это какое то супер знание или в чем вопрос то? Написали бы что добавить — а по одной команде которой нет в этом списке и сам могу долго накидывать — попробуйте такой же список написать (не подглядывая в этот) и посмотрим сколько я накидаю «теоретику» ;-)

Еще к fallocate (Создание файлов определенного размера. Сразу занимает блоки) можно упомянуть
— truncate — Создание файлов определенного размера. Создает sparse файл
— mkfile
— dd
— да и уж «yes STRING >> FILE» когда нужен большой текстовый файл (например при демонстрации работы logrotate)

Только там в начале написано как получен список команд (по истории курсов про основы и админскому начальному) — если б эта история команд собиралась 15лет и со всех-всех курсов думаю он бы был в два раз длиннее (хотя добавленные команды тип той же fallocate выполняются не на каждом курсе, да и на курсе от силы раз бывает понадобится).
А по делу: fallocate и trancute добавлю. У меня сейчас уж список 50 команд, которые нужно добавить и 64 уже добавлено с момента опубликования списка. И пока мне нравится результат (как «справочник по командам админа или продвинутого пользователя», но пока не хочется сюда добавлять команды компиляции и 100500 очень полезных утилит из KaliLinux) — и если еще и спасибо услышу и добавки-правки кто напишет — счастлив буду

А ещё last , groups, rev, blockdev... Не говоря уже о systemd специфичных всяких resolvectl которые, в отличие от например ncdu / gdu / dua есть чуть менее чем на каждой современной системе. Да тот же top. Много кто им умеет по настоящему пользоваться? Хотя он даёт те же метрики и даже больше, что и htop.

Её не будет покуда у вас не установлен dns резолвер systemd'шный. Она собственно поставляется вместе с пакетом systemd-resolved

Hidden text

apt-file search resolvectl
fish-common: /usr/share/fish/completions/resolvectl.fish
manpages-de: /usr/share/man/de/man1/resolvectl.1.gz
systemd-resolved: /usr/bin/resolvectl

Да, спасибо — я знаю.
Там скорее был ответ, что эта штука(resolvectl) не является установленной по умолчанию на многих дистрибутивах используемых на курсе — по этому и не всплыла в этом справочнике.
В принципе как и networkctl из systemd-network

Залейте в gitflic.ru (на русском же все), уверен что найдутся последователи и помощники

Да, спасибо за совет — уже задумался
Залил на gitflic.ru/project/linuxcertifiedinstructor/spravochnik-po-komandam-linux

Только почему-то недоступна возможность «сделать репозитория публичным» (пока не разобрался почему).
не работает gitflic.ru:
— публичным репозиторий сделать не возможно
— техподдержка на письма не отвечает

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

Держите совет - используйте команды из справочника:

wget -q https://habr.com/ru/company/lanit/blog/683638 -O /tmp/h.html; pandoc /tmp/h.html -o Справочник.fb2

Да прибудит с вами сила CLI :)

Класс! Красивый ответ. А можно также в одну строку в базу загрузить?

Уверен можно - в markdown на git-ресурс конвертил этот же справочник руками (sed+awk) - потратил полчаса-час времени, или готовый конвертер искать (как pandoc в примере выше). Базами не часто пользуюсь - и обычно скорее выгружаю данные из баз (sql-подобных), загружать в базу пока не требовалось - так что сам не подскажу ответа такого же.

А можно где скачать такой справочник в формате маркдаун для системы Обсидиан. Я конечно и статью прямо отсюда скопирую в Обсидиан, с комментариями =).

Ну я так сделал:

wget https://habr.com/ru/company/lanit/blog/683638 -O /tmp/h.html;
pandoc /tmp/h.html -o commands.md;
sed -i "/^:::/d;/div>/d" commands.md;

Затем редактором убрал "лишнее" строки до и после статьи - результат можно скачать здесь (количество скачек ограничено):

https://free.keep.sh/xOeNPdwhphfHA2Gx/commands.md

Прошу добавить "dmidecode --type 17" - удобная инфа по банкам памяти

Зарегистрируйтесь на Хабре , чтобы оставить комментарий