Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Команды bash в linux

Оболочка Bash — шпаргалка для начинающих

    Переводы, 12 января 2017 в 18:28

В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

Оболочка Bash: введение

Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.

Навигация

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

Команда pwd , сокращение от print working directory, отображает текущее местоположение в структуре каталогов.

Команда cd позволяет перейти в новый каталог.

mkdir

Команда mkdir создаёт новый каталог в текущем каталоге.

Основные команды

Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat :

Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.

Команда echo выводит свои аргументы по стандартному каналу вывода.

Если вызвать echo без аргументов, будет выведена пустая строка.

Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:

Команда tail работает аналогично команде head , но читает строки с конца:

Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f :

Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.

Подробнее о назначении символа | будет рассказано ниже в разделе команды history .

Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.

false

Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.

$? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false):

Команда grep занимается поиском переданной строки в указанном файле:

grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.

Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков.

Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g . Например, следующий код заменит все слова «Hello» на «Hi»:

Также вы можете ознакомиться с руководством по sed.

history

Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++ :

Здесь также используется символ | — это так называемый конвейер (pipe). Благодаря ему можно перенаправлять вывод одной команды на вход другой — таким образом в примере выше вся история, которая в обычном режиме выводится командой history прямо в вывод терминала, будет перенаправлена в grep в качестве входных данных. Мы не увидим вывода команды history , но увидим вывод команды grep .

Это может быть довольно сложно для понимания без практики, поэтому поэкспериментируйте самостоятельно, например с командами ls , history , ps (описана ниже), перенаправляя их вывод в grep , sed или less , например.

export

Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student :

Команда ps выводит информацию о запущенных процессах.

Выводится четыре элемента:

  • ID процесса (PID),
  • тип терминала (TTY),
  • время работы процесса (TIME),
  • имя команды, запустившей процесс (CMD).

Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern ‘ test.txt

Команда wget скачивает файлы из Сети и помещает их в текущий каталог.

Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc.

Команда ping тестирует сетевое подключение.

Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.

Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами.

Переменные окружения

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

Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.

Spectrum, Екатеринбург, от 65 000 до 100 000 ₽

Переменная HOME содержит путь к домашнему каталогу текущего пользователя.

Коннекторы

Коннекторы позволяют запускать несколько команд одновременно.

Основные команды Bash

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

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

Основные команды Bash

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

1. source

Эта команда позволяет прочитать и выполнить все команды из указанного файла в текущей командной оболочке. Это значит, что все заданные в нем переменные окружения будут видны во всех скриптах или командах, которые вы будете выполнять. Напомню, что если вы запускаете обычный скрипт и объявляете в нем переменную, то она будет доступна только ему потому что для скриптов создается отдельный экземпляр оболочки. Он наследует переменные родителя, но не наоборот. Эта команда часто применяется для обновления окружения после chroot:

2. alias

Команда alias позволяет создавать псевдонимы для других команд. Например, вы можете настроить так, чтобы когда вы вводите update, выполнялась команда sudo apt update && sudo apt upgrade. Если вызвать команду без параметров, то она выведет список уже заданных псевдонимов. Смотрите подробнее о том как создавать алиасы Linux в отдельной статье.

3. bind

С помощью этой команды вы можете связать нажатие клавиши с определенной командной или функцией. Например, настроим, чтобы при нажатии F12 в окне терминала выполнялась команда pwd:

Команда cd используется очень часто при работе с папками в терминале. Она позволяет сменить текущую папку на произвольную. Можно использовать чтобы не набирать длинные пути, также она необходима при компиляции. По умолчанию, текущая папка — домашняя:

5. declare

Встроенная команда bash — declare позволяет объявлять переменные. Опция -a позволяет вывести все уже существующие переменные окружения. В отличии от обычного объявления вы можете задать различные параметры, например, сделать переменную только для чтения с помощью опции -r. Также можно объявлять функции.

6. dirs

Команда dirs отображает историю смены текущей папки. Каждая предыдущая папка отображается с новой строки. С помощью опции -n можно указать, сколько последних элементов выводить.

Читать еще:  Unable to locate package linux headers

7. echo

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

echo «Это строка»

8. enable

Команда enable позволяет включать или отключать встроенные команды bash. Для включения встроенной команды достаточно передать ее в параметрах. Если вы хотите отключить команду, используйте опцию -n, после этого вместо встроенной команды, будет выполняться утилита из файловой системы.

9. exit

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

10. export

Еще одна команда для объявления переменных. Все объявленные с помощью нее переменные экспортируются во внешнее окружение среды и будут доступны всем скриптам и программам. С помощью опции -p вы можете посмотреть экспортированные на данный момент переменные.

11. bg

Команда bg позволяет посмотреть команды, которые выполняются в фоне. Если вы нажмете сочетание клавиш Ctrl+Z, то утилита будет свернута в фоновый режим. Этой командой вы можете посмотреть все такие процессы для данной оболочки.

12. fg

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

13. history

Команда history linux позволяет посмотреть историю команд, которые вы выполняли ранее. Здесь сохраняется более 1000 последних команд, вы можете все их увидеть, выполнять по них поиск и так далее. Вы можете задать нужное количество записей просто передав нужное значение.

14. kill

Команда kill может быть системной утилитой или командой оболочки. Она позволяет отправить указанному процессу сигнал. Например, SIGKILL, SIGTERM и другие. С помощью нее вы можете завершить процесс по его PID или идентификатору Bash.

15. let

Команда let выполняет функцию калькулятора, ей нужно передать математическое выражение, которое она подсчитает. Можно передать несколько таких выражений.

16. popd

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

17. printf

Эта команда похожа на echo по своему назначению похожа на echo. Она позволяет вывести в терминал строку, но перед выводом вы можете настроить ее форматирование. Синтаксис форматирования очень похож на тот, что используется в популярных языках программирования, таких как Си или PHP. Например, с помощью этой команды bash вы можете подставить значения переменных в произвольные места строки:

printf «Var: %sn» «$VAR»

18. pushd

Команда pushd выполняет действие, обратное до popd и по назначению аналогична cd. Она устанавливает указанную папку на верхушку стека директорий, тем самым меняет текущую рабочую директорию на указанную вами.

19. pwd

Позволяет отобразить текущую рабочую папку:

20. read

С помощью команды read, вы можете прочитать строку из стандартного ввода или файла в переменную. Есть подобные ей команды оболочки bash, которые позволяют считывать строку в массив. Команде можно передать файл для считывания, а также несколько переменных:

21. suspend

Позволяет приостановить выполнение оболочки пока не будет отправлен сигнал SIGCONT. Можно также приостановить выполнение одного из процессов, выполняющихся в фоне.

22. umask

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

23. time

Встроенная команда time позволяет замерять время выполнения любого скрипта или программы. Измеряется отдельно время выполнения программы и время на ввод пользователя.

24. wait

Наш список команд bash завершает wiat. Она позволяет ожидать пока указанный процесс завершит свое выполнение. Вы можете использовать PID или идентификатор Bash для выбора нужного процесса.

Выводы

В этой статье мы рассмотрели основные команды Bash, которые вы можете применять для управления терминалом Linux. Наверное, вы и не догадывались, что многие из часто используемых программ на самом деле встроенные команды bash. Если у вас остались вопросы, спрашивайте в комментариях!

Команды Linux: оболочка BASH

Автор: Сергей Никонов

Пользователи, начинающие изучать терминал Linux, задаются вопросами: Как изменить права на папку, как установить права пользователя, как получить root права, как подключится по SSH и многие другие. В этой статье мы коснемся основ администрирования *nix систем, изучим bash команды, которые вам пригодятся при настройке сервера.

Что такое Bash?

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

Знаете ли, что в unix подобных операционных системах (ubuntu, debian, freebsd, centos и других), принято называть “папки” каталогами.

Основные команды Bash

Команда CD

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

Для того чтобы переместиться в ваш домашний каталог, вам нужно выполнить команду:

cd /home/YOUR_USER_NAME или проще: cd

Для того, чтобы перейти в каталог на уровень выше, выполните команду cd..

Знаете ли, что командная оболочка реализовала очень удобную функцию подсказок команд.Если вам нужно перейти в каталог с длинным названием, freebestwebhosting, вам не нужно вводить ее полностью.

Вместо этого, вы можете ввести только часть букве free и нажат на клавишу tab, и интерпретатор bash самостоятельно дополнит команду.

Команда CAT

Для того, чтобы посмотреть содержимое какого нибудь файла, например hosting.txt, вы можете воспользоваться командой cat. Пример:

Команда GREP

Очень полезную функцию grep можно использовать в ситуации, когда вы хотите посмотреть логи доступа на сайт с определенными данными. Например, вы хотите посмотреть чем занимался на вашем сайте пользователь с ip адресом 10.23.11.14. Чтобы это сделать нужно ввести команду:

cat /var/log/apache2/access.log | grep 10.23.11.14

В результате запроса вы увидите данные только по пользователю с ip адреса 10.23.11.14

Команда TAIL

Tail — это очень полезная команда линукс, с ее помощью можно в реальном времени смотреть изменяемые файлы, например те же логи apache, или логи доступа auth.log к серверу.
Для того, чтобы просматривать логи в реальном времени, нужно ввести команду:

tail -f /var/log/apache2/access.ru

Команда SSH

SSH — это протокол подключения к серверу. Для того, чтобы подключиться к серверу по ssh, введите команду в формате:

ssh USER@SERVERIP и нажмите enter.

И если ваш сервер поддерживает подключение по ssh, вам нужно будет ввести пароль и вы попадете на нужный вам сервер в оболочку Bash или оболочку, которая настроена по умолчанию на вашем сервере.

Стандартный порт SSH — 22. Многие администраторы, для того, чтобы немного обезопасить сервер закрывают доступ к ssh через порт 22, а открывают альтернативный порт, например 2231.

Если ваш сервер находиться на не стандартном порте 22, а на порте к примеру 2231, тогда команда подключения через ssh к серверу будет выглядеть так:

ssh USER@SERVERIP -p2231

Как изменить права на файл (chmod)

У файлом, как и у каталогов, есть права и владельцы эти файлов. Для того, чтобы изменить права на файл .htaccess вашего сайта введите команду:

Читать еще:  Что значит ошибка воспроизведения видео

chmod 644 .htaccess

Командой для имения прав можно воспользоваться и в другом случае, когда вам нужно изменить права на каталог, подкаталоги и файлы в них. Для этого введите опцию к команде chmod, -R.

chmod -R 775 catalog

Как получить root права в linux и выполнять команды от root. Команда sudo.

Для получения root прав, без смены пользователя, можно воспользоваться командой sudo перед основной командой. Пример команды sudo:

sudo less /etc/php5/apache2/php.ini

Команда сменить владельца файла или каталога (chown и sudo)

У файлов и у каталогов есть владельцы. Если вы зашли под пользователем root и создали файл backup.sh, затем разлогинились и зашли под обычным пользователем, например под пользователем john, вы не сможете обратиться к этому файлу, т.к. у файла backup.sh владелец пользователь root.

Для смены владельца файла или каталога, нужно воспользоваться двумя командами: sudo и chown:

sudo chown john:john backup.sh затем enter и введите пароль для root и снова enter.

Команда sudo позволит без входа пол пользователем root, выполнить команду от root.
jonh — это ваш пользователь, второй john — это группа пользователя john (может быть любой).

Резюме

В данной статье мы рассмотрели несколько полезных команд оболочки Bash в Linux и Unix подобных системах. Эти команды вам могут пригодиться для настройки собственного VDS сервера, например от хостинга Таймвеб.

В следующих статьях мы рассмотрим не менее полезные команды оболочки bash, познакомимся с консольным редактором nano и vim, файловыми менеджером mc и многими другими.

Для того, чтобы посмотреть видео, зарегистрируйтесь в личном кабинете

Команды Linux: оболочка Bash

Данная статья предназначена для тех, кто хочет понять основы администрирования Unix систем, изучить bash команды, которые помогут при настройке определенного сервера. Новые пользователи, которые только начинают работу с терминалом Linux, достаточно часто сталкиваются с такими популярными вопросами — установка прав пользователя, изменение прав на папку, получение root прав. Ответы на эти актуальные вопросы помогают быстрее понять всю специфику работы Linux.

BASH: важные особенности

Bash является командным интерпретатором, популярен в unix системах. Как это работает? Вы начинаете вносить в консоль команду, к примеру «mkdir» — интерпретатор преобразует данную команду в один из низкоуровневых языков, это позволяет оперативно создать новый требуемый каталог. Если рассматривать Unix-подобные системы — здесь «папки» называют каталогами. Данный факт известен не всем людям, которые только начинают работу с такими системами.

Несколько основных команд bash

Рассмотрим наиболее популярные команды:

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

Соответственно команда cd позволяет перейти в каталог, который расположен выше.

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

Как это работает?

К примеру, вы хотите получить доступ к каталогу, у которого очень длинное название — freebestwebhosting. Нет потребности полностью вводить название выбранного каталога. Достаточно просто ввести «free», после этого нажать «tab», это позволит интерпретатору самостоятельно дополнить выбранную вами команду.

Команда CAT

Если вам необходимо проверить содержимое определенного файла, к примеру hosting.txt, достаточно воспользоваться командой cat. Это выглядит примерно так:

Команда GREP

Есть потребность в проверке логов доступа на определенный сайт? Тогда команда GREP станет оптимальным вариантом. Как это работает? Вам необходимо проверить, чем занимался на вашем компьютере пользователь с ІР 10.23.11.14. Для этого достаточно просто ввести команду:

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

Команда TAIL

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

Команда SSH

Данная команда является протоколом подключения к серверу. Формат команды, которая позволит оперативно подключиться к определенному серверу, выглядит следующим образом:

Достаточно, чтобы выбранный сервер поддерживал подключение по ssh (что позволит оперативно получить к нему доступ) — необходимо просто ввести специальный пароль, чтобы пройти идентификацию. Вы сможете работать с оболочкой, которая установлена на вашем сервере, команда является невероятно полезной, позволяет существенно экономить свое время.

SSH имеет свой стандартный порт «22». Сегодня большинство администраторов пытаются надежно защитить свой сервер от посягательств посторонних людей, полностью закрывая доступ к нему через «порт 22». Создается альтернативный порт, позволяющий получать кратковременный доступ. От того, где именно размещен ваш сервер, напрямую зависит то, как будет выглядеть исходная команда. В данном случае, с отказом от стандартного и использованием альтернативного «порта 2213», команда будет выглядеть следующим образом:

Изменение прав на файл

У каждого отдельного файла есть собственные владельцы и права. Необходимо ввести следующую команду, чтобы изменить права на выбранный вами файл .htaccess на вашем сайте:

Данная команда будет вполне актуальной, если вам необходимо изменить права на каталог или подкаталог. Необходимо воспользоваться опционалом chmod, -R, команда будет выглядеть:

Особенности команды SUDO

Как получить root права, при этом не меняя пользователя? Есть специальная команда, которая позволяет это сделать достаточно быстро:

Есть команды, которые позволяют изменить владельца определенного файла, они выглядят вот так:

Резюме

Сегодня мы смогли рассмотреть наиболее полезные команды Bash в Linux. Все рассмотренные команды помогут при настройке VDS серверов.

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

Гайд по необходимому минимуму в Linux и Bash

Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

В реальности знания и опыт — динамичны, они охватывают несколько дисциплин и сфер деятельности. Представление о том, что “можно иметь способности только к чему-то одному” — это не руководство к овладению мастерством, а попытка справиться с преждевременной оптимизацией. Узнать о том, в чём вы хорошо разбираетесь можно только когда вы попробовали себя в нескольких разных вопросах. И может оказаться, что у вас есть способности ко многим видам деятельности .

Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

Почему современные бизнес-аналитики должны знать Linux

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

Читать еще:  Процессы в linux

В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git . Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

Если вдаваться в подробности, разработка на Windows ведёт к двум основным проблемам:

  • Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  • Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Фундаментальная единица Linux: “оболочка”

Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash . В отличие от Windows-пользователей, которые в своём большинстве используют навигацию “навести-кликнуть” по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

Изучаем несколько важных концептов

В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20–30 команд и их часто используемые аргументы.

Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

Командный синтаксис

Команды соответствуют синтаксису:

Например, в ‘grep -inr’, grep — это команда (для поиска текстовой строки) и -inr это флаги/аргументы, которые меняют то, что grep выполняет по умолчанию. Единственный способ понять, что это значит, поискать что-то о них через Google или просто ввести ‘man grep’. Я рекомендую выучить команды и их самые используемые аргументы: слишком обременительно помнить, что делает каждый флаг.

Псевдонимы директорий

  • Текущая директория (где я?): .
  • Родительская директория текущей директории: ..
  • Домашняя директория пользователя:
  • Корень файловой системы (или родитель всех родителей): /
  • Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

    Таким же способом, чтобы скопировать файл, расположенный в “/path/to/file.txt” в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

    STDIN / STDOUT

    Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

    Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

    Конвейер (piping)

    Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

    пример : echo ‘test text’ | wc -l

    Символ “больше” принимает STDOUT от команды слева и записывает/перезаписывает в новый файлу справа

    пример : ls > tmp.txt

    Два символа “больше” принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

    пример : date >> tmp.txt

    Шаблоны поиска (wildcards)

    Можете представить это как символ % в SQL. Например, можно написать WHERE first_name LIKE ‘John%’, чтобы найти любые позиции, где данные начинаются с имени John.

    В bash можно написать John*. Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на «.json», пишете : ls *.json

    Завершение с помощью tab

    Bash часто завершает команды сам, по определённой логике, если вы начинаете вводить команду и нажимаете TAB.

    Однако, стоит попробовать что-то вроде zsh или fish для автозаполнения, потому что запоминать команды и все их параметры очень сложно. Более того, эти инструменты применят автозаполнение, основываясь на вашей истории используемых команд.

    Выход

    Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q . Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

    Что я помню из команд bash

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

    • cd изменить директорию
    • ls -lha вывести директорию в виде списка (подробного)
    • vim или nano редактор командной строки
    • touch создать новый пустой файл
    • cp -R скопировать файл или директорию (и всё их содержимое)
    • mv переместить или переименовать файл
    • rm удалить файл
    • rm -rf удалить файл или папку без возможности восстановления [использовать аккуратно!]
    • pwd вывести текущую рабочую директорию
    • catилиlessилиtailилиhead -n10 вывести в STDOUT содержимое файла
    • mkdir создать пустую директорию
    • grep -inr найти строку в любом файле этой директории или дочерних директориях
    • column -s, -t отобразить разделенный запятыми файл в виде столбцов
    • ssh @ соединиться с удалённой машиной
    • tree -LhaC 3 показать структуру директории на 3 уровнями вглубь (с размерами файлов и включая скрытые директории)
    • htop (или top ) диспетчер задач
    • pip install —user пакетный менеджер Python для установки пакетов в

    /.local/bin

  • pushd . ; popd ; dirs; cd — push/pop/view директорию в стек + изменить обратно на последнюю директорию
  • sed -i «s///g» заменить строку в файле
  • find . -type f -name ‘*.txt’ -exec sed -i «s///g» <> ; заменить строку для каждого файла в этой и дочерней папках с именем типа *.txt
  • tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]
  • wget загрузить веб-страницу или веб-ресурс
  • curl -X POST -d «» http://www.google.com отправить HTTP-запрос на веб-сервер
  • find вывести список всего содержимого директории и её дочерних директорий рекурсивно
  • Продвинутые и не часто используемые команды

    Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

    Ссылка на основную публикацию
    Adblock
    detector