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

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

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K
Всего голосов 32: ↑7 и ↓25-18
Комментарии44

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

Вот команды bash, а вы в 80% описали отдельные утилиты, не связанные с bash

Команды bash
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 job_spec [&]                                                history [-c] [-d offset] [n] or history -anrw [filename]>
 (( expression ))                                            if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMAN>
 . filename [arguments]                                      jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 :                                                           kill [-s sigspec | -n signum | -sigspec] pid | jobspec .>
 [ arg... ]                                                  let arg [arg ...]
 [[ expression ]]                                            local [option] name[=value] ...
 alias [-p] [name[=value] ... ]                              logout [n]
 bg [job_spec ...]                                           mapfile [-d delim] [-n count] [-O origin] [-s count] [-t>
 bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u >  popd [-n] [+N | -N]
 break [n]                                                   printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                           pushd [-n] [+N | -N | dir]
 caller [expr]                                               pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esa>  read [-ers] [-a array] [-d delim] [-i text] [-n nchars] >
 cd [-L|[-P [-e]] [-@]] [dir]                                readarray [-d delim] [-n count] [-O origin] [-s count] [>
 command [-pVv] command [arg ...]                            readonly [-aAf] [name[=value] ...] or readonly -p
 compgen [-abcdefgjksuv] [-o option] [-A action] [-G globp>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A act>  select NAME [in WORDS ... ;] do COMMANDS; done
 compopt [-o|+o option] [-DEI] [name ...]                    set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
 continue [n]                                                shift [n]
 coproc [NAME] command [redirections]                        shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=value] ...]             source filename [arguments]
 dirs [-clpv] [+N] [-N]                                      suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid ...]                   test [expr]
 echo [-neE] [arg ...]                                       time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [name ...]                times
 eval [arg ...]                                              trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [arguments ...]] [redirecti>  true
 exit [n]                                                    type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or export -p                typeset [-aAfFgilnrtux] [-p] name[=value] ...
 false                                                       ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [c>  umask [-p] [-S] [mode]
 fg [job_spec]                                               unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done                unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done               until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMANDS ; }      variables - Names and meanings of some shell variables
 getopts optstring name [arg]                                wait [-fn] [id ...]
 hash [-lr] [-p pathname] [-dt] [name ...]                   while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                                   { COMMANDS ; }

В хабе "разработка под Windows" я бы все-таки не ожидал видеть инструкцию по применению утилит из *nix - учитывая, что в Windows есть PowerShell.

:) автор devops

PowerShell очень медленно работает.
Утилиты из СygWin делают то же в 3 раза быстрее.

(а) мне хватает скорости PowerShell
(б) я не хочу (а иногда - не могу) ставить cygwin

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

мне хватает скорости PowerShell

Что-то народ не особо ратует за PowerShell. Не подскажете почему?



Понятия не имею. Подозреваю, что зависит от выборки, на которой вы собирали данные.

если вызывать из повершелла гну утилиты, то может и медленно.
Но Powershell не под них оптимизирован. Сам по себе он вполне себе быстр.

Наверное этот текст обидит чувства Windows пользователей, так как тут по сути предлагается использовать Unix(овые) утилиты в OS Windows.

Многие пользователи Windows, которых я знаю, религиозно презирают Linux и всё, что с этим связано.

Я вот пользуюсь и Windows, и Linux (точнее, его контейнерными производными и изредка WSL). Вопрос не в презрении, вопрос в выборе подходящего инструмента.

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

Многие пользователи Windows, которых я знаю, религиозно презирают Linux и всё, что с этим связано.

в 99% так делают технически ограниченные люди

Да. Согласен.

Наверное этот текст обидит чувства Windows пользователей, так как тут по сути предлагается использовать Unix(овые) утилиты в OS Windows.

Не пользователей, а ламеров.
Для сведения, OS Windows сама когда-то поддерживала POSIX во времена windows NT и windows 2000, а сейчас внедрила еще более полноценный WSL

cygwin и mingw были доступны всем, кто хотел.
Презирать религиозно - изначально не очень подход для технического человека.

В хабе "разработка под Windows" я бы все-таки не ожидал видеть инструкцию по применению утилит из *nix - учитывая, что в Windows есть PowerShell.

Вы можете для каждой команды из этой заметки привести команду из PowerShell, которая делает ту же работу?

Наверное, могу, но не хочу тратить на это свое время.

Наверное, могу, но не хочу тратить на это свое время.

Спасибо, Вы только что доказали нам всем бессилие PowerShell!

Эээ, нет, я ничего вам не доказал.

Пользоваться Unix утилитами в OS Winows это тоже, что если бы американские солдаты на войне во Вьетнаме пользовались бы автоматом Калашникова!
https://pikabu.ru/story/pochemu_amerikanskie_voennyie_tsenili_trofeynyie_ak47_vo_vetname_6061205

Извините, мне кажется, вас несет.

Полезные Утилиты Командной Строки Bash

Все команды bash по своему полезны, да.
И утилиты из coreutils тоже, даа..

Есть ошибки. И заголовок неточный.

Очень очень плохая статья.
Для начала автор путается в терминологии. Путает консоль гит и консоль гит-баш, путает баш и шелл, путаете сложность команд, путаете bash и gnu tools...

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

Как можно путать баш и шелл, если bash и есть shell (один из многих)?

А ещё интересно будет послушать про “консоль гит и консоль гит-баш”...

Как можно путать баш и шелл, если bash и есть shell (один из многих)?

А так, что есть оригинальный sh (который и есть shell), и есть множество потомков-наследников: bash, dash, fish, zsh, и так далее. У них у всех свои собственные фишечки, делающие их не очень совместимыми друг с другом, чего только стоит разное поведение echo в отдельных сценариях.

“консоль гит и консоль гит-баш”.

Git for Windows создаёт ярлык и для Git Bash, и для Git CMD. Они оба откроют консоль, но очень разную.

А так, что есть оригинальный sh (который и есть shell), и есть множество потомков-наследников: bash, dash, fish, zsh, и так далее.

Ну и я часто получал вопрос вида - "What shell do you prefer ?" И всегда было понятно о чем речь, при этом я никогда не душнил типа - не shell, а linux command shell )))

Из этой же серии - "Какой линукс ты используешь ?" Формально вопрос не совсем корректный, но все все понимают

P.S.

А еще есть переменная окружения SHELL

И всегда было понятно о чем речь

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

Переменная окружения SHELL в данном случае не про то вообще. Мы говорим про разницу в терминах между shell и git.
Ведь cmd.exe тоже shell. И explorer.exe тоже shell.

А так, что есть оригинальный sh (который и есть shell), и есть множество потомков-наследников:

Спасибо, конечно, но на 4-м десятке лет работы с Unix я это знаю чуть более, чем хорошо. А теперь попробуйте рассказать мне, чем будут отличаться способы запуска и результаты исполнения любых из приведённых автором команд?

Видите ли, “bourne again shell” или “z shell” не перестали быть shell'ами из-за своих названий. Более того, все перечисленные вами shell'ы — одного поля ягоды, все выросли из bourne shell. И автор статьи не привел ни одного примера откровенного “башизма”, все его примеры будут одинаково работать во всех bourne-shell-наследованных шеллах, поэтому задам вопрос ещё раз — как можно путать shell и shell? А ещё лучше — покажите, где именно автор этой статьи (да, убогой, тут даже спорить не о чем) “путает баш и шелл” (в чём его обвинил автор изначального комментария ветки)?

Git for Windows создаёт ярлык и для Git Bash, и для Git CMD. Они оба откроют консоль, но очень разную.

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

До установки Windows Terminal (в составе которого есть Open Console), в Windows была и есть одна единственная “консоль” — ранее conemu.exe, ныне conhost.exe. Я не просто так беру в кавычки, поскольку функционально это никакая не консоль, а весьма убогий эмулятор терминала, который способен лишь рендерить символы да интерпретировать довольно скромный набор управляющих последовательностей. От него, собственно, большего и не требуется. И какой бы “ярлык” Git for Windows ты ни выбрал — хоть Git bash, хоть Git CMD — та самая пресловутая “консоль” у этих окошек будет одна и та же. А вот что в них будет действительно “очень разным”, так это интерпретатор команд, взаимодействующий с пользователем. Так называемый шелл, ага. Только в одном случае он будет mingw-сборкой GNU bash, а в другом — убогий родной виндовый cmd.exe. Но “консоль” — та же самая, независимо от выбора “ярлыка”. Да, и на работу собственно Git это не влияет примерно никак.

Но мой вопрос — чем же всё таки отличаются “консоль гит” (и что это вообще такое?) и “консоль гит-баш” — ответа я так и не получил. Но я, признаться, не особо и претендую.

Установите гит для винды.
Запустите git-bash.exe и git-cmd.exe
Выполните команду help в каждой из них

Скажите - вы не видите разницы?

До установки Windows Terminal (в составе которого есть Open Console), в Windows была и есть одна единственная “консоль” — ранее conemu.exe, ныне conhost.exe

С каких пор conemu (conemu.github.io опенсорс проект) внезапно превратился в ms conhost.exe?

Как и автор, вы таки путаете термины консоль и терминал.

Консоль это консоль управления.
Поэтому ярлыки, которые ведут к git-bash и git-cmd отличаются тем, что они ведут к разным консолям управления. Ввтор статьи в этом не разбирается, называя git-cmd консолью гита. В этом и смысл, что git-cmd не относится к linux shell/bash никак.

Еще неопытных пользователей может сильно смущать что в PATH в обоих случаях попадают gnu утилиты, которые могут продолжать работать в обеих консолях. И те, кто не понимает разницы между linux shell и gnu tools тоже могут запутаться.

Я всегда ставлю модуль Posh-Git и с ним замечательно работается в git прямо из обычного PowerShell без всяких git-bash(cmd)

С гит и так работается из powershell. Posh-Git просто добавляет удобства автокомплитом и форматированием.

Но под капотом гит все равно юзает gnu утилиты именно тем способом, который принят в linux shell, а не в повершелле

Очень очень плохая статья.

Тем не менее народ себе в закладки статью-то понадобавлял.

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

Уважаемый, а хотите я анекдот про теоретиков и практиков расскажу?

Таким практикам, как автор статьи, я регулярно помогаю на тостере.

Команды Bash можно с легкость отрабатывать на Windows, если установить GIT и открыть консоль GIT.

И тут же копия экрана MinGW... Может и нужно было писать про МинГВ и предлагать именно его и устанавливать?

То, что при установке git, устанавливается ещё и МинГВ, никак не оправдывает.

С таким же успехом можно было сказать, что для работы в Юникс-образной командной строке установите ПО " Ёклмн", в состав которого случайно входит МинГВ. ))

Я пользуюсь WSL если мне нужно сделать что-то непосредственно на моем компе.

Я бы еще добавил одну из самых часто используемых команд:

netstat -tunpl

Ну и возможны вариации с фильтрами, сортировками и уникальными значениями.

netstat deprecated. Нужно отвыкать.

Ну, как бы не depecated, а obsoleted. И только в пингвиниксе. У остальных живёт и развивается.

Это команда приведена только для примера, что через консоль можно делать поиск поверх предыдущего поиска. Так называемый многоступенчатый поиск. Встроенному поиску из-под GUI-IDE такое даже и не снилось.

Смотря что использовать в GUI. Например FAR такое умеет...

Если говорить метафорично, то утилиты Unix - это как химическая посуда (пробирки, колбы, мензурки, воронки, фильтры, капельницы, часовые стекла, стеклянные палочки), только применительно к данным (числам и тексту). Видимо авторы UNIX в 196х-197х были серьезно вдохновлены химией при разработке компьютерных консольных утилит. Согласитесь, что ну невозможно не заметить этих аналогий между UNIX утилитами и химической посудой.

Плохая аналогия подобна котенку с дверцей.

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

Публикации