vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2022-07-02 09:17 pm

Linux CLI

Сбацал на скорую руку шпаргалку по линуксной командной строке:

https://sergev.org/text/linux-cli

[personal profile] dijifi 2022-07-03 05:23 am (UTC)(link)
Хорошо что в этой шпаргалке не открыта страшная тайна что глобальные переменные для вызова программы, и только для этой программы, можно задавать на той же строке что и сама программа, не прибегая к другим ухищрениям, и знают её только люди с классическим образованием читавшие The UNIX Programming Environment.
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 09:56 am (UTC)(link)
> …и знают её только люди с классическим образованием читавшие The UNIX Programming Environment.


Да, старые знания в основном утрачены массами.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 11:06 am (UTC)(link)

Новые приходят. Потихонечку.

euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 11:17 am (UTC)(link)
Какие, например?
juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 11:38 am (UTC)(link)

Ну, ncdu не сильно новая; а вот не так давно какая-то новая меня поразила - а я и не записал. И забыл.

euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 11:46 am (UTC)(link)
Так ncdu же прикладное. Выше было про фундаментальные, концептуальные знания (как UPE), которые в наше непростое время стали достоянием очень избранных и преимущественно старпёров. Собственно, сам по себе факт появления всяких этих «платформ Electron» и пропихивание всюду JS — несомненная деградация, но массы ж больше ничего не умеют и фундаментальных концепций (например, алгоритмы + структуры данных = программы) не понимают. У них, у масс, уже просто кругозора не хватает для освоения предмета. Они даже на приличных языках пишут одноразовый нечитаемый говнокод. Если люди жлобятся поставить немножко «лишних» пробелов, чтобы другие люди могли потом прочесть, это упадок, это разруха. Дальше будут гнилые смердящие клозеты.

Edited 2022-07-03 11:48 (UTC)

[personal profile] ex0_planet 2022-07-03 02:13 pm (UTC)(link)
Да нет, просто это ваше айти уже окончательно стало средством которое pays the bills, а весь нердизм и фан оттуда практически ушёл. Двадцать лет назад это началось, десять стало бросаться в глаза, сейчас этот процесс в общем-то заканчивается.
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 02:19 pm (UTC)(link)
Это не только для ойти справедливо, но для всей нашей нынешней духовной жизни. Люди массово медийно-зависимые идиоты. Не в том смысле, что едят мыло, а в том, что не интересуются причинно-следственными связями реальности. Глобальная идиократия.

[personal profile] ivanrubilo 2022-07-04 10:02 pm (UTC)(link)
Вот это точно подмечено.
Когда менеджер стоит над душой и погоняет - другого и не остаётся.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 03:06 pm (UTC)(link)

А, ну да, ну да.

euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 05:59 pm (UTC)(link)
Однажды я читал (но не дочитал) интересную книжку. В ней авторы некоторых языков программирования рассказывают о том, как и почему сделали свои ЯП. Она располагает к размышлениям о том, почему некоторые концептуальности не интересны трудящимся массам и почему в реальной жизни облегчение какого-либо занятия приводит к его «идиотизации» (постепенному вытеснению компетентных и думающих людей и замещению их обывателями с недостаточным развитием). Скажем, чтобы для чего-нибудь выбрать язык Forth, нужно иметь умение и желание мыслить в рамках ОПЗ, однако «не выбрать» его проще, чем выбрать, ибо популярные у масс альтернативы не требуют от человека напрягаться этими вашими странными логиками, когда по телевизору так много всего захватывающего.

juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 06:21 pm (UTC)(link)

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

Сейчас пора форта уже прошла давно. Размеры программ не те.

euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 06:40 pm (UTC)(link)
> Размеры программ не те.


Так они потому и не те, что идиократия.

Мыслить — это трудно, без сомнений. Но человек обязан (перед самим собою и перед истиной) трудно мыслить, иначе вырождается обратно до говорящей прямоходящей обезьяны. Когда вырождается много человеков сразу, наступает идиократия.

juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 10:59 am (UTC)(link)

ncdu забыл. Очень полезная вещь. see CtrlC-CtrlV also

Edited 2022-07-03 11:00 (UTC)

[personal profile] ex0_planet 2022-07-03 02:10 pm (UTC)(link)
Самое интересное в unix shell это когда начинаешь сочетать команды и приёмы. Без этого непонятно в чём цимес, ну написал ls, оно тебе список файлов, действительно, я лучше коммандер возьму.

Навскидку:
sudo !! # повтор предыдущей команды с правами root


Еще
(cd path/to/dir && command) # выполнение command в поддиректории и сабшелле, без влияния на текущий шелл


Или вот это бывает полезно при кернельном хакерстве:
echo enable | sudo tee /sys/some/important/feature/control # запись в файл, права на который есть только у рута
# без этого приходится городить городухи вида sudo su -c 'echo foo > /sys/bar'
# - бонусный балл за то чтобы сослаться на переменную окружения там
# - два балла за правильно расставить кавычки
# - три балла если в именах есть пробелы


Или brace expansion + glob
wc -l *.{c,h} # количество строк во всех .c и .h файлах
cp document.md{,.backup} # self-explanatory

Edited 2022-07-03 14:14 (UTC)
vlad_m: (Default)

[personal profile] vlad_m 2022-07-03 02:19 pm (UTC)(link)
Или найти в каталоге все mp3 файлы и переименовать их в соответствии с вынутыми из них id3tag-ами, перемещая в новое место и раскладывая по исполнителям/альбомам. )

[personal profile] ex0_planet 2022-07-03 04:16 pm (UTC)(link)
Ну или да, массовое переименование какое-нибудь с помощью PCRE.
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 02:21 pm (UTC)(link)
Поэтому изучение юниксовой оболочки надо начинать не с вот этого всего, но с команды find, а потом сразу переходить к awk и sed. Остальное приложится либо клиент отвалится. :)

[personal profile] ex0_planet 2022-07-03 04:13 pm (UTC)(link)
Клиент в любом случае отвалится, как ты перед ним не выплясывай — потому что не увидит прямой связи со своими рабочими функциями. Феромонами их чтоли подманивать, как у муравьёв.

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

[personal profile] dijifi 2022-07-03 04:33 pm (UTC)(link)
Find с -exec или с | xargs? Есть существенная разница в стиле и читаемости
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 05:35 pm (UTC)(link)
Почему ИЛИ? И!

Первые два учебных часа 1 сентября — урок мужества vimtutor.

juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 06:23 pm (UTC)(link)

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

euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-03 06:36 pm (UTC)(link)
Скала эта ваша не часть системы, её надо принести откуда-то и установить. Авка же и сед, а также перл, тцл и сам шелл обычно имеются в базовой системе.

[personal profile] ivanrubilo 2022-07-04 10:05 pm (UTC)(link)
Вот-вот, а то и питон вообще.
doldonius: (Default)

[personal profile] doldonius 2022-07-04 02:45 pm (UTC)(link)
Ну, меня вот просветление шандарахнуло как раз при попытке изобразить find негодными, но уже известными средствами. Когда понял, что написал в командной строке два вложенных цикла — и эта хрень, kurwa mać, работает.
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-04 04:06 pm (UTC)(link)
Почему команда find такая странная и отличается от прочих средств командного мира — отдельный философский вопрос.

В манах BSD написано лучше, вернее, точнее и короче, чем у GNU (я подчеркнул важные смысловые отличия):


find -- walk a file hierarchy

find recursively descends the directory tree for each file listed, evaluating an expression (composed of the “primaries” and “operands” listed below) in terms of each file in the tree.

(man.netbsd.org/find.1)


Чтобы понять, что это такое, find можно попробовать представить себе как ещё один дополнительный неинтерактивный командный интерпретатор поверх обычной командной среды, который выполняет пакетные задания, полученные от юзера. То есть это, скажем так, не совсем «специальная утилита для поиска файлов», как пишут линупсоиды.

doldonius: (Default)

[personal profile] doldonius 2022-07-04 05:06 pm (UTC)(link)
Такого нетипичного в системных утилитах осталось преизрядно. Собственно, и awk с sed не так уж типичны, а уж tar, если не знать его первоначального назначения, и вовсе инопланетяне подбросили. Отцы-основатели единообразием не заморачивались.
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-04 05:09 pm (UTC)(link)
Так все упомянутые и не являются системными утилитами. Лучше рассматривать их как отдельные языки специального назначения со встроенным интерпретатором.


Основное, с чего полагается начинать новичку в Юниксе, отцы-основатели разжевали в упомянутой выше книжке («The UNIX Programming Environment») для этих самых новичков, которые во времена отцов-основателей понимались как программирующие пользователи, а не то, что в наше время.

Edited 2022-07-04 17:19 (UTC)
doldonius: (Default)

[personal profile] doldonius 2022-07-04 06:13 pm (UTC)(link)
Так и шелл пусть и странный, но довольно универсальный язык программирования.

Ну, а на мой почти что K&R GCC хоть и ругается, но компилирует в годные бинарники. По крайней мере, компилировал, пока я из этого дурдома пионеров не сбежал. С тех пор в основном шеллом и обхожусь; при моих объемах данных и нынешней скорости процессоров хватает выше крыши. Так что здесь скорее первична как раз идеология сверху донизу и на каждой ступеньке программируемой среды.

[personal profile] dijifi 2022-07-04 06:28 pm (UTC)(link)
Была как-то мысль попридуряться и написать бэкенд с си на шелл
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)

[personal profile] euthanasepam 2022-07-04 06:39 pm (UTC)(link)
В этом вся соль. Для этого и делали.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-07-03 06:22 pm (UTC)(link)

Какие классные штучки.

sjtonic: (Default)

[personal profile] sjtonic 2022-07-04 06:43 am (UTC)(link)
curl cheat.sh/<название комманды>
Например: curl cheat.sh/find
Выдает подсвеченные варианты наиболее распостраненного применения комманды, сконденсированная версия man