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

Linux CLI

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

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

[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)

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