Подробный обзор наиболее часто используемых команд

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

Если вы думаете о том, когда вам понадобится использовать Bash, это действительно очень хороший вопрос. Что ж, при установке менеджеров пакетов и помощи другим разработчикам вам, вероятно, потребуется хорошее понимание этого, особенно если вы больше занимаетесь ролью DevOps. Кроме того, Интернет и большинство серверов работают под управлением Linux, у которого нет пользовательского интерфейса, и вы можете получить к ним доступ только через командную строку.

Если вы используете Ubuntu или macOS, вы должны включить Bash в систему, но если вы используете Windows, у вас может не быть его, хотя он поставляется с более новыми версиями в Windows 10. Если нет, вы можете загрузить Git Bash, чтобы вы могли следовать примерам.

Команды

Давайте начнем с некоторых команд:

Ivans-MacBook-Pro:~ izstoev$

Когда вы перейдете к своему Bash, он должен выглядеть примерно так: имя вашего ПК и имя пользователя, за которыми следует знак доллара «$», что означает, что вы готовы ввести команду.

Ivans-MacBook-Pro:~ izstoev$ echo Testing Bash!
Testing Bash!

Если мы введем «эхо», а затем фрагмент текста, мы увидим, что текст возвращается. Эхо эквивалентно «эху» в PHP или «печати» в Python.

Ivans-MacBook-Pro:~ izstoev$ python3
>>> print(“Testing Bash”);
Testing Bash

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

Ivans-MacBook-Pro:~ izstoev$ history
1 echo Testing Bash!
2 clear
3 python3
4 clear
5 history

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

Относительные и абсолютные пути

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

Если мы хотим найти рабочий каталог, мы можем использовать команду pwd, что означает «распечатать рабочий каталог».

Ivans-MacBook-Pro:music izstoev$ pwd
/Users/izstoev/music

Поговорим еще немного о путях.

Ваша операционная система представляет свои каталоги как древовидную структуру как таковую.

Таким образом, чем больше у нас каталогов и файлов, тем больше это растет. И, как мы знаем, у деревьев есть корень, которым в нашем случае является верхний каталог. Тогда у корня могут быть ответвления, а у этих ответвлений могут быть свои собственные ответвления.

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

Однако путей может быть два: абсолютный и относительный. Абсолютный путь дает нам расположение, начиная с корня. Например, абсолютный путь в приведенном выше примере для фильмов — /Home/Movies, а первая косая черта представляет корневой каталог.

Относительный путь начинается с вашего текущего рабочего каталога, поэтому, если путь не начинается с «/», Bash знает, что вы используете относительный путь.

Таким образом, если бы мы были в разделе «Пользователи», наш путь для фильмов был бы Главная/Кино. А если бы мы были в Главной, это были бы просто Фильмы.

Навигация

Как мы уже упоминали, вы можете получить свое текущее местоположение с помощью команды «pwd».

Если вы хотите увидеть все каталоги и папки в вашем текущем рабочем каталоге, вы можете ввести «ls».

Ivans-MacBook-Pro:~ izstoev$ ls

Когда вы знаете, в какой каталог вы хотите войти дальше, вы можете использовать для этого команду «cd».

Ivans-MacBook-Pro:~ izstoev$ cd Music
Ivans-MacBook-Pro:Music izstoev$

Мы видим, что после команды каталог, в котором я нахожусь, изменился. Теперь, если вы хотите быстро вернуться в корневой каталог, вы снова можете использовать «cd».

Ivans-MacBook-Pro:iTunes izstoev$ cd
Ivans-MacBook-Pro:~ izstoev$

Итак, что произойдет, если вы перейдете в каталог и захотите создать там новую папку. Вы можете использовать команду «mkdir», за которой следует имя, которое вы хотите дать каталогу (в них не должно быть пробелов).

Ivans-MacBook-Pro:~ izstoev$ cd Movies/
Ivans-MacBook-Pro:Movies izstoev$ mkdir Comedy
Ivans-MacBook-Pro:Movies izstoev$ ls
Comedy TV

Как видите, я зашел в раздел «Кино», создал каталог «Comedy» и с помощью «ls» убедился, что он действительно создан.

Если теперь мы хотим перейти только на один каталог назад вместо перехода к корню, мы можем сделать это, используя «cd», за которым следуют две точки как таковые.

Ivans-MacBook-Pro:Comedy izstoev$ cd ..
Ivans-MacBook-Pro:Movies izstoev$

И если мы хотим удалить каталог, который мы только что создали, мы можем сделать это довольно легко.

Ivans-MacBook-Pro:Movies izstoev$ rmdir Comedy
Ivans-MacBook-Pro:Movies izstoev$ ls
TV

Флаги

Команды также имеют флаги, которые позволяют эмитенту изменить поведение команды. Флаги — это параметры для команд, которые имеют значение True или False, и по умолчанию для всех флагов установлено значение false. Чтобы добавить флаг, мы используем дефис перед самим флагом.

Ivans-MacBook-Pro:Movies izstoev$ ls -author
total 24
-rw-r — r — 1 izstoev 0B 29 Oct 2019 .localized
-rw-r — r — 1 izstoev 160B 8 Jun 2020 .htaccess
-rw-r — r — @ 1 izstoev 6.0K 17 Aug 2020 .DS_Store
drwxr-xr-x 5 izstoev 160B 9 Dec 23:56 TV
drwxr-xr-x+ 61 izstoev 1.9K 25 Jan 15:34 ..
drwx — — — + 6 izstoev 192B 25 Jan 16:24 .
Ivans-MacBook-Pro:Movies izstoev$

Выполнение «ls -author» показывает нам все каталоги и файлы, как и ожидалось, а также автора, создавшего их.

Скрытые файлы

Как вы, наверное, уже знаете, операционная система и многие программы в этом отношении хранят данные на вашем компьютере в виде скрытых файлов. Если мы хотим просмотреть скрытые файлы, мы можем использовать флаг «-a» в сочетании с «ls», где «a» обозначает все.

Если мы хотим создать скрытый файл, мы можем использовать команду «touch».

Ivans-MacBook-Pro:Movies izstoev$ touch .bash
Ivans-MacBook-Pro:Movies izstoev$ ls -a
. .. .DS_Store .bash .htaccess .localized TV

Я создал скрытый файл .bash, а затем проверил это с помощью «ls -a».

Трубы

Символ вертикальной черты '|' называется каналом, и мы можем использовать его для передачи вывода команды другой команде в качестве ее ввода. Запутанно, я знаю. Давайте продемонстрируем.

Если мы введем:

Ivans-MacBook-Pro:Movies izstoev$ ls | less

Получаем результат, который выглядит так:

Action
Animation
Comedy
TV
(END)

Что делает «меньше», так это отображает содержимое файла или вывод команды. В нашем случае мы знаем, что «ls» показывает нам все каталоги, а затем мы используем «less», чтобы текстовый файл открывался в программе меньше (нажмите q, чтобы выйти меньше).

Пользователи

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

Ivans-MacBook-Pro:~ izstoev$ whoami
izstoev

Обычно ваш пользователь создается, когда вы устанавливаете операционную систему, однако этот пользователь не является самым мощным. Пользователь самого высокого уровня, обладающий наибольшим количеством разрешений, называется root. В каждой системе есть пользователь root, но из соображений безопасности вы обычно не входите в систему как root. Но мы можем воспользоваться его разрешениями, если воспользуемся знаменитой командой «sudo». Sudo позволяет вам выполнить команду от имени пользователя root, не ставя под угрозу безопасность вашей системы. Sudo удаляет средства защиты, которые не позволяют вам нанести вред вашей операционной системе, поэтому никогда не вводите команду, если вы не уверены в том, что делаете.

Регулярные выражения

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

Я создал простой текстовый файл, который выглядит так:

Iron Man
Iron Man 2
Avengers: Infinity War
Avengers: End Game
Star Wars

Чтобы использовать регулярные выражения, мы собираемся использовать команду «grep», которая принимает два параметра — регулярное выражение и путь к файлу для поиска определенного шаблона.

Например, если мы хотим получить все фильмы о Мстителях...

Ivans-MacBook-Pro:Movies izstoev$ grep Avengers Movies.txt
Avengers: Infinity War
Avengers: End Game

Также стоит отметить, что эта команда чувствительна к регистру, поэтому, если мы изменим заглавную букву «А» на нижнюю «а», мы не получим никаких результатов.

По умолчанию grep напечатает все строки, для которых он нашел совпадения, но если нам нужны только совпадающие слова, мы можем добавить флаг '-o'.

Ivans-MacBook-Pro:Movies izstoev$ grep -o Avengers Movies.txt
Avengers
Avengers

И мы получаем только два совпадающих слова.

Соответствие началу или концу

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

Если я обновлю файл .txt до этого:

Iron Man
Iron Man 2
Avengers: Infinity War
Avengers: End Game
Star Wars
Civil War: Iron Man vs Captain America

А затем выполните следующее:

Ivans-MacBook-Pro:Movies izstoev$ grep Iron Movies.txt
Iron Man
Iron Man 2
Civil War: Iron Man vs Captain America

У нас есть три результата, которые верны, но что произойдет, если мы хотим получить только сольные фильмы о Железном человеке? Что ж, мы можем использовать символ 'ˆ', который позволяет нам сопоставлять шаблон, только если шаблон встречается в начале.

Ivans-MacBook-Pro:Movies izstoev$ grep ^Iron Movies.txt
Iron Man
Iron Man 2

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

Заключение

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