bash скрипт создать папку
Bash скрипт для создания директории
Я возиться со сценариями, я могу создать сценарий, который при запуске запрашивает у меня имя для нового каталога, создает его, затем создает несколько файлов, выводит строки, а затем удаляет все это.
Я хотел бы немного изменить его, чтобы он сам создавал и называл каталог!
Вот мой текущий сценарий:
4 ответа
Вместо использования read Команда для того, чтобы получить значение NEW_DIR Исходя из ввода, вы можете установить жестко запрограммированное значение для переменной NEW_DIR следующим образом:
замените следующую строку в вашем скрипте:
со следующей строкой:
Если вы хотите сюрприз, вместо жесткого кодирования имени, вы можете использовать технику для генерации случайной строки, например
Это устанавливает NEW_DIR до строки из восьми буквенно-цифровых символов. Каждый раз, когда вы запускаете скрипт, новый каталог будет иметь другое случайное имя.
Вы могли бы даже пойти еще дальше: вы можете сказать «читать», чтобы предложить предложение для имени папки, принять его, нажав return или изменить его, как вам нравится:
это покажет строку:
Чтобы объединить с вышеупомянутыми предложениями, вы можете сделать следующее:
Вместо того, чтобы запрашивать ввод данных пользователем, вы можете жестко закодировать значения в сценарии с помощью оператора присваивания переменной (=). Таким образом, следующие две строки,
можно заменить одной строкой.
Кстати, я знаю, что это не относится к вопросу, но в for цикл, который вы использовали в вашем скрипте, вы можете написать сокращенный код для диапазона. Вместо 9 8 7 6 5 4 3 2 1 0 Вы можете написать это как
Работа с файлами и каталогами в командной оболочке Bash
Содержание:
Bash (Bourne Again Shell) — это командная оболочка, использующаяся в таких UNIX-системах, как Linux или MacOS. Она позволяет управлять компонентами ОС с помощью определённых запросов, которые вводятся в консоль или берутся из скрипта.
Как новичкам, так и опытным пользователям будет полезно узнать или вспомнить основные команды Bash для управления такими важными аспектами системы, как файлы и каталоги. Этот вопрос будет разобран на примере ОС Linux.
Работа с файлами и каталогами
Работа с файлами и каталогами в Linux через Bash осуществляется с учетом иерархического принципа их классификации. Иерархическая структура файловой системы Linux напоминает «дерево». Существует корневой каталог, который является начальным для всей ОС, а в нём, соответственно, масса других подкаталогов.
Такой же принцип используется для командной строки. Файлы и каталоги берут начало из корневого узла « / », который является начальной точкой для всех элементов.
Ниже представлен стандартный перечень подкаталогов, встречающийся в большинстве UNIX-систем.
Каталог | Содержимое |
/bin | Бинарные версии файлов (в том числе для командной оболочки). |
/dev | Псевдофайлы, представляющие собой аппаратные средства, подключённые к устройству. |
/etc | Большая часть конфигурационных файлов. |
/lib | Библиотеки для системных приложений. |
/opt | Необязательные компоненты системы или приложения. |
/tmp | Временные файлы. |
/usr | Пользовательские компоненты. |
/var | Файлы приложений (в том числе системные журналы, кэши и т. д.). |
Команды для каталогов
Существуют конкретные команды, предназначенные для работы с каталогами. Далее будут приведены самые важные из них.
Список основных команд
Пример использования сокращений:
Команды для файлов
Далее приведены основные команды для осуществления взаимодействия с файлами. Начинающим полезно опробовать каждую из них, чтобы лучше понять принцип работы утилит.
Список основных команд
Подробную информацию об утилитах можно получить, воспользовавшись справочной службой: « man ».
Пример получения справки по работе с программой rm: « man rm ».
Перенаправление данных
Перенаправление ввода-вывода в файл осуществляется с помощью специальных знаков. Для вывода используются « > » и « >> », а для ввода — « ».
Пример вывода « ls » в файл, а не на экран:
Новый файл создаётся автоматически. В случае существования элемента с таким же наименованием, произойдёт перезапись. Чтобы этого избежать, необходимо использовать « >> ». Тогда данные будут дописываться в документ.
Пример ввода, при котором информация выносится из файла с помощью команды « sort »:
Генерация имён файлов в Bash
Иногда пользователю приходится работать с несколькими файлами одновременно, например, при выполнении переноса документов в другой каталог. Это станет проблемой, если элементов десятки или сотни и среди них нужно отобрать определённые.
Для решения поставленной задачи можно попробовать использование шаблонного выражения, позволяющего Bash определить необходимые элементы, ориентируясь по наименованию. Этот способ упрощает управление группой файлов путём применения короткой формулировки в команде.
Итак, теперь остаётся разобраться с вопросом составления шаблонов. Сейчас будут приведены основные конструкции для осуществления генерации имён. Чаще всего для отбора файлов применяется символ: « * ». В случае использования этого знака в чистом виде, Bash выберет все элементы в каталоге без исключений.
Для примера, чтобы из этого каталога отобрать файлы: file1, file2, file3, следует воспользоваться шаблоном:
Символ звёздочки позволяет командному интерпретатору выделить все файлы, начинающиеся с «file». При этом последующая часть наименования будет проигнорирована.
Знак « * » можно использовать также в начале или с обеих сторон шаблона.
Кроме того, сгенерировать имена можно, взяв за основу расширение файла. Например:
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Введение в Bash
Введение
В этой статье мы ознакомимся с основами написания скриптов на bash для самых разнообразных целей: для упрощения рутинных задач и автоматизации постоянно повторяющихся действий, для запуска нескольких команд единовременно, или одной команды с трудными и обширными аргументами.
Требования
Настройка папки
Перед тем, как приступить к написанию скрипта на bash, рекомендуется создать для него отдельную папку, например,
Для создания папки введите в консоль следующую команду:
Откройте на редактирование /etc/profile, выполнив команду:
nano /etc/profile
Добавьте следующие строки в конец файла:
Создание файла
Для того чтобы запустить скрипт нужно создать исполняемый файл. Введите последовательно команды:
/bin/firstscript
chmod +x
Откройте текстовый редактор, чтобы заполнить исполняемый файл:
Любой bash-скрипт должен начинаться со строки: #!/bin/bash
В этой строке после #! указывается путь к bash-интерпретатору, поэтому если он установлен в другом месте (где именно, можно узнать, введя команду whereis bash), необходимо поменять путь.
Комментарии начинаются с символа # (кроме первой строки).
Заполните исполняемый файл firstscript следующими строками:
Сохраните внесенные изменения, нажав сочетание клавиш CTRL+X.
Запустите скрипт командой, которая является именем исполняемого файла:
firstscript
Результат должен выглядеть следующим образом:
Hello World!
Пример скрипта резервного копирования
Для создания bash-скрипта резервного копирования введите команды:
/bin/filebackup
chmod +x
/bin/filebackup
nano
Скрипт для запуска резервного копирования состоит из следующих строк:
После сохранения внесенных изменений можно протестировать свой скрипт, перейдя в любую папку в системе с несколькими файлами и запустив команду:
filebackup math.sh
Можно добавить сколько угодно файлов к этой последовательности, и все они будут скопированы в папку резервного копирования backup.
Введем команду и перейдем в папку резервного копирования:
Для просмотра файлов в папке введем команду:
В результате должно отобразиться следующее:
math.sh
Основные команды для написания bash скрипта
Существует ряд встроенных команд, которые используются для создания скриптов:
Работа с переменными
Самый распространенный способ хранения начальных данных — переменные. В самом начале программы объявляются несколько таких переменных, в которые пользователь записывает некоторые исходные данные.
Список зарезервированных переменных:
Пример работы с переменными и конфигурационным файлом
Такой способ хорош, если данных мало и скрипт рассчитан на автоматическое выполнение без участия пользователя.
Необходимо ясно известить пользователя о том, что и где ему необходимо вписать. Желательно собрать все это в одном месте — файле конфигурации. Подключить его можно командой source. Например, если конфигурационный файл будет лежать в той же директории, что и скрипт, мы получим:
В файл config.cfg не забудем поместить строчку: ЕMAIL=example@gmail.com
Пример работы с математическими операциями
Для работы с математическими операциями используется команда let, которая производит арифметические операции над числами и переменными.
Содержимое исполняемого файла:
Обновите название исполняемого файла, нажав сочетание клавиш CTRL+O, например, пусть он будет называться math, после чего нажмите клавишу Enter.
Сделайте файл исполняемым:
chmod +x math
math
Результат выполнения должен выглядеть следующим образом:
Введите a:
Введите b:
a+b= 135
a/b= 10
Список математических операций:
** — возведение в степень
% — модуль (деление по модулю), остаток от деления
Команда let позволяет использовать сокращения арифметических команд, тем самым сокращая количество используемых переменных, например: a = a+b эквивалентно a +=b.
Параметры скрипта
Еще один способ сообщить данные программе — указать при запуске в командной строке. Содержатся эти параметры в переменных с номерами.
Цикл for-in
Оператор for-in предназначен для поочередного обращения к значениям перечисленным в списке. Каждое значение поочередно в списке присваивается переменной.
for переменная in список_значений
команды
done
Пример работы цикла for-in с параметрами
bash parametr one two four
В результате получим следующее:
four
Цикл while
Цикл while сложнее цикла for-in и используется для повторения команд, пока какое-то выражение истинно (код возврата = 0).
Синтаксис оператора следующий:
while выражение или команда возвращающая код возврата
команды
done
Пример работы с циклом until-do
В этом примере мы познакомимся с еще одним типом циклов UNTIL-DO. Эта практически полный аналог цикла WHILE-DO, только выполняется пока какое-то выражение ложно:
Результат выполнения скрипта:
Введите числитель:
Введите знаменатель:
НОД чисел 100 и 90 = 10
Условные операторы
Условный оператор используется для выполнения определенных действий, если условие является истинным или ложным. Это выполняется с помощью команды “If”. Синтаксис оператора следующий:
if ls folder
then
echo «Folder exists»
fi
Пример работы с условными операторами if-else
Введите последовательно команды:
/bin/fileifelse
chmod +x
/bin/fileifelse
nano
Заполните исполняемый файл fileifelse:
Результат работы скрипта fileifelse:
Введите название папки:
backup2
Папка существует и будет использована.
Какие файлы следует отправить в папку резервного копирования?
math.sh
Проверка наличия файлов в папке по команде ls backup2:
math.sh
Заключение
Мы ознакомились с основными командами для написания скриптов на bash, а также с работой с математическими операциями, с циклами и условными операторами.
Bash-скрипты: начало
Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.
Сценарии командной строки — это наборы тех же самых команд, которые можно вводить с клавиатуры, собранные в файлы и объединённые некоей общей целью. При этом результаты работы команд могут представлять либо самостоятельную ценность, либо служить входными данными для других команд. Сценарии — это мощный способ автоматизации часто выполняемых действий.
Итак, если говорить о командной строке, она позволяет выполнить несколько команд за один раз, введя их через точку с запятой:
На самом деле, если вы опробовали это в своём терминале, ваш первый bash-скрипт, в котором задействованы две команды, уже написан. Работает он так. Сначала команда pwd выводит на экран сведения о текущей рабочей директории, потом команда whoami показывает данные о пользователе, под которым вы вошли в систему.
Используя подобный подход, вы можете совмещать сколько угодно команд в одной строке, ограничение — лишь в максимальном количестве аргументов, которое можно передать программе. Определить это ограничение можно с помощью такой команды:
Командная строка — отличный инструмент, но команды в неё приходится вводить каждый раз, когда в них возникает необходимость. Что если записать набор команд в файл и просто вызывать этот файл для их выполнения? Собственно говоря, тот файл, о котором мы говорим, и называется сценарием командной строки.
Как устроены bash-скрипты
Команды оболочки отделяются знаком перевода строки, комментарии выделяют знаком решётки. Вот как это выглядит:
Тут, так же, как и в командной строке, можно записывать команды в одной строке, разделяя точкой с запятой. Однако, если писать команды на разных строках, файл легче читать. В любом случае оболочка их обработает.
Установка разрешений для файла сценария
Попытка запуска файла сценария с неправильно настроенными разрешениями
Сделаем файл исполняемым:
Теперь попытаемся его выполнить:
После настройки разрешений всё работает как надо.
Успешный запуск bash-скрипта
Вывод сообщений
Вот что получится после запуска обновлённого скрипта.
Вывод сообщений из скрипта
Использование переменных
Переменные позволяют хранить в файле сценария информацию, например — результаты работы команд для использования их другими командами.
Нет ничего плохого в исполнении отдельных команд без хранения результатов их работы, но возможности такого подхода весьма ограничены.
Существуют два типа переменных, которые можно использовать в bash-скриптах:
Переменные среды
Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя:
Использование переменной среды в сценарии
А что если надо вывести на экран значок доллара? Попробуем так:
В подобной ситуации поможет использование управляющего символа, обратной косой черты, перед знаком доллара:
Теперь сценарий выведет именно то, что ожидается.
Использование управляющей последовательности для вывода знака доллара
Пользовательские переменные
В дополнение к переменным среды, bash-скрипты позволяют задавать и использовать в сценарии собственные переменные. Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.
Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:
Вот что получится после запуска такого сценария.
Пользовательские переменные в сценарии
Подстановка команд
Одна из самых полезных возможностей bash-скриптов — это возможность извлекать информацию из вывода команд и назначать её переменным, что позволяет использовать эту информацию где угодно в файле сценария.
Сделать это можно двумя способами.
При втором подходе то же самое записывают так:
А скрипт, в итоге, может выглядеть так:
Скрипт, сохраняющий результаты работы команды в переменной
Математические операции
Математические операции в сценарии
Управляющая конструкция if-then
А вот рабочий пример:
В данном случае, если выполнение команды pwd завершится успешно, в консоль будет выведен текст «it works».
Вот что получается после запуска этого скрипта.
В этом примере, если пользователь найден, скрипт выведет соответствующее сообщение. А если найти пользователя не удалось? В данном случае скрипт просто завершит выполнение, ничего нам не сообщив. Хотелось бы, чтобы он сказал нам и об этом, поэтому усовершенствуем код.
Управляющая конструкция if-then-else
Напишем такой скрипт:
Запуск скрипта с конструкцией if-then-else
Ну что же, продолжаем двигаться дальше и зададимся вопросом о более сложных условиях. Что если надо проверить не одно условие, а несколько? Например, если нужный пользователь найден, надо вывести одно сообщение, если выполняется ещё какое-то условие — ещё одно сообщение, и так далее. В подобной ситуации нам помогут вложенные условия. Выглядит это так:
Сравнение чисел
В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.
В качестве примера опробуем один из операторов сравнения. Обратите внимание на то, что выражение заключено в квадратные скобки.
Вот что выведет эта команда.
Сравнение чисел в скриптах
Значение переменной val1 больше чем 5, в итоге выполняется ветвь then оператора сравнения и в консоль выводится соответствующее сообщение.
Сравнение строк
В сценариях можно сравнивать и строковые значения. Операторы сравнения выглядят довольно просто, однако у операций сравнения строк есть определённые особенности, которых мы коснёмся ниже. Вот список операторов.
Вот пример сравнения строк в сценарии:
В результате выполнения скрипта получим следующее.
Сравнение строк в скриптах
Вот одна особенность сравнения строк, о которой стоит упомянуть. А именно, операторы «>» и « » как команду перенаправления вывода.
Вот как работа с этими операторами выглядит в коде:
Вот результаты работы скрипта.
Сравнение строк, выведенное предупреждение
Обратите внимание на то, что скрипт, хотя и выполняется, выдаёт предупреждение:
Теперь всё работает как надо.
Она отсортирует строки из файла так:
Если его запустить, окажется, что всё наоборот — строчная буква теперь больше прописной.
Команда sort и сравнение строк в файле сценария
В командах сравнения прописные буквы меньше строчных. Сравнение строк здесь выполняется путём сравнения ASCII-кодов символов, порядок сортировки, таким образом, зависит от кодов символов.
Проверки файлов
Пожалуй, нижеприведённые команды используются в bash-скриптах чаще всего. Они позволяют проверять различные условия, касающиеся файлов. Вот список этих команд.
Эти команды, как впрочем, и многие другие рассмотренные сегодня, несложно запомнить. Их имена, являясь сокращениями от различных слов, прямо указывают на выполняемые ими проверки.
Опробуем одну из команд на практике:
Этот скрипт, для существующей директории, выведет её содержимое.
Вывод содержимого директории
Полагаем, с остальными командами вы сможете поэкспериментировать самостоятельно, все они применяются по тому же принципу.
Итоги
Сегодня мы рассказали о том, как приступить к написанию bash-скриптов и рассмотрели некоторые базовые вещи. На самом деле, тема bash-программирования огромна. Эта статья является переводом первой части большой серии из 11 материалов. Если вы хотите продолжения прямо сейчас — вот список оригиналов этих материалов. Для удобства сюда включён и тот, перевод которого вы только что прочли.
Уважаемые читатели! Просим гуру bash-программирования рассказать о том, как они добрались до вершин мастерства, поделиться секретами, а от тех, кто только что написал свой первый скрипт, ждём впечатлений.
Создать папку по имени файла
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Создать для каждого файла папку его имени и перенести в свою папку под именем index.html
Помогите товарищи В папке файлы без расширений нужно создать для каждого файла папку его имени и.
Создать папку с текущей датой в имени
Здравствуйте, понимаю что спрошу фикню но хелп ми как создать папку с текущей датой в имени если.
Макрос Outlook для сохранения вложения в папку по частичному совпадению имени файла
Всем добрый день! Каждый день приходит в одном письме множество файлов. Есть ли макрос который.
Решение
могут быть описаны регулярным выражением так: «тире-три буквы начиная с заглавной потом тире с двумя цифрами трижды»
Ну если смотреть что еще дальше то «… четырежды, потом точка, три цифры, тире»
Добавлено через 15 минут
Спасибо большое, помогло и работает.
Большую часть фалов (примерно 2000) я раскидаю и по папкам для них.
Встретил тут файлы такого типа где два тире, пытался править регулярное выражение добавляя два тире но результата не было.
Решение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Создать папку по адресу из файла c++ mvs
Здравствуйте, я чайник (охренеть начал) Застопорился и 2 дня на мертвой точке. Проблема такова, у.
Как сделать проверку на наличие похожего имени файла и запрос нового имени файла?
При загрузке изображения присваивается имя foto.jpg. Вопрос, как сделать проверку на то что фото с.
Сделать проверку на наличие похожего имени файла и запрос нового имени файла
Пользователь задает имя для создания файла. Вопрос, как сделать проверку на наличие похожего имени.
Создать папку с именем, которое необходимо взять из текстового файла
необходимо создать папку с именем, который берется из текстового файла. папку создать в той же.
создать папку вида дата+время и записать туда 2 файла
всем привет, я в php вообще не шарю, но срочно нужно написать php скрип который создает папку вида.