Аналог fnsplit в linux
Обновлено: 02.07.2024
Здесь представлен фрагмент будущей книги «Основные инструменты и практики для начинающего разработчика программного обеспечения» Бальтазара Рубероля и Этьена Броду. Книга должна помочь образованию подрастающего поколения разработчиков. Она охватит такие темы, как освоение консоли, настройка и эффективная работа в командной оболочке, управление версиями кода с помощью git , основы SQL, инструменты вроде Make , jq и регулярные выражения, основы сетевого взаимодействия, а также лучшие практики разработки программного обеспечения и совместной работы. В настоящее время авторы упорно работают над этим проектом и приглашают всех поучаствовать в списке рассылки.
Одна из причин, которые делают командную оболочку бесценным инструментом, — это большое количество команд обработки текста и возможность легко объединять их в конвейер, создавая сложные шаблоны обработки. Эти команды делают тривиальными многие задачи по анализу текста и данных, преобразованию данных между разными форматами, по фильтрации строк и т. д.
При работе с текстовыми данными главный принцип заключается в том, чтобы разбить любую сложную проблему на множество более мелких — и решить каждую из них с помощью специализированного инструмента.
Заставьте каждую программу хорошо выполнять одну функцию — «Основы философии Unix»
Примеры из этой главы на первый взгляд могут показаться немного надуманными, но это сделано специально. Каждый из инструментов разработан для решения одной небольшой задачи. Однако в сочетании они становятся чрезвычайно мощными.
Мы рассмотрим некоторые из наиболее распространенных и полезных команд обработки текста в командной оболочке и продемонстрируем реальные рабочие процессы, соединяющие их вместе. Я предлагаю взглянуть на маны этих команд, чтобы увидеть всю широту возможностей в вашем распоряжении.
Файл CSV с примерами доступен в онлайне. Можете скачать его для проверки материала.
Команда cat используется для составления списка из одного или нескольких файлов и отображения их содержимого на экране.
head выводит первые n строк в файле. Это может быть очень полезно для того, чтобы заглянуть в файл неизвестной структуры и формата, не заваливая всю консоль кучей текста.
Если -n не указано, head выводит первые десять строк указанного файла или входящего потока.
tail — аналог head , только он выводит последние n строк в файле.
Если хотите вывести все строки, расположенном после n-й строки (включая её), можете использовать аргумент -n +n .
В нашем файле 43 строки, поэтому tail -n +42 выводит только 42-ю и 43-ю строки из него.
Если параметр -n не указан, tail выведет последние десять строк в указанном файле или входном потоке.
tail -f или tail --follow отображают последние строки в файле и каждую новую строку по мере записи в файл. Это очень полезно для просмотра активности в реальном времени, например, что записывается в логи веб-сервера и т. д.
wc (word count) выводит количество символов ( -c ), слов ( -w ) или строк ( -l ) в указанном файле или потоке.
По умолчанию отображается всё вышеперечисленное.
Если текстовые данные передаются по конвейеру или перенаправлены в stdin , то отображается только счётчик.
grep — это швейцарский нож фильтрации строк по заданному шаблону.
Например, можем найти все вхождения слова mutex в файле.
grep может обрабатывать либо файлы, указанные в качестве аргументов, либо поток текста, переданный на его stdin . Таким образом, мы можем сцеплять несколько команд grep для дальнейшей фильтрации текста. В следующем примере мы фильтруем строки в нашем файле metadata.csv , чтобы найти строки, содержащие и mutex, и OS.
Рассмотрим некоторые опции grep и их поведение.
grep -v выполняет инвертное сопоставление: фильтрует строки, которые не соответствуют шаблону аргументов.
grep -i выполняет сопоставление без учёта регистра. В следующем примере grep -i os находит как OS, так и os.
grep -l выводит список файлов, содержащих совпадение.
Команда grep -c подсчитывает, сколько раз найден образец.
grep -r рекурсивно ищет файлы в текущем рабочем каталоге и всех его подкаталогах.
grep -w показывает только совпадающие целиком слова.
cut извлекает часть файла (или, как обычно, входного потока). Команда определяет разделитель полей (который разделяет столбцы) с помощью опции -d , а порядковые номера столбцов для извлечения с помощью опции -f .
Например, следующая команда извлекает первый столбец из последних пяти строк нашего CSV-файла.
Поскольку мы имеем дело с CSV, то столбцы разделяются запятой, а за извлечение первого столбца отвечает опция -f 1 .
Можно выбрать и первый, и второй столбцы, используя опцию -f 1,2 .
paste объединяет вместе два разных файла в один многоколоночный файл.
По умолчанию paste использует разделитель табуляции, но его можно изменить с помощью параметра -d .
Ещё один распространённый способ использования paste — объединение всех строк в потоке или файле с помощью заданного разделителя, используя комбинацию аргументов -s и -d .
Если в качестве входного файла указан параметр - , то вместо него будет считываться stdin .
Команда sort , собственно, сортирует данные (в указанном файле или входном потоке).
sort -r выполняет обратную сортировку.
sort -n сортирует поля по их арифметическому значению.
uniq обнаруживает и отфильтровывает соседние одинаковые строки в указанном файле или входном потоке.
Поскольку uniq отфильтровывает только соседние строки, в наших данных могут ещё остаться дубликаты. Чтобы отфильтровать все одинаковые строки из файла, нужно сначала отсортировать его содержимое.
uniq -c в начале каждой строки вставляет количество её вхождений.
uniq -u отображает только уникальные строки.
Примечание. uniq особенно полезен в сочетании с сортировкой, поскольку конвейер | sort | uniq позволяет удалить все дублирующиеся строки в файле или потоке.
awk — это чуть больше, чем просто инструмент обработки текста: на самом деле у него целый язык программирования. В чём awk действительно хорош — так это в разбиении файлов на столбцы, и делает это с особенным блеском, когда в файлах перемешаны пробелы и табы.
Как видим, столбцы разделены либо пробелами, либо табуляциями, и не всегда одинаковым количеством пробелов. cut здесь бесполезен, потому что работает только с одним символом-разделителем. Но awk легко разберётся с таким файлом.
awk '< print $n >' выводит n-й столбец в тексте.
Хотя awk способен на гораздо большее, выдача колонок составляет, наверное, 99% вариантов использования в моём личном случае.
tr расшифровывается как translate. Эта команда заменяет одни символы на другие. Она работает либо с символами, либо с классами символов, такими как строчные, печатные, пробелы, буквенно-цифровые и т. д.
На стандартных входных данных tr <char1> <char2> заменяет все вхождения <char1> на <char2>.
tr может переводить классы символов с помощью нотации [:class:] . Полный список доступных классов описан на справочной странице tr , но некоторые продемонстрируем здесь.
[:space:] представляет все типы пробелов, от простого пробела до табуляции или символа новой строки.
Все символы, похожие на пробелы, переведены в запятую. Обратите внимание, что символ % в конце выдачи означает отсутствие завершающей новой строки. Действительно, этот символ тоже переведён в запятую.
[:lower:] представляет все строчные символы, а [:upper:] — все прописные. Таким образом, преобразование между ними становится тривиальным.
tr -c SET1 SET2 преобразует любой символ, не входящий в набор SET1, в символы набора SET2. В следующем примере все символы, кроме указанных гласных, заменяются пробелами.
tr -d удаляет указанные символы, а не заменяет их. Это эквивалент tr <char> '' .
tr также может заменить диапазоны символов, например, все буквы между a и e или все числа между 1 и 8, используя нотацию s-e , где s — начальный символ, а e — конечный.
Команда tr -s string1 сжимает все множественные вхождения символов в string1 в одно-единственное. Одним из наиболее полезных применений tr -s является замена нескольких последовательных пробелов одним.
Команда fold сворачивает все входные строки до заданной ширины. Например, может быть полезно убедиться, что текст помещается на дисплеях небольшого размера. Так, fold -w n укладывает строки по ширине n символов.
Команда fold -s будет разбивать строки только на символах пробела. Её можно объединить с предыдущей, чтобы ограничить строким заданным количеством символом.
sed — это неинтерактивный потоковый редактор, который используется для преобразования текста во входном потоке строка за строкой. В качестве входных данных используется или файл, или stdin , а на выходе тоже или файл, или stdout .
Команды редактора могут включать один или несколько адресов, функцию и параметры. Таким образом, команды выглядят следующим образом:
Хотя sed выполняет множество функций, мы рассмотрим только замену текста как один из самых распространённых вариантов использования.
Замена текста
Команда замены sed выглядит следующим образом:
Пример: замена первого экземпляра слова в каждой строке в файле:
Мы видим, что в первой строчке заменяется только первый экземпляр hello . Чтобы заменить все вхождения hello во всех строках, можно использовать опцию g (означает global).
sed позволяет использовать любые разделители, кроме / , что особенно улучшает читаемость, если в самих аргументах команды есть слэши.
Адрес говорит редактору, в какой строке или диапазоне строк выполнять подстановку.
Адрес 1 указывает заменять hello на Hey I just met you в первой строке. Можем указать диапазон адресов в нотации <start>,<end> , где <end> может быть либо номером строки, либо $ , то есть последней строкой в файле.
По умолчанию sed выдаёт результат в свой stdout , но может отредактировать и оригинальный файл с опцией -i .
Примечание. В Linux достаточно только -i . Но в macOS поведение команды немного отличается, поэтому сразу после -i нужно добавить '' .
Фильтрация CSV с помощью grep и awk
В этом примере grep в файле metadata.csv сначала фильтрует строки, содержащие слово gauge , затем те, у которых query в четвёртой колонке, и выводит название метрики (1-я колонка) с соответствующим значением per_unit_name (5-я колонка).
Вывод адреса IPv4, связанного с сетевым интерфейсом
Команда ifconfig <interface name> выводит сведения по указанному сетевому интерфейсу. Например:
Затем запускаем grep для inet , что выдаст две строки соответствия.
Затем с помощью grep -v исключаем строку с ipv6 .
Наконец, с помощью awk запрашиваем второй столбец в этой строке: это IPv4-адрес, связанный с нашим сетевым интерфейсом en0 .
Примечание. Мне предложили заменить grep inet | grep -v inet6 такой надёжной командой awk :
Она короче и конкретно нацелена на IPv4 с условием $1 == "inet" .
Извлечение значения из файла конфигурации
В файле конфигурации git текущего пользователя ищем значение editor = , обрезаем знак = , извлекаем второй столбец и удаляем все пробелы вокруг.
Извлечение IP-адресов из файла журнала
Давайте разберем, что делает этот конвейер. Во-первых, как выглядит строка в журнале.
Затем awk '< print $12 >' извлекает из строки IP-адрес.
Команда sed 's@/@@' удаляет начальный слэш.
Примечание. Как мы уже видели ранее, в sed можно использовать любой разделитель. Хотя обычно в качестве разделителя используется / , здесь мы заменяем именно этот символ, что слегка ухудшит читаемость выражения подстановки.
sort | uniq -c сортирует IP-адреса в лексикографическом порядке, а затем удаляет дубликаты, добавляя перед IP-адресами количество вхождений каждого.
sort -rn | head -n 10 сортирует строки по количеству вхождений, численно и в обратном порядке, чтобы главные нарушители выводились в первую очередь, из которых отображаются 10 строк. Последняя команда awk < print $2 >извлекает сами IP-адреса.
Переименование функции в исходном файле
Представим, что мы работаем над проектом и хотели бы переименовать недачно названную функцию (или класс, переменную и т. д.) в исходном файле. Можно сделать это с помощью команды sed -i , которая выполняет замену прямо в оригинальном файле.
Примечание. На macOS вместо sed -i используйте sed -i '' .
Однако мы переименовали функцию только в оригинальном файле. Это сломает импорт bool_from_str в любом другом файле, поскольку эта функция больше не определена. Нужно найти способ переименовать bool_from_str повсюду в нашем проекте. Такого можно добиться с помощью команд grep , sed , а также циклов for или с помощью xargs .
Чтобы заменить в нашем проекте все вхождения bool_from_str , сначала нужно рекурсивно найти их с помощью grep -r .
Поскольку нас интересуют только файлы c совпадениями, также необходимо использовать опцию -l/--files-with-matches :
Затем можем использовать команду xargs для осуществления действий с каждой строки выходных данных (то есть всех файлов, содержащих строку bool_from_str ).
Опция -n 1 указывает, что каждая строка в выходных данных должна выполнить отдельную команду sed .
Затем выполняются следующие команды:
Если команда, которую вы вызываете с помощью xargs (в нашем случае sed ), поддерживает несколько аргументов, то следует отбросить аргумент -n 1 для производительности.
Эта команда затем исполнит
Примечание. Из синопсиса sed на ман-странице видно, что команда может принять несколько аргументов.
Действительно, как мы видели в предыдущей главе, file . означает, что принимаются несколько аргументов, представляющих собой имена файлов.
Мы видим, что произведены замены для всех вхождений bool_from_str .
Как это часто бывает, существует несколько способов достижения одного и того же результата. Вместо xargs мы могли бы использовать циклы for , чтобы перебирать строки по списку и выполнять действие над каждым элементом. У этих циклов такой синтаксис:
Если обернуть нашу команду grep в $() , то оболочка выполнит её в подоболочке, результат чего затем будет повторён в цикле for .
Эта команда выполнит
Синтаксис циклов for кажется мне более чётким, чем у xargs , однако последняя может выполнять команды параллельно, используя параметры -P n , где n — максимальное количество параллельных команд, выполняемых одновременно, что может дать выигрыш в производительности.
Все эти инструменты открывают целый мир возможностей, так как позволяют извлекать и преобразовывать данные, создавая целые конвейеры из команд, которые, возможно, никогда не предназначались для совместной работы. Каждая из них выполняет относительно небольшую функцию (сортировка sort , объединение cat , фильтры grep , редактирование sed , вырезание cut и т. д.).
Любую задачу, включающую текст, можно свести к конвейеру более мелких задач, каждая из которых выполняет простое действие и передаёт свои выходные данные в следующую задачу.
Например, если нам хочется узнать, сколько уникальных IP-адресов в файле журнала, и чтобы эти IP-адреса всегда появлялись в одном и том же столбце, то можно запустить следующую последовательность команд:
- grep строк, которые соответствуют шаблону строк с IP-адресами
- найти столбец с IP-адресом, извлечь его с помощью awk
- отсортировать список IP-адресов с помощью sort
- устранить смежные дубликаты с помощью uniq
- подсчитать количество строк (то есть уникальных IP-адресов) с помощью wc -l
Примеры в этой статье были надуманными, но я предлагаю вам прочитать удивительную статью «Инструменты командной строки могут быть в 235 раз быстрее, чем ваш кластер Hadoop», чтобы получить представление о том, насколько полезны и мощны эти команды на самом деле и какие реальные проблемы они могут решить.
- Подсчитайте количество файлов и каталогов, расположенных в вашем домашнем каталоге.
- Отобразите содержимое файла только прописными буквами.
- Подсчитайте, сколько раз встречалось каждое слово в файле.
- Подсчитайте количество гласных в файле. Отсортируйте результат от наиболее распространённой до наименее распространённой буквы.
Если интересно поучаствовать в проекте, подписывайтесь на список рассылки!
Добрый вечер! Сегодня хочу продолжить тему перехода на линукс.
Вот Вы решились установить пингвина себе второй/основной системой, начинаете искать своего тюкса , а в поисковике их столько, что глаза разбегаются. Что выбрать и в чем отличие? Расскажу примерно из чего состоит любой дистрибутив. Поехали!
Зарождение линукс как операционной системы началось из этого доброго бородатого дядьки в правом верхнем углу - Ричарда Столлмана. Именно он основал лицензию на бесплатный софт с открытым исходным кодом (GNU GPL License). После того как было написано достаточно много свободных программ, возникла потребность в операционной системе, на то время было почти все готово, кроме собственно ядра системы, которым начал заниматься Линус Торвальдс - финский программист.
С каждым годом сообщество пополнялось новыми энтузиастами, код ядра рос большими темпами, появлялись все новые дистрибутивы. О них то дальше и пойдет речь.
Итак , что общего во всех дистрибутивах :
2. Программное обеспечение
3. Графические оболочки
Что их различает:
1. Версия ядра и софта ("свежесть" - новее не всегда лучше)
2. Предустановленный набор софта
3. Графическая оболочка по умолчанию
4. Пакетный менеджер (не во всех дистрибутивах)
5. Наличие фирменных "плюшек" от разработчиков дистрибутива + набор патчей
Где все это можно найти?
На рейтинг там скорее всего не стоит обращать внимания - эта популярность основана на количеству хитов. Зато можно следить за вышедшими новинками в мире Linux.
Хочу пробежаться по этому топу и немного рассказать о каждом из них
1. Linux Mint - есть 2 версии , первая основана на последнем релизе Ubuntu, вторая на основе Debian. Популярность скорее всего обоснована легкостью установки, приятным внешнем видом (серо- зеленым) и меньшим количеством багов, ошибок (по моему ощущению). Как то в прошлом посте мне писал человек, что минт в плане стабильности хуже убунты, но в нем я не ловил никаких багрепортов, критов и так далее, и выходит она немного позже ubuntu (что может быть хорошим признаком того, что дистрибутив вылизывают перед релизом от багов). Дистрибьюторы Linux Mint не ограничены во времени релиза, в отличии от Ubuntu, которая должна выпустить свое детище в заданные сроки. Хорошим плюсом будет то, что разработчики Linux Mint являются не коммерческой организации в отличии от убунты, поэтому внутри вы не встретите никаких левых сервисов Amazon, по умолчанию даже Google не является поисковиком по умолчанию. Вообщем для новичков самое то , но поковыряться в консоли изредка придется. Так же программисты linux mint разрабатывают собственные форки графических оболочек - Mate( форк заброшенного проекта GNOME 2) и Cinnamon (форк текущего GNOME 3, который многим не идет по вкусу). Называют свои выпуски редкими женскими именами (например Maya). Программы распространяются в виде .deb пакетов. Программа установки apt-get , aptitude.
2. Debian - отец и дед для всех deb-пакетных дистрибутивов. С него выросли такие дистрибутивы как Ubuntu , Mint , Knoppix, Kali Linux и другие. Установка в новых версия не сложнее минта или убунты. Существует 4 основных ветки - old-stable, stable, sid(Testing), experimental. Old-stable - предыдущий стабильный , но еще поддерживаемый, софт в нем лет 5-7 как устарел, но обновления безопасности он еще получает, так что можно ставить.
Stable - текущий стабильный, софт в нем уже устаревает с момента выпуска, но проблем с ним нет. Sid - тестовый дистрибутив , находиться в стадии тестирования и скоро может стать следующим стабильным, софт в нем почти самой последней свежести, но еще могут быть баги и серьезные ошибки в работе, ставить следует тем кто уже не боится консоли и хочет программы последних версий. Ну и eprerimental - в нем есть все самое свежее , но самое не стабильное и не отлаженное. Из этой ветки пакеты попадают в Sid , где тщательно проходят тестирование и правки. Cтавить только если вы разработчик Debian :D.
В общем впечатление от использование положительное, но лазить в консоль придется чаще минта. За все время использования stable проблем не было. Пакеты .deb.Пакетный менеджер apt-get aptitude. Называют свои дистрибутивы персонажами из мультика Toys Story. На текущий момент ols-stable Wheezy , Stable - Jessie, Testing - он всегда Sid (тот мальчик из мультфильма который ломал игрушки). Так же есть Squeeze и Lenny old-stable, которые подойдут для слабых пк, но поддержка Lenny уже закончилась, а Squeeze вот вот закончиться.
3. Ubuntu - "Большая и страшная"(c) - дочь Debian , мать Linux mint. Как ранее писал разрабатывается коммерческой организацией Cannonical. Из плюсов могу отметить легкую установку(хотя этим сейчас никого не удивишь), собственную уникальную графическую оболочку Unity (основанной на GNOME 3) и большое комьюнити. Впринципе с ней проблем особых нету , но все же бывают капли дёгтя. После релиза, если это не LTS(длительная поддержка, да и LTS бывает), вечно вылетают всякие баги, надоедает окно отправки багрепорта (видимо у Microsoft фишку стырили) и бывает другое по мелочи(у меня проблемы к коннектом SSH на CentOS, если кто знает решение в комментах плз). Вообщем использовать можно, но надо все равно консоль ковырять. Еще из коронных фишек в убунте есть патч Nvidia-prime , будет полезно кто хочет легко и без заморочек использовать гибридную графику INTEL + NVIDIA. А так по сути это Debian Testing + патчи Ubuntu + оболочка Unity. Из хороших новостей - в новой убунте 16.04 обещают очень много новшеств, Unity 8, этот дистр начинает дальше уходить от своих собратьев и возможно хочет пойти по стопам MacOS. Буду надеяться из этого что-то выйдет.Как и в дебиане, пакеты .deb, менеджер apt-get, aptitude , но добавлен свой Software Center (глючный и тормоз правда, не пользуюсь им :В). Имена своим релизам дают по латинскому алфавиту 2 слова , 1 слово - прилагательное , второе - название животного. Часто его рекомендуют новичкам , но как по мне Ubuntu намного проблемнее Linux Mint и Debian. При покупке ноутбуков без ОС/Linux часто на витрине чтобы продемонстрировать что ноутбук рабочий ставят убунту (свой G580 так брал).
4.OpenSuse - честно скажу , не использовал, на прошлой работе сталкивался пару раз, поэтому мое мнение может хромать в описании. На самом деле система является детищем Suse Linux Entrerprice - коммерческой версии, и если меня не подводит логика то Open Suse используется скорее в целях тестирования пользователями нового дистрибутива для коммерческих целей. С виду - приятная, установка графическая, пользовался ей бывший
начальник по персоналу. Рабочий стол по умолчанию KDE - более "виндовс_7_подобный", более привычный. Пакетный менеджер YAST (если мне память не изменяет), программы в формате .rpm. Проблем с пользованием нащальнике не испытывал, багов не было замечено. К сожалению больше рассказать не могу.
5. Fedora - тоже не смогу много рассказать (ну не люблю RPM), ставил баловался немного и сносил. Так же имеет .rpm пакеты, далекий родственник красной шапочки (Red Hat). Рабочий стол - Gnome 3, в то время как 1 день пользовался проблем не было. Сейчас ничего не могу сказать конкретнее.
7. Manjaro (не зря я арч поставил выше в список, хотя по рейтингу он ниже) - это форк ArchLinux, появился не очень давно (год может и меньше). Дистрибутив , как утверждают разработчики, cохранил всю мощь и гибкость системы , но в то же время он имеет графический установщик, полную автоматическое определение устройств и установку драйверов. Использует так же Pacman, но свои репозитории с ПО. Без лазания в консоль можно обновить ядро линукс, сменить графический драйвер, обновить ПО. Сделан приятный внешний вид, по умолчанию предлагают 2 версии граф. оболочки - KDE, XFCE.
При личном пользовании проблем я не замечал , хотя тру Арчеводы хаят и плюются в его сторону. Как по мне отличный дистр для новичка, есть свой софтцентер, в консольку лазить не нужно. По рейтингу (которому не стоит доверять) поднялся в 10-ку почти сразу после старта.
8. Mageia - тоже не плохой дистрибутив - но уже не "торт". Когда то еще когда я не сильно увлекался линуксом, был замечательный французский дистр - Mandriva. Тогда очень много пользователей любили его за простоту и красоту и стабильность. Потом организация, которая спонсировала проект прикрыла лавочку, и некоторые разработчики через пару лет собрались снова в Mageia. На себе я испробовал 2 версию. По ощущениям как убунту, вроде все свеженькое, красивенькое и не требует глубоких знаний от пользователя, но часто бывают мелкие косяки и баги, которые портят ощущения от пользования системой. Софт ставиться из софтцентра, с этим проблем не должно быть. При моем пользовании в консоль не приходилось лазить.
9. CentOS - аналогично Open Suse , по сути не коммерческая версия Red Hat Enterprise Linux, возможно используется для тестирования коммерческой, возможно основана на последней Red Hat (точно не могу сказать). В основном применяется на серверах,так как очень стабильная, но и требует хороших знаний для полноценного использования. Я пользовался ею только в качестве сервера, про декстоп версию могу только сказать про рабочий стол по дефолту - GNOME 3 и пакетный менеджер yum c пакетами rpm.
10. Kali Linux - тот же Debian Sid с его плюсами и минусами + набор утилит для тестирования безопасности и "хакинга". Такая себе "хацкерская бубунта". Обычному пользователю не нужна, сам один раз поставил, посмотрел, снес. А кому нужна, уже давно за VPN и в этих ваших "торах" сидят ибо за ними ФСБ следит )))
Что я могу посоветовать начинающему Linux user'у :
впервые ставите линукс - Windows + VirtualBox/VMware - экспериментируйте
хотите установить основной/второй системой и не знаете консоли - Ubuntu, Mint , Manjaro
немного что-то умеете в консоли, но не уверенны в силах - Debian , Opensuse, Fedora, Mageia
Гуглить и экспериментировать нужно будет в любом случае, опыт приходит со временем.
В следующем посте хочу раскрыть тему установки и начальной настройки и возможных проблем, с которыми я сталкивался.
Спасибо за внимание!
PS: Недавно, снял сервер для личных нужд, сейчас в процессе настройки. После окончания настройки смогу выделить примерно 10-15 людям бесплатный хостинг на 1 год.
1. Начинающим веб-девелоперам.(могу выделить доменное имя 3 уровня)
2. Небольшим стартапам.(нужно будет купить домен)
3. Начинающим блогерам. (нужно будет купить домен)
Естественно просьба, если Вам реально не нужно, оставьте место тому, кому это необходимо, а не просто поиграться и забыть. Так же прошу не устраивать свалок и всяких спам рассылок, парсеров яндекс маркета и другого сильно нагружающего систему.
(выводить табличку умножения 1млн*1млн, и запросы mysql в цикле) - буду просто удалять аккаунт со всем. Не размещать пиратский контент, и все что запрещено законами РФ (настучат по башке за это всё мне, потом буду вынужден просто вырубить аккаунт)
Если у вас какие-то проблемы при использовании или нашли уязвимость, напишите мне.
Зачем это мне ? - я даю хостинг , если есть ошибки или недочеты, в процессе пользования, вы поможете мне сделать его лучше, возможно если Вам понравиться у меня, станете через 1 год моим клиентом))
PPS: Если есть кто-то из Медногорска, буду рад личному общению по теме линукса, хостинга, программирования )))
Так как предыдущая статья зашла довольно хорошо, было бы неправильно не поделиться дополнительными утилитами, которые я использую и по сей день. Сразу хочу оговориться, что статья адаптирована и для новичков, а старым линуксоидам придётся немного сточить зубы потерпеть разжевывание материала. Вперёд в тему!
Стоит начать с того, какой у вас стоит дистрибутив. Вы, конечно же, можете всё компилировать из исходников, однако не у всех пользователей есть такие навыки, а если компилятор выдаст ошибку, то пользователи просто расстроятся и не смогут попробовать новые утилиты, а не пойдут искать решения на стаке. Во избежание этого условимся на простых правилах:
- Если вы сидите на ветке Debian (Ubuntu, Debian, Mint, Pop!_os) попробуйте поискать программы на Launchpad, пакеты в репозиториях утилит формата .deb
- Если вы сидите на ветке Arch (Arch, Manjaro, Void Linux) то попробуйте поискать программу в AUR репозиториях, сами утилиты и программы в формате .appimage (если это графические утилиты), а также PKGBUILD файлы для компилирования исходников автоматически
- Если вы сидите на ветке RedHat (Fedora, CentOS), то попробуйте воспользоваться встроенной в большинство дистрибутивов ветки RedHat утилитой Flatpak (аналог Snap). Также, попробуйте поискать пакеты в формате .rpm
Если говорить обо мне, то у меня стоит Manjaro CLI, с установленной на неё i3-gaps и собственными конфигурациями, если кому интересно — можете пользоваться, остальным же советую просто придерживаться правил вверху и помнить, что любая проблема в Linux решается простым гуглением и логическими размышлениями.
Администрирование
-
— программа для визуализации процессов (аналог htop)
Установка с помощью Snap:
snap install gotop --classic
-
— ещё один аналог htop, однако на этот раз более функциональный
Установка с помощью pip
pip install glances
Веб-разработка
-
— если вам по какой-то причине не нравится консоль браузера, то всегда можно сделать те же операции в терминале — утилита для легкого запуска локального сервера с автообновлением при изменении index.html (или другого файла)
Установка с помощью npm
sudo npm i live-server -g — утилита для администрирования сайта на WordPress с помощью консоли
Установка с помощью копирования исходника из репозитория
Приложения, которые облегчают работу без GUI
- nmtui — утилита с TUI для выбора и настройки сети прямо из терминала
-
— удобный редактор с поддержкой асинхнронного скачивания плагинов и линтинга языков
Дополнения
Если у вас есть утилиты, которые вам нравятся, напишите о них в комментариях и я дополню ими статью! Спасибо за то, что дочитали.
Многие пользователи Unix-систем знакомы с терминальными командами. Они позволяют моментально выполнять операции с файлами, следить за системой и настраивать её без надобности использовать ПО с графическим интерфейсом. Modern Unix — это коллекция программ, созданных независимыми разработчиками, которые заменят собой стандартные и наиболее распространённые команды. Эти альтернативы удобнее, функциональнее, а порой и быстрее.
bat вместо cat
bat — это аналог часто используемой команды cat для вывода содержимого файлов. В отличие от оригинала, bat умеет подсвечивать синтаксис и не выводит все данные в окно терминала, а открывает файл отдельно, как в текстовом редакторе nano или vim. С помощью отдельных клавиш можно листать содержимое по строке или сразу нескольким.
exa вместо ls
Команда ls используется для отображения списка файлов в текущей директории. exa справляется с этой задачей ещё лучше, предоставляя больше фич — здесь куда больше возможностей отображения (деревом, перевернутой сеткой, списком, таблицей). Эта альтернатива по стандарту выделяет отдельные типы файлов разными цветами, она быстрая, легковесная и удобная для пользователей. Содержимое папок можно отобразить в древовидной структуры.
lsd вместо ls
Ещё одна альтернатива команде ls. Утилита lsd или LSDeluxe умеет выводить список содержимого папок в цветном виде с иконками. А ещё она написана на Rust, что делает её быстрее аналогичных решений. Для правильного отображения иконок придётся дополнительно установить специальный шрифт.
delta вместо diff
delta — это инструмент для сравнения содержимого файлов. В отличие от обычного diff, он умеет подсвечивать синтаксис, имеет оформление в стиле git, возможность сравнивать файлы бок о бок, нумерацию строк и множество других фич. Также может использоваться для команд git: git show или git diff.
dust вместо du
Более удобный и дружелюбный к пользователю аналог команды du, которая позволяет узнать, сколько места на диске занимают директории. В отличие от стандартной утилиты, dust умеет выводить информацию в виде дерева, выделяя в конечных папках самые «тяжёлые» файлы. По стандарту отображает объём не в блоках, а в привычных единицах измерения. Самое «вкусное» — отображение процентного соотношения директорий, позволяющее сразу выявить самые крупные директории. Утилита написана на Rust, отсюда и её название.
duf вместо df
К числу утилит, облегчающих менеджмент свободного места на накопителях, можно отнести и duf — аналог df. Стандартная программа выводит статистику использования всех подключённых дисков. duf делает это лучше — он отображает данные в виде таблицы, окрашивая некоторые элементы цветами и чётко структурируя их. Такое представление намного лучше воспринимается пользователем. Доступен и другой вывод — в формате JSON.
broot вместо команд для навигации
broot — это отличный способ избавиться от команд для навигации по файловой системе. Утилита показывает список директорий в виде интерактивного дерева, позволяя перемещаться стрелками, входить в папки клавишей Enter, возвращаться Esc и открывать файлы. Последние можно искать, копировать и перемещать с помощью команд в специальной строке.
fd вместо find
Простой аналог команды find для поиска файлов по всей системе. fd работает быстро, имеет широкий набор функционала, который, по словам автора, может и не самый мощный, но удобный в использовании для большинства случаев.
ripgrep вместо grep
Инструмент для поиска по содержимому файлов с названием ripgrep быстрее своих аналогов и выдаёт более читабельный вариант, чем стандартный grep. Утилита следует заданным в gitignore правилам и по умолчанию пропускает игнорируемые и скрытые файлы. Предоставляет мощный функционал с поддержкой множества кодировок и поиском по сжатым форматам.
ag вместо grep (и ack)
За командой ag скрывается приложение с названием The Silver Searcher, которое нацелено на поиск по файлам с кодом. Создатель заявляет, что это аналог другой сторонней утилиты ack, но с упором на скорость. Как и предыдущая программа, The Silver Searcher игнорирует файлы, заданные в .gitignore и .hgignore.
fzf вместо обычного поиска
Быстрая программа для поиска по любым спискам, будь то файл или все файлы в директории. Позволяет интерактивно искать по названию, имеет плагин для редактора vim, есть хоткеи и автодополнение.
mcfly вместо стандартной истории
Заменяет обычный поиск по истории команд, запускающийся сочетанием Ctrl+R. McFly представляет из себя интеллектуальный поисковой движок с небольшой встроенной нейросетью, которая в реальном времени выдаёт подсказки исходя из контекста.
choose вместо awk
Быстрый и удобный аналог awk — мощной встроенной команды для работы с текстом и фильтрации нужных данных. choose использует более понятный синтаксис Rust для регулярных выражений, быстрый выбор части файла похож на синтаксис слайсов в Python, обходит конкурентов на больших объёмах данных.
jq вместо sed
Аналог sed, но разработан для работы с JSON-форматом. Проводит операции со структурированными данными в виде потока и выводит соответствующий результат. Написан на C, не имеет зависимостей — достаточно скачать только бинарный файл. Из минусов jq — отсутствие нормальной документации и прекращённая несколько лет назад поддержка.
sd вместо sed
Интуитивная утилита для поиска и замены в файлах. sd хорош тем, что использует более простой синтаксис регулярных выражений, чем обычный sed. Программа не только проще в использовании, но и быстрее стандартной команды.
cheat вместо man
Полезная вещь для тех, кто очень много времени проводит в терминале. Держать в голове все необходимые команды порой сложно, а гуглить их каждый раз — медленно. cheat даёт возможность создавать шпаргалки по конкретным командам и моментально обращаться к ним по надобности. Позволяет искать подсказки по тегам и с помощью регулярных выражений.
tldr вместо man
Как и предыдущая утилита, tldr помогает ориентироваться в тонне команд и аргументов для них. Представляет из себя упрощённый и понятный man, дополняется сообществом, обладает десятками плагинов и выводит текст в цветном и структурированном формате.
bottom вместо top
Кроссплатформенный системный монитор с кастомизируемым интерфейсом и массой функций. Прямо в терминале в реальном времени отображает состояние «железа», нагрузку, а также запущенные процессы.
glances вместо top
Очередной инструмент для мониторинга состояния системы в терминале. Кроссплатформенный, показывает большое количество информации, оптимизирует отображение данных в зависимости от размера окна. Умеет работать в режиме клиент-сервер: на одном ПК запускается серверная часть, а на другом устройстве можно открыть веб-интерфейс в браузере.
gtop вместо top
Третья программа в подборке для просмотра статистики о машине. Вдохновлена htop, выдаёт структурированные данные с графиками, меняющимися в реальном времени.
hyperfine вместо сложных замеров скорости
Бенчмарк, измеряющий время выполнения конкретной команды и умеющий сравнивать скорость нескольких программ. Может использоваться для определения самой быстрой утилиты в классе или тестирования собственных приложений.
gping вместо ping
Тот же ping для проверки соединения с другим узлом сети, но с красивым и информативным графиком.
procs вместо ps
Современная замена команде ps, выводящей список процессов в системе. Показывает данные в удобном для пользователя формате, с цветами и автоматической темой, основанной на цветах терминала. Имеется поиск, добавлена информация, которой нет в обычной ps, больше данных о памяти, древовидное отображение. procs написана на Rust и активно поддерживается разработчиком.
curlie вместо curl
zoxide вместо cd
zoxide — молниеносная и интеллектуальная замена привычной команде cd. Отслеживает наиболее используемые директории и благодаря этому предлагает подсказки.
dog вместо dig
DNS-клиент на Rust, позволяющий узнать адрес узла по доменному имени. Имеет большое количество опций для запросов, цветной вывод, а также отображение данных в JSON-формате.
Читайте также: