Я пережил переход на Linux - и вы тоже можете

Переход с Windows на Linux может быть очень страшным. Но если вы сможете пережить первые несколько месяцев, конечная отдача будет экспоненциальной. Вот как я выжил.

TL; DR

  1. Хотя я просто любитель Linux, я смог пережить переходный период и действительно получил от него пользу. Итак, это мои заметки для кого-то, кто столкнулся с подобной ситуацией.
  2. Для начала выберите Ubuntu. Выбирайте другие вкусы, когда узнаете лучше и сможете решить для себя.
  3. Ознакомьтесь со следующими командами ssh, pwd, ls, cd, mv, cp, scp, grep, find, rm. Совет: вы можете использовать https://tldr.ostera.io/cp, чтобы получить список наиболее часто используемых опций этих команд.
  4. Научитесь использовать символ |. Используя этот символ, вы можете передать выходные данные одной команды в качестве входных данных для следующей команды.

Длинная версия

В моей первой компании мы широко использовали Windows, будь то настольные компьютеры, которые мы использовали для разработки, или серверы, на которых мы развертывали наш код. Но когда я перешел в свою вторую компанию, все было полностью на OSS и, следовательно, использование Linux было там обязательным. Для меня это стало титанической задачей. Первый месяц или около того это был кошмар.

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

Новые среды

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

По моему мнению, две основные причины, затрудняющие переход, - это: незнание и боязнь облажаться.

Отсутствие знакомства

Чтобы решить проблему знакомства, я начал использовать Linux на своем офисном ноутбуке, а также на моем личном ноутбуке. Я начал читать блоги о Linux и подписался на несколько интересных аккаунтов, связанных с Linux, в Twitter. Я обратился к людям, хорошо разбирающимся в Linux. Я подходил к их кабинкам и просил показать мне их историю команд. Я узнал намного больше из этого, чем из чтения блогов. В большинстве случаев, поскольку это всего лишь мышечная память, программисты не могут это объяснить. Но их история - настоящая сокровищница.

Я бы порекомендовал выполнить следующую команду. Вы получите много информации о командах, которые часто используют ваши герои Linux.

history | awk ‘{ $1=””; print $0 }’ | sort | uniq -c | sort -nr | head -20

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

Страх облажаться

Я использую Linux уже пару лет, но все еще боюсь. Когда я начинал, этот страх был многогранным. Одна вещь, которая мне очень помогла, заключалась в том, что я поговорил с профессионалами Linux в своей компании и составил черный список - список команд, которые я никогда не должен использовать или использовать с осторожностью. sudo rm -rf был первым в списке. Если вы беспокоитесь, как и я, вы можете использовать https://github.com/nivekuil/rip на своем локальном компьютере.

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

Теперь, когда ваши страхи устранены, приступим.

Почему вы должны изучать Linux

Есть бесчисленное множество причин, по которым вы должны изучать Linux. Поиск в Google принесет вам тысячи статей о том, почему вам следует изучать Linux, например Каковы преимущества изучения Linux, Почему вам следует перейти на Linux »и Стоит ли мое время учиться? Linux при изучении программирования ?» Эти три статьи стоит прочитать, но вот две основные причины, по которым вам следует учиться:

  1. Linux повсюду: Linux повсюду. Таким образом, с вашей осведомленностью или без нее существует высокая вероятность того, что вы уже пользуетесь Linux или получаете выгоду от него. Поэтому понимание основ Linux может пригодиться во многих ситуациях. Если вы программист, то этот шанс довольно высок. Изрядное количество приложений развернуто на серверах Linux. Так что изучение этого может быть вашей палочкой-выручалочкой.
  2. Linux универсален: И Linux, и MAC построены на UNIX. Так что, если вам нравится терминал Linux, вы также сможете использовать большинство команд в терминале MAC. Android использует ядро ​​Linux. Raspberry Pi использует Linux . Многие встроенные устройства используют Linux.

Почему вы начали изучать Linux?

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

  1. Вы читали о крутых вещах, на которые способен Linux, или слышали от друга, который просто не может перестать восторгаться Linux.
  2. На вашем ноутбуке или настольном компьютере установлена ​​операционная система, отличная от Unix. Но ваше приложение или веб-сайт развернуты на сервере Linux.

Если вы подпадаете под первую категорию, у вас есть все время в мире. Так что не торопитесь. Если вы подпадаете под вторую категорию, то велика вероятность того, что вы не успеете уложиться в срок. Так что доделайте следующие части и запачкайте руки.

Man Command - ваш друг. Либо это?

Один из первых советов, которые вы получите, когда захотите изучить Linux, - Используйте команду man, это ваш друг. Хотя в этом есть определенная правда, для многих начинающих пользователей это может ошеломить. Все, что вам обычно нужно, это параметры для наиболее часто используемых сценариев команды - и именно этого не хватает на страницах руководства. К счастью для вас, есть проект под названием TLDR, который пытается исправить именно это.

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

Во-первых, вывод со страниц руководства.

Теперь вывод из проекта TLDR.

Вы видите разницу?

TL; DR похож на заметки о командах, которые я написал бы для себя. Я нахожу это очень удобным. Я установил TLDR с помощью команды nodejs sudo npm i -g tldr. Если вы не установили nodejs, я предлагаю вам это сделать, так как есть много пакетов node, которые очень удобны. Вы можете установить nodejs, используя это руководство по установке от Digitial Ocean.

Я подумал о том, чтобы поделиться своими заметками обо всех командах в этом посте, но потом я наткнулся на пост Эндрю, в котором он описывает 101 команду bash:



Он распределил все команды по категориям, а также у него есть хорошие примеры, и я не могу сделать лучше, чем это.

Узнайте о профилях Bash

Я обнаружил, что файлы конфигурации bash или профили bash очень удобны, поэтому они помогают изучить различия и то, как они работают.

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

Научитесь использовать Emacs

Одна вещь, которую я ищу в наши дни, - это общность. Это помогло мне использовать то, что я знаю, в нескольких сценариях. Например, мы продвигаем много Javascript в нашей команде, так как мы можем использовать его в нескольких сценариях, таких как интерфейс нашего веб-сайта, в консоли браузера, чтобы быстро очищать вещи, отлаживать наш интерфейс или учиться на других веб-сайтах, для присоединения к коллекциям в mongodb, а в nodejs для серверной части.

Подчеркивание общности помогает нам «учиться один раз, многократно извлекать выгоду», что значительно увеличивает рентабельность инвестиций.

Возвращаясь к Linux, я хотел определиться с редактором командной строки. У меня были варианты выбора Nano, Vim или Emacs. Я выбрал Emacs.

Большинство команд, используемых в Emacs, также можно использовать в оболочке Linux. Например, вы можете использовать CTRL / CMD + A для перехода к началу строки как в оболочке, так и в Emacs. Есть много таких команд, которые работают как в оболочке, так и в Emacs. Я считаю это огромным преимуществом.

Поскольку это редактор командной строки, вы можете легко установить его на любой сервер. Я обычно устанавливаю Emacs на каждый сервер, на котором я являюсь root. Я не уверен, что это хорошая практика, но в целом я считаю ее очень удобной. Да, я решил не изучать Nano или Vim. Поджарьте меня, если хотите.

ТРУБА Это

Команда конвейера в Linux позволяет использовать выходные данные одной команды в качестве входных данных следующей команды. Это может быть действительно полезно, если вы освоите несколько команд Linux, таких как grep, sort, awk, uniq, head и tail. Связь с этими командами чрезвычайно эффективна. Например, я никогда не помню, какие параметры в ls для отображения только текстовых файлов (и я не думаю, что вам следует также). Я просто выполняю следующую команду.

ls -l | grep txt

Я знаю, что это быстро и грязно, но работает в большинстве сценариев.

Например, если мы посмотрим на команду обработки истории, которую мы использовали в первом разделе:

history | awk ‘{ $1=””; print $0 }’ | sort | uniq -c | sort -nr | head -20

Мы берем вывод команды history и передаем его awk, чтобы удалить номера строк в начале каждой строки из вывода. Затем мы передаем результат команде sort, чтобы мы могли его отсортировать. Затем мы передаем команду output uniq, чтобы сохранить только уникальные строки вместе с количеством вхождений. Затем мы передаем его команде sort, чтобы отсортировать его в обратном порядке. Затем мы передаем его команде head, чтобы вывести список только 20 наиболее часто используемых команд, которые присутствуют в нашей истории.

Как это круто?

GREP это

Если вы привыкли к SDK и редакторам графического интерфейса, GREP может показаться немного ограниченным. Но в большинстве случаев отличительным признаком является то, что вы можете связать вывод команды grep. Это очень удобно. В большинстве случаев меня не беспокоит производительность запросов grep. Разница незначительная. Только когда производительность запроса grep имеет значение, я трачу время на проверку параметров и их точную настройку. Во всех остальных случаях я считаю, что лучше использовать grep и pipe, чтобы получить то, что я хочу.

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

systemctl list-units --all | grep service | grep loaded

Что я здесь сделал, так это то, что я сократил набор результатов до тех строк, которые содержат слово service, и из этого набора результатов я снова фильтрую строки, которые также содержат словоloaded. Допустим, в дополнение к этому вы хотите удалить строки, содержащие exited, тогда вы можете изменить запрос, чтобы:

systemctl list-units --all | grep service | grep loaded | grep -v exited

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

Есть много других подобных приемов. Но я считаю, что этого должно быть достаточно, чтобы вы зацепились за Linux и мотивировали начать изучать его дальше.

Что можно сделать в четырех строчках кода Linux?

Короткий ответ: много. Мой друг Чакри просмотрел 1500 веб-страниц, взял с них нужную информацию и создал удобную таблицу для собственного анализа. Код такой:

#!/bin/sh
for i in {10000..11500}
do
  wget -O — http://resultsite.com/2019nebwdr/?bibNo="$i"\&submit=SUBMIT | grep “10 KM” | sed -E ‘s/<tbody>|<\/tb\
ody>|<\/table>//g’ >> output.html
done

Если вы хотите прочитать, как работает приведенный выше сценарий, ознакомьтесь с его постом.

Прежде, чем мы закроем

Для меня основной целью при работе с Linux было не перегружать себя командной строкой и кривой обучения. Я разработал свой путь обучения в соответствии со своими требованиями. Дайте мне знать, если это сработает для вас. Если вы также являетесь пользователем, который успешно перешел с другой ОС на Linux, поделитесь своими заметками.

Бесстыдный штекер

Когда мы изучаем что-то, мы очень много читаем в Интернете и должны отслеживать. По этой причине мы создали учебные программы, которые помогут вам выделять, делать заметки и добавлять теги в Интернете. Думайте об этом как о средстве, но в Интернете.

Если вы думаете, что это будет вам полезно, установите их.

  1. Http://bit.ly/use-highlights
  2. Http://bit.ly/highlights-android-app
  3. Искать в моих общедоступных подборках - Общедоступные подборки

Понимание серии

Эта статья является частью моей обучающей серии Понимание X.

Что такое Linux