Bash в windows 10

Введение

Для работы в Ubuntu пользователь может выбрать один из двух возможных вариантов интерфейса: графический либо интерфейс командной строки. Графический интерфейс (GUI — Graphical user interface) знаком большинству пользователей, в нем для выполнения действий нужно использовать различные элементы рабочего стола. Он имеет свои преимущества, которые выражаются главным образом в удобном и привычном формате подачи информации, а также в отсутствии необходимости знать какие-либо команды.

Однако многие пользователи Linux предпочитают работать в командной строке (CLI, Command Line Interface). Как правило, эти пользователи так или иначе связаны с программированием или системным администрированием, тем не менее знание основ bash будет полезно всем пользователям. Командная строка позволяет выполнять команды значительно быстрее, чем при использовании GUI, при этом экономит ресурсы. Более того, зачастую команды не имеют своих аналогов в графическом интерфейсе и, благодаря этому, дают значительную свободу пользователям в своих действиях. При этом интерфейс командной строки встроен в ядро операционной системы, а значит, он доступен даже тогда, когда вы не можете воспользоваться графической оболочкой. Сами же команды одинаковы для всех операционных систем на базе Linux, будь то Ubuntu, CentOs, Fedora или какая-либо другая.

Поиск и использование регулярных выражений

Для поиска файлов в bash используется команда find. Ее синтаксис следующий: find + нужная директория (путь) + ключ (или несколько) + критерии ключа + (опционально) последующее действие над найденными файлами.

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

find --h

К примеру, следующая команда позволит вам найти все файлы, которые находятся в директории dir1, и имеют название file:

find /home/users/dir1 -name ‘file*’

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

* — обозначает любое количество символов, включая их отсутствие (например, по запросу file* будут найдены все файлы: file, file1, file829, fileabc и т.д.);

? — обозначает один символ (по запросу file? будут найдены файлы с одним символом после слова file: file1, file9, filea и т.д.; по запросу file?? будут найдены файлы с двумя символами: file12, file34, file92 и т.д.);

[] — обозначает подмножество значений, которые может принимать один символ (по запросу file будут найдены файлы: file1, file2, file3 и так далее до file9; по запросу file файлы filea, fileb, filec и filed).

Копирование, перемещение и удаление

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

rmdir movies # удалить пустой каталог moviesrm -rf movies # удалить каталог movies и его файлыrm file1.txt # удалить файл file1.txtmv /home/michael/myfile.txt /home/john/important.txt # переместить файл из /home/michael в /home/johncp /home/michael/myfile.txt /home/john/important.txt # скопировать файл из /home/michael в /home/johncp -R letters/ memories/ # скопировать содержимое папки "letters" в папку "memories"cp -R letters ~/Desktop # скопировать папку "letters" вставить на рабочий стол

Резюмируем

Краткая сводная таблица для 6 вышерассмотренных командных оболочек:

Командная оболочка Путь Приглашение (обычный пользователь) Приглашение (root)
sh (Bourne Shell) /bin/sh и /sbin/sh $ #
bash (Bourne-Again Shell) /bin/bash имя_пользователя@имя_хоста:~$ имя_пользователя@имя_хоста:~#
ksh (Korn Shell) /bin/ksh $ #
csh (C Shell) /bin/csh % #
tcsh (TENEX C Shell) /bin/tcsh имя_хоста:~> #
zsh (Z Shell) /bin/zsh % #

Примечание: Помимо представленных выше оболочек, есть еще и такие оболочки, как:

   mksh — оболочка, основной упор в которой сделан на написание скриптов;

   dash — более легковесная в сравнении с bash оболочка, но из-за этого обладающая ограниченной функциональностью;

   fish — «новая» оболочка, написанная в 2005 году, отличительной чертой которой является упор на комфорт использования и упрощение командного языка;

   и другие.

История очистки

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

Чтобы очистить список истории, используйте параметр :

Чтобы удалить определенную строку или строки между начальной и конечной позициями из списка истории, используйте параметр .

Например, чтобы удалить строки между 365 и 375 (включая эти строки), вы должны ввести:

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

Когда используется отрицательное целое число, строки отсчитываются от конца списка истории.

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

Советы и рекомендации

Подстветка синтаксиса и подсказки

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

Command not found

В pkgfile есть хук «command not found», который при вводе неизвестной команды автоматически ищет подходящий исполняемый файл в пакетах в официальных репозиториях.

Чтобы хук заработал, его необходимо :

~/.bashrc
source /usr/share/doc/pkgfile/command-not-found.bash

После этого при попытке запустить недоступную команду будет выведена следующая информация:

$ abiword
abiword may be found in the following packages:
  extra/abiword 3.0.1-2	/usr/bin/abiword

Примечание: Предварительно необходимо обновить базу данных pkgfile. Подробнее см. .

Существует альтернативный хук «command not found» в виде пакета AUR, результат работы которого выглядит следующим образом:

$ abiword
The command 'abiword' is provided by the following packages:
abiword (2.8.6-7) from extra
	
abiword (2.8.6-7) from staging
	
abiword (2.8.6-7) from testing
	

Отключение комбинации Ctrl+z

Нажатие в терминале ставит приложение на паузу или закрывает его. Отключить эту комбинацию клавиш можно следующим образом:

#!/bin/bash
trap "" 20
adom

Если после этого во время работы AUR вы по ошибке вместо нажмёте комбинацию , то она будет проигнорирована и ничего не произойдёт.

Очистка экрана виртуального терминала после выхода:

~/.bash_logout
clear
reset

Bash может автоматически добавлять команду , если введён только путь к каталогу. Стандартное поведение:

$ /etc
bash: /etc: Is a directory

Если же добавить в строку

~/.bashrc
...
shopt -s autocd
...

то произойдёт следующее:

$ /etc
cd /etc
$

Autojump

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

Запрет на перезапись файлов

Отключение перезаписи файлов с помощью перенаправления вывода на время текущего сеанса:

$ set -o noclobber

Команда делает то же самое.

Сделать изменения постоянными:

~/.bashrc
set -o noclobber

Принудительно перезаписать файл при установленном :

$ echo "output" >| file.txt

Так что же такое Bash Shell

Bash – это оболочка или интерпретатор командного языка, который используется в различных версиях Linux и операционной системы GNU. Если вы использовали Ubuntu и передавали определенные команды операционной системе с помощью терминала, шансы, что вы использовали для этого Bash, относительно высоки.

Название «Bash» является аббревиатурой от «Bourne-Again SHell», каламбура Стивена Борна, автора прямого предка текущей оболочки Unix «sh». Bash предлагает функциональные улучшения по сравнению с sh как для интерактивного использования, так и для программирования.

Bash – это бесплатная версия Bourne Shell, распространяемая с несколькими операционными системами Linux и GNU, включая Ubuntu. Bash – самый популярный интерпретатор командной строки, особенно в Linux, и, следовательно, интерактивная оболочка по умолчанию в различных дистрибутивах Linux.

Теперь оболочку bash можно установить и на Windows!

Переменные

Переменные в  могут содержаться в 3х областях видимости:

  1. Локальные переменные; Простая переменная внутри конкретного сценария. Например, определение переменной, доступ к значению и удаление:

    Также, вы можете объявить локальную переменную внутри функции. Такая переменная будет доступна только внутри этой ф-ции:

  2. Переменные окружения (подробнее); Этот тип переменных доступен любой программе (сценарию), которая запущена из данной оболочки. Разместить переменную в окружении можно командой :
  3. Переменные оболочки; Это переменные имеют имена порядкового номера (, , ..) и содержат аргументы, переданные сценарию при запуске, например:

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

Механизм подстановки команды (заключенная в апострофы или круглые скобки  команды вернет значение в переменную, завершающие символы новой строки удаляются):

Получить результат значение переменной в другую переменную:

Примечание

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

Арифметика:

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

фильтры

Давайте теперь посмотрим на некоторые из наиболее часто используемых команд фильтра. Мы будем работать с файлом с именемbabynames.txtкоторый содержит около 1000 детских имен иfruits.txtфайл, который содержит названия нескольких фруктов.

Grepилиglobal regular expression printищет строкис заданной строкой или ищет шаблон в заданном входном потоке. Следующая команда прочитает все файлы и выведет все строки, содержащие слово «Том».

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

ТуалетявляетсяКороче дляword count.Он читает список файлов и генерирует одну или несколько из следующих статистических данных: число новой строки, количество слов и количество байтов. Давайте введем вывод вышеgrepкомандоватьwcподсчитать количество строк, содержащих слово «Том».

Сортироватьфильтр сортирует строки по алфавиту или по номерам

Команда сначала читает содержимое файлаи затем сортирует это.

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

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

Кроме того, вы также можете использоватьвместо того,

Конвейеры очень удобны для выполнения некоторых сложных задач, так как несколько команд можно объединить в конвейер.

Создание, перемещение и удаление

Используйте команду mkdir для создания директории. Не забудьте указать имя:

mkdir dir1

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

mkdir /home/users/dir1

Для создания файла вам нужно ввести команду touch и название будущего файла:

touch file1

В этом случае прописать путь, где нужно создать файл, тоже возможно:

touch /home/users/dir1/file1

Для перемещения директорий и файлов используется команда mv, после которой вы пишете название директории или файла, который хотите переместить, а затем место, куда хотите переместить:

mv file2 /home/users/dir2

mv dir1 /home/users/dir3

Обратите внимание, что команда mv также используется для переименования, поэтому если при отсутствии директории dir2 вы напишете такую команду:

mv dir1 dir2

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

Для удаления файлов следует использовать команду rm, а для удаления директорий rmdir. Если вы хотите удалить каталог, используйте команду rm с ключами -rf:

rm -rf /home/users/

Еще одно действие, которое вы можете использовать, — это копирование при помощи команды cp. Синтаксис у этой команды такой же, как и у предыдущих, — вы просто пишете, что и куда хотите скопировать. Для копирования директории обязательно нужно использовать ключ -r, при этом если конечная директория (dir2) не существует, то она будет создана при копировании:

cp -r dir1 dir2

Структура команд.

Вне зависимости от того какую команду или программу вы пытаетесь вызвать к исполнению в bash: встроенную в ядро операционной системы или например написанную программу вами самим, у всех них будет общая структура вызова в командной строке. И в общем виде эту структуру можно представить следующим образом:

  1. На первом месте  идет имя команды (что делать);
  2. Далее за именем команды идут ключи (опции), расширяющие и/или модифицирующие поведение команды (как делать);
  3. За ключами идут аргументы, на которые направлено действие команды (над чем делать).

Стоит понимать, что в большинстве документаций принято квадратными скобками отмечать параметры которые необязательно должны присутствовать. Так и здесь, команда или программа в bash может быть запущена без ключей и аргументов (например команда pwd, возвращает текущий путь).

Вызов команды pwd без передачи ключей.

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

Пример вызова команды ls -l

Или только с аргументами (например команда cd /etc, для перемещения в каталог /etc ).

Аргументов может быть более одного и в общем случае это имена файлов разделенные пробелами (например команда touch file1 file3 file5, которая в данном случае в текущей директории создаст 3 файла с указанными именами, если таких файлов не существует ).

Вызов команды touch с тремя аргументами. Проверка, что создались три файла при помощи команды ls.

Все UNIX являются операционными системами, учитывающими регистр букв, поэтому одновременно в одном каталоге могут существовать два файла с именами FiLe1 и file1 , т.к. для операционной системы это разные файлы. Но при работе с системой следует ориентироваться на нижний регистр, так например команду pwd оболочка bash выполнит, а вот команда PWd, уже ей не знакома и попытка вызова такой команды закончится информационным сообщением.

Bash корректно интерпретирует команду pwd, но не ей неизвестна команда PWd.

Решение проблем

Перенос строк при изменении размера окна

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

~/.bashrc
shopt -s checkwinsize

Оболочка завершается даже с опцией ignoreeof

После задания опции вы можете обнаружить, что многократное нажатие всё равно приводит к завершению процесса оболочки. Дело в том, что по умолчанию эта опция позволяет игнорировать только 10 нажатий данной комбинации клавиш (если быть точным — 10 ситуаций EOF) перед выходом из оболочки.

Задать большее значение можно переменной IGNOREEOF. Например:

export IGNOREEOF=100

Анализ сценария и поиск ошибок

Программа проверяет сценарии Bash (и других командных оболочек) на предмет ошибок и предлагает возможные улучшения кода.

Пользовательские переменные Bash

В сценариях командного интерпретатора Bash можно не только использовать переменные среды, но также создавать и включать собственные. Задание переменных позволяет сохранять данные и использовать их во время работы скрипта, что делает его более интерактивным.

Пользовательские переменные Bash Linux могут быть названы любой текстовой строкой длиной до 20 символов, состоящей из букв, цифр и символа подчёркивания. В названии учитывается регистр букв, поэтому переменная Var1 не является переменной var1. Новички в области написания сценариев часто забывают об этой особенности, отчего и допускают трудно диагностируемые ошибки.

Присвоение значения переменной Bash выполняется с помощью знака равенства (=). Слева и справа от знака не должно быть разделяющих символов по типу пробела. Это правило также часто забывается неофитами. Вот пример присваивания значений переменным:

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

Потоки

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

Стандартные потоки:

При перенаправлении потоков, вы можете указывать ссылки на определенные потоки. Например, перенаправим вывод и ошибки команды в файл:

Перенаправление потоков

Для перенаправления потоков используются основные команды: <>>><<<|. Рассмотрим как можно перенаправлять стандартные потоки.

Перенаправление потока вывода:

Перенаправление потока ввода (прием данных):

Перенаправление вывода ошибок:

Примечание

Если вам нужно захватить вывод команды в переменную и при этом отобразить вывод на экране, используйте :

Подстановка процессов

Передать процессу команда1 файл (созданный налету канал или файл /dev/fd/…), в котором находятся данные, которые выводит команда2:

Примеры

Логировать результат поиска и ошибки:

Эта конструкция позволяет читать из строки как из файла. Демонстрационный пример:

Создаем временный файл и записываем в него поток переданный скрипту:

А теперь откроем файл в текстовом редакторе с «отвязкой» (отключением) от терминала, подавляем вывод сообщений в терминал:

Двойные скобки

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

На основе этого механизма можно выполнять арифметические действия. Достаточно вместо одной пары скобок использовать две.

Рассмотрим примеры в скрипте

expansion_example.sh

Разберём этот скрипт:

Строка 4 — Базовый синтаксис. Можно ставить пробелы без использования кавычек.

Строка 7 — Работает и без пробелов.

Строка 10 — Можно использовать переменные без $ перед ними.

Строка 13 — А можно и с $

Строка 16 — Увеличение переменной на 1. Символ $ не нужен.

Строка 19 — Увеличение переменной на 3. Это краткая форма записи b = b &plus; 3.

Строка 19 — В отличие от других способов символ * не нужно экранировать.

./expansion_example.sh

981112131620

Двойные скобки дают довольно много свободы в форматировании кода.

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

Список переменных среды

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

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

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

Вы также можете передать команде более одного аргумента:

Если вы запустите команду или без аргументов, она покажет список всех переменных среды:

Результат будет выглядеть примерно так:

Ниже приведены некоторые из наиболее распространенных переменных среды:

  • — текущий авторизованный пользователь.
  • — домашний каталог текущего пользователя.
  • — используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе в терминале.
  • — путь к оболочке текущего пользователя, например bash или zsh.
  • — имя текущего пользователя.
  • — список каталогов, в которых будет производиться поиск при выполнении команд. Когда вы запускаете команду, система будет искать в этих каталогах в указанном порядке и использовать первый найденный исполняемый файл.
  • — текущие настройки локали.
  • — текущая эмуляция терминала.
  • — Местоположение, где хранится почта текущего пользователя.

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

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

Вы также можете использовать команду echo для печати переменной оболочки. Например, чтобы распечатать значение переменной вы должны запустить:

Как изменить цвет приглашения bash?

Параметры цвета строки приглашения задаются в виде следующей последовательности — , где:

    — часть с escape-символом, обозначающая начало изменения цвета;

    — код атрибута текста:

    — нормальный;

   1 — жирный (яркий);

   2 — тусклый;

   4 — подчеркнутый;

    — цветовой код текста:

   30 — черный;

   31 — красный;

   32 — зеленый;

   33 — коричневый;

   34 — синий;

   35 — фиолетовый;

   36 — голубой;

   37 — светло-серый.

    — цветовой код фона:

    40 — черный;

   41 — красный;

   42 — зеленый;

   43 — коричневый;

   44 — синий;

   45 — фиолетовый;

    46 — голубой;

   47 — светло-серый.

    — символ, указывающий на конец блока с цветовым кодом.

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

Рассмотрим пример, который временно изменяет текст и цвет строки приглашения на зеленый:

Рассмотрим детально:

    — сочетание символов, обозначающее начало блока изменения атрибутов текста;

    — сочетание символов, обозначающее начало блока цветового кода;

    — цветовой код ( — обычный текст, — зеленый цвет);

    — символ, указывающий на конец блока с цветовым кодом;

    — сочетание символов, обозначающее конец блока изменения атрибутов текста;

    — код, задающий стандартный вид приглашения оболочки;

    — сочетание символов, обозначающее начало блока изменения атрибутов текста;

    — сочетание символов, обозначающее начало блока цветового кода;

    — цветовой код ( — обычный текст белого цвета)

    — символ, указывающий на конец блока с цветовым кодом;

    — сочетание символов, указывающее на конец блока с цветовым кодом.

В результате мы получим следующее:

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

Написание функций Bash

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

Синтаксис создания функции очень прост:

имя_функции() { список_команд }

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

Простая функция

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

$ vi function.sh

#!/bin/bash
printstr(){
echo «hello world»
}
printstr

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

Все работает, теперь усложним задачу, попробуем передать функции аргументы.

Аргументы функции

Аргументы функции нужно передавать при вызове, а читаются они точно так же, как и аргументы скрипта. Синтаксис вызова функции с параметрами bash такой:

имя_функции аргумент1 аргумент2 … аргументN

Как видите, все достаточно просто. Параметры разделяются пробелом. Теперь улучшим нашу функцию, чтобы она выводила заданную нами строку:

Можно сделать, чтобы параметров было несколько:

Есть и другой способ извлекать аргументы, как в Си, с помощью стека. Мы извлекаем первый аргумент, затем сдвигаем указатель стека аргументов на единицу и снова извлекаем первый аргумент. И так далее:

Возврат результата функции

Вы можете не только использовать функции с параметрами bash, но и получить от нее результат работы. Для этого используется команда return. Она завершает функцию и возвращает числовое значение кода возврата. Он может быть от 0 до 255:

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

Экспорт функций

Вы можете сделать функцию доступной вне скрипта с помощью команды declare:

Затем запустите скрипт с помощью команды source:

Рекурсия

Вы можете вызвать функцию из нее же самой, чтобы сделать рекурсию:

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

Локальные переменные в функции

Если вы объявите обычную переменную в функции, то она будет доступной во всем скрипте, это удобно для возврата значения функции, но иногда может понадобиться сделать локальную переменную. Для этого существует команда local:

Библиотеки функций

Мы можем взять некоторые функции bash и объединить их в одну библиотеку, чтобы иметь возможность одной командой импортировать эти функции. Это делается похожим образом на экспорт функций. Сначала создадим файл библиотеки:

test1(){
echo «Hello World from 1»;
}
test2(){
echo «Hello World from 2»;
}
test3(){
echo «Hello World from 3»;
}

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

Что такое shell?

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

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

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

Окно терминала обычного пользователя (виден символ $)

Окно терминала привилегированного (root) пользователя (виден символ #)

Примечание: Знак тильды () указывает на то, что мы находимся в домашнем каталоге текущего пользователя.

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

Ниже представлен пример выполнения простой команды , возвращающей текущую дату и время:

Стандартный for цикл в Bash

Цикл выполняет итерацию по списку элементов и выполняет заданный набор команд.

Цикл Bash имеет следующую форму:

Список может быть серией строк, разделенных пробелами, диапазоном чисел, выводом команды, массивом и т. Д.

Оберните струны

В приведенном ниже примере цикл будет перебирать каждый элемент в списке строк, и переменный будет установлен на текущий элемент:

Цикл выдаст следующий результат:

Цикл по диапазону чисел

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

Вот пример цикла, который перебирает все числа от 0 до 3:

Начиная с Bash 4, также можно указывать приращение при использовании диапазонов. Выражение принимает следующий вид:

Вот пример, показывающий, как увеличить на 5:

Перебирать элементы массива

Вы также можете использовать цикл для перебора массива элементов.

В приведенном ниже примере мы определяем массив с именем и перебираем каждый элемент массива.

Дополнительные параметры оболочки

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

    — звуковой сигнал;

    — дата (день/месяц/число);

    — форматированный вывод текущего времени;

    — символ escape-последовательности;

    — имя хоста (короткое, до первой точки);

    — полное имя хоста (доменное имя);

    — количество задач, обрабатываемых оболочкой в данный момент;

    — название терминала;

    — переход на новую строку;

    — возврат каретки на начало строки;

    — название оболочки;

    — время в 24-часовом формате (час:минута:секунда);

    — время в 12-часовом формате (AM/PM);

    — время в 24-часовом формате без секунд;

    — текущее имя пользователя;

    — версия bash;

    — дополнительная информация о версии bash (номер релиза, патча);

    — текущий рабочий каталог;

    — базовое имя рабочего каталога;

    — отображает номер, под которым команда будет занесена в историю команд bash;

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

    — если пользователем является root, то используется символ , в противном случае — символ ;

    — обратная косая черта;

    — начало последовательности непечатаемых символов (полезно, если вы хотите изменить цвет, добавить команду или набор инструкций в приглашение);

    — конец последовательности непечатаемых символов.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: