- Bash скрипт для создания директории
- 4 ответа
- Как использовать mkdir для создания каталогов Linux
- Делайте папки из терминала с помощью этой простой команды
- Как создать новый каталог
- Изменение разрешений нового каталога
- Как создать каталог и установить разрешения одновременно
- Создать папку и любые родители, которые необходимы
- Получение подтверждения, что каталог был создан
- Использование mkdir в скрипте оболочки
Bash скрипт для создания директории
Я возиться со сценариями, я могу создать сценарий, который при запуске запрашивает у меня имя для нового каталога, создает его, затем создает несколько файлов, выводит строки, а затем удаляет все это.
Я хотел бы немного изменить его, чтобы он сам создавал и называл каталог!
Это бессмысленное упражнение, которое я знаю, но возиться с ним — лучший способ научиться.
#!/bin/bash echo "Give a directory name to create:" read NEW_DIR ORIG_DIR=$(pwd) [[ -d $NEW_DIR ]] && echo $NEW_DIR already exists, aborting && exit mkdir $NEW_DIR cd $NEW_DIR pwd for n in 9 8 7 6 5 4 3 2 1 0 do touch file$n done ls file? for names in file? do echo This file is named $names > $names done cat file? cd $ORIG_DIR rm -rf $NEW_DIR echo "Goodbye"
4 ответа
Вместо использования read Команда для того, чтобы получить значение NEW_DIR Исходя из ввода, вы можете установить жестко запрограммированное значение для переменной NEW_DIR следующим образом:
замените следующую строку в вашем скрипте:
NEW_DIR="new_dir_hard_coded_value"
Если вы хотите сюрприз, вместо жесткого кодирования имени, вы можете использовать технику для генерации случайной строки, например
Это устанавливает NEW_DIR до строки из восьми буквенно-цифровых символов. Каждый раз, когда вы запускаете скрипт, новый каталог будет иметь другое случайное имя.
Или, чтобы получить случайное слово, выберите словарь из /usr/share/dict/ и использовать shuf , например:
$ shuf -n1 /usr/share/dict/british-english soupier $ shuf -n1 /usr/share/dict/british-english penguins
NEW_DIR=$(shuf -n1 /usr/share/dict/british-english) mkdir "$NEW_DIR" .
Вы могли бы даже пойти еще дальше: вы можете сказать «читать», чтобы предложить предложение для имени папки, принять его, нажав return или изменить его, как вам нравится:
read -p "Give a directory name to create: " -ei "default_name" NEW_DIR;
Give a directory name to create: default_name
Чтобы объединить с вышеупомянутыми предложениями, вы можете сделать следующее:
# pre-set NEW_DIR to a value or to any random string # as suggested in the other answers NEW_DIR="default_name" # Prompt for new directory name, suggesting previously selected default answer read -p "Give a directory name to create: " -ei "$NEW_DIR" NEW_DIR;
Обратите внимание, что чтение -p «текст» запросит текст и попросит ответить в той же строке. Если вы хотите придерживаться своего кода и попросить его о 2-строчном формате, вы можете сделать
echo "Give a directory name to create:" read -ei "$NEW_DIR" NEW_DIR
Как использовать mkdir для создания каталогов Linux
Делайте папки из терминала с помощью этой простой команды
Вы можете создавать новые папки/каталоги в Linux с помощью командной строки. Команда, которую вы используете для создания каталогов – это mkdir.
Ниже приводится полный обзор того, как создавать каталоги с помощью mkdir. Мы также рассмотрим параметры, которые вы можете использовать с mkdir, и правильный синтаксис, который вы должны использовать для правильной работы команды.
Как создать новый каталог
Простейший способ создать новый каталог заключается в следующем:
Например, если вы хотите создать каталог с именем test , откройте окно терминала, перейдите к нужной папке, где вы хотите эту папку, и введите следующую команду:
Команда cd ~ используется для изменения рабочего каталога, чтобы при вводе команды mkdir папка создавалась именно там, где вы хотите.
Изменение разрешений нового каталога
После создания новой папки вы можете захотеть установить разрешения, чтобы только определенный пользователь мог получить к ней доступ, или чтобы некоторые люди могли редактировать файлы в папке, а другие имели права только для чтения.
Чтобы продолжить приведенный выше пример, мы запустим команду ls, чтобы увидеть разрешения для папки с именем test :
Вы должны запустить команду ls в любой папке, в которой находится тестовая папка. Если это ваш домашний каталог (т. Е. Вы не использовали команду cd выше), то вам не нужно беспокоиться об изменении каталога здесь.
Вы должны увидеть что-то вроде этого (но, возможно, и с несколькими другими записями, учитывая, что там, вероятно, есть и другие папки):
drwxr-xr-x 2 группа владельцев 4096 22 января 10:43 тест
Нам интересны следующие элементы: владелец drwxrwxr-x 2 и группа группа .
- d говорит нам, что test – это каталог.
- Первые три буквы, следующие за буквой d, являются разрешениями владельца для каталога, указанного в имени владельца:
- r предназначен для чтения
- w для записи
- x предназначен для выполнения (в данном случае это означает, что вы можете получить доступ к папке)
Чтобы изменить разрешения для файла или папки, вы можете использовать команду chmod . Команда chmod позволяет вам указать три числа, которые устанавливают права доступа:
Добавьте числа вместе для смеси разрешений. Например, чтобы присвоить разрешения на чтение и выполнение, вам нужно 5 (4 + 1), или для разрешения на чтение и запись вы должны использовать число 6 (4 + 2).
Помните, что вам нужно указать три числа как часть команды chmod. Первое число предназначено для прав доступа владельца, второе – для полномочий группы, а последнее – для всех остальных.
Например, чтобы владелец имел полные права доступа, чтение и выполнение группы, а у кого-то не было никаких прав доступа, вы должны ввести следующее:
тест chmod 750
Используйте команду chgrp, чтобы изменить имя группы, которой принадлежит папка. Например, представьте, что вы хотите создать каталог, к которому могут обращаться все бухгалтеры вашей компании.
Сначала вы должны создать учетные записи группы, набрав следующее:
учетные записи groupadd
Если у вас нет правильного разрешения на создание группы, вам может потребоваться использовать sudo для получения дополнительных привилегий или перейти к учетной записи с действительными разрешениями с помощью команды su.
Теперь вы можете изменить группу для папки, набрав следующее:
Аккаунты chgrp
проверка учетных записей chgrp
Чтобы предоставить владельцу и всем остальным в группе учетных записей права чтения, записи и выполнения, но только для чтения только для других, вы должны использовать следующую команду:
тест chmod 770
Как создать каталог и установить разрешения одновременно
Вы можете создать каталог и одновременно установить разрешения для этого каталога, используя следующую команду:
Приведенная выше команда создаст папку, к которой у всех есть доступ. Очень редко вы захотите создать что-либо с такими разрешениями.
Создать папку и любые родители, которые необходимы
Представьте, что вы хотите создать структуру каталогов, но не хотите создавать каждую отдельную папку вместе со способом.
Например, вы можете создавать папки для вашей музыки следующим образом:
- /главная/музыка/рок/Элис Купер
- /главная/музыка/рок/королева
- /главная/музыка/рэп/drdre
- /главная/музыка/джаз/louisjordan
Было бы досадно создавать папку для рок-музыки Алисы Купер и королевы, а затем папки для рэпа и джаза для остальных.
Указав -p , вы можете создать все родительские папки на лету, если они еще не существуют:
Например, эта команда mkdir используется для создания одной из папок, перечисленных выше:
mkdir -p ~/music/rock/alicecooper
Получение подтверждения, что каталог был создан
По умолчанию команда mkdir не сообщает, был ли созданный вами каталог успешно создан. Обычно, если ошибки не отображаются, вы можете предположить, что это сработало.
Однако, если вы хотите получить более подробный вывод, чтобы знать, что было создано, используйте переключатель -v :
mkdir: созданный каталог/path/to/directoryname
Использование mkdir в скрипте оболочки
Вы также можете использовать команду mkdir как часть сценария оболочки.
В нашем примере мы рассмотрим скрипт, который принимает путь. Когда скрипт будет выполнен, он создаст папку и добавит один текстовый файл с именем «hello».
#!/bin/bash
mkdir $ @
cd $ @
нажмите ПриветПервая строка должна быть включена в каждый скрипт, который вы пишете. Он используется, чтобы показать, что это действительно BASH-скрипт.
- mkdir , конечно, используется для создания папки.
- $ @ (также называемый входными параметрами), помещенный в конец второй и третьей строки, заменяется значением, которое вы указали при запуске скрипта.
- cd перейдет в указанный вами каталог.
- touch создает пустой файл с именем привет .
Выполните следующие шаги, чтобы попробовать скрипт самостоятельно:
- Откройте окно терминала. Ctrl + Alt + T должен сделать это быстро.
- Введите эту команду:
nano createhellodirectory.sh
#!/bin/bash
mkdir $ @
cd $ @
нажмите Приветchmod + x createhellodirectory.sh
./ createhellodirectory.sh test
Пока все хорошо, но теперь попробуйте Шаг 7 снова. Появится ошибка о том, что папка уже существует.
Есть несколько вещей, которые мы можем сделать, чтобы улучшить сценарий. Например, даже если папка уже существует, нам все равно, пока она там.
#!/bin/bash
mkdir -p $ @
cd $ @
touch helloЕсли вы укажете -p как часть команды mkdir, это не приведет к ошибке, но если она не существует, она создаст папку.
Сенсорная команда создаст файл, если он не существует, но если он существует, он просто изменяет дату и время последнего доступа.
Представьте, что оператор touch был заменен оператором echo, который записывает текст в файл:
#!/bin/bash
mkdir -p $ @
cd $ @
повторить "привет" >> приветЕсли вы снова и снова будете запускать команду ./ createhellodirectory.sh test , это приведет к тому, что файл с именем “hello” в каталоге тестов будет становиться все больше и больше с увеличением числа строк слова “привет” в этом.
Теперь, это может или не может быть так, как задумано, но давайте пока скажем, что это не желаемое действие. Вы можете написать тест, чтобы убедиться, что каталог не существует, прежде чем запустить команду echo:
#!/bin/bash
mkdir $ @ 2>/dev/null;
if [$? -экв 0]; затем
cd $ @
эхо "привет" >> привет
выход
fiПриведенный выше скрипт является нашим предпочтительным методом для обработки создания папок. Команда mkdir создает папку, которая передается в качестве входного параметра, но любые сообщения об ошибках отправляются в/dev/null (что, по сути, нигде не означает).
Третья строка проверяет состояние вывода предыдущей команды, которая является оператором «mkdir», и в случае успеха выполняет операторы до тех пор, пока не будет достигнут оператор «fi».
Это означает, что вы можете создать папку и выполнять все, что вы хотите, если команда выполнена успешно. Если вы хотите сделать что-то еще, если команда не была успешной, вы можете просто ввести оператор else:
#!/bin/bash
mkdir $ @ 2>/dev/null;
if [$? -экв 0]; thencd $ @ echo "hello" >> helloexitelsecd $ @ echo "hello"> helloexitfiВ приведенном выше сценарии, если оператор mkdir работает, то оператор echo отправляет слово «hello» в конец файла с именем «hello», тогда как, если он не существует, будет создан новый файл «hello» со словом «hello». привет “в этом.
Этот пример не особенно практичен, потому что вы можете достичь тех же результатов, просто запустив строку echo “hello”> hello . Суть примера в том, чтобы показать, что вы можете запустить команду «mkdir», скрыть вывод ошибки, проверить состояние команды, чтобы увидеть, была ли она успешной или нет, а затем выполнить один набор команд, если «mkdir» Команда была успешной и другой набор, если это не так.