Cd bash: Работа с Bash | Losst
Работа с Bash | Losst
Bash — это самый популярный интерпретатор команд, который используется в большинстве дистрибутивов Linux. Вы сталкиваетесь с Bash каждый раз, когда открываете терминал в своей системе и начинаете выполнять там команды, а также когда пишите различные скрипты для автоматизации выполнения системных задач.
Мы уже много писали о Bash, его возможностях и особенностях, теперь пришло время написать статью, в которой будет описана работа с Bash в целом, как пользоваться Bash, горячие клавиши и другие полезные моменты, которые помогут вам пользоваться Bash более эффективно.
Содержание статьи:
Что такое Bash?
Как я уже говорил, Bash — это интерпретатор команд. По сути, это обычная программа, которая запускается при старте сеанса оболочки. Мы могли бы запускать не Bash, а скажем, интерпретатор python или ruby, и тогда нам пришлось бы выполнять методы этих языков вместо команд Bash для администрирования системы.
Bash принимает команды от пользователя и передает их системному загрузчику, а также обеспечивает взаимодействие между командами, обмен информацией и потоками ввода-вывода. Также оболочка предоставляет пользователю удобный интерфейс для работы с историей команд, поиска и замены, а также исправления ранее выполненных команд, а также автодополнение путей.
Команды Bash
Основу работы в Bash составляют команды. Именно с помощью команд вы будете выполнять большинство действий над системой. Команды можно поделить на два типа. Это встроенные в оболочку, которые существуют только виртуально, мы рассматривали их в статье основные команды Bash, а также внешние команды — обычные утилиты или скрипты, расположенные в файловой системе.
Возвращаясь к встроенным командам, можно привести пример, вы не найдете в файловой системе команду cd. Ее нет, она встроена.
Обычные же команды находятся в файловой системе. Они могут находиться в одной из папок, указанных в переменной PATH. Для выполнения встроенной или внешней команды достаточно набрать ее имя, интерпретатор отлично справляется с поиском команд по папкам, указанным в PATH. Например:
ls /
Но если команда находится в одной из сторонних папок, то необходимо ввести ее полный адрес:
/usr/local/bin/simplenote
Иначе оболочка не сможет найти исполняемый файл команды.
Объединение команд
Оболочка Bash позволяет не только выполнять команды, но и объединять их в сложные конструкции для получения нужного эффекта. Использование Bash таким способом очень эффективно. Как вы знаете, система Linux создает три потока для каждой программы — поток ввода, поток вывода и поток ошибок. Оболочка позволяет перенаправить поток одной программы прямо в другую с помощью специальных операторов. Читайте более подробно обо всем этом в статье перенаправление ввода вывода в Bash.
Кроме того, Bash позволяет объединять команды по времени выполнения. Существуют такие операторы для объединения команд:
- && — выполнить первую команду, а вторую выполнять только если первая завершится успешно;
- || — выполнить первую команду, а вторую выполнять только если первая завершится неудачей;
- ; — выполняет последовательно каждую следующую команду, как только завершится предыдущая;
- & — запустить команду в фоне и сразу же вернуть управление в командную оболочку для выполнения следующей команды.
Например, сначала выполняем загрузку файла, а затем открываем его в плеере, если загрузка прошла успешно:
wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 && mplayer mpthreetest.mp3
Чтобы продолжить этот пример, мы можем удалить загруженный файл, если произошла ошибка:
wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 || rm mpthreetest.mp3
Чтобы выполнить обновление системы, а затем завершить работу выполните:
sudo apt update ; shutdown -h now
И наконец, вы можете запустить какой-либо сервис или приложение, например, браузер в фоне и свободно продолжить работу в терминале:
firefox &
Управляющие символы Bash
Перенаправление вывода, организация тоннелей и поочередное выполнение команд — это очень хорошо, но у Bash есть еще и другие полезные возможности. Например, с помощью специальных символов вы можете модифицировать команды, искать в истории и многое другое.
Чтобы вставить в положение курсора предыдущую команду напишите !!. Например, чтобы выполнить последнюю команду с sudo достаточно выполнить:
sudo !!
Чтобы выполнить не последнюю команду, а скажем, предпоследнюю или выполненную еще раньше, то после восклицательного знака нужно указать ее номер:
!-1
Если вы укажите один восклицательный знак и несколько символов, то выполнится последняя команда, которая начиналась на эти символы:
!l
Также может понадобиться искать команду не по первому символу, а по вхождению в нее определенного набора символов. Тогда можно использовать такую конструкцию. Ищем последнюю команду, в которой встречалось tmp:
!?tmp?
Если перед командой написать пробел, то она не сохранится в истории:
ls
Символ $? позволяет вывести код завершения последней команды:
echo $?
Символ звездочки возвращает массивом содержимое текущей папки:
echo *
С помощью символа ^ можно заменить несколько букв из предыдущей команды. rm
В результате файл будет удален.
Горячие клавиши Bash
Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день:
- Tab — автодополнение, наберите начало команды или пути и нажмите Tab, если такая команда только одна оболочка ее дополнит. Если доступно несколько вариантов, нажмите два раза Tab чтобы их увидеть;
- Стрелка вверх — предыдущая команда в истории;
- Стрелка вниз — следующая команда в истории;
- Ctrl+R — поиск по истории. Просто нажмите эту кнопку и начните вводить нужную команду;
- Ctrl+G — выйти из режима поиска;
- Alt+. — предыдущее слово последней команды;
- Ctrl+L — очистить вывод терминала;
- Ctrl+A — перейти в начало строки;
- Ctrl+E — в конец строки;
- Ctrl+K — удалить символы начиная от курсора и к концу команды;
- Ctrl+U — удалить символы от курсора до начала команды;
- Ctrl+W — удалить все символы этого слова слева;
- Ctrl+Y — удалить все символы этого слова справа;
- Ctrl+S — остановить вывод на экран;
- Ctrl+Q — возобновить вывод на экран.
Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные.
Выводы
В этой статье мы рассмотрели как пользоваться Bash. Как применять основные возможности оболочки, как выполнять команды и какие бывают основные горячие клавиши, этой информации должно быть вполне достаточно новичкам для того, чтобы освоить на начальном уровне эту оболочку. Надеюсь, эта информация была полезной для вас.
На завершение видео по теме от Акцент профи:
3.» src=»https://www.youtube.com/embed/Fp4zZ1hqnx0?feature=oembed» frameborder=»0″ allow=»accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»/>
Команда ls – просмотр каталога. Курс «Введение в Linux и Bash»
Команда ls используется в командной оболочке Linux для вывода содержимого каталогов и информации о файлах. Кроме утилиты ls, есть схожие с ней dir и vdir, отличающиеся поведением по-умолчанию.
В качестве аргументов ls принимает адреса каталогов или файлов. Если их не передавать, то будет выведено содержимое текущей папки.
Указав адрес или адреса других каталогов, можно посмотреть их содержимое.
Обратите внимание, что в случае команды ls смены текущего каталога не происходит, как при использовании cd. Bash лишь выводит нам файлы и папки запрашиваемого каталога. Если нужно сразу просмотреть несколько каталогов, их указывают простым перечислением.
У программы ls есть много ключей, позволяющих получать о файлах более подробную информацию, а также выводить ее в различных форматах. Информацию по всем ключам можно получить с помощью команды ls --help
. Самым используемым ключом является -l, благодаря которому выводится подробная информация об объектах.
В первой строке указано общее количество блоков дискового пространства, которое занимают файлы просматриваемого каталога. В данном случае один блок соответствует 1024-м байтам, или 1-му килобайту.
В описании каждого файла первый символ указывает на тип файлового объекта, далее идут права (rwxrwxrwx). О типах файлов в Unix-подобных ОС мы уже говорили, о правах будет сказано позже. В примере выше имеется две директории (d), один именованный канал (p) и два обычных файла (-).
Во втором столбце числом указывается количество жестких ссылок для файлов. Что значат числа в этом столбце для каталогов, непонятно. Далее идут имена владельца, группы, размер, дата последнего изменения и имя файла. Размер указан в байтах, но с помощью ключа -h можно получить более читаемый формат:
Ключ -a позволяет увидеть скрытые файлы:
Здесь также используется ключ -1, чтобы вывод был в столбик. Кроме скрытого файла .iamhidden мы видим имена текущего каталога (.) и родительского (..). Если они не нужны, вместо -a употребляют -A.
Если требуется просмотреть не только сам каталог, но и вложенные в него папки, используется ключ -R:
В отличие от cd, команде ls можно передавать не только имена каталогов, но и файлов. Например, когда нужно получить информацию о конкретном файле или группе файлов.
На скрине во второй команде используется шаблон. О шаблонах мы поговорим позже.
Задание
По-умолчанию ls сортирует файлы по алфавиту. С помощью справочной системы Linux узнайте, как сортировать файлы по размеру и времени изменения.
Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.
Команды Linux: оболочка 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. Пример:
cat hosting.txt
Команда 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 и многими другими.
Читайте также
Все материалы с сайта wh-db. com и ru.wh-db.com защищены авторским правом. Копирование, публикация, продажа и распространение материала строго запрещены.
Урок 2. Основные bash команды для работы в терминале
Работа в командной строке очень важна в Linux. Во-первых, система не всегда имеет графическую оболочку. Во-вторых, многие задачи легче и быстрее выполнить в терминале, чем в графической оболочке.
Общение человека с машиной осуществляется посредством специальных команд, которые вводятся в терминале в текстовом режиме. Специальная программа преобразует введенные текстовые команды в машинный код и передает ее системе. Такая программа называется интерпретатор, которая запускается автоматически при входе пользователя в систему.
Наиболее распространенные интерпретаторы Shell и Bash. Bash более мощный интерпретатор, поэтому по умолчанию во многих системах запускается Bash.
Bash имеет свои встроенные команды, кроме того пользователи могут создавать свои собственные команды.
При входе пользователя в систему необходимо авторизоваться, то есть ввести логин и пароль. Причем в системах Linux введенный пароль не отображается. После успешной авторизации появляется строка следующего вида:
Любой пользователь при входе в систему попадает в свой родной каталог, который находится в каталоге /home.
Рассмотрим некоторые команды, чтобы понять как работает система.
Формат ввода команд следующий:
Команда [необязательные опции] опции [необязательный аргумент] аргумент
Некоторые команды используются с опциями и аргументами, некоторые — вообще работают без них.
Опции бывают одно буквенными либо целыми словами. Перед одно буквенными опциями всегда стоит дефис -, а перед опциями-словами — уже два дефиса.
Опции предназначены для выполнения дополнительных действий и у каждой команды они разные, однако некоторые могут совпадать.
В качестве аргументов выступают названия файлов или каталогов.
Базовые команды
ls — отображение содержимого текущего каталога
ls /каталог — отображение файлов и каталогов в указанном каталоге
ls -a или ls —all — отображение скрытых файлов и каталогов
На рисунке выше видно, что некоторые файлы начинаются с точки. В линуксе точкой обозначаются скрытые файлы и каталоги.
ls -F или ls —classify — отображение типа файла
Как видно выше некоторые файлы заканчиваются специальными символами. Данные символы обозначают определенный тип файлов. В таблице ниже приводится описание данных символов:
Символ
|
Обозначение
|
*
|
Исполняемый файл
|
/
|
Каталог
|
=
|
Сокет
|
@
|
Ссылка
|
|
|
FIFO
|
без знака
|
Обычный файл (текстовый, медиа т. д.)
|
Однобуквенные опции можно объединять, в том время как опции-слова нельзя.
Например,
ls -aF — отображает абсолютно все файлы, а также их тип.
cat файл — просмотр текстового документа
cat не самая удобная команда, поэтому можно воспользоваться командой less, которая позволяет постранично просматривать содержимое документа. В таблице ниже указаны какие клавиши можно использовать при работе с командой less:
Название клавиш
|
Действие
|
<PageDown> или пробел
|
Перемещение на одну страницу вперед
|
<PageUp>
|
Перемещение на одну страницу назад
|
<Enter> или стрелка вниз
|
Перемещение на одну строку вперед
|
Стрелка вверх
|
Перемещение на одну строку назад
|
Стрелка влево
|
Прокрутка страницы влево
|
Стрелка вправо
|
Прокрутка страницы вправо
|
g или p
|
Перемещение вперед к концу файла
|
1g
|
Перемещение назад к началу файла
|
q
|
Завершение работы команды less
|
pwd — определение текущего каталога
cd /каталог — переход в указанный каталог
cd ~ — возврат в свой домашний каталог.
cd .. — переход в родительский каталог текущего каталога.
Следует помнить, что с помощью команд также запускаются уже установленные утилиты (программы), которые находятся в каталогах /bin, /sbin, /usr/bin, /usr/sbin.
Причем название команд очень часто совпадает с названием каталогов самих утилит в упомянутых выше каталогах.
Например, следующие команды вызывают соответствующие утилиты, которые находятся в каталогах /bin, /sbin:
date — вывод текущей даты
cal — вывод календаря
Вызов справки
Linux содержит множество команд и опций и все запомнить невозможно. Поэтому во всех дистрибутивах уже имеется встроенное руководство пользователя, где можно найти информацию по всем командам.
Руководство man состоит из следующих разделов:
- Команды пользовательского уровня
- Системные вызовы и коды ошибок ядра
- Библиотечные функции
- Драйверы устройств и сетевые протоколы
- Форматы файлов
- Игры и демонстрационные программы
- Различные документы и файлы
- Команды системного администрирования
- Внутренние интерфейсы и спецификации ядра
Формат обращения к руководству выглядит так:
man [номер раздела] название_команды
Номер раздела указывается, если необходима информация о команде с конкретного раздела, потому что иногда одна и та же команда может быть сразу в нескольких разделах.
Например,
man ls — отображение подробной информации о команде ls
При вызове man запускается программа less для постраничного просмотра файла.
Как работать с less ты уже знаешь.
man date — отображение подробной информации о команде date
С помощью man можно узнать какие опции поддерживаются запрашиваемой командой.
Кроме того, можно воспользоваться командой whatis, чтобы получить краткое описание команды:
whatis ls — краткое описание команды ls
Альтернативой команды man может служить команда info:
info cd — краткое описание команды cd
А что если я не помню название команды, но помню что она делает?
Для этого есть команда apropos ключевое_слово.
Например,
apropos content — поиск команд по ключевому слову content
Слева отображаются команды, а справа — их описание. В каждом описании присутствует ключевое слово content.
apropos day — поиск команд по ключевому слову day
Необязательно запоминать все команды — достаточно понять как устроено встроенное руководство. Кроме того, те, кто не знают английский, могут воспользоваться Google.
Комментарии для сайта Cackle
Сценарии Bash — примеры Linux
В этой статье поговорим о сценариях bash, на примерах вы поймете насколько они удобны и как ими пользоваться.
Прежде чем перейти к заданиям, которых у нас сегодня 12, нужно рассказать как запускать сценарии: итак, каждый сценарий мы будем помещать в файл с расширением .sh (это расширение сценариев в оболочке bash).
Вызывается этот файл в командной строке с помощью следующей конструкции: ./primer.sh , но прежде чем запускать этот файл, нужно установить права доступа на него: chmod a+rx primer.sh, и только после этого запускать файл в командной строке.
Программируем в командной строке
- Определите есть ли в текстовом файле слово root, выведите только ответ содержится или нет.
Создаем файл pr1.sh в который помещаем следующий код:#!/bin/bash FILE=$1 if grep -q root $FILE then echo "Содержится" else echo "Не содержится" fi
Далее в командной строке меняем права доступа:
chmod a+rx pr1.sh
Затем вызываем этот скрипт с 1 параметром(имя файла):
./pr1.sh filename
Для следующих файлов нужно проделать тоже самое(за исключением параметров, они у каждого сценария разные) - Определите совпадают ли первые строки двух текстовых файлов и выведите соответствующее сообщение.
#!/bin/bash FILE1=$1 FILE2=$2 str1=$(head -n 1 $FILE1) str2=$(head -n 1 $FILE2) if [ "$str1" = "$str2" ] then echo "Равно" else echo "Не Равно" fi
Надеюсь, всем очевидно, что этот сценарий вызывается с 2 параметрами:
./pr2.sh filename1 filename2 - Вычислите и выведите первые 7 значений факториала.
#!/bin/bash n=1 for A in 1 2 3 4 5 6 7 do : $((n=$n*$A)) echo "$n " done
- Выведите 25 случайных чисел в форме квадрата 5Х5.
#!/bin/bash n=1 for A in 1 2 3 4 5 do for B in 1 2 3 4 5 do n=$RANDOM echo -n $n' ' done echo ' ' done
- Используя цикл, создайте 10 файлов (rating1…rating10) для студентов в формате: <фамилия> <оценка 1> <оценка 2> … <оценка 100>.
#!/bin/bash i=0 j=0 until [ "$i" = 10 ] do j=0 echo -n ФИО' -> ' >> rating$(echo $i).txt while [ $j -lt 100 ] do #echo "$i" #echo "$j" echo -n оценка$j' ' >> rating$(echo $i).txt let "j+=1" done let "i+=1" done
- Создайте один итоговый файл в формате один студент – одна строка. <фамилия> <оценка1> <оценка 2> … <оценка 100>
#!/bin/bash paste -s rating{0..9}.txt > itog.txt
- Есть 10 файлов. В каждом файле есть строки с заголовком и соответствующими данными под ними. Заголовки во всех файлах одинаковые, данные – разные.
Заголовок 1
Данные 1.1
Заголовок 2
Данные 1.2
……
Например:file1.txt
>hg19
aaaaaaaa
>mm9
bbbbbbb
file2.txt
>hg19
cccccccc
>mm9
dddddddНадо создать результирующий файл chr.fasta, в котором под заголовками будут строки с данными, последовательно склеенными из всех 10 файлов.
Заголовок 1
Данные 1.1 Данные 2.1 Данные 3.1 …
Заголовок 2
Данные 1.2 Данные 2.2 Данные 3.2 … …… Файлы прилагаются в архиве.#!/bin/bash #cd files4lab4 paste -d"\n" chr{1..10}.fasta > chr.fasta uniq itog.txt
- Измените скрипт (Пример case, лекция 10) так чтобы продолжал ожидать ввод клавиш, выводя результаты каждого нажатия, пока не нажата клавиша “X”.
#!/bin/bash # Проверка диапазонов символов echo; echo "Нажмите клавишу и затем нажмите Return (Enter)." read Keypress while [ $Keypress != 'X' ] do case "$Keypress" in [[:lower:]] ) echo "Буква в нижнем регистре";; [[:upper:]] ) echo "Буква в верхнем регистре";; [0-9] ) echo "Цифра";; * ) echo "Знак пунктуации, пробел или что-то другое";; esac read Keypress done
- Напишите сценарий, проверяющий имя текущего каталога и выводящий сообщение об ошибке, если оно короче пяти символов.
#!/bin/bash n=$(pwd) l=${#n} echo $n echo $l if [ "$l" -lt 5 ] then echo "Ошибка" else echo "Всё ок посоны" fi
- Требуется проверить, является ли файл обычным или он является каталогом. Если это обычный файл, то сценарий должен выводить имя файла и его размер. В случае, если размер файла превышает килобайт, то размер должен выводиться в килобайтах. Если размер превышает мегабайт — в мегабайтах. Ознакомьтесь с командой du.
#!/bin/bash file=$1 declare -i siz if $(test -f $file) then siz=$(du -b $file | cut -f1) if (( "$siz" > 1024 && "$siz" < 1024*1024 )) then echo $(du -k $file) fi if (( "$siz" < 1024 )) then echo $siz fi if (( siz > 1024*1024 )) then echo $(du -m $file) fi fi
- Напишите сценарий, выводящий посекундно в цикле имена файлов текущего каталога и их порядковый номер.
#!/bin/bash c=0 for file in `find * -maxdepth 0 -type f` do echo "$c - $file" c=$[$c+1] sleep 1 done
- Напишите сценарий, который генерирует тысячу файлов 1. txt …. 1000.txt, и в каждый файл записывает подряд 100 чисел N, где N = порядковый номер файла. Затем скрипт должен соединить в один файл все файлы с четными номерами (even.txt) и в другой файл – все файлы с нечетными номерами (odd.txt).
!/bin/bash i=0 j=0 until [ "$i" = 1000 ] do j=0 while [ $j -lt 100 ] do #echo "$i" #echo "$j" echo $i >> file-$(echo $i).txt let "j+=1" done let "i+=1" done paste -s file*{0,2,4,6,8}.txt > even.txt paste -s file*{1,3,5,7,9}.txt > odd.txt
Текстовые файлы
Сценарии bash
Просмотреть исходники
Файлы к 7 заданию
Не забывайте оставлять свои комментарии!
Поделиться ссылкой:
Похожее
Получение исходного каталога скрипта Bash изнутри
команда dirname является самой простой, просто разбирая путь до имени файла с переменной $0 (имя скрипта):
dirname ""
, а как Мэтт б указал, возвращаемый путь отличается в зависимости от того, как вызывается скрипт. pwd не выполняет эту работу, потому что это говорит вам только о текущем каталоге, а не о том, в каком каталоге находится скрипт. Кроме того, если выполняется символическая ссылка на скрипт ,вы получите (возможно, относительную) путь к тому, где находится ссылка, а не фактический скрипт.
некоторые другие упомянули более ранних версий команда, но в самом простом виде вы можете использовать:
dirname "$(readlink -f "")"
readlink разрешит путь скрипта к абсолютному пути от корня файловой системы. Таким образом, любые пути, содержащие одиночные или двойные точки, Тильды и/или символические ссылки, будут разрешены до полного пути.
вот сценарий, демонстрирующий каждый из них, whatdir.sh:
#!/bin/bash
echo "pwd: `pwd`"
echo "$0: "
echo "basename: `basename `"
echo "dirname: `dirname `"
echo "dirname/readlink: $(dirname $(readlink -f ))"
запуск этого скрипта в моем домашнем каталоге, используя относительный путь:
>>>$ . /whatdir.sh
pwd: /Users/phatblat
: ./whatdir.sh
basename: whatdir.sh
dirname: .
dirname/readlink: /Users/phatblat
снова, но используя полный путь к скрипту:
>>>$ /Users/phatblat/whatdir.sh
pwd: /Users/phatblat
: /Users/phatblat/whatdir.sh
basename: whatdir.sh
dirname: /Users/phatblat
dirname/readlink: /Users/phatblat
теперь изменение каталогов:
>>>$ cd /tmp
>>>$ ~/whatdir.sh
pwd: /tmp
: /Users/phatblat/whatdir.sh
basename: whatdir.sh
dirname: /Users/phatblat
dirname/readlink: /Users/phatblat
и, наконец, используя символическую ссылку, чтобы выполнить скрипт:
>>>$ ln -s ~/whatdir.sh whatdirlink.sh
>>>$ ./whatdirlink.sh
pwd: /tmp
: ./whatdirlink.sh
basename: whatdirlink.sh
dirname: .
dirname/readlink: /Users/phatblat
cd Man Page — Linux
cd Man Page — Linux — SS64.com
Change Directory — изменить текущую рабочую
каталог в определенную папку.
Синтаксис cd [ Опции ] [ Каталог ] Ключ -P Не переходить по символическим ссылкам -L Переходить по символическим ссылкам (по умолчанию)
Если задано каталог , изменяет рабочий каталог оболочки на каталог . Если нет, меняется на HOME (переменная оболочки).
$ cd — вернется к последней просматриваемой папке. Это не складывается, поэтому при многократном выпуске CD будет просто переключаться между двумя каталогами, для дальнейшего возврата используйте pushd / popd. Предыдущий
каталог — эквивалент $ OLDPWD
./ или просто. это сокращение для текущего каталога.
CDPATH
Переменная оболочки CDPATH обеспечивает полезную функцию, эта переменная похожа на PATH, но задает список путей, по которым cd будет искать подкаталоги.CDPATH можно задать в командной строке для использования в текущем сеансе или в .bash_profile для постоянного использования, список путей должен быть разделен двоеточием (:)
$ CDPATH = «. : ~: ~ / Библиотека»
Если dir начинается с косой черты (/), то CDPATH не используется.
Если используется непустое имя каталога из CDPATH или если — является первым аргументом и изменение каталога прошло успешно, в стандартный вывод записывается абсолютный путь к новому рабочему каталогу.
Статус возврата равен нулю, если каталог успешно изменен, иначе ненулевой.
Это встроенная оболочка BASH для отображения вашего локального синтаксиса из приглашения типа bash: help cd
Примеры
Переместите в папку sybase:
$ cd / usr / local / sybase
долл. США
/ usr / local / sybase
Переход в другую папку:
$ cd / var / log
долл. США
/ var / log
Быстро вернуться:
$ cd —
долл. США
/ usr / local / sybase
Перейти на одну папку вверх:
$ cd..
долл. США
/ usr / local /
$ cd (возврат в домашнюю папку)
Перейти в каталог fred внутри текущего каталога:
$ cd . /fred
«Я считаю, что развлечение может быть искусством, и может
стать искусством, но если вы решили заниматься искусством, вы идиот »~ Стив Мартин
Связанные команды linux:
popd — восстановить предыдущее значение текущего каталога.
pushd — Сохранить и затем изменить текущий каталог.
pwd — Рабочий каталог печати.
Эквивалентная команда Windows:
CD — Изменить каталог.
Авторские права © 1999-2020 SS64.com
Некоторые права защищены
bash
Интернет-:
| PHP
| JavaScript
| SQL
| DHTML
| Smarty
| SVG / VML JavaScript
| баш
|
- 1.
- 1.
Оболочка? - 2. Ша-Банг
- 2.1.
- 2.2.
- 1.
- 2.
- 3.
- 4..
. - 4.1.
- 4.2.
- 4.3. Баш
- 4.4.
- 5.
- 6.
- 7.
- 7.1.
- 7.2.
- 7.3.
- 7.4.
если / то - 7.5.
- 8.
- 8.1.
- 8,2.
- 3.
- 9.
- 9.1.
- 9.2.
- 9.3.
- 9,4. : заявить наборный
- 9,5.
- 9,6. $ RANDOM:
- 9,7.
- 10.
- 10.1.
- 10.2.
- 10.3.
- 10.4.
- 11.
- 11. 1.
- 12.,
- 12.1.
- 12.2.
- 12,3.
- 12,4.
- 12,5.
- 12.6.
- 12,7.
- 12,8.
- 12.9.
- 13.
- 14.
- 15.
- 16.
/ - 16,1. исполнительный
- 16.2.
- 16,3.
- 17.
- 4.
- 18.
- 18.1.
- 18,2. Глобус —
- 19., Оболочки
- 20.
- 21.
- 22.
- 22.1.
- 22.2.
- 23.
- 24.
- 25.
- 26.
- 27. / dev / proc
- 27,1. / dev
- 27.2. / proc
- 28. / dev / zero / dev / null
- 29.
- 30.
() - 31.
- 32.
- 32,1.
- 33.
- 33,1.
- 33.2. —
- 33,3. :
- 33,4.
- 33,5. «»
- 33,6.
- 33,7.
- 33,8.
- 33,9.
- 33.10.
Окна
- 34. Баш, 2
- 35.
- 35,1.
- 35,2.
- 35,3. ,
- 35.3.1.
- 35. 3.2.
- 35,4.
- А.
- Б. Сед Авк
- Б.1. Sed
- B.2. AWK
- с.,
- Д.
— — - E.
- F.
- Г. .bashrc
- H. (* .bat) DOS
- I.
- I.1.
- I.2.
- J.
- 11-1.
- 30-1. Баш
- 33-1.
побег- - Б-1. sed
- Б-2. sed
- С-1. «»
- Н-1. //
DOS - Н-2. ДОС
UNIX
команд Bash для управления каталогами и файлами | Наука о данных о Земле
- Учебники
- Курсы
- Семинары
- Инструменты
- Блог
- О
Зарегистрируйтесь сейчас! Учить больше.
- Home
- Courses /
- Введение в науку о данных о Земле /
- Открытая воспроизводимая наука /
- Bash /
- Команды Bash для управления каталогами и файлами
/
Введение в учебник по науке о данных о Земле
- Единицы
- 1. ВВЕДЕНИЕ В ОТКРЫТЫЕ РАБОЧИЕ ПОТОКИ ВОСПРОИЗВОДИМЫХ НАУК
- Глава 1 Открытые воспроизводимые научные рабочие процессы
- — Об Open Science
- — Инструменты Open Science
- — Лучшие практики управления проектами
- Глава 2 Использование bash для управления файлами
- — Введение в Bash
- — Команды Bash
- Глава 3 Jupyter для python
- — Введение в Jupyter
- — Jupyter Notebook для Python
- — Ячейки кода и разметки
- — Управление каталогами Использование Dashboard
- — Управление Jupyt er Notebooks
- — Ярлыки Jupyter Notebook
- РАЗДЕЛ 2 ФОРМАТЫ ФАЙЛОВ ДЛЯ НАУКИ ДАННЫХ О ЗЕМЛЕ
- Глава 4: Форматы текстовых файлов
- Глава 5: Форматы пространственных данных
- РАЗДЕЛ 941 GIT И GITHUB
- Глава 7: Git / GitHub для управления версиями
- Глава 8: GitHub для совместной работы
- РАЗДЕЛ 4 ОСНОВЫ КОДА PYTHON
- Глава 10: Начало работы с переменными и списками Python
- Глава 11: Использование Python Пакеты
- Глава 12: Файлы, каталоги и пути
- РАЗДЕЛ 6 СТРУКТУРЫ НАУЧНЫХ ДАННЫХ В PYTHON
- Глава 14: Массивы Numpy
- Глава 15: Фреймы данных Pandas
- РАЗДЕЛ 7 НАПИСАТЬ КОД ЭФФЕКТИВНОГО ИСПОЛЬЗОВАНИЯ ОТКРЫТЫЙ ИСТОЧНИК PYTHON
- Глава 16: Написание чистого экспрессивного кода
- Глава 17: Условные выражения в Python
- Глава 18: Циклы в Python
Bash ›Wiki› ubuntuusers. de
Eine grundlegende Übersicht findet man im Artikel Shell. Im weiteren werden einige Funktionen beschrieben, die Bash-spezifisch sind, sich aber durchaus auch in anderen Shell-Umgebungen wiederfinden können.
История
In der Bash ist es möglich, die zuletzt eingegebenen Befehle mit den Pfeiltasten (
↑ /
↓) durchzublättern oder zu durchsuchen. Dies vereinfacht die Bedienung in der Praxis huge.
Als Standardwert werden die letzten 500 Befehle gespeichert.Einstellen lässt sich dieser Wert mit einem Editor [1] in der Datei ~ / .bashrc . Mit dem Eintrag HISTSIZE = 2000
wird die История z.B. auf 2000 Befehle erweitert.
Дурчсухен
Die Befehlsliste lässt sich mit der Tastenkombination
Strg +
R durchsuchen. Durch Eingabe von
lässt sich auch eine Liste der eingegebenen Befehle ausgeben, die man mit Hilfe von egrep filtern kann:
история | egrep веб-сервер
gibt zum Beispiel alle Befehle an, die die Zeichenfolge «webserver» enthalten haben.
Indem man einer Zeichenfolge ein Ausrufezeichen voranstellt, sucht die Bash in der History nach dem letzten Eintrag, der mit den selben Zeichen beginnt und führt diesen Befehl aus.
Gezieltes Blättern aktivieren
Um die History der Bash gezielt zu durchblättern, lohnt es sich, folgende Zeilen in der Datei / etc / inputrc einzufügen [1] :
"\ e [5 ~": history-search-backward "\ e [6 ~": история-поиск-вперед
Möchte man diese Funktion nur für einen bestimmten User aktivieren und nicht systemweit, so kopiert man die Datei / etc / inputrc nach / home / $ USER /.inputrc , und nimmt die Änderung dort vor.
Durch Drücken der Tasten
Bild ↑ und
Bild ↓ kann man die History der Bash anschließend nach Einträgen durchsuchen, welche mit den Worten beginnen, die vor der aktuellen Cursorposition stehen. Пример:
sudo vi⌷ / etc # ⌷ = Cursor
Drückt man jetzt
Bild ↑ или
Bild ↓, wird die History nach Einträgen durchblättert, welche mit sudo vi beginnen.
Hinweis:
Wird die / home / $ USER /.inputrc verwendet, muss darin in der ersten Zeile
$ включает / etc / inputrc
Stehen, damit die Einstellungen darin ebenfalls beachtet werden.
Bestimmte Befehle ausschließen
Will man nur bestimmte Befehle nicht in der History speichern, so kann man mit der Variablen HISTIGNORE
eine schwarze Liste erstellen. Hierzu trägt man beispielsweise
HISTIGNORE = "truecrypt -P *: sudo *"
in die Datei ~ / .bashrc ein [1] .Dadurch werden alle Befehle, die mit truecrypt -P
oder mit sudo
beginnen, von der History ausgeschlossen.
Zeitstempel hinzufügen
Möchte man den Zeitpunkt der Eingabe von Befehlen in der History speichern, so kann dies mit der Variablen HISTTIMEFORMAT
erfolgen. Hierzu trägt man
HISTTIMEFORMAT = "% F% T"
in die Datei ~ / . bashrc ein [1] . Allerdings sollte beachtet werden, dass Zeitstempel nicht rückwirkend gesetzt werden können, wodurch diese bei bereits in der Historie befindlichen Einträgen nicht zutreffend sind.Beispielausgabe:
400 2013-01-10 08:00:01 ls 401 2013-01-10 08:00:17 наверх 402 10.01.2013, 08:01:04 ps aux
Am häufigsten verwendete Befehle
Wer interessehalber ein Liste der am häufigsten verwendeten Befehle benötigt, benutzt den folgenden Befehl:
История | awk '{CMD [$ 2] ++; count ++;} END {для (a в CMD) print CMD [a] "" CMD [a] / count * 100 "%" a;}' | grep -v "./" | столбец -c3 -s "" -t | sort -nr | nl | голова -n10
Löschen
Mit dem Befehl
löscht man die komplette History der aktiven Shell.Möchte man dazu noch die History vorheriger Sitzungen aus der Datei ~ / .bash_history löschen, kann man diese Datei mit den Befehlen
mit der leeren History der aktiven Shell überschreiben.
Einzelne Zeilen lassen sich löschen mit
NNN
repräsentiert hierbei einen dreistelligen Zahlenwert der entsprechenden Zeile.
Deaktivierung
Es kann unter bestimmten Umständen sinnvoll sein, die History der Bash zumindest für root
zu deaktivieren.Dazu muss man in der Datei ~ / .bashrc folgende Zeile eintragen:
unset HISTFILE
und die Datei ~ / .bash_history löschen.
Sofort speichern
Man kann die History auch sofort nach der Ausführung jeden Befehls speichern lassen. Эта проблема связана с собственной версией Ubuntu 14.04 и другими вариантами, историей ничего не известно, а не более exit
eingibt. Zum anderen kann man dadurch die komplette History direkt in neu geöffnete Terminal-Tabs übernehmen lassen, obwohl die anderen Tabs noch nicht geschlossen sind.Dazu muss man in der Datei ~ / .bashrc folgende Zeile eintragen:
PROMPT_COMMAND = "history -a"
Möchte man erreichen, dass sogar bei parallel geöffneten Tabs bzw. Fenstern die History aus allen Tabs nach jedem Befehl gespeichert und dadurch jedem bereits geöffneten anderen Tab sofort zur Verfügung gestellt wird, ohne dafür einen neuen Табл. c; history -r «
Hinweis:
Dabei wird die temporäre History-Liste erst in die History-Datei angehangen und gespeichert, anschließend die History-Liste gelöscht und anschließend die dann komplette History-aus der History -Liste eingelesen, um sofort die vollständige History aus der Datei in der durchscrollbaren Liste zur Verfügung zu haben.
Diese Lösung klingt Zwar zunächst утра vorteilhaftesten für Viele Zwecke, jedoch IST так умереть Wiederholung де letzten Befehls Aus дем selben Tab Durch умереть Pfeiltasten Dann Nicht Mehr директ möglich, да Сечь Dann Befehle AUS ден Anderen Вкладки vordrängeln können, так Дасс человек умирают Pfeiltaste nach oben dann ggf. mehrfach betätigen muss.
Achtung!
Wenn dies beispielsweise ein Löschbefehl für das aktuelle Verzeichnis war, kann sich dies bei unbedachtem Bestätigen des falschen Befehls sehr ungünstig auswirken.
Dadurch hat man аллергическая реакция на все Befehle, Optionen и Parameter в allen Tabs zur Verfügung, ohne sie in neue Tabs kopieren zu müssen, wenn man sie dort für weitere Vorgänge braucht. Dazu reicht es aus, in dem Tab, wo man die komplette History Aller Tabs sofort benötigt, einmal kurz
⏎ zu betätigen, damit die History von allen Tabs dort neu eingelesen wird.
Historie für all Instanzen der Bash zusammenfassen
Arbeitet man mit mehreren Terminals gleichzeitig, so wird für jedes Terminal separat eine History geführt.Man kann jedoch alle Befehle в einer einzigen History zusammenführen. Dazu ergänzt man am Ende von ~ / .bashrc
folgende Textzeile:
PROMPT_COMMAND = "история -a; история -c; история -r; $ PROMPT_COMMAND"
Mit история -a
wird der momentane Verlauf der Bash и eine gemeinsame History-Datei gehängt. Anschließend wird mit history -c
der Verlauf des Terminalfensters entfernt und mit history -r
wird die ganze, vollständige History wieder eingelesen.
Autovervollständigung
Die Bash bietet die Möglichkeit, Befehle und Dateinamen nach dem Eingeben der ersten Zeichen automatisch zu vervollständigen. Dies erreicht man durch drücken der Tabulatortaste
Вкладка ⇆. Beispiel:
ergibt durch das Drücken von
Вкладка ⇆:
Allerdings nur, wenn der Ordner / home / blackbird existiert. Sollte es die Ordner blackbird_1 und blackbird_2 geben, macht er das:
Ergibt das Drücken von
Вкладка ⇆:
und wartet, bis ein zusätzlicher Buchstabe eingegeben wird.Man kann sich mittels «Doppeltab», а также das erneute Drücken von Tab dann auch die zur Verfügung stehenden Möglichkeiten zur Vervollständigung ausgeben lassen.
Das Geräusch (Piepen), das ertönt, wenn die Autovervollständigung aufgrund von Mehrdeutigkeiten fehlschlägt, lässt sich durch folgenden Eintrag z.B. in der ~ / .bashrc (systemweit: /etc/bash.bashrc ) ausschalten:
set 'bind bell-style none'
В / etc / inputrc lassen sich ebenfalls einige (systemweite) Änderungen vornehmen:
set bell-style none -> Ruhe установить видимость колокольчика -> оконная вспышка
Möchte man diese Funktion nur für einen bestimmten User aktivieren (und nicht systemweit), так что копировать человек умирает Datei / etc / inputrc nach / home / $ USER /. inputrc und nimmt die Änderung dort vor.
Die Bash lässt sich durch den folgenden Eintrag dazu bewegen, die existierenden Möglichkeiten gleich anzuzeigen (ohne den Doppeltab):
set show-all-if-ambiguous on
Groß / Kleinschreibung ignorieren:
установить завершение-игнорирование-регистр на
Normalerweise komplettiert die Bash soweit, wie eindeutige Möglichkeiten vorhanden sind und wartet dann auf eine Eingabe durch den Benutzer. Man kann aber auch durch die vorhandenen Möglichkeiten einfach ‘durchtabben’, indem man in / etc / inputrc folgendes (nach der if mode = emacs Zeile) einträgt:
Control-i: menu-complete
Um doch noch die Variante mit Anzeige der Möglichkeiten zu Verfügung zu haben, muss diese Zeile eingefügt werden:
"\ C-": полный
Jetzt kann man mit Tab durch die Möglichkeiten wechseln, und mit Strg-Leertaste die Möglichkeiten anzeigen lassen.
Programmierbare Vervollständigung der Bash aktivieren
Mit dieser Funktion lässt sich die Autovervollständigung nicht nur für Befehle und Dateinamen, sondern auch zum Beispiel für Optionen verwenden. Programmierbare Vervollständigung der Bash lässt sich aktivieren, in dem man in /etc/bash.bashrc or ~ / .bashrc den folgenden Block wie in diesem Beispiel
# aktivierständigung Bashrc Bashrc если [-f / etc / bash_completion]; тогда ./ и т.д. / bash_completion fi
durch Entfernen der # -Zeichen am Zeilenanfang einkommentiert. Ausprobieren lässt es sich zum Beispiel mal mit
und dem Drücken der
Вкладка ⇆ -Вкус.
Sollte die programmierbare Vervollständigung selbst nach erneutem Einloggen nicht funktionieren, muss unter Umständen das Paket bash-completing installiert werden.
Подстановочные знаки
Joker oder Wildcards können für trustbige Zeichen stehen. Zum Beispiel kann man mit
alle Dateien mit der Endung .png anzeigen.
* | Ersetzt Bellebig viele Zeichen |
? | ersetzt genau ein Zeichen |
Es ist auch möglich, Textteile aus Wortgruppen auszuwählen:
{WORT1, WORT2, WORT3} | Wenn eines der genannten Wörter vorkommt |
An der Stelle, wo diese Ersetzung auftritt, muss eines der aufgeführten Wörter vorkommen.Zum Beispiel können wir auf diese Weise alle .png Dateien anzeigen:
ls *. {Png, PNG, Png, pNg, pnG, PNg, pNG}
Es gibt auch die Möglichkeit, ein einzelnes Zeichen aus einer Liste an einer Stelle zu erwarten:
[abcd] | wenn einer der Buchstaben vorkommt |
6
Obiges Beispiel lässt sich также auch so erreichen:
findet .jpg и .png Dateien (würde jedoch auch * .ppg- oder * .jng-Dateien finden, wenn es sie gäbe).Wobei man mit
[j-p] | auch alle Buchstaben von j bis p auswählen kann |
findet nun zum Beispiel auch eine * .log-Datei.
* (MUSTERLISTE) | findet keins oder mehrere aus der Musterliste | |
+ (MUSTERLISTE) | Musterlister 9088 (MUSTERLISTE 9035) Muster aus der Liste aus |
ls! (*.jpg | * .JPG) ## oder *.! (jpg | JPG)
Findet alles außer * .jpg- и * .JPG-Dateien.
Spezielle Aktionen, wenn ein Befehl nicht gefunden wird
Sollte ein eingegebener Befehl nicht gefunden werden, так что wird standardmäßig command-not-found aufgerufen. Das passiert über die Funktion command_not_found_handle
. Diese kann auch umdefiniert werden. Ein Beispiel dafür ist das Abfangen eines Tipp- / Eingabefehlers beim Benutzen der Vervollständigung: Man tippt manchmal zwei Buchstaben, dann
Tab ⇆ und erwischt dann beim Drücken von
⏎ аух умереть
# -Вкус.Abfangen kann man das mit folgender Funktion:
command_not_found_handle () { cmd_ohne_hash = "$ {1 / \ #}" если ["$ 1"! = "$ cmd_ohne_hash"] тогда сдвиг echo "$ cmd_ohne_hash $ @" $ cmd_ohne_hash $ @ вернуть $? фи } |
Dieser Funktion fehlt aber dann die Fähigkeit, command-not-found aufzurufen. Günstiger ists также die bestehende Funktion zu erweitern.
Bash (скрипт) кодирование — Индекс
Пройдите через уловки (Башизмы), используемые в сценарии для установки, настройки и запуска многих программ в macOS и Linux
Обзор
- Вопрос стиля
- Дисковое пространство папки
- Запись в файл
- Sudo и пароль
- GITS_PATH
- Дескрипторы файлов
- Сохранить резервную копию
- Brew Package Path Linkages
- Файлы конфигурации MySQL
- Без варки, без проблем
- Редакторы
- Веб-страница Scape для URL
- Установить с GitHub Релизы
- Запуск / остановка / завершение процесса
- Цветные коды выхода ANSI
- Переменные
- Несколько клемм
- Плагины Eclips IDE
- Тестирование
- инструментов Java через Maven, Ant
- Pkg тихая установка
- Извлечь версию с веб-страницы
- кд / pushd / popd / pwd
- возвращает числа на 255
- Сервер Jenkins
- Файл Plist Mac для Jenkins
- Графический интерфейс Jenkins в браузере
- Автоматизация графического интерфейса пользователя Jenkins
- Отключение Дженкинса (убить)
- Python GUI Automation
- Задержка просмотра
- Снимок экрана, изображение
- Конец сценария
- Отличный
- Scape для шрифтов в GitHub
- «Пользовательские данные» для загрузки экземпляра EC2
- Произнесите текст вслух
- Настроить расположение для создания новых файлов
- Ожидайте управления ручным вводом
- Ссылки
- Rockstars
- Книги, за которые вы платите
- Подробнее о DevOps
Эта страница представляет собой глубокое погружение в технические идеосикратии файлов сценариев оболочки.